FPGA UART设计逻辑
1 时序设计
2 串口接收模块(串转并)
2.1 模块设计
2.2 串口起始检测(高低跳变)
通过检测串口接收端 uart_rxd 的下降沿来捕获起始位。一旦检测到起始位,输出一个时钟周期的脉冲 start_flag,并进入串口接收过程。串口接收状态用 rx_flag 来标志,rx_flag 为高标志着串口接收过程正在进行,此时启动系统时钟计数器 clk_cnt 与接收数据计数器 rx_cnt。
2.3 时序设置
串口传输一位所需时长:(1/15200)
串口传输一位需要FPGA系统时钟的计数值:(1/15200)/(1/50000000)
当脉冲信号 start_flag 到达时,进入接收过程,计数到9位清除rx_flag
根据接收数据计数器来寄存UART接收端口数
数据接收完毕后给出标志信号uart_done,并寄存输出接收到的数据
3 串口发送模块(并转串)
3.1 模块设计
3.2 串口发送起始检测(高低跳变)
3.3 时序设置
当脉冲信号 en_flag 到达时,寄存待发送的数据,并进入发送过程
进入发送过程后,启动系统时钟计数器
根据发送数据计数器来给 uart 发送端口赋值
作者:技术洞察TIC
链接:https://juejin.cn/post/7034523708249243662