设计开发 基于FPGA的多串口通信设计与实现 李伟 (中国电子科技集团公司第二十研究所陕西西安710068) 摘要:串行接口是一种被广泛应用的接口形式,一般采用专用集成电路实现,在串口较多的电路中,将大大增力口PcB面积和布线难虎同时,如何处理 多串口通信时的中断冲突,也是一个难点。为了解决这些问题,本文结合实际工程需要,基于FPGA平台设计了多串口通信处理模块。该模块不仅包含 通用的UART芯片功能,而且还针对多串口工作的情况,设计了中断控制器,解决了多个串口的中断冲突问题。该电路结构简单、工作稳定,可运用于 低速率的异步通信。 关键词:串行接口专用集成电路FPGA UART中断控制VHDL 中图分类号:TN791 文献标识码:A 文章编号:l007.9416(2015)02.0174.O2 Abstm ̄:Serial port is a widely used interface form,generally uses the ASIC implementation,,the circuit has more serial port,will greatly increase the PCB area and muting,as well as,how to deal with he itnterrupt conflict problem of mulit seril aport,is also di伍cult。In order to solve these problems,for the actual application,a serial port communication processing module is designed in this paper.The designed module not only realize the general function ofUAKT chip, but also solve the interrupt confict lproblem ofmulti seril aport by designing the interrupt controller.The circuit has advantage ofsimple and stable,and Can be applied in he astynchronous communication wid1 low baud rate. ‘ Key Wo ̄S:serial port;ASIC;FPGA;UAlkT;inte=upt controller;VHDL 串行通信因为具有传输线少、成本低、配置灵活等特点,得到了 广泛应用,通用异步收发传输器(Universal Asynchronous Re— ceiver/Transmitter),是一种比较常用的接口电路,主要用于串行数 据和并行数据的转换。一般该接口由专用的UART芯片完成,例如 SCl6C554BIB64,该接口芯片具有4路独立的通道,同时提供多种控 制功能,但在实际使用中往往只使用一种特定控制方式,这不仅造 成电路复杂和浪费,而且会使PCB面积增大,布线复杂。[11 FPGA(Field-Programmable Gate Array),即现场可编程门 阵列,它是作为专用集成电路领域中一种半定制电路出现的,既解 决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺 点。FPGA中具有丰富的触发器和I/O口,采用描述语言(VHDL和 VerilogHDL) ̄行设计,用户可以根据需要,描述出具有各种功能的 1设计要求 整个设计的硬件电路以DSP和FI: ̄-A为主构架,DSP和FPGA之 间通过DSP的E ̄ⅡF接口连接。其中,DSP是主处理器,用于实现串口 数据的处理,FPGA作为DSP的外围电路,实现uAf 模块的串行数 据的接收和发送、数据的串并/并串转换及接收中断的产生,同时, 实现多串口的中断控制功能。当有接收数据时,FPGA通过中断方式 通知DSP。 UART模块的数据格式:波特率可以按标准波特率设置,按字 节接收,每个字节前包含一个起始位(低电平,逻辑值0),无校验位, 最后是一位停止位和不定长度的空闲位(高电平,逻辑值1);接收到 个完整字节后产生一个中断(高电平,逻辑值1),当数据被读取后, 中断信号复位(低电平,逻辑值0)。 电路。[ 中断控制器应能实现8路UART模块的中断接收和处理,最后 基于以上原因,我们可以利用FPGA实现多串口通信中的数据 给DSP输出一个中断信号,输入的各中断信号之间无优先级设定。 转换和中断控制功能,从而简化电路、缩d ̄PCB面积,也可以很方便 2设计方案 的进行升级改动和模块移植。 完整的设计由时钟管理模块、接口模块、UART模块和中断控 一and rst n=1 baud rate= data= l and 0 rst 11 1 and cnt bit tx<8 cntbitrx<8 图1发送状态机 Fig.1 Transmit State Machine 图2接收状态机 Fig.2 Receive State Machine 收稿日期:2015—02—25 作者简介:李伟(1981一),陕西渭南人,大学本科学历,工程师。研究方向:数字信号处理,硬件电路设计。 设计开发 制器组成。时钟管理模块产生设计中所需各种时钟,包括主处理时 钟和接收与发送的波特率时钟;接口模块实现DSP和FPGA之间的 中断、读写功能;UART模块由接收和发送子模块组成,实现数据的 串行接收和串行发送功能;中断控制器由中断采样子模块和中断处 理子模块组成,实现8路UART中断接收和处理功能。下面分别对这 些模块的设计给予描述。[1】 DSP采用EMIF总线相连接。与DSP相关的信号有:wr_n、rd—n、 cs_n、addrs、data_bus和dsp—int,在cs_n和wr_n有效时,DSP通过 addrsi ̄通不同的UART模块,将需要发送的并行数据发送给发送 寄存器,执行发送功能。Ⅸ、P响应外部中断时,在cs_n和rd._n ̄g效时, 通过addrs ̄取中断控制器的中断矢量和UAR 块接收的数据。 2.3 UART模块 2.3.1发遂模块 2.1时钟管理模块f3 】设输入FPGA的时钟为50MHz,则主处理时钟设计为50MHz。 根据UART模块的数据格式,发送状态机如图1所示。 U ART的接收和发送采用相同的波特率进行,本设计中采用 当复位信号rst_n=‘^’0时,状态机初始化为空闲状态,当有需 l15200b/s进行收发,这就需要对50MHz时钟进行分频以产生所需 要发送的数据时, ̄llm_flag=‘1’时,状态机转入发送起始位状态; 的波特率。 2.2接口模块 接口模块连接时钟管理模块、UART模块和中断处理器,并与 图3中断采样逻辑 Fig.3 Interrupt signal sampling logic 图4中断矢量产生逻辑 Fig.4 Interrupt vectors generation logic 在发送起始位状态中,串行输出数据线被置为0,并保持一个波特率 时钟周期,即在baud—rate=‘1’时,转入数据移位状态;在数据移 位状态中,利用baud_rate=‘1’的驱动,将8位并行数据依次移位, 转成串行数据输出,每移一位,相应的计数器加1,当cnt—bit—tx= “1000”时,转入发送停止位状态;在发送停止位状态中,串行输出数 据线被置为1,并保持一个波特率时钟周期,即在baud—rate=‘l’ 时,转入发送结束状态;在发送结束状态,一个字节的发送过程完 成,清除发送标志, ̄ptx_flag=‘0’,转入空闲状态。 2.3.2接收模块 根据UART模块的数据格式,接收状态机如图2所示。 当复位信号rst_n=‘0时,^’状态机初始化为空闲状态,当检测 到数据线上出现由1到0的跳变沿时, ̄pdata—coming~flag ‘1’ 时,状态机转入接收起始位状态;在接收起始位状态中,在baud_rate =‘1’时,判断数据是否为0,如果是0,则转入数据移位状态,如果是 1,则回到空闲状态I在数据移位状态中,利用baud_rate=‘1’的 驱动,将串行数据依次移位,转成并行数据,每移一位,相应的计数 器加l,当cnLNLrx=“lO00”时,转入接收停止位状态l在接收停止 位状态中,在baud_rate=‘1’时,判断数据是否为1,如果是1,则 转入接收结束状态,如果是0,则回到空闲状态;在接收结束状态,产 生一个中断信号。 2.4中断控制器[6 】2.4.1中断采样子模块 在中断采样子模块中,利用主处理时钟作触发,检测各UART 模块是否有中断输入,如果中断输入端口出现由0到1的跳变沿,则 置该UART模块的中断采样值为1,该值只有在复位信号rst—n= ……下转第177页 图5 DSP中断信号处理逻辑 Fig.5 Interrupt signal processing logic 设计开发 2.2系统访问安全及权限的设计 要保证管理系统的安全性,整个系统安全根据分层的原则,可 以分成五个级别。五个级别包括传输层安全、网络层安全、操作系统 安全、安全检测软件、应用系统安全,安全层级如图2所示。考虑到开 放式实验室管理系统的安全,利用密钥算法在互联网上提供端点身 份认证与通讯保密,其基础是公钥基础设施(PKI)属于传输层安全 (TLS)。客户端的身份加密验证通过向互联网服务商购买电子签名获 得。在网络层,校园网入口处设置防火墙,VPN或 安全手段保证系 统可信和IP可靠连接,阻止来自网络的攻击和过滤不可信的数据包 及 访问[5J。在操作系统层级,正版的操作系统软件及自带的安全保 护被采用,并安装相应的杀毒和检测软件。 放在最上层的是管理系统自身的安全,主要对客户端、服务端 冗余度,通过相关的外键保持相应的关联关系。 3.2系统界面设计 开放式实验室管理系统有其自身的优点,比如用户界面友好, 人性化的功能按钮,网络访问功能便捷等,保障了开放实验室的管 理。主要采用DIV+CSS技术和功能强大的DreamweaverCS网站设 计工具来实现系统界面的设计。下图即是实验室信息查询界面[句。根 据提供的实验室信息快捷按钮,用户通过点击进入查询实验室信息 界面,在接下来的菜单中有一些精确查询,比如实验室编号、实验室 名称以及实验室类别模块查询等。界面如下图3所示。 4结语 可以通过开放式实验室管理系统对教学及实验室资源整合,通 两个层面的程序资源进行访问控制,设置用户权限。对用户界面操 过先进的Web技术,将校园网资源融合在Intemet平台上,将跨校区、 作人口进行控制即客户端程序资源访问控制:也就是说验证用户的 跨专业学生以及各校区乃至校外各科研单位的师生、科研人员的实 操作界面是否出现某一功能菜单,具体业务功能页面中是否包含某 验过程提前预约[7],那么针对于目前实验室出现的问题如实验空间 一功能按钮等。当会话在调用某一具体的程序资源(如业务接口方 不足、实验仪器不足、实验预约困难、实验时间不灵活和实验室管理 法,uRL资源等)之前,判断会话用户对目标程序资源是否有权执 工作繁杂等可以被有效地解决,有效的提高了实验室的工作效率。 行,无权时拒绝调用,请求定向到出错页面,反之,成功调用目标程 参考文献 序资源,这个过程称为服务端程序资源访问控制。 [1]甘小红.高校开放式实验室管理系统的设计与实现【J].中国教育 3系统的实现与主要界面设计 信息化,201 0(5):47-49. 3.1管理系统相关数据库设计 [2]张渭军,何宏星,徐惠莲.实验室管理信息系统的设计与开发[J].计 数据表是数据库的基础结构,将数据表以及数据表之间的关联 算机数字工程.2010(5):l48一l49. 关系在MicrosoftSQI_Server2008数据库中设计好。在设计数据库时, [3]刘卫国,熊拥军.数据库技术与应用:SQL Server 2005[M]北 要针对于数据库中存在的表和表之间的数据完整性设计完整,然后 京:清华大学出版社。2010:51—54. 对数据库的逻辑结构设计进行设计[3-4],即根据系统功能设计的需 [4]岳国英.数据库技术与SOL Server 2005实用教程(第1版)[H]. 求及其模块的划分,设计数据信息表及其属性,下面是对表的名称 北京:中国电力出版社.2008:65—68. 和描述。 [5]喻钧。白小军.ASP.NET Web应用开发技术[H].北京:清华大学 开放实验室管理系统数据库结构信息表基本包含以下数据库 出版社,2O1 3:88-91. 表:用户信息表(users)、用户身份表(role)、学生信息表(student)、教 [6](美)Tom Negrino,Dori Smith.CSS Web设计快速上手[H].北京: 师信息表(teacher)、管理人员信息表(admD、实验室仪器设备信息表 机械工业出版社。2009:90—92. (instrument)、实验室信息表(1ab)、实验报告信息表(report)、实验室 [7]王玉霞.高校实验室管理信息系统的研究[J].中国科教创新导刊, 预约信息表(appoint)和班级信息表(class)等。为了实现数据的最小 2008(1 4):21 3—214. ・・・・・・上接第175页 参考文献 ‘0’或清除信号dr=‘1’时,恢复为0。程序逻辑如图3所示。 [1]杨英强.一种基于FPGA的UART电路实现[J].现代电子技术,2005. 2:4.2中断处理子模块 YANG Ying—qiang.Realization of a Sort of DART Based on FPGA 在该模块中,主要完成中断矢量的生成、DSP中断信号的产生 [J].Modern Electronics Technique. 和中断清除信号的生成3个功能。 [2]王杰。王诚,谢龙汉.Xilinx FPGA/CPLD设计手册[H].人民邮电出版 中断矢量由8个UART ̄块的中断输出信号合成,特别注意的 社。2O1 1.WANG Jie,WANG Cheng,XIE Long—han.Xj]1nx FPGMCPLD 是因为各个UART模块中断清除信号和该矢量相关,因此,当该矢 Design Manual[H].Posts&Telecom Press.201 1. 量不为0时,要暂时锁定中断矢量,即在DSP ̄N应中断之前,即使有新 [3]侯伯亨。刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计[H].西 的中断信号产生,也不允许更新中断矢量,判断逻辑如图4所示。 安电子科技大学出版社。2009.HOU Bo—ting,LIU Kai,GU Xin.VHDL& 在主时钟的触发下,当中断矢量不为0时,产生一个中断信号, Design of Digita1 Circuits[H].XI DIAN UNIVERSITY PRESS.2009. 且只有当DSP读取了该中断矢量时,才清除该DsP中断信号,判断逻 [4]卞红雨。纪祥春,等.TMS320C6000系列DSP的CPU与外设[M].清华 辑如图5所示。 大学出版社。2007.BIAN Hong—yu。Jl Xiang—chun,et a1.TMS320C6000 当DSP中断清除信号有效时,根据中断矢量,生成中断清除矢 DSP CPU and peripherals[M].TSINGHUA UNIVERSITY PRESS. 量,用于清除各个UART模块的中断采样信号,该模块采用组合逻 [5]李仁发.凌纯清。徐成.VHDL数字系统设计[H].电子工业出版社, 辑完成。 2004.LI Ren—fa,LING Chun—qing,XU Chengdu.Digital System De— sign with VHDL[M].Publishing House of Electronics Industry. 3结语 2004. 在本设计中,基于FPGA平台实现了通用UART芯片的核心功 [6]李岩。贾小梨,迟欢欢.基于FPGA中断管理的研究及硬件化设计 能和中断控制器逻辑,能够满足多串口通信的需要。该电路已运用 [J].电子技术应用,201 1.LI Yan,JIA Xiao—li。CHI Huan—huan.The 于实际工程中,实践证明该电路结构简单、工作稳定,可运用于低速 research and hardware design of interrupt manager based on 率的异步通信。 FPGAEJ].APPLICATION OF ELECTRONIC TECHNOLOGY.20l 1. ⑧