波特率发生模块仿真不通过,波形仿真不出来

2019-07-16 00:22发布

  1. /***************** 程序说明 **************************************************
  2. 功能:波特率发生模块
  3. 描述:

  4. <blockquote>在收到来自接收模块或者发送模块的启动信号
  5. baud_start后,启动波特率计数器 产生9600的比特率端口:clk:50Mhz时钟输入,
  6. Pin23; rst_n:        复位,低电平有效,
  7. Pin144;mid_flag:    接收/发送数据标志位,接收或者发送数据位的中间采样点baud_start:  波特率启动标志位;
  8. 波特率计算:eg:9600bps=9600bit/s9600bit/s=9600bit/1000 000us,那么传输每bit要1000 000/9600us,而一个时钟周期位0.02us,               
  9. 由此可计算出 1000 000/9600us有多少个0.02us,即多少个时钟,计算得:传输每bit要5208个时钟周期,计数从0到5207;

  10. *****************************************************************************/
  11. module baud_select(clk,rst_n,baud_start,mid_flag);
  12. input clk;
  13. input rst_n;
  14. input baud_start;
  15. output mid_flag;
  16. parameter bps9600=5207,  //波特率为9600bps
  17. //bps19200= 2603,        //波特率为19200bps
  18. //bps38400= 1301,        //波特率为38400bps
  19. //bps57600= 867,        //<font face="宋体">波特率为57600bps
  20. //bps115200= 433;        //波特率为115200bps
  21. //parameter bps9600_2= 2603,
  22. //bps19200_2= 1301,
  23. //bps38400_2= 650,
  24. //bps57600_2= 433,
  25. //bps115200_2=216;  
  26. `define  BPS_PARA 5207
  27. `define PS_PARA_2 2603
  28. //***************************************************************************波特率分频计数器,当启动信号标志位为1时计数开始**********//
  29. reg[12:0]cont;
  30. always @(posedge clk or negedge rst_n)
  31.        if(!rst_n)cont<= 13'd0;
  32.        else if((cont==`BPS_PARA)||!baud_start)cont<= 13'b0_0000_0000_0000;
  33.        else cont<=cont+1'b1;
  34.        align="left">
  35.        //*********************************************************************
  36.       发送一个位需要5028个时钟周期,在一个数据位中间时刻,即计数到2603时,接收或发送
  37.       标志位置,并传输给接收模块或者发送模块,以发送或接收数据;*********//
  38.       mid_flag_1;
  39.       always @(posedge clk or negedge rst_n)      
  40.       if(!rst_n)mid_flag_1<=1'b0;
  41.       else if((cont==`BPS_PARA_2))mid_flag_1<=1'b1;
  42.       else mid_flag_1<=1'b0;
  43.       assign mid_flag=mid_flag_1;

  44. /***************************************************************************/*
  45. endmodule
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。