FPGA UART设计逻辑

1 时序设计

image.png

2 串口接收模块(串转并)

image.png

2.1 模块设计

image.png
image.png

2.2 串口起始检测(高低跳变)

  • 通过检测串口接收端 uart_rxd 的下降沿来捕获起始位。一旦检测到起始位,输出一个时钟周期的脉冲 start_flag,并进入串口接收过程。串口接收状态用 rx_flag 来标志,rx_flag 为高标志着串口接收过程正在进行,此时启动系统时钟计数器 clk_cnt 与接收数据计数器 rx_cnt。
    image.png

2.3 时序设置

    1. 串口传输一位所需时长:(1/15200)
    1. 串口传输一位需要FPGA系统时钟的计数值:(1/15200)/(1/50000000)
      image.png
      image.png
      image.png
    1. 当脉冲信号 start_flag 到达时,进入接收过程,计数到9位清除rx_flag

      image.png

    1. 根据接收数据计数器来寄存UART接收端口数
      image.png
      image.png
    1. 数据接收完毕后给出标志信号uart_done,并寄存输出接收到的数据
      image.png

3 串口发送模块(并转串)

image.png

3.1 模块设计

image.png

3.2 串口发送起始检测(高低跳变)

image.png

3.3 时序设置

  • 当脉冲信号 en_flag 到达时,寄存待发送的数据,并进入发送过程
    image.png
  • 进入发送过程后,启动系统时钟计数器
    image.png
    image.png
  • 根据发送数据计数器来给 uart 发送端口赋值
    image.png

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%