一种基于FPGA的UART电路实现

更新时间:2023-05-04 22:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. 6823e2ed6294dd88d0d26bf3

一种基于FPGA 的UART 电路实现

杨英强

(南京邮电学院电子工程系 江苏南京 210003)

摘 要:UA R T 即通用异步收发器,传统上采用多功能的专用集成电路实现。但是在一般的使用中往往不需要完整的UA R T 的功能,比如对于多串口的设备或需要加密通讯的场合使用专用集成电路实现的UA R T 就不是最合适的。本设计使用X ilinx 的FPGA 器件,只将UA R T 的核心功能嵌入到FPGA 内部,不但实现了电路的异步通讯的主要功能,而且使电路更加紧凑、稳定、可靠。

关键词:通用异步收发器;专用集成电路;FPGA 器件;V HDL

中图分类号:T P 33817     文献标识码:B      文章编号:1004373X (2005)1208203

Rea l iza tion of a Sort of UART Ba sed on FPGA

YAN G Y ingqiang

(D epart m ent of E lectronic Engineering,N anjing U niversity of Po sts and T elecomm unicati ons,N anjing,210003,Ch ina )

Abs tra c t :T he U niversal A synch ronous T rans m itter (UA R T )is traditi onally i m p lem ented by m ulti -functi onal A S I C ,but it

doesn ′t need to use w ho le functi on of UA R T on the mo st occasi ons 1Fo r examp le ,it is no t suitable fo r m ulti -serial po rt devices o r needs encryp ti on comm unicati on occasi ons 1In th is paper ,w e use FPGA of X ilinx to em bed the co re functi on of UA R T into it ,w h ich no t only ach ieves m ain asynch ronous comm unicati on functi on of the w ho le circuit ,but also m akes the w ho le circuit mo re si m p le ,stable and reliable 1

Ke yw o rds :UA R T ;A S I C ;FPGA ;V HDL

收稿日期:20050306

1 引 言

U A R T 即通用异步收发器,他广泛使用串行数据传

输协议。U A R T 功能包括微处理器接口、用于数据传输的缓冲器(Buffer )、帧产生、奇偶校验、并串转换,用于数据接收的缓冲器、帧产生、奇偶校验、串并转换等。U A R T 的特点是一个字符接一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身由5~8位数据位组成,接着字符后面是一位校验位,最后是停止位(1位,或1位半,或2位),停止位后面是不定长度的空闲位。停止位和空闲位都规定高电平(逻辑值1),这样可以保证起始位开始处有一个下降沿。在一般的使用中往往不需要使用完整的U A R T 功能,比如对于多串口的设备或需要加密通讯的场合使用

U A R T 就不是最合适的。如果设计上用到FPGA CPLD

器件,那么就可以将所需要的U A R T 功能集成到FPGA 内部,从而使整个设计更加紧凑、稳定、可靠。分析U A R T 的结构,U A R T 主要由数据总线接口、控制逻辑和状态接

口、波特率发生器、发送和接收等部分组成。在本设计中,

固定数据帧格式为:开始位(1b 低电平)、8位数据位、偶校验、停止位(1b 高电平),波特率可调。2 波特率发生模块[1]

设计的U A R T 的接收和发送按照相同的波特率进行,波特率可以通过接口模块的总线接口进行设置。

U A R T 收发的每一个数据宽度都是波特率发生器输出的

时钟周期的16倍,即假定当前按照9600b s 进行收发,

那么波特率发生器的输出时钟频率应该为9600×16H z 。

假定提供的外部时钟为116M H z ,可以很简单地通过总线写入不同的数值到波特率发生器保持寄存器,然后用计数器的方式生成所需要的各种波特率,即分频器。计算公式为:1600000 (16×所期望的波特率)-1,如果希望输出10000H z 的波特率,可以得出从总线写入的数值

为1600000

(16×10000)-1=9(09H )。3 发送模块[2]

根据U A R T 协议的描述,发送逻辑流程如图1所示。发送数据由接口模块控制,接口模块给出w rn 信号,发送器根据此信号将并行数据锁存,并通过发送保持寄存器和发送移位寄存器发送并行数据。由计数器no _bs _sent 控制状态的转移,即数据的发送,计数值为1时,数

2

8微电子技术杨英强:一种基于FPGA 的UA R T 电路实现

? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. 6823e2ed6294dd88d0d26bf3

据从发送保持寄存器传送到发送移位寄存器,计数值为2时,发送开始位(1b 低电平),计数值为3~10,发送8位数据,计数器为11,发送校验位,计数值为12,发送1位停止位,计数器随后清零。发送时钟是根据数据传输的波特率产生的,16倍于波特率发生器产生的时钟

图1 发送逻辑的流程

发送模块信号:

rst (输入):复位端口,低电平有效;w rn (输入):写控制信号;

din [0:7](输入):并行数据输入信号;

clk 16x (输入):外部时钟信号;

tbre (输出):发送保持寄存器空信号,高电平有效;tsre (输出):发送移位寄存器空信号,高电平有效;sdo (输出):串行数据输出信号。

用V HDL 语言编写代码,使用X inlinx 的ISE 511进行逻辑综合,运用M odelsi m 712做时序仿真,其结果如图2所示

图2 发送模块时序仿真波形图

4 接收模块[2]

