低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试

本节目录

bash 复制代码
一、设计思路
二、loop环回模块
三、仿真模块
四、仿真验证
五、上板验证
六、往期文章链接

本节内容

一、设计思路

串口数据的收发回环测试,最简单的硬件测试是把Tx和Rx连接在一起,然后上位机进行发送和接收测试,但是需要考虑到串口数据的缓存,通常软件驱动侧也会实现串口接收数据的缓存,或者通过一个环形buffer进行串口接收数据的处理。

当然,若PC端串口只发送一个字节,FPGA内部可以直接将数据回环发送至PC。显然应用时候不可能如此,因此在FPGA内部需要预留一定的缓存,常用的设计思路通过FIFO将接收的数据缓存处理。在FPGA发送串口数据的时候,也需要给PC端串口留一定的处理时间,否则可能会发送因发送过快,导致上位机串口无法响应。

串口接收模块,用来接收上位机发送的数据;串口发送模块,用于将数据发回上位机;数据环回,负责把从串口接收模块接收到的数据送给串口发送模块,以实现串口数据的环回。

仿真模块,用于模拟上位机实现PC串口数据发送和PC串口接收FPGA的回环数据。通过仿真比对,PC发送的数据和接收的数据是否一致,从而判断数据的正确性。

二、loop环回模块

串口loop环回模块,主要是通过一个FIFO缓存串口接收的数据,在将FIFO中的数据一个一个字节发送。

采用uart_rx模块的数据有效作为FIFO的写入控制,每个字节有效时候,写入FIFO。串口数据的发送,则以FIFO的非空标志作为启动,读取FIFO内的数据并通过uart_tx将数据发送出去。通过发送接收uart_tx_stop,控制tx_start,每发送一个字节后停止发送,检查FIFO的状态,从而实现FIFO的非空启动。

三、仿真模块

宏定义`define SIM的方式,将工程中的uart的时钟与复位信号,引入至仿真模块,此处设计的好处,保证仿真uart和工程模块中的uart所使用的逻辑功能在一个时钟域下。

需要注意的是:编译的时候需要把仿真宏定义注释掉。

采样task任务封装实现串口数据帧的发送,当然开发者也可以自定义业务的帧头帧尾以及帧内容。

四、仿真验证

仿真中sim_uart_tx模拟上位机的发送数据,sim_uart_rx模拟上位机的接收数据,在仿真模块中frame task产生固定的串口帧格式发送数据:

帧头为a1b2c3d4

中间数据32'h80002000,32'h000000001,32'h000000001

帧尾为a6b7c8d9

从仿真中可以看出来,第一帧的数据与输入的测试激励一致。

仿真中sim_uart_tx模拟上位机的发送数据,图中可以sim_uart_tx的字节a1比uart_rx的字节a1更早,并且两种的数值一致。

仿真中sim_uart_rx模拟上位机的接收数据,图中可以uart_tx的字节a1比sim_uart_rx的字节a1更早,并且两种的数值一致。

五、上板验证

上板验证,采用的是正点原子的7020开发板,自定义GPIO作为串口的收发pin,通过CH340的模块与PC的usb端口相连,上位机软件进行串口数据的发送与接收。

六、往期文章链接

UltraScale+FPGA中Serdes的多lane对齐异常解决方案
vivado时序报告中slack是如何计算的?如何优化时序?
UltraScale+FPGA中GTY的TX路径时钟详解------以40G的ETH MAC IP为例
vivado时序优化------约束异步时钟组set_clock_groups
基于FDMA和AXI4接口的DDR4遍历读写测试
基于fpga的图像处理之3x3_5x5算子模板设计
基于fpga的图像处理之3x3_5x5算子模板中值排序
基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)
AXI协议之AXILite开发设计(一)
AXI协议之AXILite开发设计(二)
AXI协议之AXILite开发设计(三)
AXI协议之AXILite开发设计(四)
AXI协议之AXILite开发设计(五)
FPGA和Matlab的FFT功能验证(一)
FPGA和Matlab的FFT功能验证(二)
FPGA和Matlab的FFT功能验证(三)
跟小灰灰一起学vivado:7系列FPGA的MultiBoot和Fallback功能更新固件
跟小灰灰一起学vivado:7系列FPGA配置模式之配置数据文件格式和配置时序步骤
跟小灰灰一起学vivado:7系列FPGA配置模式之主SPI四路(x4)
跟小灰灰一起学vivado:PCIe XDMA实现远程更新FPGA固件
Xilinx UltraScale+DDR4项目开发(一)------DDR4 MIG的ip接口信号

Xilinx UltraScale+DDR4项目开发(二)------DDR4 MIG的时钟网络
Xilinx UltraScale+DDR4项目开发(三)------DDR4器件选型与MIG IP的配置
低速接口项目之串口Uart开发(一)------串口UART
低速接口项目之串口Uart开发(二)------FIFO实现串口数据的收发回环测试
低速接口项目之串口Uart开发(三)------串口发送模块和接收模块
低速接口项目之串口Uart开发(四)------UART串口实现FPGA内部AXILITE寄存器的读写控制
低速接口项目之串口Uart开发(五)------QT实现Uart串口寄存器读写工具
低速接口项目之串口Uart开发(六)------zynq系列ps-pl端uart实现共享Axilite内部寄存器的读写
低速接口项目之串口Uart开发(七)------如何在FPGA项目中实现自适应波特率串口功能
低速接口项目之串口Uart开发(八)------如何通过ps侧的串口实现zynq的在线升级(一)
低速接口项目之串口Uart开发(九)------如何通过ps侧的串口实现zynq的在线升级(二)
低速接口项目之串口Uart开发(十)------基于EMIO的自定义PL串口实现zynq的在线升级

相关推荐
珞光电子USRP SDR软件无线电平台14 小时前
打破通用瓶颈:珞光电子发布 Luowave Driver V2 定制化驱动方案
fpga开发
9527华安14 小时前
FPGA实现PCIe数据通信培训课程,提供工程源码+视频教程+FPGA开发板
fpga开发·pcie·视频教程·培训
my_daling14 小时前
FPGA实现IIC主机读写,以及部分IIC传感器控制流程
fpga开发
乌恩大侠14 小时前
【AI-RAN】在空ubuntu服务器安装环境和生成TV,高达430G文件
服务器·人工智能·ubuntu·fpga开发·o-ru
qq_1508419916 小时前
高云FPGA固件下载速成
fpga开发
一个平凡而乐于分享的小比特16 小时前
一文读懂MCU与FPGA:核心区别、协同之道与双修秘籍
单片机·fpga开发·职场发展·mcu开发
LCMICRO-1331084774620 小时前
长芯微LD1871完全P2P替代AD1871,是一款立体声音频ADC
单片机·嵌入式硬件·fpga开发·音视频·硬件工程·dsp开发·音频adc
木心术121 小时前
AI在FPGA中实现多平台射频信号时隙调整参考及案例
人工智能·fpga开发·信息与通信
LCMICRO-1331084774621 小时前
长芯微LD73360完全P2P替代AD73360,是一款工业电能计量6通道模拟输入前端(AFE) 处理器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模拟前端afe
zjxtxdy1 天前
STM32开发
stm32·单片机·fpga开发