王剑博,胡晓吉
(华北计算技术研究所加固计算机产品事业部,北京100083)
基于FPGA的智能串行通信板卡的设计与实现
王剑博,胡晓吉
(华北计算技术研究所加固计算机产品事业部,北京100083)
串行通信模块是每台计算机所必须的对外通信模块的一部分,但由于串行通信协议较多,串行接口也较多,所以,往往这部分模块需要占用较多的体积和资源。将RS 232,RS 422和RS 485三种串行协议和同异步两种串行传输方式通过FPGA兼容于一块智能通信板卡上,通过上位机控制界面的控制,完成对8路串行通道的配置,并介绍了板卡的总体结构及硬件设计,展示了上位机控制界面的通信效果。结果表明,该智能串行通信卡能够很好地完成多协议多方式的串行通信之间的切换,达到了预期的效果。
串行通信;串行协议;串行方式;FPGA;智能串行通信卡
串行通信作为计算机与其他设备之间广泛使用的一种通信方式,具有开发简单,抗干扰性强,传输距离远的特点。作为现在应用比较广泛的串行通信协议RS 232[1],RS 422[2]和RS 485[3]三种标准各有特点,应用于不同的方面,但是在实际应用中,对于需要与应用不同标准的设备实现通信,却必须添加相应的转换模块,这种方法既繁琐又很麻烦,而且浪费不必要的资源。在需要实现多标准多设备同时与主控计算机通信时,以上述的传统方式,除非主控机同时具有三种标准接口,否则几乎无法实现这样的功能,将会导致某些设备与主控机通信受阻,无法实现特定的性能要求,所以提出一种能够智能化转化上述三种串行传输标准的通信系统势在必行。
本文所设计的多协议串行通信模块的总体结构图如图1所示,由于本模块有8路串行传输的通道,各通道所执行的传输协议由上位机控制界面通过FPGA对各路通道进行配置,因此由外接设备所发出的各通道信号经电平转换电路进入FPGA,FPGA内的接收/发送缓存模块在缓存后,各路通过调用RS 232/422/485相应的处理模块进行处理。而后经串/并转换后,由协议转换控制模块传输给上位机,完成与外接设备的实时通信。
本系统的硬件部分主要是由具有SCSI(Small Com⁃puter System Interface)标准[4]接口的板卡来实现,板卡上总共有8路串行通道,每路通道的RS 232,RS 422及RS 485的标准协议的转换控制、同异步串行方式的转换选择均由Xilinx Spartan6系列的FPGA芯片XC6SLX45完成,FPGA通过PCI9030与上位机控制程序完成通信。PCI9030将复杂的PCI总线转换为简单的Local Bus总线[5],FPGA通过对Local Bus的读写完成与上位机的通信。由于FPGA芯片的管脚电平一般为标准的TTL电平,与RS 232,RS 422和RS 485串行协议的输入电压的电平不符,故还需要相应的电压转换芯片进行电平转换。同时,为了使8路串行通道能够兼容多种串行接口标准,每路通道需要有一款通道转换芯片完成RS 232/RS 422/RS 485协议的电路转换工作,FPGA通过对通道转换芯片进行控制从而配置每路通道所支持的通信协议[6]。图2是串行通信卡的硬件结构图。
图1 多协议串行通信模块的总体结构
图2 智能串行通信卡硬件结构图
3.1 FPGA片内程序设计
FPGA内部程序大致分为三大模块:异步UART处理模块、同步HDLC处理模块和协议转换控制模块,如图3所示,其中异步UART和同步HDLC模块各自又可划分为发送和接收两个部分,如图4,图5所示。接收流程如下,首先,8路串行通道所选择的同异步通信方式及通信协议由上位机控制界面已经设定,8路串行数据进入FPGA后,分别由各路相应的处理模块进行处理,而后存入各自的接收缓存(FIFO)中,等待PCI9030进行读取,最后发送给上位机。发送流程则是首先由上位机选定各通道的配置协议及方式,而后分别将8路通道上所要传输的信息通过PCI9030写入FPGA内各自通道的发送缓存(FIFO),然后经过相应的处理发送给各通道接口电路直至外接设备。
图3 FPGA片内程序框图
图4 各通道接收程序流程图
3.2 UART方式
UART(Universal Asynchronous Receiver/Transmit⁃ter)协议作为一种低速全双工通信协议[7],是异步串行通信协议的一种,广泛应用于通信领域等各个场合。它工作于数据链路层,其工作原理是以串行方式一位接一位地传输数据字符的每个比特。
UART具有如下的协议特点:
(1)UART协议是设备之间实现低速数据通信的标准协议。UART字符格式为1位起始位,5~8位数据位,1位奇偶校验位(可选),1位停止位。由于是异步通信,所以在数据发送时,不需要同时发送时钟。接收器接收数据的时候,用几倍于波特率的时钟对输入数据流过采样,通常采样时钟为波特率的16倍,然后使用16个采样值的中间三个值。
图5 各通道发送程序流程图
(2)串行异步数据传输时,发送方通过在字符帧之间插入任意个空闲位使得帧与帧之间的时间间隔各不相同,也就是每个字符帧的传送都是随机的。
(3)通过起始位来实现收发双方的同步,起始位开启一个字符帧的传送,同时通知接收方数据传送开始。在传送每个帧之前,收发双方都可以根据要求改变通信设置,例如改变传输的速率(波特率)、改变数据位的个数、改变校验类型、改变停止位的长度,但发送和接收双方的字符格式和波特率必须统一。
UART处理模块按照逻辑功能可以划分为六个小模块:发送缓存、接收缓存、波特率产生模块、逻辑控制模块、发送模块和接收模块。其中发送模块和接收模块是整个逻辑电路最核心的功能模块,它们要完成协议的转换和数据的发送接收。波特率产生模块根据设定好的波特率产生相应的分频因子,然后对系统时钟进行相应分频得到波特率时钟。采用数据缓存模块FIFO主要有两个考虑:一是为了解决FPGA和PCI9030的Local Bus跨时钟域通信问题而设立的,FPGA的内部时钟与Local Bus上的时钟并不一致,数据不能直接传输,需要一个缓存地带来解决存入和取出的速度不同的问题;二是为了很好地解决8路串行通道的向上传输竞争问题,由于8路通道同时工作,各路相互独立,而向上传输的路径却只有32位的Local Bus,所以每路设立FIFO一方面先把数据缓存起来,另一方面等待PCI9030对每路FIFO进行读取,由于读取速度远远快于数据的存储速度,所以可以保证8路通道与上位机的即时通信。逻辑控制模块则是通过对上位机的控制信息的读取,对本通道的相应协议的配置等进行控制,同时也对整个处理过程进行控制。
3.3 HDLC方式
高级数据链路控制规程HDLC(High⁃level Data Link Control)是一个同步传输数据、面向比特的数据链路层协议[8]。IBM公司在70年代初期的时候首先提出了面向比特的数据链路层协议。该协议包括主站、从站和复合站三种类型的站点。主站主要负责命令帧的发送、响应帧的接收,同时还负责初始化链路、控制流程、检测差错和恢复链路。从站的主要职责是接收由主站发来的命令帧,向主站发送响应帧,同时从站还配合主站进行链路控制,比如参与差错恢复等。复合站将主站和从站的功能集于一身,既能发送命令帧又能接收响应帧,并且负责控制整个链路。
HDLC协议根据通信双方的传输响应类型和链路结构,提供了正常响应方式、异步响应方式和异步平衡方式三种操作方式。本文中的HDLC即采用这种方式,正常响应方式(NRM)适用于点⁃点和点⁃多点的不平衡链路结构,特别是点⁃多点的链路。这种方式中,整个链路的控制由主站负责,主站主要工作包括初始化链路、控制数据流、恢复链路等。从站操作简单,只有在主站明确允许的情况下,它才可以作出响应。
HDLC处理模块主要分为七个小模块:发送数据帧缓存模块、接收数据帧缓存模块、时钟生成接收模块、CRC校验码生成模块、CRC码检验模块,发送模块、接收模块。其中发送模块主要完成HDLC协议的发送处理、标志字的生成及插入“0”[9]。接收模块主要完成标志字检测及删除“0”,HDLC协议的接收处理等工作。数据帧缓存模块的功能与UART模式下相同。时钟生成接收模块则是负责产生每路的发送同步时钟和接收外设所传输的接收同步时钟,该模块利用FPGA自身的全局时钟资源,并不占用逻辑资源。CRC校验码的生成和检验则是为了保证数据传输的准确性,提高线上资源的利用率。
3.4 协议转换控制模块
该模块主要完成与上位机的通信,读取上位机的控制信息,集中控制各通道RS 232/422/485协议的配置和同异步传输方式的配置,对数据的传输以及各通道相应状态信息的读取进行简单的控制,该模块可以对各通道的传输协议以及方式进行设置以期符合外接设备的通信要求。
图6是PCI9030写入FPGA的部分配置寄存器,其作用一是储存记录上位机控制界面所录入的配置信息,二是FPGA通过对每路配置寄存器信息的读取完成对各路的配置。
图6 部分配置寄存器
表1是两种寄存器部分标志位的定义。
表1 部分配置寄存器标志位定义
上位机控制界面如图7所示,其功能是对每通道串口都可进行通信方式(HDLC/UART)、通信协议(RS 232/ 422/485)、校验方式及波特率、停止位、数据位等进行相应的选择及配置,波特率设置在当通信方式为UART下可用;在通信方式为HDLC下,接收时通过同步时钟接收数据,发送时可设置波特率选择所需要的同步时钟,停止位、数据位均不可用。在所有通道配置完毕后,点击配置按钮,则将各通道配置信息传送至FPGA的协议转换控制模块完成配置,配置完成后,弹出配置完成对话框,点击确定后即可进行每路通道的接收发送显示,接收发送效果如图7所示。
图7 上位机串行通信效果图
本文设计并实现了基于FPGA的多协议串行通信模块,通过将三种通信协议集成于一块板卡上,大大提高了通信模块的高密度和集成度。FPGA通过接收上位机控制界面所设置的配置信息对各通道进行配置,使应用该模块的通信板卡能良好的兼容三种通信协议及同异步通信方式,解决了接口板接口过多、体积过大的问题。目前该板卡已在多套嵌入式系统中得到应用,运行良好,具有较好的安全性和可靠性。
[1]ANSITIA.ANSITIA⁃232⁃F interface between data terminal equipment and data circuit⁃terminating equipment employing serial binary data interchange[S].[S.l.].ANSITIA,1997.
[2]EIATIA.EIATIA/EIA⁃422⁃B electrical characteristics of ba⁃lanced voltage digital interface circuits[S].[S.l.]:EIATIA,1994.
[3]EIA.EIA TSB⁃89⁃A application guidelines for TIA/EIA⁃485⁃A [S].USA:EIA,2006.
[4]ANSI.ANSI SCSI X3.131⁃1986 standard[S].USA:ANSI,1986.
[5]PLX Technology,Inc.SDK user manual[M].USA:PLX Tech⁃nology,Inc,2006.
[6]吴德铭.基于PCI总线的高速串行通信研究与实现[D].厦门:厦门大学,2006.
[7]朱勤,钱敏,杨翠军.嵌入式UART的设计及FPGA验证[J].通信技术,2012,45(1):150⁃153.
[8]张必英.基于FPGA的HDLC协议控制器的设计[D].哈尔滨:哈尔滨工程大学,2005.
[9]高希权.异步传输方式的HDLC协议的实现[J].通信技术,2008,41(11):78⁃80.
Design and implementation of intelligent serial communication card based on FPGA
WANG Jian⁃bo,HU Xiao⁃ji
(North China institute of computer technology,Business Unit of ruggedized computer product,Beijing,100083,China)
Serial communication module is a part of external communication module which is necessary for every computer. However,because of too many serial communication protocols and interfaces,more resources and volumes are always occupied by the serial communication module.In this paper,three serial communication protocols(RS⁃232,RS 422 and RS 485)are com⁃patible with two serial communication modes(UART and HDLC)into an intelligent communication board through FPGA.The configuration of eight serial communication channels is completed under the control of the control interface of upper computer. The overall structure and the hardware design of the communication board are introduced in this article.At last,the communica⁃tion result of the upper computer control interface is displayed.The conclusion proves that this intelligent serial communication board can execute the switching between multi⁃protocol and multi⁃mode,and meet the requirements of different kinds of serial communication as expected.
serial communication;serial protocol;serial mode;FPGA;intelligent serial communication card
TN911⁃34
A
1004⁃373X(2015)07⁃0039⁃04
王剑博(1988—),男,硕士研究生。主要研究方向为计算机加固技术及嵌入式系统。
胡晓吉(1962—),男,正研级高级工程师。主要研究领域为计算机加固技术。
2014⁃10⁃26