根据U A R T 的协议描述,可以画出如图3所示的接收逻辑流程图。接收逻辑首先通过检测输入数据的下降沿来检查起始位,然后产生接收时钟,利用接收时钟来采样串行输入数据,在缓冲器中作移位操作,同时产生校验位,在第9位处比较校验位是否正确,在第10位处比较停止位是否为高,在校验位错误或停止位错误的情况下产生错误指示信号。接收时钟是根据数据传输的波特率产生的,

16倍于波特率发生器产生的时钟。

接收模块信号:

rst (输入):复位信号;clk 16x (输入):输入时钟;

rdn (输入):读锁存信号;

rxd (输入):串行数据输入信号;

dout [0:7](输出):并行数据输出总线;fram ing _erro r (输出):帧错误信号;parity _erro r (输出):校验错误信号;data _ready (输出):

数据接收完毕信号。

图3 接收逻辑的流程

运用M odelsi m 712对接收模块做了时序仿真,其结果如图4所示。接收时钟与发送时钟相同,接收到一帧串行数据,由接收模块转换为并行输出,并且检验校验位和停止位,产生fram ing _erro r 和parity _erro r 信号输出

图4 接收模块时序仿真波形图

5 接口控制模块

接口控制模块连接控制发送、接收、波特率发生模块,

并与外部并行总线相连接,从外部(CPU 或单片机)接收控制信号(nrst ,nw rn ,nbdn ,nrdn ),来控制U A R T 的发送、接收以及内部时钟的生成。在nw rn 有效并且内部

信号tbre =′0′

(发送缓冲寄存器空)时,将数据总线输入的并行数据发送给发送模块数据线din (7:0),执行发送数据功能。在nrdn 有效并且内部信号data _ready ,parity _

erro r ,fram ing _erro r 有效时,允许从接收模块读入接收到的数据。波特率发生器和发送模块的并行数据输入端口共用一个数据总线。6 总体电路综合及仿真

U A R T 总体电路如图5所示,分别由上述4个模块组

成。其时序仿真如图6所示。

3

8《现代电子技术》2005年第12期总第203期

  集成电路

? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. 6823e2ed6294dd88d0d26bf3

图5 UA R T 总体电路图

观察图6,可以看到串行输出端口sdo 发送一帧数据为“00101011001”,第一位为起始位,8位数据位,校验位为“0”(偶校验),1位停止位,空闲状态位为高电平。并行输出端口ndout 输出为“00101010”,输入数据帧格式正确,校验位正确。7 结 语

用FPGA 器件实现了U A R T 异步收发器的核心功能,

可以实现对数据的接收和发送,并可以在接收数据时对其校验位、停止位进行判断,在发送数据时可以形成完整的一帧数据格式。其接收和发送数据的时钟有内部波特率发生器产生,根据预置的分频系数,对外部时钟进行分频,产生需要的接收或发送时钟。将该U A R T 电路作为一功能块嵌入到一个FPGA 实现的数据采集与处理系统中,成功地实现了和远端的PC 机进行异步串行通信。实验证明该

U A R T 电路简单,工作稳定、可靠,可运用于低端的异步通信

图6 UA R T 总体时序仿真波形图

参 考 文 献

[1]任晓东1CPLD FPGA 高级应用开发指南[M ]1北京:电

子工业出版社,20031

[2]

a 16450U niversal A synch ronous R eceiver T rans m itter [J OL ]1A ltera Co rpo rati on ,20021

作者简介 杨英强 男,1972年出生,硕士,讲师。主要从事电工电子技术教学与研究工作。

(上接第81页)

可能使配电变压器超载运行;取得过小,会使经济运行区域过于狭窄难以操作,可能会失去实际意义。经对一些配电网的计算和分析,建议取Α=112为宜。运行负荷的变化范围为[P ]=(0154~1186)P ec ,这样既能保证配电网在运行中具有良好的经济性,网损率可控制在最小网损率的

112倍以内,又可使经济运行区域有一个较大的范围和良

好的可操作性。

4 经济运行区域划分对网损管理的指导意义

配电网经济运行区域的划分,对配电网的技术改造、运行管理、负荷调整和网损管理工作具有重要的指导意义。

在P

大导线截面的降损措施已无显著效果。可采取的措施如:加快高能耗配变的更新改造;更换“大马拉小车”配变;加强“母子”配变的运行管理;对照明等轻载的纯单相推广应用D 7系列单相变压器等。在负荷调整方面要尽量组织和提高配电网的运行负荷。

在P a

在P >P b 区域,配电网处于高负荷的非经济运行区,网损中的可变损耗是影响网损率的关键因素,降低配变铁损的降损措施其效果已不显著。而这时一般是负荷高峰期,上级电网往往限电频繁,可利用此机会调整低压电网负荷,其降损效果也是可观的。

作者简介 杨 欣 女,1965年出生,山东安丘人,潍坊学院信控系讲师,硕士研究生。

补订、邮购启事

亲爱的读者:

如果您错过了邮局征订《现代电子技术》杂志的机会,请直接汇款至《现代电子技术》发行部,我

们会及时将每期杂志直接邮到您的手中。每期杂志订价6180元,全年(24期)订价163100元。合订本180元 本(含装订、挂号费)。   征订热线:029-********

4

8微电子技术杨英强:一种基于FPGA 的UA R T 电路实现

本文来源:https://www.bwwdw.com/article/2u4e.html

Top