基于FPGA的UART设计说明.docx

上传人:b****1 文档编号:14130497 上传时间:2023-06-20 格式:DOCX 页数:30 大小:346.46KB
下载 相关 举报
基于FPGA的UART设计说明.docx_第1页
第1页 / 共30页
基于FPGA的UART设计说明.docx_第2页
第2页 / 共30页
基于FPGA的UART设计说明.docx_第3页
第3页 / 共30页
基于FPGA的UART设计说明.docx_第4页
第4页 / 共30页
基于FPGA的UART设计说明.docx_第5页
第5页 / 共30页
基于FPGA的UART设计说明.docx_第6页
第6页 / 共30页
基于FPGA的UART设计说明.docx_第7页
第7页 / 共30页
基于FPGA的UART设计说明.docx_第8页
第8页 / 共30页
基于FPGA的UART设计说明.docx_第9页
第9页 / 共30页
基于FPGA的UART设计说明.docx_第10页
第10页 / 共30页
基于FPGA的UART设计说明.docx_第11页
第11页 / 共30页
基于FPGA的UART设计说明.docx_第12页
第12页 / 共30页
基于FPGA的UART设计说明.docx_第13页
第13页 / 共30页
基于FPGA的UART设计说明.docx_第14页
第14页 / 共30页
基于FPGA的UART设计说明.docx_第15页
第15页 / 共30页
基于FPGA的UART设计说明.docx_第16页
第16页 / 共30页
基于FPGA的UART设计说明.docx_第17页
第17页 / 共30页
基于FPGA的UART设计说明.docx_第18页
第18页 / 共30页
基于FPGA的UART设计说明.docx_第19页
第19页 / 共30页
基于FPGA的UART设计说明.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的UART设计说明.docx

《基于FPGA的UART设计说明.docx》由会员分享,可在线阅读,更多相关《基于FPGA的UART设计说明.docx(30页珍藏版)》请在冰点文库上搜索。

基于FPGA的UART设计说明.docx

基于FPGA的UART设计说明

师大学本科毕业设计

 

基于FPGA的UART设计

 

学生

院系名称

专业名称

班级

学号

指导教师

完成时间

 

基于FPGA的UART设计

电子信息工程专业

 

摘要:

UART(通用异步收发器)是一种应用广泛,协议简单,易于调试的串行传输接口。

FPGA是能高密度,低消耗完成所需要的逻辑功能的一种在线可编程器件,是现在业提高系统集成度最佳技术之一,其可反复配置,且使用灵活。

VHDL是描述电路功能或行为的一种硬件语言。

本文首先阐述了运用FPGA实现UART接口的意义。

接着介绍了UART的波特率发生器,发送功能和接收三大核心功能的理论知识。

FPGA的工作原理,配置模式以及VHDL语言实现状态机的相关理论基础。

给出了运用VHDL语言将UART三大功能嵌入在FPGA上的模块化设计方法。

设计包括四大模块:

顶层模块,波特率发生器,UART接收器,UART发生器。

在FPGA片上集成UART主要功能,减少了电路板体积,同时电路也增加了可移植和反复配置功能,有效提高了电路的集成度和灵活性。

最后运用Quartusii9.1实现了其功能仿真。

关键词:

FPGAUARTVHDL有限状态机

TheDesignofUniversalAsynchronousReceiverTransmitterBasedonFPGA

Abstract:

UART(UniversalAsynchronousReceiverTransmitter)isawidelyused,simpleprotocol,easytodebugserialtransmissioninterface.FPGAiscapableofhigh-density,low-costneededtocompletealineofprogrammablelogicdevices,isnowoneoftheindustry'sbesttechnologiestoimprovesystemintegration,whichcanberepeatedtoconfigureanduseandflexible.VHDLdescriptionofthecircuitfunctionorbehaviorisahardwarelanguage.ThispaperfirstdescribestheuseofFPGAtorealizethesignificanceoftheUARTinterface.ThenintroducedthetheoryofknowledgeUARTbaudrategenerator,sendingandreceivingthreecorefunctions.FPGAworks,configurationmodeandtheVHDL-basedstatemachinetheory.GivestheUARTusingVHDLlanguagetothreefunctionsembeddedintheFPGAdesign.Designincludesfourmodules:

thetop-levelmodule,baudrategenerator,UARTreceivers,UARTgenerator.Integratedon-chipUARTFPGAbasicfunctions,reducingboardspace,thecircuitalsoincreasestheportabilityandrepeatedconfigurationcapabilities,improvetheintegrationandflexibilityofthecircuit.Finally,theuseofQuartusii9.1implementsitsfunctionalsimulation.

