
1 UART协议基础原理1.1协议核心特性UART是异步全双工串行通信协议无需同步时钟信号仅通过TX发送端、RX接收端两根信号线实现设备间数据传输具备结构简单、硬件成本低、兼容性强的特点是嵌入式、FPGA项目中最常用的低速通信协议。异步通信核心特点收发双方独立工作依靠预先约定的波特率、数据格式完成数据同步无需时钟线同步。1.2 UART数据帧格式UART通信以字节为最小传输单元标准结构由4部分组成传输顺序为起始位→数据位→校验位可选→停止位空闲状态下RX/TX引脚保持高电平。标准UART帧结构示意图如下帧组成部分位数功能说明起始位1位固定低电平0标志一帧数据开始用于收发同步数据位5~8位常用8位有效传输数据低位在前、高位在后传输校验位0/1位无校验/奇校验/偶校验用于检测传输错误停止位1/1.5/2位常用1位固定高电平1标志一帧数据结束1.3关键参数说明1.3.1波特率波特率决定串口数据传输速度常用标准值9600、19200、38400、57600、115200、921600bps。FPGA解析核心为波特率分频计数通过系统时钟分频得到单比特数据的采样时钟。分频系数计算公式分频值 系统时钟频率 / 波特率示例系统时钟50MHz波特率115200分频值50000000/115200≈4341.3.2校验规则UART 校验统计对象仅统计【8 位数据位】中 1 的个数校验位本身不参与统计无校验 None不发送校验位帧结构起始位 8 数据位 停止位传输速度最快工程默认常用偶校验 Even规则数据位 1 的个数 校验位 偶数FPGA / 发送器自动补 0/1让整体 1 总数为偶数示例数据位01010101 → 1 的个数 4偶数 → 校验位填0数据位01010100 → 1 的个数 3奇数 → 校验位填1奇校验 Odd规则数据位 1 的个数 校验位 奇数自动补 0/1让整体 1 总数为奇数示例数据位01010101 → 1 的个数 4偶数 → 校验位填1数据位01010100 → 1 的个数 3奇数 → 校验位填01.4 UART核心时序图与时序说明本节给出FPGA UART接收解析完整工作时序图包含空闲态、起始位、数据位、停止位、有效输出完整时序对应本文中位中点采样、状态机跳转、波特率计数逻辑是模块设计、仿真对照、问题排查的核心时序依据。1.4.1核心时序参数定义基于50MHz系统时钟、115200bps波特率配置单比特时序参数如下为FPGA采样逻辑的核心依据单比特总时钟周期434个系统时钟单bit传输时长中位采样偏移217个系统时钟规避信号边沿抖动保证采样稳定性单帧总时长起始位8数据位停止位共10bit总时长约37.7μs数据有效时序帧解析完成后输出单时钟周期有效脉冲避免数据重复采样1.4.2时序匹配逻辑该时序完全匹配本文状态机跳转与计数逻辑空闲态检测下降沿触发START状态半周期采样确认起始位后进入DATA数据接收状态逐位计数采样完成8位数据采集最终检测停止位后拉高数据有效信号回归空闲状态时序闭环无偏差。2 核心模块设计2.1信号同步模块2.1.1设计原理外部UART_RX信号为异步信号与FPGA系统时钟不同域直接采样易产生亚稳态导致数据解析错误。通过两级D触发器打拍同步将异步信号同步至系统时钟域消除亚稳态风险。2.1.2功能逻辑输入原始RX信号经过第一级寄存器缓存第二级寄存器同步输出稳定的同步后RX信号作为后续解析模块的输入信号。2.2波特率采样模块2.2.1设计原理UART异步通信无同步时钟FPGA需通过系统时钟分频生成对应波特率的采样时序。为避免信号边沿抖动干扰采用位中间采样机制检测到起始位下降沿后等待半个分频周期开始在每位数据中间位置采样大幅提升采样准确率。2.2.2计数逻辑空闲状态计数器清零不采样检测到起始位下降沿启动计数器开始波特率计数计数达到半分频值锁定起始位确认帧开始后续每满一个分频周期采样一位数据依次采集数据位、校验位、停止位2.3帧解析与校验模块2.3.1解析状态机设计采用有限状态机FSM实现帧解析状态切换清晰、逻辑稳定共5个工作状态完整覆盖UART一帧数据的接收解析全流程状态机跳转逻辑图如下状态机详细说明发送状态机IDLE空闲状态默认状态发送起始位低电平信号TxStr起始位确认发送起始位TXDATA数据位发送依次接收5~8位数据低位在前缓存至寄存器PARITY发送校验位可选根据配置模式完成奇偶校验发送无校验模式直接跳转STOP发送停止位发送停止位高电平确认帧传输完成。接收状态机IDLE空闲状态默认状态等待RX信号下降沿检测起始位RxStr起始位确认接收起始位RXDATA数据位接收依次接收5~8位数据低位在前缓存至寄存器PARITY校验位检测可选根据配置模式完成奇偶校验检测无校验模式直接跳转STOP停止位检测停止位高电平检测确认帧传输完成。2.3.2 错误容错机制为适配工业复杂环境设计两类错误检测机制避免异常数据干扰系统帧错误未检测到合法停止位判定为帧异常丢弃当前帧数据返回空闲状态校验错误开启校验模式时校验位计算结果与接收值不符判定数据传输错误丢弃数据3 仿真验证3.1 仿真环境仿真工具ModelSim系统时钟50MHz测试波特率115200bps3.2 仿真结果说明奇校验偶校验3.3 常见问题与优化方案常见问题问题原因优化方案数据解析乱码波特率分频误差、信号抖动、亚稳态优化分频精度、保留两级信号同步、增加中位采样机制偶尔丢帧起始位误触发、干扰脉冲增加起始位防抖判断连续采样多次确认起始位高速波特率通信异常分频计数精度不足采用小数分频或优化计数逻辑降低波特率误差