名称:串口UART发送及接收设计Verilog代码Quartus? DE2开发板
软件:Quartus
语言:Verilog
代码功能:串口UART发送及接收
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2开发板验证,DE2开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1.?工程文件
2.?程序文件
3.?程序编译
4.?RTL图
5.?管脚分配
6.?仿真图
Testbench
整体仿真图
发送数据产生模块
UART发送模块
UART接收模块
接收数据显示模块
部分代码展示:
module?uart_send( ????input??????sys_clk,??????????????????//系统时钟 ????input?????????sys_rst_n,????????????????//系统复位,低电平有效 ???? ????input?????????uart_en,??????????????????//发送使能信号 ????input??[6:0]??uart_din,?????????????????//待发送数据 ????output??reg???uart_txd??????????????????//UART发送端口 ????); ???? //parameter?define localparam?BPS_CNT??=?5208;????????//为得到指定波特率,50000000/9600=系统时钟频率/串口波特=5208 //reg?define reg????????uart_en_d0;? reg????????uart_en_d1;?? reg?[15:0]?clk_cnt;?????????????????????????//系统时钟计数器 reg?[?3:0]?tx_cnt;??????????????????????????//发送数据计数器 reg????????tx_flag;?????????????????????????//发送过程标志信号 reg?[?6:0]?tx_data;?????????????????????????//寄存发送数据 //wire?define wire???????en_flag; //***************************************************** //**????????????????????main?code //***************************************************** //捕获uart_en上升沿,得到一个时钟周期的脉冲信号 assign?en_flag?=?(~uart_en_d1)?&?uart_en_d0; ????????????????????????????????????????????????? //对发送使能信号uart_en延迟两个时钟周期 always?@(posedge?sys_clk?or?negedge?sys_rst_n)?begin????????? ????if?(!sys_rst_n)?begin ????????uart_en_d0?<=?1'b0;?????????????????????????????????? ????????uart_en_d1?<=?1'b0; ????end?????????????????????????????????????????????????????? ????else?begin??????????????????????????????????????????????? ????????uart_en_d0?<=?uart_en;??????????????????????????????? ????????uart_en_d1?<=?uart_en_d0;???????????????????????????? ????end end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1223
阅读全文