基于FPGA的UART设计
基于FPGA/CPLD的通用异步通信接口UART的设计

2 整体与各部分 功能详述
U R 处理的是并行数据转为串行信号和串行转为并行, AT
但并不是简单地转换 。分析 U R A T的结构 , 以看 出 U R 可 A T主 要 由数据总线 接 口、 制逻 辑和状态 接 口、 控 波特率发生 器 、 发 送逻辑和接 收逻辑等 部分组成 , 各部分间关系如 图 2 。 .
维普资讯
僵J拄木 与僵J佑 I I
基 于 F G / P D的 通 用 异 通 信 接 口 U R P A CL 步 A T的 设 计
TeD s no U R ( n e a A ycr os ee e Tas ie) a do P MC L h e g f A T U i r l s h nu ci r r m tr bs nF G P D i v s n o R v n t e
GA C L , P D,ii eat b t f e —u tm tgaeC rut o iigE i tSt tiueo micso I ert i i。c mbnn DA wt nB C L i o s u th ii h r s n c h P Dw lc nt c edg l r t t yt q iMya dep de t . sat l nrd csameh d t ei at ae ntepo rmma l gcd - a ss m ue n x einl r ceit ue to odsg u r b sdo h rga l e y i o n bel i e o vc i e矸, , P .T ecr u c o fUA T i n gae nF矗 CP D.T l d inicu e h rnmie L gc GA C I h oefn t no i R sit rtdi 1 e L ns e g n ldsteTa s t r o i、 s t t c ie o i a dteB u rt n rtr lfn t naegv nb HD rei lme tt no ei 、i la h Reev rL gcn a daeGe eao .Al u ci r ie yV L. h e h o mpe na o f sg s i d n mu -
基于FPGA的UART接口开发

应用设计 :有线通信
一
基于 F A的 U R 接口开发 P G AT
西安 电子科技 大学 齐志强
设 计 背 景
电路板进行 通信 。对数据 传输速率 要求 信号 拉高 ,从而完 成一帧数据 传送 。接 不高 ,传输距离也 不要求 很长 ,但传输 收端 接收到低 电平时 开始计数 ,然后接 数 据要求 准确可靠 。该 接 口可 用来监控 收 8比特信息 位后 如果 检测到 高电平即 电路内部状 态 ,将 F GA内部 信息通过 认 为 已接收 完一帧数据 ,继续 等待下一 P
l ~- V, 辑 0 电 平 为 +3 5 3 逻 的 ~+lV。 5
设 计 要 求
V 电平 ,持续 时 间可 以任意长 。本方 案采 CM OS电 路 的 电 平 范 围 一 般 是 从 0 到
P A的 I O输入输 出电压 / 本 接 口作为一 个关于内容 保护系统 用不添加 校验位的方 法 ,以提高 数据传 电源电压 ,F G ~3 3 为 P A 的 电路 板的一部 分 ,主 要用于和 计算机 输效 率 。发送 端发送数 据时先发 一低 电 通 常为 0 .V, 了与F G 供 电电 进 行通信 , 也可 与其 他带 UART接 口的 平 ,然后 发送 8比特 数据 ,之 后马上把 压保持一致 ,必须加 电平 转换芯片 。选
互联常 采用 RS 2 2 口方式 ,一般 该 路 的 目的 。 另外 ,电 路 板 上 的 F GA 外 比特 数据后没 有检测到高 电平则认 为这 ~3接 P 接 口由 UART 专用 芯片 来 实现 。但 挂有 串行F ah, ls 可通过 串 口对 Fa h进 不是一 帧有效数据 ,将 其丢弃 ,继续 等 ls UART接 口芯片一般 引脚较 多 , 内含许 行调试 ,将 Fa h中的数据输 出至计 算 待起始信号 。时序关 系如 图 l ls 所示 ,收 并可将数据 通过 串 口写入 F ah中 。 发 可 同时 进 行 ,互 不 干 扰 。 ls 多辅 助模块 和一些辅助 功能 ,在 实际使 机 , 用时 往往用 不到这些功能 ,因此若采 用 简而 言之 ,该接 口是作为计 算机与 电路
基于FPGA的UART电路的设计

