FPGA学习之串口接收模块

FPGA学习之串口接收模块

原文弊端,串口每次只能接受一个,再接受需要先关闭串口再打开才有效。(可能是软件问题,换一个之后OK)

首先是改波特率,例程为9600,改成115200.

115200 bps 传输速度使一位数据的周期是 0.0000086805s 。以 50Mhz 时钟频率
要得到上述的定时需要:
N = 0.0000086805 / ( 1 / 50Mhz ) = 434

 1 module rx_bps_module
 2 (
 3  CLK, RSTn,Count_Sig, BPS_CLK
 4 
 5 );
 6 input CLK;
 7 input RSTn;
 8 input Count_Sig;
 9 output BPS_CLK;
10 
11 /******************************/
12 
13 reg [12:0]Count_BPS; 
14 
15 /******************************/
16 
17  always @ ( posedge CLK or negedge RSTn )
18          if( !RSTn )
19           Count_BPS <= 13'd0;
20          // else if(Count_BPS == 13'd5207 )// 9600  bps  传输一位数据时间
21           else if(Count_BPS == 13'd433 )// 115200  bps  传输一位数据时间
22               Count_BPS <= 13'd0;
23          else if( Count_Sig )  //计数信号使能
24              Count_BPS <= Count_BPS + 1'b1;
25          else
26              Count_BPS <= 13'd0;//计数信号no使能
27         
28      /********************************/
29    assign BPS_CLK = ( Count_BPS == 12'd217 ) ? 1'b1 : 1'b0;//一个周期的二分之一时间时,产生一个高脉冲
30 
31     /*********************************/
32 
33 
34 
35 
36 endmodule

 

posted @ 2017-05-01 21:15  古月照今尘  阅读(3645)  评论(0编辑  收藏  举报