• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

数据位为48的UART接收器设计VHDL代码ISE仿真

09/06 08:03
485
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2409261QHEN.doc

共1个文件

名称:数据位为48的UART接收器设计VHDL代码ISE仿真

软件:ISE

语言:VHDL

代码功能:

数据位为48的UART接收器

1、数据位宽为48位,其中1起始,48数据,1停止位。

2、使用移位寄存器依次接收48位。

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

演示视频:

设计文档:

1.?工程文件

2.?程序文件

3.?程序运行

4.?Testbench

测试文件产生rx信号,按115200的波特率输出(低位在前)10101010101010...这样01交替变换的数据,相当于应该接收到48位的010101010101010...这样的并行数据。新组合的6bit数据应该为111111。

5.?仿真图

Rx交替变换

接收到48位010101010101010...,取第0,8,16,24,32,40位,组成new_data=111111

延迟输出new_data=111111

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?uart_rx_module?IS
???PORT?(
??????
??????clk_100M?????????:?IN?STD_LOGIC;
??????rst_p????????????:?IN?STD_LOGIC;--高电平复位
??????uart_rx??????????:?IN?STD_LOGIC;
data_receive_48??:?OUT?STD_LOGIC_VECTOR(47?DOWNTO?0);
??????data_serial_out??:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0)
???);
END?uart_rx_module;
ARCHITECTURE?trans?OF?uart_rx_module?IS
???
???SIGNAL?bps_cnt????????:?STD_LOGIC_VECTOR(15?DOWNTO?0):=?"0000000000000000";
???SIGNAL?bps_cnt_mid????:?STD_LOGIC_VECTOR(15?DOWNTO?0):=?"0000000000000000";
???
???SIGNAL?rx_mid?????????:?STD_LOGIC?:=?'0';--中间位置采样???????
???SIGNAL?rx_en??????????:?STD_LOGIC?:=?'0';--rx_en是接收数据使能信号
???SIGNAL?cnt????????????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
???SIGNAL?num????????????:?STD_LOGIC_VECTOR(5?DOWNTO?0)?:=?"000000";--num表示对应数据位
???
???SIGNAL?rx_r0??????????:?STD_LOGIC:=?'0';
???SIGNAL?rx_r1??????????:?STD_LOGIC:=?'0';
???
???SIGNAL?rx_req?????????:?STD_LOGIC:=?'0';
???
???SIGNAL?rx_done????????:?STD_LOGIC:=?'0';
???
???SIGNAL?rx_data????????:?STD_LOGIC_VECTOR(47?DOWNTO?0):=?"000000000000000000000000000000000000000000000000";
???
???SIGNAL?receive_data???:?STD_LOGIC_VECTOR(47?DOWNTO?0)?:=?"000000000000000000000000000000000000000000000000";
???
???SIGNAL?receive_data_1?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???SIGNAL?receive_data_2?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???SIGNAL?receive_data_3?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???SIGNAL?receive_data_4?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???SIGNAL?receive_data_5?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???SIGNAL?receive_data_6?:?STD_LOGIC_VECTOR(7?DOWNTO?0):=?"00000000";
???
???SIGNAL?new_data???????:?STD_LOGIC_VECTOR(5?DOWNTO?0):=?"000000";
???
???SIGNAL?data_count?????:?STD_LOGIC_VECTOR(5?DOWNTO?0)?:=?"000000";
BEGIN
???bps_cnt?<=?"0000001101100011";
???bps_cnt_mid?<=?"0000000110110001";
???PROCESS?(clk_100M,?rst_p)
???BEGIN
??????IF?(rst_p?=?'1')?THEN
?????????rx_mid?<=?'0';
??????ELSIF?(clk_100M'EVENT?AND?clk_100M?=?'1')?THEN
?????????IF?(rx_en?=?'1')?THEN
????????????IF?(cnt?=?bps_cnt_mid)?THEN
???????????????rx_mid?<=?'1';
????????????ELSE
???????????????rx_mid?<=?'0';
????????????END?IF;
?????????ELSE
????????????rx_mid?<=?'0';
?????????END?IF;
??????END?IF;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1146

  • 2-2409261QHEN.doc
    下载

相关推荐