通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)能够和各种规范串行接口,如RS232和RS485等进行全双工异步通讯,具有传输距离远、本钱低、牢靠性高级长处。一般UART由专用芯片来完结,但专用芯片引脚都较多,内含许多辅佐功用,在实践运用时往往只需求用到UART的根本功用,运用专用芯片会形成资源糟蹋和本钱进步。当咱们不需求用到完好的的UART功用和一些辅佐功用时,就能够将需求的UART功用集成用FPGA来完结,但是,FPGA内部并不具有CPU操控单元,无法处理由UART操控器发生的中止,所以FPGA不能运用现成的UART操控器构成异步串行接口,有必要将UART操控器的功用集成到FPGA内部。然后能够大大的削减了体积、简化了电路,也进步了体系的灵敏性。
1、 UART的作业原理
UART是一种串行数据总线,用于异步通讯,而且双向通讯,可完结全双工发送和接纳。根本的UART只需求两条信号线(TXD、RXD)和一条地线就能够完结数据的相互通讯,接纳和发送互不搅扰,这样就大大节省了传输费用。因为UART是异步通讯,所以需求对数据进行同步。UA RT发送/接纳数据的传输格局如图1所示,一个字符单位由开端位、数据位、校验位、中止位组成(其间校验位可供选)。
发送或接纳一个完好的字节信息,首先是一个作为开端位的逻辑“0”位,接着是8个数据位。然后是中止位逻辑“1”位,数据线闲暇时为高或“1”状况。在字符的8位数据部分,先发送数据的最低位,最终发送最高位。每位继续时刻是固定的,由发送器本地时钟操控,每秒发送的数据位个数,即为“波特率”。开端位和中止位起着很重要的效果。明显,它们标志每个字符的开端和结束,但更重要的是他们使接纳器能把他的部分时钟与每个新开端接纳的字符再同步。异步通讯没有可参照的时钟信号,发送器随时都或许发送数据,任何时刻串行数据到来时,接纳器有必要精确地发现开端位下降沿的呈现时刻,然后正确地采样紧接着的10或许11位(包含开端位、数据位和中止位),接纳器的时钟和发送器的时钟不是同一个,因而,接纳器所确认的采样点的距离和发送器所确认的位距离时刻不同,这点要特别注意。
2、 UART功用规划
异步通讯的一帧传输阅历以下进程:1)闲暇状况。发送方接连发送信号,处于信息“1”状况。2)开端传输。发送方在任何时刻将传号变成空号,即“1”跳变到“0”,并继续1位时刻标明发送方开端传输数据。而一起,接纳方收到空号后,开端与发送方同步,并希望收到随后的数据。3)奇偶传输。数据传输之后是可供挑选的奇偶位发送或接纳。4)中止传输。最终是发送或接纳的中止位,其状况恒为“1”。
规划的根本原则是保存最主要的功用,根据FPGA的UART体系由波特率时钟发生器、接纳器和发送器3个子模块组成,如图2所示。
2.1 波特率发生器规划
波特率发生器本质是规划一个分频器,用于发生和RS232通讯同步的时钟。在体系顶用一个计数器来完结这个功用,分频系数N决议了波特率的数值。该计数器一般作业在一个频率较高的体系时钟下,当计数到N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此重复即可得到占空比50%的波特率时钟,详细的波特率依赖于所运用的体系时钟频率和Ⅳ的巨细。如体系时钟频率是6.4 MHz,要求波特率是9 600,则16倍波特率时钟的周期约等于42个体系时钟周期,则计数器取42/2=21时,当计数溢出时输出电平取反就能够得到16倍约好波特率的时钟。
运用VHDL来描绘波特率发生器的完好代码如下:
2.2 发送器规划
UART发送器的规划较简单,只需每隔一个发送周期依照数据帧格局及要求的速率输出数据即可。没有数据要发送时,发送数据寄存器为空,发送器处于闲暇状况;当检测到发送数据寄存器满信号后,发送器及发送开端位,一起8个数据位被并行装入发送移位寄存器,中止位紧接着数据位指示一帧数据结束。只要发送数据寄存器为空时,RAM中的待发数据才干被装入。程序中运用计数器要确保各位周期守时正确。
2.3 接纳器规划
接纳器的作业进程如下,串行数据帧和接纳时钟是异步的,发送来的数据由逻辑1变为逻辑0能够视为一个数据帧的开端。接纳器先要捕捉开端位,但是,通讯线上的噪音也极有或许使传号“1”跳变到空号“0”。所以接纳器以16倍的波特率对这种跳变进行检测,确认rxd输入由1到0,逻辑0要8个bclkr(16倍的波特率时钟)周期,才是正常的开端位,而不是噪音引起的,其间若有一次采样得到的为高电平则以为开端信号无效,回来初始状况从头等候开端信号的到来。
采到正确的开端位后,就开端接纳数据,最牢靠的接纳应该是接纳时钟的呈现时刻正好对着数据位的中心。因为在开端位检测时,已使时钟对准了位中心,用16倍波特率的时钟作为接纳时钟,便是为了确保在位宽的中心时刻对接纳的位序列进行牢靠采样,当采样计数器计数结束后一切数据位都现已输入完结。最终对中止位的高电平进行检测,若正确检测到高电平,阐明本帧的各位正确接纳结束,不然犯错。最
后将正确的数据转存到数据寄存器中,输出数据。还要输出一个数据接纳标志信号标志数据接纳完。
运用有限状况机完结,完好代码如下:
3、 仿真
本规划在Altera Cyclone系列的EP1C3T100I7芯片进步行了验证,对发送模块和接纳模块的仿真成果别离如图3、图4所示。发送的数据能严厉依照串行通讯协议进行传输;接纳的数据也完全正确。仿真无误后,运用QuarhusⅡ软件将编译好的.pof格局文件载到装备芯片EPCS1中。成果通讯数据完全正确,电路作业安稳、牢靠。
用FPGA规划UART,能够用片上很少的逻辑单元完结UART的根本功用。与传统规划比较,能有用削减体系的PCB面积,下降体系的功耗,进步规划的安稳性和牢靠性,充分运用FPGA的剩下资源。并可方便地进行体系升级和移植。
4 、定论
该规划具有很大的灵敏性,经过调整波特率发生器的分频参数,就能够使其作业在不同的频率。选用16倍波特率的采样时钟,能够实时有用监测数据的开端位,并对数据位进行中心采样,然后确保了所采样数据的正确性。该模块能够作为一个完好的IP核,灵敏地移植进各种类型FPGA中,在实践运用时也可嵌入到其他体系中,有很好的学习和参考价值。
责任编辑:gt