语言:Verilog
代码功能:
功能描述
提高∪ART通信的传输速率,支持更高的波
特率(如115200、230400或更
实现方法
1.优化波特率分频
使用更高的系统时钟频率(如100MHz)和更小的分频系数。
例如,系统时钟为100MHz,波特率为115200时,分频系数为
Baud Rate Divisor 100, 000, 000115,200≈868
2.使用PLL生成精确时钟
使用FPGA的PLL(锁相环)模块生成精确的波特率时钟,減少时钟误差。
3.多倍采样
在接收端使用多倍采样(如16倍采样来提高数据采样的准确性,尤其是在高波特率下。
演示视频:
部分代码展示:
//UART module?uart_top( ????input?sys_clk,??????????//外部时钟 ????input?sys_rst_n,????????//外部复位信号,低有效 ?input?send_key,//发送按键 ?input?[7:0]?data_in,//发送数据输入? ?output?[7:0]?recv_data,//接收的数据(led显示) ????//uart接口 ????input??uart_rxd,?????????//UART接收端口 ????output?uart_txd??????????//UART发送端口 ????); ????? wire???????uart_done;???????????????//UART发送使能 wire?[7:0]?uart_data;???????????????//UART发送数据 //UART接收模块 uart_recv?i_uart_recv (????????????????? .sys_clk????????(sys_clk),? .sys_rst_n??????(sys_rst_n), .uart_rxd???????(uart_rxd), .uart_done??????(uart_done), .uart_data??????(uart_data) ); //UART发送模块 uart_send?i_uart_send (????????????????? .sys_clk????????(sys_clk), .sys_rst_n??????(sys_rst_n),?? .uart_en????????(send_key), .uart_din???????(data_in), .uart_txd???????(uart_txd) ); assign?recv_data=uart_data;//输出接收数据 endmodule
代码文件(付费下载):
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1540
阅读全文