嵌入式UART的设计及FPGA验证

2012-08-14 02:30杨翠军
通信技术 2012年1期
关键词:波特率状态机中断

朱 勤, 钱 敏, 杨翠军, 朱 静

(①苏州大学 电子信息学院微电子系,江苏 苏州 215006;②苏州工业职业技术学院,江苏 苏州 215104)

0 引言

目前,现场可编程门阵列(FPGA,Field-Programmable Gate Array)的应用已十分普遍,在EDA技术中担当重要角色。基于FPGA的可编程片上系统(SOC/SOPC,System on Programmable Chip)设计功能日益强大,开发周期短、可重复编程等优点越来越明显;软硬件设计之间的界限由于硬件描述语言(HDL,Hardware Description Language)的出现被打破,数字系统硬件设计用软件的方法来实现,使设计灵活、修改方便,成为推动EDA技术发展的关键因素[1-3]。

串行通信具有传输线少、成本低、可靠性高等优点,所以系统间短距离通信常采用RS-232接口方式。基于 VHDL设计的异步串行通信控制器(UART,Universal Asynchronous Receiver Transmitter)IP 核(Intellectual Property,知识产权),可灵活地移植进FPGA中,用于实现该接口。相比于UART专用芯片,此方法使电路简化,印刷电路板面积缩小,成本降低,系统可靠性提高[4]。

1 UART原理

UART控制器是计算机串行通信系统中广泛使用的接口,包含了RS-232、RS-422、RS-485等串口。其工作原理是将传输数据的每个字符编码一位接着一位地传输,传输过程由波特率时钟控制。如图 1所示,其中各位的意义如下。

起始位:发出一个低电平信号,表示传输字符开始。

数据位:起始位后紧接着数据位,其位数常见的有7、8位构成一个字符,由时钟控制从最低位开始传送。

赵婧:现在越来越多的年轻人欣赏真实,喜欢真实记录的东西,不喜欢演的东西。他们觉得好的内容、真实的东西可以引发自己对生活的细思细想。好的文化综艺作品,要让年轻人在探索世界、汲取知识的同时“遇见”自己,要让他们看了之后更热爱生活,这应该是今后文化综艺进一步探索时瞄准的方向。

停止位:可以是1位、1.5位、2位的高电平,是一个数据帧的结束标志。

一个读操作在 IIR上将会读取最高优先级的中断,而其他中断要等待最高优先级的中断响应之后才予以查询。当最高优先级的中断响应后,响应记录也要消除,当下一次读 IIR时就会读到下一优先级的中断了。中断状态机如图5所示。

2 UART设计

2.1 UART设计框图

(4)MODEM模块

在UART中,共有10个寄存器,有8个寄存器可以被CPU访问,需片选和地址线的配合。接收移位寄存器RSR通过DATAIN线接收数据,当RSR装满后,数据压入到接收缓冲寄存器RBR,完成输入串并转换,然后通过 UP总线接口把数据读取出来;发送过程是通过 UP总线接口把数据送入发送缓冲寄存器THR,一次性输入之后,当发送移位寄存器 TSR内容为空时,把数据送入 TSR,由 TSR再通过DATAOUT线发送出去,完成输出并串转换;整个数据输入输出的过程需要一个控制波特率的时钟来实现。帧格式通过寄存器LCR进行配置,接收和发送的状态储存在LSR中。

2.2 系统各模块设计

(1)发送模块

奇偶校验位:数据位加上这一位后,使得“1”的位数为偶数或奇数,以此来校验数据传送的正确性。

串行发送器模块的功能是将要发送的并行数据转换成串行数据,并且在输出的串行数据流之前加入起始位0,之后加入奇偶校验位1或0,最后加停止位1。组成的11位串行数据帧(起始位+数据位+奇偶校验位+停止位)以内部时钟CLK16X的1/16的速率送出。一个数据帧在传送的同时THR也在写入数据,当一帧送完后,下一帧立即开始传送,当没有数据传输时输出端SOUT保持高电平。整个过程采用了有限状态机来设计。发送状态机如图3所示。

当UART由复位管脚MR复位后,发送状态机复位到START状态,等待开始位的插入,这要等到THR中有数据移入,一旦开始位移出SOUT,状态机就切换到SHIFT状态。在SHIFT状态下,等待有效数据位移出,当有效数据位全部移出,状态机切换到PARITY状态(奇偶校验使能,否则切换到停止位状态)。在PARITY状态下,最后的数据位仍处在传输中,传输结束后,状态机插入奇偶校验位,之后,状态机就立刻切换到停止位状态。

