异步通信起始位正确检测的 VHDL 实现
概述
随着电子设计自动化(EDA)技术的发展,可编程逻辑器件 FPGA/CPLD 已经在许多方面得到了广泛应用,而 UART(通用异步收发器)
是在数字通信和控制系统中广泛使用的串行数据传输协议。因此越来越多用户根据自己的需要,以 EDA 技术作为开发手段,用一块 FP
GA/CPLD 设计出符合自己需要的 UART 芯片。基于 FPGA/ CPLD 的 UART 设计在诸多文献中都有论述,在此不再对 UART 整个功能
模块实现做太多的论述。本文着重分析 UART 接收器起始位的检测。
3 倍频采样的缺陷
首先,串行异步通信规定了字符数据的传送格式。每一帧数据由起始位、数据位、奇偶校验位、停止位和线路空闲状态组成,格式
如图 1 所示。一般情况起始位为 1 位,数据位为 5、6、7 或 8 位、奇偶校验位为 1 位,停止位为 1、1.5 或 2 位。其中的起始位和停止
位就是用来实现字符的同步。在空闲状态,传送线为逻辑“1”状态。数据的传送总是以一个“起始位”开始的,接着是要传送的若干数据位,低位
先行,最后是一个“1”状态的“停止位”;那么,当接收器检测到一个“1”向“0”的跳变时,便视为可能的起始位。起始位被确认后,就知道发送器
已开始发送,当接收了已协议好的位数后并接收到字符帧中停止位就是一帧字符数据已发送完毕。这样,接收器就知道发送器何时开始
发送数据和何时结束发送数据。
图 1 异步通信字符帧格式
要提高接收器的接收准确性,减少误码率,必须要用比数据波特率高 n 倍(n≥1)的速率对数据进行采样。文献 2 中采用了非常规的 3
倍频采样方法:用 3 倍频的波特率对每一位数据进行采样(如图 2 所示),然后对 3 次采样结果进行判决。如果 3 次采样中至少有 2 次为
高电平,则接收这一位数据被判决为高电平,否则,为低电平。
- 1
- 2
- 3
前往页