名称:UART异步串行通信协议RS232Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
UART异步串行通信协议RS232
设计要求:
1.按照10位异步串行通信协议(1个起始位、1个停止位和8个数据位,8位并行数据从最低位开始逐位传送)、波特率2400,时钟源为50MHz,设计UART发送端电路,并仿真验证电路功能;
2.按照与发送端一致的协议和波特率、相同频率的时钟源,将接收到的数据转换成8位并实行数据。设计UART接收端电路,并仿真验证电路功能;
3.把1、2中设计的两个电路合并到一个可综合模块中,并仿照题目1中的M0模块编写该题目的测试模块,产生10组测试信号,以仿真验证所设计电路是否能正确发送,接收数据。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
整体仿真图
发送模块仿真图
接收模块仿真图
部分代码展示:
//UART顶层模块 //波特率2400,1位起始位,8位数据位,1位停止位 //将发送模块的串行输出接到接收模块的串行输入上 //验证接收数据是否等于输入数据 module?uart_top( ????input???????????sys_clk,??????????//外部50M时钟 ????input???????????sys_rst_n,????????//外部复位信号,低有效 ?input??????????send_en,????????//发送使能 ?input??????????[7:0]?data_send,???//发送数据? ?output?????????receive_vld,?//接收数据有效指示 ?output?[7:0]?data_receive?//接收数据 ????); ???? //wire?define??? wire?uart_rx_tx;//将发送模块的串行输出接到接收模块的串行输入上 //UART接收模块????? uart_recv?u_uart_recv(????????????????? ????.sys_clk????????(sys_clk),//外部50M时钟? ????.sys_rst_n??????(sys_rst_n),//外部复位信号,低有效 ????.uart_rxd???????(uart_rx_tx),//UART接收端口 ????.uart_done??????(receive_vld),//接收数据有效指示 ????.uart_data??????(data_receive)//接收数据LED显示 ????); ? //UART发送模块???? uart_send?u_uart_send(????????????????? ????.sys_clk????????(sys_clk),//外部50M时钟? ????.sys_rst_n??????(sys_rst_n),//外部复位信号,低有效 ????.uart_en????????(send_en),//发送按键 ????.uart_din???????(data_send),//发送数据 ????.uart_txd???????(uart_rx_tx)//UART发送端口 ????); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=600