UART传 送 一 个 字 符 以 起 始 位 ( tr i) 开 S atBt
始 , 以停 止位 ( tp Bt 结 束 ,字 符 之 间 没 有 固 定 So i )
的 时 间 间 隔 要 求 。每 一 个 字 符 的 前 面 都 有 一 位 起 始 位 ( 电 平 ,逻 辑 值 O ,字 符 本 身 由 5 8位 数 据 位 低 ) ~
波特率发 生模 块 、发送模块和接 收模块 ,并 给 出了仿真 结果 。程序 下载 到 F G 芯 片中 ,通信 数据 完全 正确 。 PA
该设计 不仅实现 了异步通讯 的主要 功能 ,而且 电路 简单 ,工 作稳定 、可靠 ,可 以将 其灵 活地嵌 入到各 个通 信系
统 中。
关 键 词 :F GA;UA P RT;VeigHD ro L l
Ab ta t s r c :Th s p p r d s rb s t e f n t n a d c a a t r tc f U ART. Th e u c i n f FP i a e e c i e h u c i n h r c e i is o o s e k y f n t s o GA , wh c o ih ic u e b u a e p o u e , ta s t e n e ev r we e i lm e t d o G n ld a d r t r d c r r n mitr a d r c i e , r mp e n e n FP Th i l t n r s l i a s e smu a i e u t s lo o
De i n o nd o s g f a ki fUART ic i a e o FPGA c r u tb s d n
基于FPGA的串口通信设计与实现

置和输人数据计算出响应
的奇偶校验位,它是通过
纯组合逻辑来实现的。
2.6总线选择模块
总线选择模块用于
选择奇偶校验器的输入是
数据发送总线还是数据接
收总线。
2.7计数器模块
计数器模块的功能
是记录串行数据发送或者
接收的数日,在计数到某
数值时通知UART内核模
块。 3 UART程序设计 UART完整的工作流程可以分为接收过程
关键词:FPGA:UART:RS232
引言 串行接口的应用非常广泛,为实现串口通 信功能一般使用专用串行接口芯片,但是这种 接口芯片存在体积较大、接口复杂以及成本较 高的缺点,使得硬件设计更加复杂,并且结构与 功能相对固定,无法根据设计的需要对其逻辑 控制进行灵活的修改。介绍了一种采用FPGA 实现串口通信的方法。 1串口通信协议 对一个设备的处理器来说,要接收和发送 串行通信的数据,需要一个器件将串行的数据 转换为并行的数据以便于处理器进行处理,这 种器件就是UART(Universal Asynchronous Re— ceiver/Transmitter)通用异步收发器。作为接iSl的 一部分,UART提供以下功能: 1.1将由计算机内部传送过来的并行数据 转换为输出的串行数据流; 1.2将计算机外部来的串行数据转换为字 节,供计算机内部使用并行数据的器件使用; 1.3在输出的串行数据流中加入奇偶校验 位,并对从外部接收的数据流进行奇偶校验: 1.4在输出数据流中加入启停标记,并从 接收数据流中删除启停标记。 2 UART模块设计 UART主要由UART内核、信号检测器、移 位寄存器、波特率发生器、计数器、总线选择器 和奇偶校验器7个模块组成。(见图1) 2.1 UART内核模块 UART内核模块是整个设计的核心。在数 据接收时,UART内核模块负责控制波特率发 生器和移位寄存器同步的接收并且保存 RS一232接收端口上的串行数据。在数据发送 时,UART内核模块首先产生完整的发送序列, 之后控制移位寄存器将序列加载到移位寄存器 的内部寄存器里,最后再控制波特率发生器驱 动移位寄存器将数据串行输出。 2_2信号检测模块 信号检测器用于对RS一232的输入信号进 行实时检测,一旦发现新的数据则立即通知 UART内核。需要注意的是,这里所说的 RS一232输入输出信号都指经过电平转换后的 逻辑信号,而不是RS一232总线上的电平信号。 2_3移位寄存器模块 移位寄存器的作用是存储输入或者输出 的数据。 2.4波特率发生器模块 由于RS一232传输必定是工作在某种波特 率下,比如9600,为了便于和RS一232总线进行 同步,需要产生符合RS一232传输波特率的时 钟。 2.5奇偶校验器模块 奇偶校验器的功能是根据奇偶校验的设
一种基于FPGA的UART IP核设计

