教学开发板上的uart串口实验

為{幸葍}努か 提交于 2021-01-22 09:43:19

硬件资源

教学开发板(如下图所示)是带有USB-UART转接桥的,桥接到J6连接器。PC可以通过标准的COM端口命令连接到电路板。电脑需要有USB-COM串口驱动程序才能顺利连接。

开发板正面图

USB-UART与A7连接的情况如下图,使用双线串行端口(TXD/RXD)和可选的硬件流控制(RTS / CTS)与FPGA交换串行端口数据。安装驱动程序后,可以从指向COM端口的PC使用I / O命令,以在C4和D4 FPGA引脚上产生串行数据流量。

FT2232HQ也可用作Digilent USB-JTAG电路的控制器,但USB-UART和USB-JTAG功能完全相互独立。有兴趣在其设计中使用FT2232的UART功能的编程人员无需担心JTAG电路干扰UART数据传输,反之亦然。将这两个功能组合到一个设备中,可以对Nexys A7进行编程,通过UART进行通信,并通过连接有单根Micro USB线缆的计算机供电。

Nexys A7 FT2322HQ连接

 

 

传输模式

FT2232有两个通信的方向可以实现全双同的通信方式,但是需要串行传输每次传输一位。所以在发送数据的时候需要先将其串行化

数据传输的时候没有时钟信号统一控制,通过异步传输的方式。实现异步传输的时候就需要有一个方式来告知对方这边要开始传输数据了。串口传输的时候通常如下:

  • PC和电路板约定一个波特率,使其发送和接收的速度一致
  • 没有数据传输的时候,数据线置高位。每个数据传输之前发送 0 表示开始传输
  • 传输的每组数据按照一定的格式(1个起始位,7个数据位,1个校验位,1个结束位)和速度。
  • 传输结束,再发送一个停止位1

在约定传输速度的时候通常我们用波特率来表示,常用的波特率有9600bps和115200bps。表示每秒的多少个比特位。

发送模块的设计

发送模块设计

发送模块tx_module.v,由tx_bps_module来产生发送的时序,如下图当在每位数据的中间采集数据的时候最稳定,所以都在中间采集。在使能信号置为1的时候波特率定时模块开始产生BPS_CLK信号,每个BPS_CLK信号将tx_Data数据串行传输给tx_Pin_Out. 注意,串口传输数据“从最低位开始,到最高位结束”。

发送时序

 

接收模块的设计

接收模块

detect_module.v 的输入是连结无理引脚rx,它主要检测一帧数据的第0位,也就是起始位,然后产生一个高脉冲经 H2L_Sig 给 rx_control_module.v ,以表示一帧数据接收工作已经开始。

rx_bps_module.v 是产生波特率定时的功能模块。换一句话说,它是配置波特率的模块。

当rx_control_module.v 拉高 Count_Sig, bps_module.v 经 BPS_CLK 对 rx_control_module.v 产生定时。

rx_control_module.v 是核心控制模块。对串口的配置主要是1帧11位的数据,重视八位数据位,无视起始位,校验位和结束位。当RX_En_Sig 拉高,这个模块就开始工作,他将采集来自 RX_Pin_In 的数据,当完成一帧数据接收的时候,就会产生一个高脉冲给 RX_Done_Sig。

 

具体的代码之后会添加链接。有需要可以私信我。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!