自由民主的出现与自由和平等的理想联系在一起,这些理想似乎是不言自明和不可逆转的。但这些理想远比我们认为的脆弱。它们在20世纪的成功取决于独特的技术条件,而这种技术条件有可能是暂时性的。

所有试验数据运用Microsoft Excel 2010进行分析处理;采用SPSS 18.0统计软件中的单因素方差分析法(One-way ANOVA)比较各个处理间的差异,显著性水平为0.05。

无论停止位是否配置为1b还是1.5b或2b,状态机都会切换到STOP_1b状态,等待一个波特率的时钟周期,然后插入停止位。对停止位为1b,状态机切换到START状态然后等待另一帧的START位;对停止位为1.5b,状态机切换到STOP_1.5b状态,这个状态是0.5b数据和1.5b长度停止位,状态机等待半个时钟波特率周期后再切换到START状态;对停止位为2b,状态机切换到STOP_2b状态,在此状态时第一个停止位处于传输状态,等待一个时钟周期,插入另一个停止位,切换到START状态。

(2)接收模块

网址:http://www.chinamet.cn E-mail:yjfx@analysis.org.cn

串行接收器的功能是将接收的串行数据转换成并行数据,开始位在至少8个CLK16X时钟内检测到低电平,认为开始位有效。一旦一个START位在8个CLK16X时钟内正确接收,则数据位和奇偶校验位每 16个 CLK16X时钟采样一次。如果一个START位在16个CLK16X时钟内正确接收,则后面的位在位的中间采样。当发生任何的线路错误,如Overrun error, Parity error, Framing error, Break等,LSR将会显示接收帧错误。接收状态机如图4所示。

当UART由复位管脚MR复位后,接收状态机复位到IDLE状态。等待SIN管脚由高到低,一旦判定是一个可用的开始位,状态机切换到SHIFT状态。在SHIFT状态下,16个CLK16X时钟读取一位,并将它们移入RSR,当最后一位读入后,状态机切换到PARITY状态。PARITY状态中等待16个CLK16X后采样,读取到奇偶校验位后状态机转到STOP状态。无论停止位是1b,1.5b还是2b,状态机都等待16个CLK16X时钟并采样停止位,当读到逻辑高电平,即采到停止位,之后状态机就自动切换到IDLE状态。

(3)中断仲裁模块

当UART由复位管脚MR复位后,中断状态机复位到IDLE状态。在该状态等待使能中断的条件,当条件匹配时,状态机就会切换到中断状态的最高优先级。当最高、第二、第三、最低优先级的中断发生时,状态机分别依次切换到INT0、INT1、INT2、INT3状态,直到如图5上所示的寄存器被访问读取。只要IER中断响应的使能位和中断条件匹配,中断就会持续发生。

空闲位:处于高电平表示当前线路上没有数据传送。若空闲位后出现低电平,则表示下一数据帧的起始位[5-7]。

UART将中断申请分为4个优先级,这样可减少外部对内部的查询。按中断优先级排序为:接收线路状态;接收数据准备完备;THR清空;MODEM状态。

接收器从 SIN(串入)端口接收异步串行数据并执行串并转换。发送器从CPU接收8位的并行数据并执行并串转换。为了同步异步串行数据并保证数据的完整性,采用了标准异步通信格式,且发送器和接收器共用一个 CLK16X时钟,该时钟是UART接口时钟的16倍,可从外部的输入时钟直接得到。UART的原理框图如图2所示。

选取2017年1月~2017年12月期间来我院接受治疗的60例心肌梗塞患者,按年龄分为年轻组(年龄≤40岁)和对照组(年龄>40岁),年轻组患者有30例,其中男22例,女8例,对照组患者有30例,其中男18例,女12例。所选患者都符合WHO公布的心肌梗塞诊断标准,并都进行了冠状动脉造影检查。

MODEM模块用来和外部的UART设备通信,主要通过两个寄存器MCR和MSR进行。外部管脚输入信号改变MSR,通过微处理器接口读出。MCR用来控制DTRN和RTSN的输出,MCR的配置通过外部微处理器接口输入。还可监视外部输入信号DCDn、CTSn、DSRn、Rin。

传统建筑承载了村民的居住习惯。堂屋是传统农村建筑的核心,起居功能皆环绕堂屋发生。而新农村建设带来的“高大建筑”“平直马路”令传统建筑的特色与所处环境消失殆尽。随着农村生活条件的好转,越来越多的自建房取代传统的建筑。自建房多数采用城市住宅的空间构成方式,以客厅为生活中心;传统的起居轨迹渐渐消失,年轻人开始对一些传统的设施和用具感到莫名。