发送数据 , 一帧 由起始位 、 数据位 、 校验位和停止 位组成 。数 据逐位传输 , 帧格式 如图 1 所示 。
1 )起 始 位 。 U R A T空 闲 时 ( 有 数 据 传 输 ) 总 线 为 高 没 ,
6 )波 特率 。由于 U R A T没有 同步时钟 线 , 发双方如 收/ 果需要 进行正 确的数据 传输 , 则要在 收/ 发双方定 义一致 的
数 据位 ( 有 校 验 位 ) 后 发 送 1— 没 之 2位 的“ 辑 1 和 校 验 位 逻 ”
之后 1 位 的“ 辑 1 ( ~2 ” 有校验位 )停止位可 以为 1位和 2 ,
1 U R A T概 述
U R A T是 一 种 异 步 通 信 协 议 。 “ 步 ” 不 需 要 额 外 的 异 指 时 钟 线 进 行数 据 的 同 步 传 输 , 一 种 串 行 总 线 接 口 , 需 占 是 只 用 2根线 就 可 以完 成 数 据 的收 发 ( 根 接 收 数 据 , 根 发 送 一 一
数据 开始传输 前 , 需
要刘‘ 数 化 数 作 一 的定 义 , 则 会 导 致 数 据 的 传 输 舣 致 的 发 送 采』 低 f L B 先 发 送 。 J ( S ) J
议 。它具有 使用 简单 ( 只有 几个 寄存 器 ) 应用广 泛 、 、 接线简 单等优点 , 电平进行转换后 , 对 通信距离较 长 , 但存 在电路复 杂、 成本高 、 可移植性 差等 缺点 。本文采用 F G 现 场逻辑 P A(
进行编程仿真试验 。仿真结果表明 : 该方法减小 了系统休秋 , 降低 rJ 牦 , 『 J 摊 』 ’ r系统 的稳定 和州 稚性 , 增加 了系
统 的灵 活 性 , 高 了可 移 植 性 。 提 ’
基于FPGA实现多路UARTSPI通信系统

基于FPGA实现多路UARTSPI通信系统第一部分设计概述 /Design Introduction本次的设计为多路UART/SPI通信系统,可以实现一对多的通信。
系统可以运行在UART模式,也可以运行在SPI模式。
我选择这一课题的原因主要是目前我所在的实验室需要写基于UART的快速通信。
这一课题既可以帮助我巩固之前学习的知识,又可以为我后面的项目做准备。
在完成课题的过程中,主要用到了FPGA状态机、总线等方面的知识。
这一课题可以应用在需要高速异步串行或同步串行通信的应用场合,如实时控制、监测等。
当系统运行在UART模式下,可以实现一个发送端最多向四个接收端发送信息,且有效信息中包含地址码,接收端可以根据发送端发送的地址码判断该信息是否是发送给自己的,实现信号线复用。
UART 通信简单,仅需要一根信号线,但是其缺点是只能实现单向通信,接收端无法给发送端反向发送数据。
但是这一缺点也可以通过采用两个UART系统来弥补。
当系统运行在SPI模式下,可以实现一个主机与多个从机之间的通信,且在通信过程中,系统是全双工的。
主机通过选择性拉低某一个或者某几个从机的片选信号,实现对于从机的选择。
第二部分系统组成及功能说明 /System Construction & Function Description计划功能程序实现UART和SPI的通信,并可以通过按键的方式在两种模式之间切换。
在UART模式下,发送端给接收端发送一串数据,接收端判断是否和已知数据相符。
如果相符则点亮LED,如果不符则不点亮。
在SPI模式下,主机给从机、从机给主机同时发送数据,若接收到的数据和已知数据相符,则点亮LED,如果不符,则不点亮。
同时,UART和SPI均有寻址功能。
UART的寻址方式是在数据位前面加两位地址位,实现对最多四个接收端的区分;SPI的寻址方式是通过拉低需要选定的从机的SS信号,实现对最多四个接收端的区分。
目前所有的功能均已实现。
基于fpga的串口通信

基于FPGA的串口通信设计学号:姓名:班级:指导教师:电子与控制工程学院一、串行通信系统1.1概述在计算机系统和微机网络的快速发展领域里串行通信在数据通信及控制系统中得到广泛的应用。
UART 即Universal AsynchronousReceiver Transmitter 通用异步收发器 协议是数据通信及控制系统中广泛使用的一种全双工串行数据传输协议 在实际工业生产中有时并不使用UART的全部功能。
只需将其核心功能集成即可。
波特率发生器、接收器和发送器是UART的三个核心功能模块 利用Verilog-HDL语言对这三个功能模块进行描述并加以整合UART是广泛使用的串行数据传输协议。
UART允许在串行链路上进行全双工的通信。
串行外设用到RS232-C异步串行接口 一般采用专用的集成电路即UART实现。
如8250、8251、NS16450等芯片都是常见的UART器件 这类芯片已经相当复杂有的含有许多辅助的模块 如FIFO有时我们不需要使用完整UART的功能和这些辅助功能。
或者设计上用到了FPGA/CPLD器件那么我们就可以将所需要的UART功能集成到FPGA内部。
使用VHDL或Veriolog -HDL将UART的核心功能集成从而使整个设计更加紧凑、稳定且可靠。
本文应用EDA技术 基于FPGA/CPLD器件设计与实现UART。
通信指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递从广义上指需要信息的双方或多方在不违背各自意愿的情况下无论采用何种方法使用何种媒质 将信息从某方准确安全传送到另方。
通信在不同的环境下有不同的解释在出现电波传递通信后通信(Communication)被单一解释为信息的传递是指由一地向另一地进行信息的传输与交换其目的是传输消息。
然而通信是在人类实践过程中随着社会生产力的发展对传递消息的要求不断提升使得人类文明不断进步。
在各种各样的通信方式中利用“电”来传递消息的通信方法称为电信(Telecommunication) 这种通信具有迅速、准确、可靠等特点且几乎不受时间、地点、空间、距离的限制 因而得到了飞速发展和广泛应用。
基于DSP+FPGA的UART设计与实现

基于DSP+FPGA的UART设计与实现摘要:UART作为RS232协议的控制接口得到广泛的应用,将UART功能集成在DSP和FPGA芯片组成的系统中,可使整个系统更为灵活、紧凑,减小电路体积,提高系统的可靠性和稳定性。
本文提出了一种基于DSP和FPGA 系统的UART 实现方法。
关键词:通用异步收发器;DSP;FPGA1 引言通用异步收发器(Universal Asynchronous Receiver/Transmitter,通常称作UART)是一种串行异步收发协议,应用十分广泛。
UART可以和各种标准串行接口,如RS232、RS485等进行全双工异步通信,具有传输距离远、成本低、可靠性高等优点。
一般UART 由专用芯片来实现,但专用芯片引脚较多,内含许多辅助功能,在实际使用时往往只需要用到UART 的基本功能,使用专用芯片会造成资源浪费和成本提高[1]。
在DSP和FPGA组成的系统中,利用DSP芯片完成UART数据收发控制,FPGA完成UART数据具体的收发时序,二者利用EMIF接口配合,即可实现UART通信功能。
这样设计可以大大减少电路体积、简化电路,也提高了系统的灵活性,使整个系统更加紧凑、稳定且可靠。
2 UART原理UART是一种串行数据总线,用于全双工异步通信。
工作原理是将数据的二进制位按位进行传输。
基本的UART 只需要两条信号线(收、发)和一条地线就可以完成数据的互通,接收和发送互不干扰。
在UART通信协议中,信号线上的状态位高电平代表“1”,低电平代表“0”。
图1 UART数据传输格式UART 数据传输格式如图1所示,一个字符由起始位、数据位、校验位和停止位组成(其中校验位可选)。
其中各位的含义如下:起始位:一位逻辑“0”信号,表示字符数据传输的开始;数据位:5~8位可选的逻辑“0”或“1”。
数据位的发送顺序为:先发送数据的最低位,最后发送最高位;校验位:包括奇校验或偶校验两种方式,即数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的UART设计
作者:王志学
来源:《中国新技术新产品》2011年第07期
摘要:UART是一种目前广泛应用的短距离串行传输接口,常用于短距离、低速、低成本的串行数据通信。
而现在大部分的集成电路UART芯片成本高、电路复杂、可移植性较差,本文基于FPGA器件设计,使用VHDL将UART的核心功能集成,使整个系统更加紧凑、稳定,且可移植性强。
关键词:UART;FPGA;VHDL
中图分类号:TP334.7 文献标识码:A
UART(Universal Asynchronous Receiver/Transmitter,通用异步收/发器),用于控制计算机与串行设备之间的数据通信,它提供了外设用到的RS-232C数据终端设备接口,使计算机可以和调制解调器或其它使用RS-232C接口的串行设备进行通信。
常见的UART有8250、8251、NS16450、NS16550等,这些芯片做的比较复杂,功能齐全。
但是由于结构和功能相对固定,因而不能根据我们的实际需要去裁剪和移植。
当我们不需要用到完整的UART功能和一些辅助功能时,就可以将需要的UART功能集成到FPGA上,从而大大的减少了体积、简化了电路,也提高了系统的可靠性、稳定性和灵活性。
1 UART简介
UART是一种串行数据总线,用于异步通信,并且双向通信,可实现全双工传输和接收。
基本的UART只需要两条信号线(TXD、RXD)和一条地线就可以完成数据的相互通信,接收和发送互不干扰,这样就大大节省了传输费用。
由于UART是异步通信,所以需要对数据进行同步。
基本的UART帧格式如图1所示:
从图中可以看出,串行异步通信的帧格式包括四个部分:起始位、数据位、校验位和停止位。
起始位在一个字符中占一位,并且必须为0,表示字符的开始;起始位后面是数据位,一般为5至8位,由串行通信的初始化程序设定,数据的排列方式是低位在前,高位在后。
数据位后面是校验位,该位可根据实际需要可选可不选;一个字符的最后是停止位,该位必须存在,表示一个字符的结束。
停止位可以是1位、1.5位或2位。
异步通信的这种由起始位开始,停止位结束所构成的一串二进制数即为帧,从微观来看,异步通信时一位一位的传输的,从宏观来看,又是一帧一帧传输的。
在一帧数据中的每一位之间的时间间隔是一样的,但是帧与帧之间的时间间隔是随机的。
2 UART的模块设计
本文采用模块设计的方法,并且针对实际要求,将整个软件划分为波特率发生器模块、接收启动模块、接收模块和发送模块四个部分。
各模块功能分析如下:
2.1 波特率发生器模块
波特率发生器实际上就是一个简单的分频器,它的功能是产生和RS-232C通信所采用的波特率同步的时钟,这样才能按照RS-232C的时序要求进行数据的收发。
而波特率发生器的系数在FPGA实现时一般是固定的,但对于不同的实现,这个系数需要更改(因为FPGA在设计时比较容易改动,而专用芯片不易改动,所以UART专用芯片一般通过添加一个接口以便在使用时改变波特率)。
可以在VHDL语言中使用Generic语句,或在Verilog HDL语言中使用parameter语句使问题得到解决。
因发送和接收时对时钟的要求不同,给发送模块和接收模块提供的时钟频率也不相同。
当发送数据时,只需要将数据按照一定的速率串行的输出就可以了,所以,发送的时钟和发送的波特率是一致的;但是,在接收数据时,在数据位的什么位置对数据信息进行判断非常的重要,最理想的情况就是在串行数据每一位的中点对数据进行采样,因为发送方和接收方的时钟是不一致的,所以需要对每一位数据的时间进行分段,分段越多,采样时就越接近中点,并且采样时出现错误的概率也越低,但是,分段越多,采样的时间也越多,系统的开销越大,所以,实际设计时,波特率发生器产生的分频时钟,是波特率时钟频率的16倍。
波特率发生器模块如图2所示。
clk16x是波特率发生器得到的分频时钟;clk是时钟输入信号;rst是系统复位信号。
2.2 接收启动模块
由于串行数据帧和接收时钟是异步的,由高电平转化为低电平可以视为一个数据帧的起始位。
但是,在实际的电路中,会有多方面的原因干扰,为了避免毛刺影响,正确的判断起始位的到来,采样时在时钟的上升沿(即由波特率发生器提供的16倍于波特率的时钟)检验数据是否为低电平,如果接收到的是低电平,则开始计数,如果连续8个时钟内都是低电平,则表示起始信号有效,即要求接收到的起始位在波特率时钟采样过程中有一半是属于逻辑0才表示接收到的起始位有效。
如果在采样时,有一次检验到高电平,即逻辑1时,则认为起始信号无效,返回初始的状态重新等待下一个起始位信号。
当起始位的信号时有效时,每隔16个时钟采样一次,这样就保证了每次采样都是在数据位的中点。
2.3 接收模块
接收模块如图3所示。
clk16x是由波特率发生器产生的分频时钟;rst是系统复位信号;rxd是来自其他设备的串行数据;data_ready表示"数据已准备好",在rdn为1的情况下,并行数据转换完毕就可以输出,此时将data_ready置为0;在rdn不为1的情况下,串并转换完成后将此data_ready置1以表示数据己经转换完毕,可以输出了,通知接收模块每隔16个
clk16x周期采样一次,接收UART帧中剩余的数据位,否则,接收模块不工作。
dout是接收模块将接收到的串行数据转换成的并行数据,送给发送模块的输入信号din。
2.4 发送模块
发送模块相对于接收模块要容易处理得多。
只要每隔16个clk16x周期输出1位即可,次序遵循1位起始位,8位数据位,1位停止位。
发送模块如图4所示。
din是将要发送出去的并行数据;clk16x、rst信号同接收模块;wrn是数据发送的启动信号;txd是发送出去的串行数据信号。
结语
用FPGA實现UART功能,减少了系统的面积,降低了系统的功耗,提高了系统的稳定性,同时,由于数据帧和波特率都比较容易改变,大大的提高了系统设计的灵活性和可移植性。
参考文献
[1]史故臣,石旭刚,左绪勇.基于FPGA的UART设计与实现[J].中国新通信,2009.4:62-64
[2]聂涛,许世宏.基于FPGA的UART设计[J].现代电子技术,2006,29(2):127-129
[3]播松,黄继业.EDA技术与VHDL[M]北京:清华大学出版社,2007
[4]杨宗国,李艳萍.基于FPGA的UART模块的设计[J].现代电子技术,2009,2:19-22
[5]黄智伟,王彦.FPGA系统设计与实践[M].北京:电子工业出版社,2005
[6]潘松,王国栋.VHDL使用教程.电子科技大学出版社.1999。