当前位置:无忧公文网 >范文大全 > 征文 > 串行通信系统接口模块的设计与优化

串行通信系统接口模块的设计与优化

时间:2022-03-18 08:18:48 浏览次数:

zoޛ)jS@O^F工作原理完成高性能串行通信系统接口模块的完整功能设计与优化。采用三段式状态机设计方法和EDA优化、电路优化等优化手段完成设计及优化。优化后的设计系统时钟频率最高达到166 MHz,功耗降低了63.9%,达到0.147 W,且给出了典型波特率115200下的板级测试数据和Matlab分析结果。实验结果证明功能正确且稳定可靠。

关键字:串行通信;现场可编程门阵列;时序优化;静态时序分析;Matlab分析

中图分类号:TN47文献标识码:A

A Optimal design of Serial communication system interface module

ZHOU Zhong-hua, HOU Li-gang, HE Ming, WU Wu-chen

(VLSI and System Laboratory, Beijing University of Technology, Beijing 100124, China)

Abstract: Serial communication system has been widely used in data communications and control systems because of less hardware resources, anti-jamming ability, and easy to implement features. An FPGA-based high performance Serial communication system interface module which includes full functions of UART16550 is designed and optimized based on the communication protocol and working principles in this paper. Various technologies are adopted during the design and optimization procedure, such as EDA optimization, circuit optimization, and so on. The frequency of the optimized design is up to 160 MHz, and the power is reduced to 0.147 W by 63.9%. The test data at typical baud-rate of 115200 and the analyzed result by using Matlab are presented. The test results indicate that the optimized design can be communicated correctly and steadily.

Key word: Serial communication; FPGA; Timing Optimization; STA; Matlab analysis

EEACC: 1265A

1 引言

串行通信被广泛应用在电子工业中[1]。目前Xilinx公司和Altera公司的高性能FPGA都能够提供高速串行收发模块,最快速度能够达到11.3 Gb/s[2][3]。但对一般的设计来说,并没有如此高的速度需求。此外,高性能的FPGA器件价格昂贵,会造成设计成本的急剧增加,而普通的UART专用芯片所支持的波特率太低。现有的相关研究系统工作时钟也都集中在50 MHz左右,不能满足相对高速应用的要求,不利于系统整体性能的提升。本文基于FPGA针对UART16550的全功能设计和优化进行研究,是设计成本与串行传输速度之间的折衷,且高的系统工作频率为高速应用下的波特率提升提供了充足的空间。

2工作原理

串行通信协议简单而实用。利用该协议实现异步串行通信需要分别满足数据帧格式要求和波特率要求。

如图1所示,串行通信数据帧由起始位、数据位、校验位和停止位四部分组成,帧头与帧尾之间是长度为5到8个码元的数据位,具体取决于使用时收发双方的约定。

波特率(Baud Rate)是串行通信协议的另一项重要内容,用于描述串行通信数据传送的速率,定义为单位时间内传送的信息量,单位为波特。

在串行通信中,收发双发保持相同的数据帧格式和波特率,即收发双方每个数据帧的起始位、数据位、奇偶校验位和停止位及数据传送速度都保持一致就能确保数据传输的成功。

3设计及优化

3.1结构

根据功能把设计的整体结构划分成六个模块,分别是寄存器组、波特率产生模块、发送模块、接收模块、Modem模块和中断逻辑[4],其结构框图如图2所示。

3.2硬件设计

波特率产生模块、发送模块和接收模块是整个电路的核心模块,而发送状态机和接收状态机又是发送模块和接收模块的关键部件,因此状态机设计的好坏直接影响到设计整体性能的优劣。

在设计中,发送状态机和接收状态机采用三段式的描述方法完成。完成状态机设计之后,发送状态机包括send_start、send_byte、send_parity、pop_byte、idle、wait_to_send_byte、wait_to_send_parity、send_stop 、和wait_to_send_stop等九个状态,接收状态机包括rec_bit、rec_parity、rec_stop、check_parity、idle、rec_st- art、rec_prepare、end_bit、ca_lc_parity、wait_rec_stop、push和wait_idle等12个状态。

完成之后的设计包括七个Module,分别是:ram,rfifo,tfifo,transmitter,receiver,registers和top,代码行数总计2524行。

3.3 优化

