RS485接口收发测试FPGA读写实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 实验任务和现象 任务:使用两块开发板,一块用作发送,一块用作接收。通过4个按键改变数据,并用LED将发送和接收的数据显示出来。 现象:两块开发板LED显示的效果一样,并且按下不同的按键,可以改变LED的显示,同时接收的板子接到数据后改变LED显示。 •5、设计思路 我们依旧采用串口的设计思路,设计程序,但因为 MAX485是半双工器件,所以需要接收和发送状态切换,有两个时能端,我们的开发板,将两个接到一起用一个引脚控制。 我们以串口发送为例: 以波特率9600为例子说明,波特率9600接收一个bit的时间为1s/9600=104us,即每隔104us发送一个数据。 module RS485_Revc ( input sys_clk , input sys_rst_n , input RO , output wire RE_DE , output reg [7:0] LED ); /***************reg define****************/ reg [7:0] buff ; reg [7:0] data_out ; reg [15:0] counter ; reg rxd_din1 ; //uart rxd input ; reg rxd_din2 ; //uart rxd input ; reg rxd_negedge_sig_flag ; /***************wire define***************/ wire rxd_negedge_sig ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ assign RE_DE = 1'b0; always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) begin rxd_din1 <= 1'b0; rxd_din2 <= 1'b0; end else begin rxd_din1 <= RO ; rxd_din2 <= rxd_din1; end end assign rxd_negedge_sig = (~rxd_din2) &(rxd_din1); always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0) rxd_negedge_sig_flag <= 1'b0; else rxd_negedge_sig_flag <= rxd_negedge_sig; end always @ (posedge s