KeyWords:

FPGA;UART;VHDL;FSM

摘要:

I

Abstract:

II

1绪论1

1.1课题背景1

1.2课题研究现状2

1.3课题研究容与主要工作3

1.4课题容结构3

2UART理论基础4

2.1接口技术简介4

2.2UART基本结构4

2.3UART数据帧格式5

2.4涉及到的理论计算6

3设计工具7

3.1课题硬件平台——FPGA7

3.2设计工具QuartusII简介与使用7

3.3VHDL语言简介7

4UART实现方案8

4.1系统总体结构8

4.2顶层模块设计8

4.3波特率发生模块设计9

4.4接收模块10

4.5发送模块设计12

5UART设计的仿真与验证15

5.1波特率发生模块仿真15

5.2接收模块仿真15

5.3发送模块仿真16

6总结17

参考文献18

致19

附录20

 

基于FPGA的UART设计

1绪论

在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:

(1)速度不匹配。

外设的工作速度和计算机的工作速度不一样,而且外设之间的工作速度差异也比较大。

(2)数据格式不匹配。

不同的外设在进行信息存储和处理时的数据格式可能不同,例如最基本的数据格式可分为并行数据和串行数据。

(3)信息类型不匹配。

不同的外设可能采用不同类型的型号,有些是模拟信号,有些是数字信号,因此采用的处理方式也不同。

为了解决外设和计算机之间的信息交换问题,即需要设计一个信息交换的中间环节——接口。

对于台式电脑、个人笔记本,最常用的接口就是USB接口、串口、并口、PS2接口、网口。

在我们电子设计中的PC终端软件的通信,应用最多的就是串口、其次是USB接口、再就是网口。

1.1课题背景

电子产品中,很多低速的数据采集,一些点阵系统的配置,GPRS模块的调试等,都用串口来实现跟PC的通信。

甚至一些单片机的配置都用串口实现通信。

串口最高可以达到128000bps的速率,在低速场合下,完全能够实现与PC的通信,来满足我们各种要求,以实现对数据的实时处理。

目前的串行通信常用UART实现数据的串/并转换或并/串转换。

UART(通用异步收发器)是一种串行通信协议,主要用于短距离,低速率,低成本的数据的计算机和外设之间的交流。

是电脑硬件的一部分,具体实物表现为一块并行输入成为串行输出的模块化芯片。

8250、8251、NS16450等芯片都是常见的UART器件。

UART主要功能实现通信中的数据串并转换,且能奇偶检验。

将计算机部传送过来的并行数据转换为串行数据流加入奇偶校验位后输出。

或者将计算机外部来的串行数据奇偶校验后转换为字节,供计算机部使用并行数据的器件使用。

它的异步模式使芯片适应性强,对时钟精度要求低(成本低)。

随着FPGA的广泛应用,经常需要FPGA与其他数字系统进行串行通信,专用的UART集成电路如8250,8251等是比较复杂的,因为专用的UART集成电路既要考虑异步的收发功能,又要兼容RS232接口设计,在实际应用中,往往只需要用到UART的基本功能,使用专用芯片会造成资源浪费和成本提高。

如果设计上用到FPGA/CPLD器件,可以将所需要的UART功能集成到FPGA部,实现FPGA与其他数字系统的直接通信,从而简化了整个系统电路,提高了可靠性、稳定性和灵活性。

1.2课题研究现状

1.2.1UART芯片发展与现状

UART产生于上个世纪70年代,是第一块大规模集成电路。

1981年的推出的IBMPC机主板上采用了8250UART与外设进行数据通信。

直到上个世纪末,UART一直是PC中最主要的串行通信接口。

在嵌入式领域,由于UART具有操作简单、工作可靠、抗干扰强、传输距离远(组成485网络可以传输1,200米以上),设计人员普遍认为UART是从CPU或微控制器向系统的其他部分传输数据的最佳方式,因此它们被大量地应用在工业、通信和家电控制等嵌入式领域。

然而UART的速度、灵活性(软件可配置)和体积越来越不能满足开发者需要,随着高速串行总线USB的出现,现在越来越多的笔记本电脑上已经取消了UART串口。

截止到目前,全球围有超过40种UART器件可以选择,大多数UART器件是以计算机总线转换UART为应用基础的,与20多年的前的UART相比,现在芯片的管脚,寄存器及大体操作几乎没有改变。

1.2.2FPGA芯片发展与现状

