您的位置 首页 汽车

根据FPGA器材完成UART习惯自顶向下的规划

基于FPGA器件实现UART适应自顶向下的设计-UART(通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。专用的UART集成电路如8250,8251,NS16450等已经相当复杂,有些含有许多辅助的模块(如FIF0),在实际应用中,往往只需要用到UART的几个基本功能,使用专用芯片会造成资源浪费和成本提高,我们可以将所需要的UART功能集成到FPGA内部,从而简化了整个系统电路,提高了可靠性、稳定性和灵活性。

UART(通用异步收发器)是广泛运用的串行数据传输协议。UART答应在串行链路上进行全双工的通讯。专用的UART集成电路如8250,8251,NS16450等现已适当杂乱,有些含有许多辅佐的模块(如FIF0),在实践运用中,往往只需求用到UART的几个根本功用,运用专用芯片会形成资源糟蹋和本钱进步,咱们能够将所需求的UART功用集成到FPGA内部,然后简化了整个体系电路,进步了牢靠性、安稳性和灵活性。

l 、UART简介

根本的UART通讯只需求两条信号线(RXD,TXD)就能够完结数据的彼此通讯,接纳与发送是全双工方式,其间TXD是UART发送端,RXD是UART接纳端。UART的根本特点是:在信号线上有2种状况,可分别用逻辑1(高电平)和逻辑0(低电平)来区别。在发送器闲暇时,数据线应保持在逻辑高电平状况。发送器是经过发送开端位而开端一个字符传送,开端位使数据线处于逻辑0状况,提示接纳器数据传输行将开端。数据位一般为8位一个字节的数据(也有6位、7位的状况),低位(LSB)在前,高位(MSB)在后。校验位一般用来判别接纳的数据位有无过错,一般是奇偶校验。中止位在最终,用以标志一个字符传送的结束,它对应于逻辑1状况。UART数据帧格局如表1所示。

依据FPGA器材完成UART习惯自顶向下的规划

2 、UART功用完成

依据FPGA的UART由3个子模块组成:波特率发生器模块;发送模块;接纳模块。

2.1 波特率发生器模块

波特率发生器实践上便是一个分频器。波特率发生器的功用是发生和RS-232通讯所选用的波特率同步的时钟,这样才干依照RS-232串行通讯的时序要求进行数据接纳或发送。完成波特率时钟的根本思路便是规划一个计数器,该计数器作业在速度很高的体系时钟下,当计数到某数值时将输出置为高电平,再计数必定数值后将输出置为低电平,如此重复就能得到所需的波特率时钟。例如FPGA的体系时钟为50MHz,RS-232通讯的波特率为9600,则波特率时钟的每个周期约适当于5208个体系时钟的周期。假设要得到占空比为50%的波特率时钟,只要使计数器在计数到5208 50%=2604时将输出置为高电平,之后在计数到5208时输出低电平并从头计数,就能得到和9600波特率同步的时钟。

波特率发生器VHDL完成的要害代码如下:

entity baud is

Port (clk,resetb:in std_logic;

bclk:out std_logic);

end baud;

architecture Behavioral of baud is

begin

process(clk,resetb)

variable cnt:integer;

begin

if resetb=‘1’ then cnt:=0; bclk《=‘0’; –复位

elsif rising_edge(clk) then

if cnt》=208 then cnt:=0; bclk《=‘1’; –设置分频系数

else cnt:=cnt+1; bclk《=‘0’;

end if;

end if;

end process;

end Behavioral;

Modelsim下的仿真波形如图1所示。

2.2 发送模块

在发数据寄存器被写入一帧数据之后,发送进程被发动。发送进程发动后,发送串行移位寄存器被发动。一起发送使能标志被清空。首要发送的是开端位,一起发动发数据计算器,记载发送数据的个数。依据作业形式寄存器的要求,即将发送的一帧数据串行发送出去,假如需求校验,则发生校验位并发送出去。最终需求发送的是中止位,依据中止位个数的要求,发送中止位。最终设置发送结束标志位。图2为发送模块状况机示意图。

图2 发送状况机示意图

发送模块VHDL程序要害代码如下:

architecture Behavioral of transfer is

type states is (x_idle,x_start,x_wait,x_shift,x_stop); –界说各子状况

signal state:states:=x_idle;

signal tcnt:integer:=0;

begin

process(bclkt,resett,xmit_cmd_p,txdbuf) –主控时序、组合进程

variable xcnt16:std_logic_vector(4 downto 0):=“00000”; –界说中心变量

variable xbitcnt:integer:=0;

variable txds:std_logic;

begin

if resett=‘1’ then state《=x_idle; txd_done《=‘0’; txds:=‘1’; –复位

elsif rising_edge(bclkt) then

case state is

when x_idle=》 –状况1,等候数据帧发送指令

if xmit_cmd_p=‘1’ then state《=x_start; txd_done《=‘0’;

else state《=x_idle;

end if;

when x_start=》 –状况2,发送信号至开端位

if xcnt16》=“01111” then state《=x_wait; xcnt16:=“00000”;

else xcnt16:=xcnt16+1; txds:=‘0’; state《=x_start;

end if;

when x_wait=》 –状况3,等候状况

if xcnt16》=“01110” then

if xbitcnt=framlent then state《=x_stop; xbitcnt:=0;

else state《=x_shift;

end if;

xcnt16:=“00000”;

else xcnt16:=xcnt16+1; state《=x_wait;

end if;

when x_shift=》txds:=txdbuf(xbitcnt); xbitcnt:=xbitcnt+1; state《=x_wait; –状况4,将待发数据进行并串转化

when x_stop=》 –状况5,中止位发送状况

if xcnt16》=“01111” then

if xmit_cmd_p=‘0’ then state《=x_idle; xcnt16:=“00000”;

else xcnt16:=xcnt16; state《=x_stop;

end if; txd_done《=‘1’;

else xcnt16:=xcnt16+1; txds:=‘1’; state《=x_stop;

end if;

when others=》state《=x_idle;

end case;

end if;

txd《=txds;

end process;

end Behavioral;

UART发送器的仿真波形如图3所示。

2.3 接纳模块

在接纳数据寄存器被读出一帧数据或体系开端作业之后,接纳进程被发动。接纳进程发动之后,等候检测开端位。检测到有用的开端位后,依据高于数据速率的时钟同步开端接纳数据。依据数据位数的设定,计数器计算接纳位数。一帧数据接纳结束之后,假如运用校验位,则检测校验位,不然接纳中止位。中止位接纳结束,则设定接纳状况寄存器中接纳结束寄存器,一起发生接纳中止,告诉操控器读取。接纳状况机的完成与发送部分相似,限于篇幅,在这里不再叙说。

在详细完成接纳部分电路的时分,咱们选用的是依据高速多倍率采样的办法。比方将采样速率设置在三倍信息速率上,便是以三倍于波特率的频率对接纳引脚Rx进行采样,这样既确保检测到“开端位”,又能够调整采样的时刻距离。将有用数据位的采样点操控在码元的中心1/3处,最大极限地削减误码,进步接纳的准确性。图4是该办法的示意图,在图中为了剖析便利,将开端位和部分数据位扩大,把每个信息位分为三等份,每等份的时刻宽度设为TS 。以三倍频对信息位进行采样时,每个信息位都将或许被采样到三次。当处于闲暇状况并检测开端位时,虽然每次详细的采样点会在S0区。检测到开端位低电平后,距离4×TS时刻,正好是第一位数据位的中心1/3部分S1区,即箭头所指部位。尔后的数据位、校验位和中止位的采样距离都是3×TS,当一切采样点均落在码元的中心1/3部分时,采样数据最牢靠。

3 、结束语

用FPGA完成UART功用,能够减小体系的面积,下降体系的功耗,进步体系的安稳性,这种硬件软件化的办法现已成为当今电子规划领域中的主导趋势。在实践运用中,咱们将文中完成的UART电路作为一个功用块嵌入到一个FPGA完成的数据收集与处理体系中,成功地完成了和远端PC机间的异步串行通讯。试验证明了该UART电路规划简略、作业安稳。

本文作者立异观念:本文将UART体系结构进行了模块化分化,使之习惯自顶向下的规划办法,并选用状况机对中心电路部分进行了描绘,使操控逻辑直观简略,大幅度进步了规划功率,特别是对接纳电路选用了高速多倍率采样法进行完成,下降了误码率,使采样数据更为牢靠。

责任编辑:gt

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/94032.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部