本文追求设计成本与串行传输速度之间的折衷,这就要求在低成本的FPGA上对设计以时序性能为目标进行优化。

造成设计时序性能差的原因有很多,但其直接原因可分为三类,即布局欠佳、信号扇出过高以及逻辑级数过多[5]。其中的布局欠佳和信号扇出过高等问题可通过EDA工具的优化来解决,归于EDA优化的范畴;而关键路径逻辑级数过高的问题则必须通过修改设计来解决,归于电路优化的范畴。本文就以此为切入点从EDA优化和电路优化两方面来对初步设计进行优化。

3.3.1 EDA优化

首先是针对布局欠佳的EDA优化。当路径中布线延时占用了超过50%的整体延迟即为布局欠佳。表1即为在对设计进行优化时遇到的布局欠佳的示例。从表中可以看出:在整条路径中连线的延迟占整体延迟的57.7%,为布局太差。本设计采用调整布局工具的Extra Level;利用布局布线工具的Extra Effort和MPPR功能;利用底层编辑器FPGA Editor优化布线和使用区域约束重新对设计进行布局规划等方案来解决此问题,最终使设计的布线延迟减少到50%以内。

其次是针对信号扇出过高的EDA优化。逻辑门的高扇出系数表明信号传输路径过长,会造成延迟过大使设计时序性能降低。从表2中可以看出: counter_2信号的逻辑门扇出系数高达11,且该路径上驱动NXT_STATE<2>信号的逻辑门扇出系数也达到了10,是为扇出系数过高。本设计采用的解决方案包括利用逻辑复制,利用区域约束和充分利用FPGA片内资源等等,将设计中各个逻辑门的扇出系数降低到合适的范围之内。

虽然借助于EDA工具可以对设计完成EDA优化,实现设计性能的一定提升。但是基于工具努力程度的EDA优化有无法逾越的瓶颈,限制了设计性能的进一步提升。而电路优化则是解决这一问题的有效途径。

3.3.2电路优化

电路优化能够消除EDA优化过程中遇到的瓶颈,使设计性能进一步提高。电路优化主要是针对FPGA设计中关键路径逻辑级数过多的问题。对此情况EDA优化不会有任何改善,必须通过修改代码来解决。

本设计中采用的解决方法有:1)使用流水线技术[6]。简单来说,数字系统的最小时钟周期由data path - clock path skew + uncertainty的值来决定,且其中的data path占主导地位。因此可以通过在组合逻辑中插入寄存器来简化原有的逻辑结构,缩短寄存器之间延迟时间,最终达到提高设计的时序性能的目的。

2)设置多周期路径。检查关键路径是否为多周期路径,是通过修改设计并添加相应的多周期约束来实现的。在多周期路径中,数据可用不止一个时钟周期到达其目的地。多周期技术多适用于高位宽的计数器和加法器。本设计中的波特率除数计数器DLC位宽为16,最坏的情况下最低位的进位需要传递15位,严重制约了设计性能的提高。解决方法是将波特率除数计数器拆分成两个部分,8位的低位计数器DLC_0和8位的高位计数器DLC_1。低位计数器最坏情况下进位只需传递7位,提升了设计的时序性能。而高位计数器每隔2^8个时钟周期才翻转,此时的DLC_1[0]到DLC_1[7]的路径即为多周期路径,需要添加多周期约束。

3)尽量用CASE语句代替IF语句,且不要多层嵌套使用CASE、IF语句。

从表2中可以看出整条路径中共有六级逻辑延迟,导致该路径的总延迟达到6.731 ns,为逻辑级数过多。采用电路优化方法即可解决该问题。

4优化前后性能比较及实验结果

4.1 优化前后性能比较

1)优化前后资源占用情况。从表中可以看出,与未优化相比EDA优化的资源占用有所增加,而电路优化后的资源占用情况并没有明显增长。电路优化后的BRAMs与Slice Flip Flops资源占用增多是因为采用FPGA中用于存储的专用功能块BRAMs代替了优化前由二维触发器阵列组成的存储部件。后者的实现效率不高,不利于设计性能的提升。

2)优化前后工作频率比较。表3频率部分内容根据优化前后Synthesis Report中的信息绘制而成。从表中可以看出,同样的综合条件下电路优化后的设计经过综合后得到的最大时钟频率为136.314 MHz,而EDA优化后的仅为92.584 MHz。通过优化得到的频率提升中的54.2%由电路优化所提供。