3 模块功能仿真

系统功能和时序仿真是EDA设计的必经步骤。图6是接收数据的仿真图形,可以看出接收端SIN上的数据序列为“01110000101”(数据位由低到高读取),起始位“0”后为数据位“10000111”,紧接着奇偶校验位“0”(设置为偶校验)和停止位“1”,数据依次串行输入RSR中,RSR装满后,数据再一次性压入到RBR中,完成输入串并转换的过程。

图7是发送数据的仿真图形,可以看到THR中待发送数据为“10000111”,将待发送数据再加上起始位、奇偶校验位、停止位,并从最低位开始发送,则发送端SOUT的数据序列为“01110000101”(数据位由低到高排列)。数据接收和发送功能完全正确。

4 硬件实现

FPGA硬件验证是基于IP cores的嵌入式系统设计的手段和主要目的。设计中采用2种手段进行了验证:

2.为了使课堂教学适应现代外语教学电教化的特点和我国许多中小学已经大量使用多媒体教学的现状,教师在本课程中要坚持使用多媒体课件和教学录像进行教学,并使之得到推广。

1)单端发送测试,即FPGA系统设计成发送端,通过所嵌入的UART IP core向PC系统串口发送数据,PC端超级终端软件通过PC中的UART接收数据并在屏幕上显示出来;UART IP接口的传输格式为:8 bit数据、无校验位、1 bit停止位、波特率默认为115200bps,为简单起见,UART只用了RX、TX,没有使用其它控制信号,所以超级终端的数据流控制选择“无”。PC端通过com1_115200_8n_1n.ht来打开超级终端测试。超级终端的打开方法:开始->程序->附件->通信->超级终端。在打开超级终端时会提示设置UART的属性。经测试,数据传输正常。

2)回环测试,用于测试UART的RX、TX(收、发)是否正常,即PC端通过系统UART向FPGA系统发、收数据,FPGA系统通过嵌入式UART IP收、发数据。在做测试时用了收发测试软件工具“串口大师”,传输波特率设为115200bps。在发送框内输入一个测试数据(如a5),按一下发送按钮,就会马上在接收框看到测试数据,经测试,RX,TX都能够正常工作。回环测试的结果如图8所示。

专业综合实训实验室是高校实验室的一个重要组成部分,通过专业综合实训环节,将学生的创新能力的培养具体规范地纳入实训教学计划之中。建立各种系统的、操作性强、特色鲜明的大学生创新能力培养的实训体系,可以把创新能力培养贯穿于实训教学全过程。在实训过程中,培养学生的设计能力、创新能力、动手能力和跨专业的综合应用能力。系统从设计到实现需要多学科的结合及团队各成员的分工协作、共同努力,培养了学生的团队协作精神。另外构筑开放式实训教学新体系,还可以为大学生各类科技竞赛及创新创业训练,营造良好的科研环境、创新环境和创新氛围。

图8 硬件收发回环测试的软件界面

5 结语

介绍了UART IP核在FPGA上的设计实现,并通过实际电路验证了系统设计的正确性。该UART IP核完全采用HDL语言编写,可以很大程度地减少电路板的使用面积,且移植性好、可重构、可编程,能很好的应用到SOC中去,具有很高的应用价值。

[1] 王成端.微机接口技术[M]. 第3版.北京:高等教育出版社,2009:164-171.

[2] 刘爱荣,王振成,曹瑞,等.EDA技术与CPLD/FPGA开发应用简明教程[M].北京:清华大学出版社,2007:3-13.

[3] 潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2009:4-13.

[4] 赵海登,刘晓文,胡景军,等.基于FPGA的UART IP核设计实现[J].通信技术,2009,42(05):177-179.

[5] 吴玲达,杨冰,杨征.计算机通信原理与系统[M].长沙:国防科技大学出版社,2008:1-10.

[6] 张凯,林伟.VHDL实例剖析[M].北京:国防工业出版社,2004:304-349.

[7] 徐小明,蔡灿辉.基于FPGA的数字下变频(DDC)设计[J].通信技术,2011,44(10):19-21.

猜你喜欢
波特率状态机中断
UART 波特率检测电路的FPGA 设计算法与实现
CAN 总线波特率自适应程序设计
基于有限状态机的交会对接飞行任务规划方法
基于Spring StateMachine的有限状态机应用研究
基于FPGA的中断控制器设计*
浅谈西门子S7—400与S7—200的通讯实现方法
Linux中断线程化分析及中断延时测试
波特率自适应的CAN驱动在嵌入式Linux下的实现①
跟踪导练(二)(5)
千里移防,卫勤保障不中断