当前位置:   article > 正文

Verilog HDL-串口RS232实现_verilog hdl 数据通信

verilog hdl 数据通信
  • 串口简介

        通用异步收发传输器,简称UART。

        UART是一种通用的数据通信协议,发送数据时将并行数据转换为串行数据来传输,接收数据时将接收到的串行数据转换为并行数据。

  • 整体原理绘制框图:

    

  • 绘制UART-RX波形          

使用多级寄存器,减少亚稳态,如下图所示:

        经过三级寄存器,减少亚稳态。

        时钟周期为20ns,波特率为9600,可以计算出一个波特占用的周期数如下:

                         (1/9600*10^9)/20=5208(个)

       取中间值做信号提取,波形图如下:

编写串口模块代码如下:

  1. module uart_rx
  2. #(
  3. parameter UART_BPS = 'd9600 ,
  4. parameter CLK_FREQ = 'd50_000_000
  5. )
  6. (
  7. input wire sys_clk ,
  8. input wire sys_rst_n ,
  9. input wire rx ,
  10. output reg [7:0] po_data ,
  11. output reg po_flag
  12. );
  13. parameter BAUD_CNT_MAX = CLK_FREQ / UART_BPS;
  14. reg rx_reg1 ;
  15. reg rx_reg2 ;
  16. reg rx_reg3 ;
  17. reg start_flag ;
  18. reg work_en ;
  19. reg [12:0] baud_cnt ;
  20. reg bit_flag ;
  21. reg [3:0] bit_cnt ;
  22. reg [7:0] rx_data ;
  23. reg rx_flag ;
  24. always@(posedge sys_clk or negedge sys_rst_n)
  25. if(sys_rst_n == 1'b0)
  26. rx_reg1 <= 1'b1;
  27. else
  28. rx_reg1 <= rx;
  29. always@(posedge sys_clk or negedge sys_rst_n)
  30. if(sys_rst_n == 1'b0)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/641381
推荐阅读
相关标签
  

闽ICP备14008679号