3)优化前后功耗的比较。表3功耗部分内容是根据功耗分析工具XPower Analyzer分析得到的数据绘制而成。从表中可以看出优化后的总功耗Total Power由0.407 W下降到0.147 W。其中动态功耗Total Dynamic Power,由0.369 W下降到0.109 W,有明显改善。而静态功耗则保持不变仍为0.038 W,为FPGA的器件型号所决定的,不会因为设计的不同而发生改变。

4)优化前后静态时序分析的数据比较。表3中时序部分内容是对设计完成布局布线操作后根据静态时序分析工具分析数据整理绘制而成。从表中可以看出,优化前后的静态时序分析都是在时钟周期为6 ns,即时钟频率为166.67 MHz,且占空比为50%的时序约束下完成。在该约束下电路优化后的设计其关键路径的Slack为正,其中最差路径的Slack为0.027 ns,表明优化后的设计能够达到时序约束所规定的性能要求,即能在166.67 MHz的时钟频率下正常工作。

4.2 板级调试结果及数据分析

为了验证本设计的性能,需要搭建验证系统来验证其实际工作时的功能及性能。验证标准为在160 MHz的时钟频率下设计能够在FPGA开发板上正常实现数据传输功能。验证系统由上位机,FPGA开发板以及电缆线三部分组成。其中FPGA的型号为xc2v1000fg256-4。为了符合验证标准,验证中采用DCM倍频技术,将仅有的100 MHz时钟源进行1.6倍倍频得到系统时钟。验证系统采用普通的通用电缆线。

验证过程为首先利用第三方工具Matlab生成2^22组8位二进制随机数,然后由上位机将随机数通过串口发送给本设计,本设计的接收模块接收串行数据完成串-并转换并并行输出,发送模块接收此并行数据完成并-串转换并串行输出,完成完整的串-并及并-串转换过程。上位机通过串口接收串行数据,并将接收到的数据与所产生的随机数进行比较,如果两者一致则说明验证通过,否则验证失败。

验证完成之后将发送、接收数据及两者之差利用Matlab转换成十进制,并取其中的2^10组数,利用Matlab分别绘制成二维图像如图3所示。由于测试数据都为8位的二进制数,所以从图中可以看出转换成十进制后的发送数据和接收数据都不大于256。接收数据与发送数据之差对应的图像上呈现出一条直线,且对应的Y坐标值为0。表明对每一个发送数据,经过验证系统得到的接收数据都与之对应相等。由此表明板级验证通过,本设计在实际使用中能够在160 MHz的工作频率下正确实现其功能。

5结论及展望

本文以FPGA为实现平台基于UART16550通信协议及工作原理完成高性能串行通信系统接口模块的完整功能设计与优化。板级验证及实际测试证明:优化后的设计系统时钟可以达到160 MHz。为波特率的提升提供了很大的空间。本设计具有灵活可变,集成度高的优点,可以广泛应用于汽车电子,仪器仪表,医疗设备,工业自动化及消费电子领域。

参考文献

[1] 刘伟峰, 庄奕琪, 刘锋等. 高性能嵌入式UART IP核的设计[J].电子器件, Aug.2007,30(4): 1275-1278.

[2] Xilinx, Inc. Virtex-5 FPGA User Guide[EB/OL]. [2008-11-14]./support/documen- tation/user_guides/ug190.pdf

[3] Altera, Inc. Stratix IV Device Family Overview[EB/OL]. [2008-11-14]./literatur- e/hb/stratix-iv/stx4_siv51001.pdf

[4] Opencores. UART IP Core Specification[EB/OL]. 2001[2008-12-23],http://www.opencores.org/websvn/ filedetails.php?repname=uart16550&path=%2Fuart16550%2Ftrunk%2Fdoc%2FUART_spec.pdf &project=uart16550.

[5] 田耘, 徐文波, 胡彬等. Xilinx ISE Design Suite 10.x FPGA 开发指南(逻辑设计篇)[M]. 北京:人民邮电出版社,2008.

[6] 欧阳剑, 杜学亮. 基于FPGA的H.264去块滤波系统的优化设计[J]. 计算机工程, June.2008,34(12):239-244.

作者简介

周中华,硕士研究生,研究方向为数字集成电路设计。

推荐访问: 通信系统 模块 接口 优化 设计