名称:串口UART发送器和接收器设计Verilog代码Quartus? DE2开发板
软件:Quartus
语言:Verilog
代码功能:
串口UART发送器和接收器
波特率57600, 奇偶校验:偶,位数:7bits, 输入Sw[13:7],发送键key3,输出Hex1-0,framing error: LEDG[7], 奇偶校验error: LEDG[6]
在分配的第一部分中,您将开发一个UART发送器,以通过串行链接从DE2板向运行终端程序的PC串行发送数据。然后,PC应显示所传输数据的ASCII值。
例如,如果发送了0x41,则应显示大写字母“ A”。通过在“输入”上键入二进制数据来输入数据,然后在按下“发送”键时进行传输。数据应按照表2所示的波特率,奇偶校验和位数进行传输。
在分配的第二部分和最后一部分中,您将开发一个UART接收器,以通过PC上的串行链路将数据串行接收到DE2板上。
运行终端程序。然后,DE2应该在7段LED上以十六进制显示接收到的数据的ASCII值。数据应按照表2所示的波特率,奇偶校验和位数进行接收。
如果有framing error 或奇偶校验错误,则应点亮相应的LED(请参阅表2)。
请确保您的设计是完全同步的,即所有D型触发器都应以系统时钟作为时钟源。您应该将这两个部分都包含在顶级文件中,以便同时发送和接收。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2开发板验证,DE2开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1.?工程文件
2.?程序文件
3.?程序编译
4.?管脚分配
5.?RTL图
6.?Testbench
7.?仿真图
发送0110010,接收到0110010
发送1011001,接收到1011001
部分代码展示:
module?UART( input?clk_50M, input?reset_n, //串口收发 input?rx,//UART_RXD output?tx,//UART_TXD input?[6:0]?SW,//输入Sw[13:7] input?key3,//发送键 output?[7:0]?HEX0,//数码管显示 output?[7:0]?HEX1,//数码管显示 output?framing_error,//LEDG[7] output?error//奇偶校验error,LEDG[6] ); //波特率57600,?奇偶校验:偶,位数:7bits wire?[6:0]?receive_data; wire?[6:0]?send_data; assign?send_data=SW; assign?framing_error=0; //接收模块 UART_rx_module?i_UART_rx_module( .clk(clk_50M), .rst_p(!reset_n), .rs232_rx(rx), .receive_data(receive_data), .error(error) ); //发送模块 UART_tx_module?i_UART_tx_module( .clk(clk_50M), .rst_p(!reset_n), .send_data(send_data), .key3(key3), .rs232_tx(tx) ); //显示模块 display?i_display( .?clk_50M(clk_50M), .?receive_data(receive_data), .?HEX0(HEX0), .?HEX1(HEX1) );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1222