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

UART串口收发器设计VHDL代码Quartus仿真

05/16 08:22
523
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-250514195J5426.doc

共1个文件

名称:uart串口收发器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

uart串口收发器设计:
1、输入的8位并行数据使用UART协议串行输出。
2、可以接收UART协议信号,并将其并行输出(8位)。
3、波特率为9600bit/s。
4、带有奇偶校验位(奇校验或者偶检验)。

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

演示视频:

设计文档:

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.仿真图

整体仿真图

波特率模块

发送模块

接收模块

部分代码展示:

--uart串口收发器设计
--1、输入的8位并行数据使用UART协议串行输出
--2、可以接收UART协议信号,并将其并行输出(8位)
--3、波特率为9600bit/s
--4、带有奇偶校验位(奇校验或者偶检验)
LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
???USE?ieee.std_logic_arith.all;
--接收模块
ENTITY?uart_rx?IS
???PORT?(
??????clk??????????????????:?IN?STD_LOGIC;--时钟
??????rst_n????????????????:?IN?STD_LOGIC;--复位
??????baud16_tick??????????:?IN?STD_LOGIC;--波特率*16
??????uart_rx_buf_wr_en????:?OUT?STD_LOGIC;--接收使能
??????uart_rx_buf_wr_data??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--接收数据
??????uart_rx_err??????????:?OUT?STD_LOGIC;--校验错误
??????uart_rxd?????????????:?IN?STD_LOGIC--接收串行数据
???);
END?uart_rx;
ARCHITECTURE?trans?OF?uart_rx?IS
???
???SIGNAL???data_len?????????????:??STD_LOGIC_VECTOR(3?DOWNTO?0);--数据长度--?5~8
???SIGNAL???stop_len?????????????:??STD_LOGIC_VECTOR(1?DOWNTO?0);--停止位长度--?1~2
???SIGNAL???check_len????????????:??STD_LOGIC;--校验位长度--?0~1
???SIGNAL???check_mode???????????:??STD_LOGIC;--奇偶--?0~1
???
???SIGNAL?uart_rxd_bit_inv??????????:?STD_LOGIC;
???
???SIGNAL?Bau16_Tick_shift_r????????:?STD_LOGIC_VECTOR(1?DOWNTO?0);
???SIGNAL?Bau16_Tick_rising?????????:?STD_LOGIC;
???
???SIGNAL?state?????????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?next_state????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?cnt_baud16_tick???????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?cnt_rx_bit????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???
???SIGNAL?rx_shift_reg??????????????:?STD_LOGIC_VECTOR(8?DOWNTO?0);
???
???SIGNAL?rx_check_sum??????????????:?STD_LOGIC;
???SIGNAL?local_check_sum???????????:?STD_LOGIC;
???SIGNAL?uart_rx_buf_wr_data_buf?:?STD_LOGIC_VECTOR(7?DOWNTO?0);
BEGIN
???data_len<="1000";--8位数据位
stop_len<="01";--1位停止位
check_len<='1';--1位校验位
check_mode<='0';--奇校验
???--?Drive?referenced?outputs
???uart_rx_buf_wr_data?<=?uart_rx_buf_wr_data_buf;--输出接收数据
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????uart_rxd_bit_inv?<=?uart_rxd;--同步到时钟下
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????Bau16_Tick_shift_r?<=?(Bau16_Tick_shift_r(0)?&?baud16_tick);
??????END?IF;
???END?PROCESS;

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

  • 2-250514195J5426.doc
    下载

相关推荐