UART接收电路(防毛刺)设计VHDL代码modelsim仿真

名称:UART接收电路(防毛刺)设计VHDL代码modelsim仿真

软件:modelsim

语言:VHDL

代码功能:

设计一个UART接收电路,其工作原理为

输入输出信号说明:

Datain:输入串行码流,速率为11.52 Kbits/S

CLK    输入时钟,频率为50MHz;

Outenable:输出数据有效信号,高电平有效;

Dataout:输出并行数据信号(8bits宽度)。

电路功能说明:对输入的串行数据码流,用高速的时钟进行采样处理,将异步串行输入的数据流转换为同步的并行数据输出。

1.输入码流 Datain,速率为1152kbts/S;时钟速率是50MHz,当时钟上升沿时进行数据釆样。

2.当 Outenable信号为高时,并行输出数据有效。

3.串行输入数据流是以数据帧的格式输入的;其帧号依次递增。毎帧包含一个起始位、8bits数据位和一个停止为,其示意如下图所示。当无数据输入时,信号线状态保持为高("1")。而数据帧的起始位(Datai)固定为‘0',它标志着一个数据帧的开始;停止位( Datae)固定为1',它标志着一个数据帧的结束

 

设计要求:

输入信号时序波形为(8bit数据,高位在前):56H、37H、AOH4BH、FFH。在第一帧数据出现前有一个宽度为500ns的低脉冲毛刺,在第一帧数据的起始位的后半段,有一个宽度为500ns的高电平脉冲毛刺。

2.接收电路能够在毛刺存在的条件下,正确检测岀串行传输数据。

2.在同一个进程中不能有两个' event

3.除 testbench程序外,不能使用 after语句。

提示:

设计一个毛刺计数器,如果出现毛刺则进行计数。如果最后毛刺计数器的计数值高于某个门限,则表明本接收状态出现错误,需要重新搜索接收状态;如果毛刺计数器的值还很小时,就又出现了正确数据,则毛刺计数器清零。

要求.jpg要求2.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 代码文件

顶层模块

波特率分频模块

滤波模块(去除毛刺)

Uart接收模块

Testbench


仿真图








部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY filter IS
   PORT (
      clk         : IN STD_LOGIC;
      rst_n       : IN STD_LOGIC;
      signal_in   : IN STD_LOGIC;
      signal_out  : OUT STD_LOGIC
   );
END filter;
ARCHITECTURE RTL OF filter IS
    TYPE state_FSM is (s_idle,s_high,s_high_cnt,s_low,s_low_cnt);
signal state:state_FSM;
   SIGNAL signal_data : STD_LOGIC;
   SIGNAL cnt         : STD_LOGIC_VECTOR(5 DOWNTO 0) := "000000";
BEGIN
   
   PROCESS (clk, rst_n)
   BEGIN
      IF ((NOT(rst_n)) = '1') THEN
         cnt <= "000000";
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (state = s_high_cnt OR state = s_low_cnt) THEN
            cnt <= cnt + "000001";
         ELSE
            cnt <= "000000";
         END IF;
      END IF;
   END PROCESS;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » UART接收电路(防毛刺)设计VHDL代码modelsim仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员