毕业设计55UART电路的VHDL设计与实现.docx
- 文档编号:3746550
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:42
- 大小:1,010.49KB
毕业设计55UART电路的VHDL设计与实现.docx
《毕业设计55UART电路的VHDL设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计55UART电路的VHDL设计与实现.docx(42页珍藏版)》请在冰豆网上搜索。
毕业设计55UART电路的VHDL设计与实现
本科生毕业论文(设计)
题目:
UART电路的VHDL设计及实现
院系计算机学院
专业通信工程
指导教师韩晓茹
学生姓名姚芳
学号004062206
2004年6月9日
UART电路的VHDL设计及实现
作者:
姚芳指导教师:
韩晓茹
摘要:
UART是设备和设备间进行通信的关键,当一个设备需要和另一个连接的设备进行通信时,通常采用数字信号,这种源自并行的信号必须转换成串行信号才能通过有线或无线传输到另一台设备。
在接收端,串行信号又转换成并行信号进行处理,UART处理这种数据总线和串行口之间的串-并和并-串转换。
本文所要实现的就是就是这种串-并和并-串的转换,使之能够进行数据的传输。
本文介绍了用FPGA技术实现UART电路的一种方法,用VHDL进行编程,在Modelsim下进行编译及仿真等。
关键词:
FPGA,VHDL,UART,接收,发送
Abstract:
UARTisthekeyofcommunicationsbetweendevices.Whenadeviceneedstocommunicatewithaconnecteddevice,usuallydigitalsignalsapplied,whichmustbetransformedintoserialisedsignaltoanotherdevicethroughwiresorwirelessspace.Whenbeingreceivedtoprocess,theserialisedsignalsmustbetransformedtoparellisedsignals.UARTprocessesthisserial_datatoparallel_data/parallel_datatoserial_datatransformbetweendatabusandslaveport.Thispaperistoimplementthisserialtoparallelandparalleltoserialtransformandmakethetransferringbetweendataproperly.ThispaperintroducesamethodimplementedbyFPGAtechniqueprogrammedbyVHDL,simulatedandcompiledbyModelsim.
Keyword:
FPGA,VHDL,UART,receive,send
第1章绪论
1.1本文研究的意义
在1980至1990年代,提供FPGA数万逻辑门的FPGA器件主要被系统设计人员用作“连接逻辑”,将电路板上的不同元器件连接到一起,或用来修正ASIC不方便处理的问题。
但在1990年代末期,百万门现场可编程门阵列(FPGA)产品的出现使在单块可编程芯片中集成系统级功能成为可能。
目前市场上出售的最大规模FPGA产品有600万系统门和1.4亿个晶体管,已经跻身于最复杂的半导体器件之列。
而如今,FPGA的一些新的技术发展趋势不仅使其越来越多地替代ASIC,成为可编程逻辑领域的主流产品,从ASIC市场抢夺越来越多的市场份额;同时,还为自身不断带来新的利润增长点和广阔的市场前景。
串行外设都会用到RS232-C异步串行接口,传统上采用专用的集成电路即UART实现,如TI、EXAR、EPIC的550、452等系列,但是我们一般不需要使用完整的UART的功能,而且对于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。
如果设计上用到了FPGA/CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部。
FPGA的发展也促进了PLD设计方法的进步,基于硬件描述语言(HDL)高级综合的电子设计自动化(EDA)方法已成为FPGA的主流设计技术,使得用户能够高效地完成复杂地大型设计任务,并直接生成FPGA的ASIC器件。
1.2本文研究的内容
本论文的任务就是在FPGA技术的基础上,用VHDL语言来描述UART功能,使之能完成UART的一些主要功能:
1)写数据将数据总线上的一个数据写入发送寄存器。
2)读数据数据从输出寄存器发送到数据总线上。
3)数据接收控制当数据接收端RxD出现低电平,一个数据启动位到来时,一个接收计数周期开始,当计数到7时,计数器清零等待下一个启动位的到来。
4)数据发送控制当一个数据写入到发送寄存器时,其控制计数器开始一个发送的计数周期,当一个数据发送结束,计数器清零,等待下一个发送数据到来。
5)接收数据移位控制进行数据的串并变换。
6)发送数据的并串变化。
第2章FPGA和VHDL语言简介
2.1FPGA
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
2.2VHDL语言
严格地讲,VHDL是一种用来描述数字逻辑系统的“编程语言”。
它源于美国政府于1980年开始启动的超高速集成电路计划(VeryHighSpeedIntegratedCircuits,VHSIC)。
在这一计划的执行过程中,专家们认识到需要有一种标准的语言来描述集成电路的结构和功能,由此,VHSIC的硬件描述语言(VHSICHDL)即VHDL便诞生了,并很快被美国电气和电子工程师协会(IEEE)所承认。
由于VHDL语言已作为一种IEEE的工业标准,因而其语言标准、规范、语法比较严格,易于共享和复用。
而且,VHDL设计技术齐全、方法灵活、支持广泛。
目前大多数EDA工具几乎在不同程度上都支持VHDL语言。
当前各ASIC芯片制造商都相继开发了各自目的的HDL语言,但是大多都未标准化和通用化。
唯一已被公认的是美国国防部开发的VHDL语言,它已成为IEEESTD_1076标准。
另外,从近期HDL语言发展的动态来看,许多公司研制的硬件电路设计工具也都逐渐向VHDL靠拢,使得它们的硬件电路设计工具也能支持VHDL语言。
2.2.1设计技术齐全、方法灵活、支持广泛
VHDL语言可以支持自上而下(TopDown)和基于库(Library_Based)的设计方法,而且还支持同步电路、异步电路、FPGA以及其它随即电路的设计。
其范围之广是其他HDL语言所不能比拟的。
例如,SFL语言和UDL/I语言,它们只能描述同步电路。
另外,由于VHDL语言早在1987年12月已作为IEEESTD_1076标准公开发布。
因此,目前大多数EDA工具几乎在不同程度上都支持VHDL语言。
这样给VHDL语言进一步推广和应用创造了良好的环境。
2.2.2系统硬件描述能力强
如前所述,VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。
另外,高层次的行为描述可以与低层次的RTL描述和结构描述混和使用。
例如,在PC机扩展槽上要设计一块接口卡,该接口卡的硬件设计应满足主机的接口要求。
此时,主机部分功能可以用行为方式描述。
这样,在接口卡设计出来以前就可以知道接口卡的工作是否满足系统要求。
VHDL语言能进行系统级的硬件描述,这是它的一个最突出优点。
其他HDL语言,如UDL/I、Verilog等只能进行IC级、PCB级描述,而不能对系统级的硬件很好地进行描述。
再如,VHDL语言设计系统硬件时,没有嵌入与工艺有关地信息。
当然,这样地信息是可以用VHDL语言来编写地。
与大多数HDL语言地不同之处是,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同工艺(如MOS,CMOS等),这样,在工艺更新时,就无需修改原设程序,只要改变相应的映射工具就行了。
由此可见,无论修改电路还是修改工艺相互之间不会产生什么不良影响。
2.2.4VHDL语言标准、规范,易于共享和复用
由于VHDL语言已作为一种IEEE的工业标准,这样,设计成果便于复用和交流,反过来就能更进一步推动VHDL语言的推广及完善。
另外VHDL语言的语法比较严格,其风格类似于Ada语言,给阅读和使用都带来了极大的好处。
2.2.5程序的基本结构
一个完整的VHDL语言程序通常包含实体(Entity),构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分。
前4种是可分别编译的源设计单元。
实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放各设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。
库可由用户生成或由ASIC芯片的制造商提供,以便在设计中为大家所共享。
第3章串行通信的基本概念
随着多微机系统的应用和微机网络的发展,通信功能越显重要。
这里所说的通信是指计算机与外界的信息交换,因此,通信既包括计算机与外设之间,也包括计算机和计算机之间的信息交换。
通信分并行通信和串行通信两种方式。
1、并行通信:
数据在多条并行一位宽的传输线上传送,同时由源传送到目的。
如并行打印机接口通信,是在接口与打印机之间通过8条并行传输线在这两者之间的数据传送,因此,传送一般是字节为单位。
2、串行通信:
数据在单条1位宽的传输线上一位一位地按顺序分时传送,以位为单位的传送。
3、并行通信与串行通信的比较
(1)从距离看,并行通信适用于近距离的数据传送,小于30米。
串行通信适于远距离的数据传送,可达几米至几千公里。
(2)从速度看,并行通信传输速度高,串行通信速率低
(3)从通讯成本看,串行通信的费用比并行通信费用低得多。
3.1串行通信的特点及通信方式
在串行通信中,由于信息传输在一个方向上只占用一根通信线,这根线既作数据线又作联络线,也就是说要在一根传输上既传送数据信息,又传送联络控制信息。
这就是串行通信的特点。
为了解决如何识别在一根线上串行传送的信息中,哪一部分是联络信号,哪一部分是数据信号,这就引出了串行通信的信息格式的约定,分异步和同步信息格式。
与此相应的就是串行异步通信和同步通信两种方式。
3.1.1异步通信:
1)特点及信息帧格式
以起止式异步协议为例,下图显示的是起止式一帧数据的格式:
图3-1
起止式异步通信的特点是:
一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。
停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。
从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示:
逻辑0
逻辑1
正逻辑
低电平
高电平
负逻辑
高电平
低电平
异步通信的信息格式如下边的表所示:
起始位
逻辑0
1位
数据位
逻辑0或1
5位、6位、7位、8位
校验位
逻辑0或1
1位或无
停止位
逻辑1
1位,1.5位或2位
空闲位
逻辑1
任意数量
注:
表中位数的本质含义是信号出现的时间,故可有分数位,如1.5。
例:
传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形象图2所示那样:
异步通信的速率:
若9600bps,每字符8位,1起始,1停止,无奇偶,则实际每字符传送10位,则960字符/秒。
图3-2
2).异步通信的接收过程
接收端以“接收时钟”和“波特率因子”决定一位的时间长度。
下面以波特率因子等于16(接收时钟每16个时钟周期,使接收移位寄存器移位一次)、正逻辑为例说明,如图3所示。
图3-3
(1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。
(2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”B,而不是干扰信号。
(3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。
若为逻辑1,作为数据位1;若为逻辑0,作为数据位0。
(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。
….,直到全部数据位都输入。
(5)检测校验位P(如果有的话)。
(6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。
若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。
若校验错,在状态寄存器中置奇偶错标志。
(7)本帧信息全部接收完,把线路上出现的高电平作为空闲位。
(8)当信号再次变为低时,开始进入下一帧的检测。
3)、异步通信的发送过程
发送端以“发送时钟”和“波特率因子”决定一位的时间长度。
(1)当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。
(2)当需要发送时,发送端首先输出逻辑0,作为起始位。
(3)接着,发送端首先发送D0位,直到各数据位发送完。
(4)如果需要的话,发送端输出校验位。
(5)最后,发送端输出停止位(逻辑1)。
(6)如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。
如果还有信息需要发送,转入第
(2)步。
对于以上发送、接收过程应注意以下几点:
(1)接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收。
(2)发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,不会引起接收端检测错位,能够正确接收。
并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位)。
只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误。
(3)起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。
在接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止)后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。
3.1.2同步通信方式:
1)特点
采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。
在同步传输过程中,一个字符可以对应5~8位。
当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。
这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。
同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。
在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。
接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。
2)、面向字符的同步协议(IBM的BSC协议)
该协议规定了10个特殊字符(称为控制字符)作为信息传输的标志。
其格式为
SYNSOH标题STX数据块ETB/ETX块校验
SYN:
同步字符(Synchronouscharacter),每帧可加1个(单同步)或2个(双同步)同步字符。
SOH:
标题开始(StartofHeader)。
标题:
Header,包含源地址(发送方地址)、目的地址(接收方地址)、路由指示。
STX:
正文开始(StartofText)。
数据块:
正文(Text),由多个字符组成。
ETB:
块传输结束(endoftransmissionblock),标识本数据块结束。
ETX:
全文结束(endoftext),(全文分为若干块传输)。
块校验:
对从SOH开始,直到ETB/ETX字段的检验码。
3)、面向bit的同步协议(ISO的HDLC)
一帧信息可以是任意位,用位组合标识帧的开始和结束。
帧格式为:
F场A场C场I场FC场F场
F场:
标志场;作为一帧的开始和结束,标志字符为8位,01111110。
A场:
地址场,规定接收方地址,可为8的整倍位。
接收方检查每个地址字节的第1位,如果为"0",则后边跟着另一个地址字节。
若为"1",则该字节为最后一个地址字节。
C场:
控制场。
指示信息场的类型,8位或16位。
若第1字节的第1位为0,则还有第2个字节也是控制场。
I场:
信息场。
要传送的数据。
FC场:
帧校验场。
16位循环冗余校验码CRC。
除F场和自动插入的"0"位外,均参加CRC计算。
4)、同步通信的"0位插入和删除技术"
在同步通信中,一帧信息以一个(或几个)特殊字符开始,例如,F场=01111110B。
但在信息帧的其他位置,完全可能出现这些特殊字符,为了避免接收方把这些特殊字符误认为帧的开始,发送方采用“0位插入技术",相应地,接收方采用"0位删除技术"。
发送方的0位插入:
除了起始字符外,当连续出现5个1时,发送方自动插入一个0。
使得在整个信息帧中,只有起始字符含有连续的6个1。
接收方的"0位删除技术":
接收方收到连续6个1,作为帧的起始,把连续出现5个1后的0自动删除。
5)、同步通信的"字节填充技术"
设需要传送的原始信息帧为:
SOTDATAEOT
节填充技术采用字符替换方式,使信息帧的DATA中不出现起始字符SOT和结束字符EOT。
设按下表方式进行替换:
DATA中的原字符 替换为
SOT ESCX
EOT ESCY
ESC ESCZ
其中,ESC=1AH,X、Y、Z可指定为任意字符(除SOT、EOT、ESC外)。
发送方按约定方式对需要发送的原始帧进行替换,并把替换后的新的帧发送给接收方。
例如图所示:
图3-4
接收方按约定方式进行相反替换,可以获得原始帧信息。
6)、异步通信和同步通信的比较
(1)异步通信简单,双方时钟可允许一定误差。
同步通信较复杂,双方时钟的允许误差较小。
(2)异步通信只适用于点<-->点,同步通信可用于点<-->多。
(3)通信效率:
异步通信低,同步通信高。
3.2传输速率与传输距离
3.2.1.波特率
在串行通信中,用“波特率”来描述数据的传输速率。
所谓波特率,即每秒钟传送的二进制位数,其单位为bps(bitspersecond)。
它是衡量串行数据速度快慢的重要指标。
有时也用“位周期”来表示传输速率,位周期是波特率的倒数。
国际上规定了一个标准波特率系列:
110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。
例如:
9600bps,指每秒传送9600位,包含字符的数位和其它必须的数位,如奇偶校验位等。
大多数串行接口电路的接收波特率和发送波特率可以分别设置,但接收方的接收波特率必须与发送方的发送波特率相同。
通信线上所传输的字符数据(代码)是逐位传送的,1个字符由若干位组成,因此每秒钟所传输的字符数(字符速率)和波特率是两种概念。
在串行通信中,所说的传输速率是指波特率,而不是指字符速率,它们两者的关系是:
假如在异步串行通信中,传送一个字符,包括12位(其中有一个起始位,8个数据位,2个停止位),其传输速率是1200b/s,每秒所能传送的字符数是1200/(1+8+1+2)=100个。
图3-5
3.2.2发送/接收时钟
在串行传输过程中,二进制数据序列是以数字信号波形的形式出现的,如何对这些数字波形定时发送出去或接收进来,以及如何对发/收双方之间的数据传输进行同步控制的问题就引出了发送/接收时钟的应用。
在发送数据时,发送器在发送时钟(下降沿)作用下将发送移位寄存器的数据按串行移位输出;在接收数据时,接收器在接收时钟(上升沿)作用下对来自通信线上串行数据,按位串行移入移位寄存器。
可见,发送/接收时钟是对数字波形的每一位进行移位操作,因此,从这个意义上来讲,发送/接收时钟又可叫做移位始终脉冲。
另外,从数据传输过程中,收方进行同步检测的角度来看,接收时钟成为收方保证正确接收数据的重要工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 55 UART 电路 VHDL 设计 实现