FPGA由早期的PLD(可编程逻辑器件)、PLA(可编程逻辑阵列)、PAL(可编程阵列逻辑)逐渐发展为如今Altera的CPLD(复杂可编程逻辑器件)和Xilinx的FPGA(现场可编程逻辑门阵列)。

PLD(可编程逻辑器件)是70年代发展起来的新型逻辑器件。

PLD是为弥补当时的ASIC(专业集成电路)可靠性低、成本高、功耗大且设计周期长等不足而发展起来的。

PLA(可编程逻辑阵列)基本结构是基于“与或阵列”,其“与阵列”和“或阵列”均可编程。

由于PLA器件的资源利用率低,现已很少使用。

PAL(可编程阵列逻辑)基本结构也是基于“与或阵列”,它的“与阵列”是可编程的,而“或阵列”是固定的。

FPGA(现场可编程逻辑门阵列)是近几年集成电路中发展最快的产品。

从一开始少量生产以配合其他芯片功能发展到作为核心芯片大量生产。

其综合了PLD的现场可编程特性,调试时间短和ASIC的低成本,大规模复杂集合能力的特点应运而生。

采用了不同于PLD架构的设计方式(主要是SRAMBase及An-tifuse)。

FPGA芯片由查找表、触发器和布线资源组成。

FPGA的逻辑单元由查找表和触发器构成。

Altera(QuartussII)和Xilinx(ise)是目前最大的可编程集成电路供货商。

1985美国Xilinx公司首次推出FPGA产品XC2064,Xilinx公司FPGA主要有XC4000、Virtex、Spartam,以及最新的Virtex系列。

Altera公司FPGA主要有FLEX、Cyclone(低端)、Arria(中端)、Stratix(高端)系列。

目前市场上常用FPGA产品是Xilinx公司的Spartan和Virtex系列及Altera公司的ACEX和APEX系列。

随着电子技术日益成熟,可编程逻辑器件的高速发展,基于FPGA的嵌入式系统技术正在成熟。

FPGA芯片将继续向高密度、高容量、低压低功耗的方向迈进。

1.3课题研究容与主要工作

随着EDA技术的发展,使用硬件描述语言来设计PLD/FPGA已经成为一种趋势。

本课题中,将UART分为几个模块的组合,利用硬件描述语言VHDL描述其逻辑功能,并采用自顶向下的设计方法进行设计。

核心部分用有限状态机(FSM),使逻辑设计更为直观简单。

使用QuartusII工具,对逻辑设计逐层进行仿真验证。

课题主要工作

1.熟悉FPGA设计开发流程以及UART各个模块的功能,掌握各个模块的工作流程,熟悉UART通信协议。

2.用VHDL语言编程UART各个模块的逻辑行为,以及顶层模块的功能。

3.在QuartusII软件上对其进行进行逻辑综合,仿真验证。

1.4课题容结构

第一章绪论介绍课题背景、研究意义,以及与本课题相关的技术当前现状,明确研究容以及主要工作。

第二章介绍了UART的理论容,明确UART各模块的工作特性。

第三章介绍本次设计实现平台和工具。

具体为硬件平台FPGA,软件平台Quartusii以及硬件描述语言VHDL.

第四章根据理论依据对UART结构设计,包括整体系统框架介绍和各部分模块说明以及相关流程图。

第五章对设计完成后的UART进行逻辑综合,功能及时序仿真,并分析总结逻辑综合和仿真结果。

第六章对课题的总结以及有待改进之处。

第七章致。

2UART理论基础

2.1接口技术简介

接口是CPU与外界的连接部件,是CPU与外界交换信息的中转站。

一个接口的基本功能是在系统总线和I/O设备之间传输信号,提供缓冲作用,以满足接口两边的时序要求。

如图1,

图1接口功能

主要的计算机接口技术有两种:

并行接口和串行接口。

串行通信是把要传输数据中的各个二进制码置于同一条传输线上,从低位到高位、逐位地、顺序地进行传送。

所用传输线少,一个方向只需一条传输线,成本低。

串行通信分为两种类型:

同步通信和异步通信。

串行异步是计算机通信最常用的数据信息传输方式,接收和发送双方不使用共同的参考时钟,以字符为单位进行传输,字符之间的传输间隔任意,而每个字符的前后都要用一些位数来作为分隔位。

2.2UART基本结构

UART主要由UART核、信号检测器、移位寄存器、波特率发生器和计数器组成,如图2所示。

图2UART功能模块

从异步接收输入信号RXD接收到的异步信号通过接收器完成串行/并行的转换,形成异步数据帧;发送器将CPU发出的8位数据进行并行/串行转换,从TXD发送出去。

