1、26 集成电路应用 第 40 卷 第 1 期(总第 352 期)2023 年 1 月 Research and Design 研究与设计UART接口8。除此之外,采样系统时钟精度造成的自身频率漂移9以及分频系数计算取整的误差也会导致实际波特率与标准波特率存在误差。因此,本文希望设计一种能根据实际发送速率以及接收方自身情况进行波特率进行自动校准的UART。2 设计实现系统采用模块化设计,可降低系统设计的复杂度10。主要包括发送模块、接收模块、TXFIFO、RXFIFO以及寄存器管理模块。设计中将波特率转换为比特持续时间,由式(1)得到对应的系统时钟周期数,称为分频系数。在固定的时钟频率下,通过调
2、整分频系数实现波特率的连续可调。Divisor=(clock_freq)/baudrate (1)2.1 发送模块发送模块内部功能单元如图1所示。根据波特0 引言为了实现SoC系统与外部设备的通信,通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)成为一个很重要的媒介1。作为异步通信,UART不存在时钟总线,数据传输的时序同步靠波特率来标准化,接收设备在侦测到起始位的下跳变电平信号时,作为一个数据传输时钟计时起始,直至完成停止位的接收2。1 研究背景发送方和接收方的波特率保持一致对UART通信至关重要,现在有许多设备在硬件或软件的
3、层面实现了波特率的自适应3-5,采用最小数法6、固定数据传输法7等方法进行波特率检测,达到自动匹配波特率,从而建立通信链路的目的。然而随着外接设备的日益丰富,部分设备可能具有非标准速率的作者简介:颜志颖,西安电子科技大学广州研究院;研究方向:集成电路设计。戴显英,西安电子科技大学微电子学院;研究方向:二维材料与器件、光电生物传感器。收稿日期:2022-12-09;修回日期:2022-12-27。摘要:阐述基于硬件描述语言设计了一个波特率自动校准的通用异步收发器。采用硬件法实时监测接收端波特率并更新分频系数,实现对接收波特率的自动校准。采用验证方法学对模块整体进行仿真验证,回归测试表明该设计可以
4、实现数据串并转换功能,并且在收发双方波特率存在一定误差时,可以有效抑制接收数据时采样点的偏移。相比于传统异步收发器,可以在非标准波特率场景下更准确地采样数据。关键词:通用异步收发器,波特率,自动校准。中图分类号:TN402 文章编号:1674-2583(2023)01-0026-03DOI:10.19339/j.issn.1674-2583.2023.01.009文献引用格式:颜志颖,戴显英.一种波特率自动校准的通用异步收发器设计J.集成电路应用,2023,40(01):26-28.一种波特率自动校准的通用异步收发器设计颜志颖1,戴显英2(1.西安电子科技大学 广州研究院,广东 510555;
5、2.西安电子科技大学 微电子学院,陕西 710071)Abstract This paper expounds that a universal asynchronous transceiver with baud rate self-adapting is designed.Real-time monitoring of the baud rate at the receiver and updating of the divisor by hardware method to achieve automatic calibration of the received baud rate.T
6、he whole module is simulated and verified by using the verification methodology.The regression test shows that the design can realize the serial-to-parallel data conversion function and can effectively suppress the offset of sampling points when receiving data when there is a certain baud rate error
7、 between the transceiver and the receiver.Compared with traditional asynchronous transceiver,it can sample data more accurately in non-standard baud rate scenarios.Index Terms universal asynchronous transceiver/receiver,baudrate,self-adapting.Design of Universal Asynchronous Receiver/Transmitter wit
8、h Self-adapting Baud RateYAN Zhiying1,DAI Xianying2(1.Guangzhou Research Institute of Xidian University,Guangdong 510555;2.School of Microelectronics,Xidian University,Shaanxi 710071,China.)集成电路应用 第 40 卷 第 1 期(总第 352 期)2023 年 1 月 27Research and Design 研究与设计率得到对应的发送分频系数,再由数据位及校验位信息得到一帧数据的比特数TX_LEN。TX
9、FIFO非空时,发送模块进入发送状态,并从TXFIFO中读取待发送数据到BUFFER。数据发送逻辑单元由DIV_CNT和TX_CNT两个计数器控制。DIV_CNT计数系统时钟周期数,控制发送波特率。TX_CNT控制当前发送的数据内容,每帧数据包含起始位、数据位和结束位,校验位为可选项。发送数据位的同时,校验逻辑单元进行校验位的计算并在数据位发送完成后发送校验位。2.2 接收模块接收模块内部功能单元如图2所示。接收模块中,有DIV_CNT和RX_CNT两个计数器。DIV_CNT为系统时钟周期计数器,用于起始位的判断和生成数据采样脉冲。RX_CNT为数据位计数器,用于控制状态机进行数据移位,将接收
10、到的串行数据打包为字节。ERROR DETECT单元根据配置寄存器的信息对数据进行检查。自起始位的下降沿开始,RX_MONITOR单元计数系统时钟周期数,当计数值达到0.5倍接收分频系数时认为监测到的比特数为1,达到1.5倍接收分频系数时认为监测到的比特数为2,以此类推。当串行数据出现翻转时,将监测到的比特数和系统时钟周期数暂存并重新开始计数,直到接收完停止位。当暂存的比特数达到阈值N时,计算平均一比特对应的系统时钟周期数L=M/N,并将其替换为新的分频系数。3 仿真验证验证方法学规范了验证平台的结构和运行过程,使得验证人员能够快速有效的搭建出标准化的验证平台11。为提高验证效率,采用VMM验
11、证方法学搭建验证平台,VCS和Verdi软件进行仿真和调试。验证平台结构如图3所示,其中虚线框内为待测的异步收发器,以下称为待测设计。由于待测设计的工作模式是全双工,因此验证环境中搭建了两条通路,可以同时对待测设计的发送和接收功能进行仿真验证。TX GEN和RX GEN为随机数据生成器,产生待发送或待接收数据。发送通路由TX APB通过APB总线将待发送数据写入TX FIFO,然后由TXMON在待测设计的发送输出端TXD以约定的期望波特率监测串行输出,并根据数据帧信息将监测的数据打包发送到Scoreboard进行对比,若与TXGEN产生的待发送数据相同则说明发送功能正确。接受通路则由RXDRV
12、模拟待测设计的对端设备,以约定的期望波特率向待测设计发送串行数据。待测设计接收完成后,RXAPB通过APB总线读取RXFIFO中的数据并发送到Scoreboard进行对比,若与RXGEN产生的待接收数据相同则说明接收功能正确。使用2MHz时钟提供给待测设计工作,在仿真开始前,首先进行配置参数的随机以及待测设计的复位,然后根据随机的结果配置待测设计和验证环境。待测设计的工作时钟随机选择为2MHz或40MHz,波特率在1 200bps,9 600bps,19 200 bps,38 400bps,57 600bps,115 200bps中随机,并将对应的分频系数配置到待测设计和验证环境组件中,用于数
13、据的发送和监测。3.1 常规收发功能测试配置待测设计发送端工作时钟为40MHz,波特率为9 600bps对应分频系数为4 166,验证环境也以相同的时钟频率和分频系数接收待测设计TXD端的串行输出,得到图4所示的波形。可以看出TXD端发送的串行数据为10110011,即0 xb3,与TXFIFO中的待发送数据一致。验证环境能够以9 600bps的采样速率接收到数据并对比通过,说明波特率正确。配置待测设计接收端工作时钟为2MHz,波特率为9 600bps对应分频系数为208,验证环境也以该时钟频率和分频系数向待测设计的RXD端发送数据,得到图5所示的波形。图1 发送模块框图图2 接收模块框图图3
14、 验证平台结构28 集成电路应用 第 40 卷 第 1 期(总第 352 期)2023 年 1 月 Research and Design 研究与设计可以看出验证环境发送给RXD端的串行数据为01010101,即0 x55。接收模块中对串行数据进行移位打包,最终也得到0 x55,验证环境从RXFIFO中取出数据与RXGEN产生的数据相符。3.2 波特率自动校准功能的验证为了验证波特率自动校准功能,需要在验证环境向RXD端发送数据时,对波特率进行注错,使待测设计接收端采样点发送偏移。配置待测设计接收端工作时钟为2MHz,波特率为38 400bps,对应分频系数为52,而验证环境作为对端设备发送串
15、行数据时的分频系数配置为50,得到图6所示的波形。可以看出在接收第一帧数据时,待测设计使用初始的分频系数进行采样。由于接收使用的分频系数大于对端设备发送时采用的分频系数,采样点逐渐向右偏移。在第一帧数据接收完成时,分频系数cycnum_perbit由52自动校准为50。第二帧数据使用新的分频系数进行采样,采样点不再偏移,始终保持在每个比特中间。4 结语本文设计了一种波特率自动校准的通用异步收发器,可以实现对非标准波特率的检测和自适应,消除了非标准速率的对端设备以及接收端自身频率漂移导致的波特率误差带来的影响,具有较好的灵活性、实时性和准确性。参考文献1 杨雪梅,黄海生,李鑫,杨毅.基于AMBA
16、总线的SOC中UART电路的设计与实现J.信息技术,2019,43(06):149-152+157.2 王云坤,桑忠启,王旭,钱祥利,陈飞.STC单片机UART通信波特率误差容忍范围研究J.单片机与嵌入式系统应用,2020,20(12):15-18+22.3 Liu C,LiC,Jechoux B.Self-adapting baud rateP.:U.S.:Patent 10038569,2018-7-31.4 陈谦,马迅.波特率自适应串行通信方法研究J.中国集成电路,2019,28(04):61-65.5 史小燕,朱建鸿.波特率自适应的CAN驱动在嵌入式Linux下的实现J.计算机系统应用,2018,27(01):231-234.6 李森源,易清明,石敏.波特率自适应信号接收装置设计及其FPGA实现J.计算机应用与软件,2016,33(01):105-107+243.7 孙夫文,郑采君,刘昕卓,许根瑞,郭向鑫.基于FPGA串口波特率自适应功能的设计与实现J.电子设计工程,2019,27(09):69-73.8 吴志勇,郭元兴,刘雨沁.基于FPGA的波特率连续可调的UART接口设计J