0


FPGA上板项目(五)——UART测试,串口发送

目录


实验内容

  • 每隔1s,串口发送一次 “HELLO!”

UART 相关的原理 野火FPGA跟练(四)——串口RS232、亚稳态、串口RS485 中做过阐述,本篇文章将在此基础上优化,并进行上板验证。

串口发送模块

模块框图

在这里插入图片描述
引脚方向位宽说明clkin1时钟rst_nin1同步低复位tx_datain8发送数据tx_validin1发送数据有效标志位tx_pinout1发送端引脚tx_readyout1发送端准备标志位

  • tx_valid:表征 tx_data 的有效性,tx_valid 为高时表示 tx_data 可用,可以进行后续的并串转换。
  • tx_ready:tx_ready 为高时表示发送缓冲区为空, tx_data 已经并串转换为 tx_pin,一帧数据转换已结束,发送端已准备好发送下一帧数据。

时序波形

在这里插入图片描述

状态变量分析:

  • IDLE:空闲状态,此时 TX_PIN 为高,TX_READY 为高。
  • START:发送起始位(TX_PIN 为低)
  • DATA:发送数据位,此时 BIT_CNT 开始计数,从 0-7。
  • STOP:发送停止位(TX_PIN 为高)

仿真结果

对编写的 HDL 代码进行仿真,仿真时序图如下。逐个信号进行比对后,可以看出,仿真结果与预想的时序波形相同。

在这里插入图片描述

下面检验比特信息是否正确,对上面的波形图进行比特位截取。此时,这一帧要发送的数据为11,即 0000 1011,低位先发则顺序调整为 1101 0000,可以从图中看出,比特信息发送正确。

在这里插入图片描述

顶层模块设计

实验内容回顾:每隔一秒,串口发送一次“HELLO!”

时序波形

在这里插入图片描述

  • 1s_CNT 计数达 MAX 后,TX_VALID 拉高,开始发送数据
  • 每发送完一个字符(即 TX_READY 为高,TX_READY_2 为低时),TX_CNT 计数加一
  • TX_DATA 依据 TX_CNT 的数值变化而更新
  • 当 TX_CNT 不为零且 TX_READY_2 为高的时候(即 TX_DATA 更新的时候),TX_VALID 再次将自己拉高

仿真结果

对编写的 HDL 代码进行仿真,仿真时序图如下。逐个信号进行比对后,可以看出,仿真结果与预想的时序波形相同。

在这里插入图片描述

  • one_sec_cnt 达到 MAX 后,tx_valid 被拉高,开始发送数据

在这里插入图片描述在这里插入图片描述

  • 发送完一个字符后,tx_valid 被重新拉高。
  • 发送完最后一个字符后,tx_valid 保持为低,等待下一个 one_sec_cnt 计数结束

上板验证

在这里插入图片描述

  • 通过串口助手可以看到,每隔1s,串口发送了一次“HELLO!”
标签: fpga开发

本文转载自: https://blog.csdn.net/weixin_45926435/article/details/141225192
版权归原作者 _做个辣妹 所有, 如有侵权,请联系我们删除。

“FPGA上板项目(五)——UART测试,串口发送”的评论:

还没有评论