2.3UART数据帧格式

基本的UART通信只需要两条信号线(RXD,TXD)就可以完成数据的相互通信,接收与发送是全双工形式,其中TXD是UART发送端,RXD是UART接收端。

UART基本特点是:

在信号线上有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。

在发送器空闲时,数据线应保持在逻辑高电平状态。

发送器是通过发送起始比特而开始一个字符传送,起始比特使数据线处于逻辑0状态,提示接收器数据传输即将开始。

数据位一般为8位一个字节的数(也有6位7位的情况),低位(LSB)在前,高位(MSB)在后。

校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。

停止位在最后,用以标志UART一个字符传送的结束,它对应于逻辑1状态,UART数据帧格式如图3所示。

图3UART数据帧格式

一帧异步通信传输经历的步骤为:

无传输:

发送器处于空闲状态,数据线保持“1”状态。

起始传输:

发送器发出一个“0”表示传输字符开始。

而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。

数据传输:

传输8位数据D0-D7。

低位到高位传输。

奇偶传输:

在使用中,校验位常常取消。

停止传输:

一个字符数据的结束标志。

可以是1位、1.5位、2位的高电平“1”。

2.4涉及到的理论计算

2.4.1位时间

即每个位的时间宽度。

起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。

每一个数据位的宽度等于传送波特率的倒数。

2.4.2帧

从起始位开始到停止位结束的时间间隔称之为一帧。

2.4.3波特率

UART的传送速率,用于说明数据传送的快慢。

在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。

如波特率9600=9600bps(位/秒)。

发送模块和接收模块不使用共同的时钟信号,也就是在串行通信中发送数据的同时不会把时钟信号从一个UART接口送到另一个UART接口。

发送数据时每位持续时间是固定的,由发送器本地时钟(bclk)控制,每秒发送的数据位个数,即为“波特率”。

2.4.4波特率因子

为了使接收方能够进行同步检测,接收器采用比波特率更高频率的时钟来提高定位采样的分辨能力和抗干扰能力。

而这个频率的倍数就称作波特率因子。

一般是16、32和64.

3设计工具

3.1课题硬件平台——FPGA

FPGA设计方法有“自顶向下”和“自下而上”,一般FPGA设计常选择前者。

所谓“自顶向下”的设计方法,就是把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。

具体步骤为:

按照“自顶向下”的设计方法进行系统划分,用硬件描述语言,将设计产品的功能描述出来,将设计输入编译成标准文件;利用综合器对源代码进行综合优化处理得到EDA工业标准文件;把设计好的逻辑安放到PLD/FPGA(布局布线);用仿真软件验证电路的时序;无误后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA中。

3.2设计工具QuartusII简介与使用

QuartusII是Altera公司推出的CPLD/FPGA集成化开发软件,可以完成设计输入、逻辑综合、布局与布线、仿真、时序分析、硬件配置完整的PLD设计流程。

QuartusⅡ提供了多种设计输入方式、快速的编译和直接易懂的器件编程。

具有友好的用户界面,快速的综合速度和更优化的综合和适配功能。

QuartusII自带宏功能模块库,大大减轻了用户的工作量,加快设计速度。

QuartusII置仿真器可以在工程中仿真任何设计。

可进行功能仿真、时序仿真来检验设计的逻辑功能和计算设计的部定时是否符合设计。

仿真器可以仿真整个设计,或仿真设计的任何部分。

支持可编程系统(SOPC)和大规模FPGA设计开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

该软件支持Altera公司的StratixⅡ、StratixGX、Stratix、MAX3000A、MAX7000B、MAX7000AE、MAXⅡ、FLEX6000、FLEX10K系列、Cyclone、CycloneⅡ、APEXⅡ、APEX20K和ACEX1K系列。

3.3VHDL语言简介

目前常用硬件描述语言是VHDL和VerilogHDL。

较于在C语言基础上发展起来的语言格式自由的VerilogHDL而言,VHDL语言更为严谨,在大学里运用较多。

IEEE和美国国防部于1987年正式确认VHDL为标准硬件描述语言。

VHDL功能强大,简单的语言程序即可实现复杂的硬件电路。

其次,VHDL即可支持标准定义的数据类型,也支持用户定义的数据类型,丰富的数据类型增强了描述自由度。

不仅如此,VHDL语言的描述,模拟,综合和布线均符合标准,可移植能力强,不同的工作平台可以用同一个硬件电路的VHDL语言描述,设计方案亦在设计人员之间共享,大大减少设计工作量和开发周期,受到了设计人员广泛推崇。

甚至在使用VHDL语言描述硬件电路时,设计人员可以先进行设计电路,而不用考虑选择设计的器件,因其可适用于不同的器件结构。

4UART实现方案

4.1系统总体结构

由图4可以看出,基于FPGA的UART设计采用模块化的思想,分为三个子模块:

波特率发生器,接收模块,发送模块。

如下图

图4系统结构图

采用VHDL硬件描述语言按照“由上至下”的思想对各个模块先分别设计然后连接起来形成总体架构。

串口采用标准的RS-232协议,主要参数选择为:

波特率9600bit/s,8位有效位,无奇偶校验位,1位停止位。

4.2顶层模块设计

按照系统功能划分,UART由波特率发生模块、接收模块和发送模块构成。

发送模块的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。

接收模块接收RXD串行信号,并将其转化为并行数据。

波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。

串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。

接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。

还要输出一个数据接收标志信号标志数据接收完。

4.3波特率发生模块设计

波特率发生器实际上就是一个分频器(计数器)。

功能是产生RS232通信所采用波特率同步时钟,按照RS232串行通信的时序要求进行数据接收或发送。

如左图所示,系统时钟从输入端口clk输入(FPGA提供30MHZ系统时钟),RS232芯片通信波特率围0-20000bps,本次设计中采用9600bps进行数据的传送。

取波特率因子N=16,即收发频率是数据传输速率的16倍。

那么波特率发生器输出频率为9600*16HZ=153600HZ。

波特率产生过程:

提供的时钟为30MHz,以图6输入端口clk输入,通过总线写入不同的数值到波特率保持寄存器,然后用计数器的方式生成所需要的各种波特率,数值的计算原则:

30MHZ/(16*所期望的波特率),这里希望输出9600Hz的波特率,那么这个值就是30MHZ/(16*9600)=195(11000011B)。

由此输出端口bclk可输出频率153600HZ来控制数据的收发采样。

4.4接收模块

4.4.1接收模块及其功能

接收模块的作用是把收到的串行数据转换成并行数据进行输出,并判断收到的数据是否有错。

接收模块的引脚如图7所示,

接收模块信号:

resetr(输入):

复位信号;

bclkr(输入):

输入时钟;

rxdr(输入):

串行数据输入信号;

rbuf[7..0](输出):

并行数据输出总线;

r_ready(输出):

数据接收完毕信号。

 

串行接收模块框图如图8,程序在检测到起始位后(rxdr由‘1’跳变到‘0’),计数连续8个接收时钟采样仍然是低电平后,开始接收串行数据,当采样计数器计数结束后,所以数据已移位输入RSR。

最后对高电平进行检测,检测到正确的停止位后说明本帧数据接收完毕。

将数据转存在数据寄存器RBR中,串/并转换后,输出8位并行数据rbuf[7..0]。

其中,RBR的状态可通过引脚r_ready来表示。

r_ready输出高电平‘1’表示数据接收有效。

图8UART串行接收模块工作框图

对于接收器工作频率有必要强调一下:

串行数据一位一位由低位到高位D0——D7传输,传输速率为9600bps。

而接收器工作频率远远高于数据的传输速率。

本设计中的接收器工作频率由波特率发生器产生,频率是9600bps的16倍,由输入端bclk输入,在接收器工作时,接收端一直以16倍波特率的速率读取线路状态,检测线路上出现低电平的时刻。

一旦检测到有‘1’跳变到‘0’,接着判断跳变是否由噪音引起或者确实是串行数据到来。

找到起始位以后,就开始接收数据,用16倍波特率的时钟作为接收时钟,就是为了确保在位宽的中心时间对接收的位序列进行可靠采样,当采样计数器计数结束后所有数据位都已经输入完成。

4.4.2UART接收器的接收状态机

接收状态机一共有5个状态:

R_START(等待起始位)、R_CENTER(求中点)、R_WAIT(等待采样)、R_SAMPLE(采样)、R_STOP(停止位接收)。

UART接收模块状态转换图如图9所示:

图9接收模块状态转换图

1:

R_START状态:

当UART接收器复位(rsetr=1)后,接收状态机将处于这一个状态。

在此状态,状态机一直在等待串行数据的到来,即RXD的电平从逻辑1变为逻辑0,意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态(图9中的RXD_SYNC信号是RXD的同步信号)。

2:

R_CENTER状态:

在本状态,由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。

另外,可能在R_START状态检测到的起始位不是真正的起始位,可能

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2