基于VHDL的UART控制器设计.docx
- 文档编号:8565372
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:55
- 大小:548.27KB
基于VHDL的UART控制器设计.docx
《基于VHDL的UART控制器设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的UART控制器设计.docx(55页珍藏版)》请在冰豆网上搜索。
基于VHDL的UART控制器设计
摘要
UART(UniversalAsynchronousReceiver/Transmitter),通用异步接收/发送装置,是设备之间进行通信广泛使用的接口。
当两个设备需要通信时,通常采用数字信号,这种并行的信号必须转换成串行信号才能传输。
在目的端,串行信号又转换成并行信号进行处理。
UART控制器就是处理这种数据总线和串行口之间的串-并和并-串转换。
本文所要实现的就是这种串-并和并-串的转换,使之能够进行数据的传输。
现在市场上有许多为UART开发的专用芯片,但是其功能固定,不能根据用户的需求来灵活的改变控制逻辑。
因此,本文介绍了用FPGA技术实现UART控制器设计的一种方法,用VHDL进行编程,在MAX+plusII10.2下进行编译及仿真,从而实现能够更改灵活、既方便又实用的UART具有重要意义。
关键字:
FPGA,VHDL,UART,接收,发送
Abstract
UART(UniversalAsynchronousReceiver/Transmitter),isthekeyofcommunicationsbetweendevices.Whenadeviceneedstocommunicatewithaconnecteddevice,usuallydigitalsignalsapplied,whichmustbetransformedintoserialisedsignaltoanotherdevice.UARTprocessesthisserial_datatoparallel_data/parallel_datatoserial_datatransformbetweendatabusandslaveport.
Thispaperistoimplementthisserialtoparallelandparalleltoserialtransformandmakethetransferringbetweendataproperly.ThispaperintroducesamethodimplementedbyFPGAtechniqueprogrammedbyVHDL,simulatedandcompiledbyMAX+plusII10.2.inordertomakeitflexible,convenientandpracticalsothattheUARTisgreatsignificance.
Keywords:
FPGA,VHDL,UART,receive,send
第一章前言
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出现低电平,一个数据启动位到来时送数据到来。
5)接收数据移位控制 进行数据,一个接收计数周期开始,当计数到7时,计数器清零等待下一个启动位的到来。
4)数据发送控制当一个数据写入到发送寄存器时,其控制计数器开始一个发送的计数周期,当一个数据发送结束,计数器清零,等待下一个发的串并变换。
6)发送数据的并串变化。
1.3本论文的结构安排如下
第1章前言,主要介绍了课题的背景以及研究的意义,相关领域的发展和研究现状,提出了本文的主要研究内容。
第2章计算机接口与RS-232串口简介;介绍了常用的计算机接口,接口的控制方式,串行通信的工作原理,RS-232协议,RS-232通信时序和UART,串行通信的实现方案。
第3章UART设计方案。
介绍了UART实现原理、UART工作流程。
第4章EDA技术及FPGA的概述;介绍了EDA技术的定义及发展历程、VHDL语言及程序结构、可编程逻辑器件、CPLD与FPGA及其特点。
第5章UART模块的VHDL语言设计及仿真;介绍了语言的描述方式、信号检测模块的实现、波特率发生器模块的实现、移位寄存器模块的实现、奇偶校验器模块的实现、总线选择模块的实现、计数器模块的实现、UART内核模块的实现、UART顶层模块的实现。
第6章UART的VHDL程序的编译、综合、仿真、验证;介绍了编译、综合,系统描述波形仿真,包括信号监测器模块的仿真、波特率时钟模块的仿真、移位寄存器模块的仿真、奇偶校验模块的仿真、总线选择器模块的仿真、计数器模块的仿真、顶层模块的仿真。
最后,对本文研究工作进行总结和展望,探讨今后工作改进的方法。
第二章计算机接口与RS-232串口简介
2.1计算机接口介绍
2.1.1计算机接口简介
计算机接口有串行接口、并行接口、磁盘接口等。
1.串行接口
串行口是计算机的一种标准接口,现在的PC机至少有COM1和COM2两个串行口。
串行口的数据和控制信息是一位接一位串行地传送下去。
虽然速度会慢一些,但传送距离较并行口更长,长距离的通信要使用串行口。
COM1使用的是9针D形连接器,而COM2有些使用的是老式的DB25针连接器。
2.并行接口
目前,计算机中的并行接口主要用于打印机端口,接口使用的是25针D形接头。
所谓“并行”,就是指8位数据同时通过并行线传送,这样数据传送速度得到提高,但并行传送的线路长度增加,干扰会增加,容易出错。
标准的并行口有4位、8位、半8位:
4位口一次只能输入4位数据,但可以输出8位数据;8位口的可以一次输入和输出8位数据;半8位也可以。
3.磁盘接口
1)IDE接口
IDE接口也叫ATA端口,只可接两个容量小于528M的硬盘驱动器,接口成本很低,在386、486时期非常流行。
2)EIDE接口
EIDE接口较IDE接口有了很大改进,是目前最流行的接口。
2.1.2接口控制方式
CPU通过接口对外设进行控制的方式有以下几种:
1)程序查询方式
这种方式下,CPU通过I/O指令询问指定外设当前的状态,如果外设准备就绪,则进行数据的输入或输出,否则CPU等待,循环查询。
这种方式的结构简单,只需少量的硬件电路便可实现,但不足在于CPU的速度高于外设,CPU通常处于等待状态,工作效率也就很低。
2)中断处理方式
在这种方式下,CPU是可以执行其他程序的,当外设为数据交换准备好时,就可以向CPU提出请求,如果CPU响应该请求,就暂时停止当前的程序,去执行和该请求对应的程序,待该请求完成后,继续执行原来的程序。
3)DMA(直接存储器存取)传送方式
DMA不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据交流,不需要CPU介入,提高CPU的工作效率。
2.2RS-232串口通信简介
2.2.1串行通信概述
在计算机网络、数据通信以及分布式工业控制系统中,常采用串行通信来实现数据和信息的交换。
1969年,EIA(美国电子工业协会)将RS-232定为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)将按位串行传输的接口信息,合理的安排了接口的电气信号和机械要求,适合于数据传输速率在0-20000bit/s范围内的通信。
RS-232不仅被内置于每一台计算机中,还被内置于各种外设中。
EIA(美国电子工业协会)还制定了RS-232与RS-485标准。
为弥补RS-232不足提出了RS-422。
RS-422定义了一种平衡通信接口,将传输速率提升到10Mbit/s,传输距离延长到4000英尺(速率低于100kbit/s),并允许在一天平衡总线上连接最多10各连接器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
为扩展应用范围,EIA又于1983年在RS-433基础上制定了RS-485标准,增强了多点、双向通信能力,即允许多个收发器连到同一条总线上,同时增强了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,命名为RS-485标准。
RS-232,RS-422与RS-485的电气参数如表2-1所示。
表2-1RS-232,RS-422与RS-485的电气参数
规定
RS-232
RS-422
RS-485
工作方式
单端
差分
差分
节点数
1收1发
1发10收
1法32收
最大传输电缆长度
50英尺
400英尺
400英尺
最大传输速率
20kbit/s
10Mbit/s
10Mbit/s
最大驱动输出电压
+/-25V
-0.25V~+6V
-7V~+12V
驱动器输出信号电平(附在最小值)
+/-5V~+/-15V
+/-2.0V
+/-1.5V
驱动器输出信号电平(空载最大值)
+/-25V
+/-6V
+/-6V
驱动器负载阻抗
3~7千欧姆
100欧姆
54欧姆
摆率(最大值)
30V/us
N/A
N/A
接收器输入电压范围
+/-15V
-10V~+10V
-7V~+12V
接收器输入门限
+/-3V
+/-200mV
+/-200mV
接收器输入电阻
3~7千欧姆
4千欧姆(最小)
〉=12千欧姆
驱动器共模电压
-3V~+3V
-1V~+3V
接收器共模电压
-7V~+7V
-7V~+12V
虽然RS-232,RS-422与RS-485标准对电器特性做出了规范,但是没有规定连接插件、电缆或协议,所以在此基础上用户可以建成自己的高层通信协议。
RS-232等协议在视频传输中被广泛应用,许多厂家多建立了一套高层通信协议,或公开或厂家独家使用。
RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。
2.2.2.RS-232协议
标准的RS-232接口有25跟信号线,4根数据线、11根控制线、3根定时线和7根备用线。
通常使用9根就可以实现RS-232通信。
1.DSR信号线
DSR(DataSetReady)是数据装置就绪,状态为有效时,表示Modem可以使用的状态。
2.DTR信号线
DTR(DataTerminalReady)以四位数据终端就绪,状态为有效时,数据终端可以使用。
3.RTS信号线
RTS(RequestToSend)是请求发送,终端需要发送数据时,使该数据有效,向Modem请求发送。
用于控制Modem是否有效,通知终端开始发送数据。
4.CTS信号线
CTS(ClearToSend)是允许发送,对RTS信号的响应。
当Modem已经准备好接收终端发送过来的数据时,使该信号有效,通知终端开始发送数据。
5.DCD信号线
DCD(DataCarrierDetection)为数据载波检出,有效时表示Modem已经接通了通信链路,即本地Modem受到了通信链路另一端的远程Modem送来的载波信号,终端可以准备接收数据。
6.RI信号线
RI(Ringing)表示振铃指示,但本地Modem受到交换台发送的振铃呼叫信号时,使该信号有效,通知终端已被呼叫。
TxD信号线
TxD(TransmittedData)是发送数据,终端通过此信号将数据发送给Modem。
8.RxD信号线
RxD(ReceivedData)是接收数据,终端通过此信号从Modem接收数据。
地线
地线分别是信号地SG(SignalGround)和保护地PE(Protectionground),信号地使所有信号的参考电平,保护地用于连接设备的外壳或者地表。
常见的RS-232串行口连接器主要有两种,一种是25针的DB-25,另一种是9针的DB-9,其示意图如图2.1所示,DB-9主要用于上述的9根信号线连接的方法,DB-25可以连接所有的RS-232标准定义的信号线。
DB-25也可用像DB-9那样使用,但是它们的针号与信号之间的连接关系是不一样的,如表2-2。
表2-2DB-9与DB-9针号信号线连接对应表
9针串口连接器DB-9
25针串口连接器DB-25
针号
功能
缩写
针号
功能
缩写
1
数据载波检测
DCD
8
数据载波检测
DCD
2
接收数据
RXD
3
接收数据
RXD
3
发送数据
TXD
2
发送数据
TXD
4
数据终端准备
DTR
20
数据终端准备
DTR
5
信号线
GND
7
信号线
GND
6
数据设备准备好
DSR
6
数据设备准备好
DSR
7
请求发送
RTS
4
请求发送
RTS
8
清除发送
CTS
5
清除发送
CTS
图2.1RS-232串行口连接器示意图
最为简单常用的RS-232连接方法是三线连接法,即地、接收数据和发送数据三角相连。
对于上述的DB-25连接器和DB-9连接器,三线连接法的原则如下所示。
表2-3DB-25,DB-9三线连接法
DB-9---DB-9
DB-25---DB-25
DB-25---DB-9
2
3
3
2
2
2
3
2
2
3
3
3
5
5
7
7
5
7
由于RS-232电气特定的电平不符合通常电路中所使用的TTL或者CMOS点评,所以在接入电路之前需要对其进行转换。
RS-232串口电平的转换一般使用的是专门的芯片实现,其中最常用的就是MAX232。
MAX232可以将串口设备需要发送的TTL/CMOS逻辑电平转换为RS-232逻辑电平,同时也可以见要接收的RS-232电平转换为TTL/CMOS逻辑电平,下图2.2为MAX232的顶层图。
MAX232典型的连接方法如图2.3所示,其中有5个0.1u的去耦电容;11管脚和10管脚是TTL/CMOS电平输入,对应14管脚和7管脚的RS-232电平输出,它们一般接到RS-232的RxD上,12管脚和9管脚是TTL/CMOS电平输出,对应13管脚和8管脚的RS-232电平输入,它们一般接到RS-232的TxD上。
2.2.3.RS-232通信时序和UART
在串行通信中,用“波特率”来描述数据的传输速率。
所谓波特率,即每秒钟传送的二进制位数,其单位是bit/s(bitpersecond),它是衡量传输串行数据速度快慢的重要指标。
有时也用“位周期”来表示传输速率,位周期是波特率的倒数。
国际上规定了一个波特率系列,110bit/s、300bit/s、600bit/s、1200bit/s、1800bit/s、2400bit/s、4800bit/s、9600bit/s、14.4kbit/s、19.2kbit/s、28.8kbit/s、33.6kbit/s、56kbit/s。
如9600bit/s,其意义是每秒钟传送9600位数据,包含字符位和其他的必要位,如奇偶校验位、起始位、停止位。
大多数串行接口电路的接收波特率和发送波特率多可以设置,但接收方的接收波特率必须与发送方的发送波特率相同。
通信线上所传输的字符数据(代码)都是逐位传送的,1个字符由若干位组成,因此每秒种所传输的字符数(字符速率)波特率是两种概念。
在串行通信中所说的传输速率是指波特率,而不是指字符速率,假如在异步串行通信中,传输一个字符,包括12位(其中有一个起始位,8个数据位,2个停止位),其传输速率是1200bit/s,每秒所能传送的字符是1200/(1+8+1+2)=100个。
在串行通信中,除了可以设置波特率外,其他的如字符数据的位数、奇偶校验位、停止位也可以被设置。
其中,字符数据的位数可以被设置为5~8位;奇偶校验位可以去除,也可以设置为奇校验或者偶校验;停止位可以设置为1位、1.5位或者2位。
串行通信的时序,串行总线在空闲时保持逻辑“1”状态(即串行连接线上的电平为-3~-15V),当需要传送一个字符时,首先会发送一个逻辑“0”的起始位,表示开始发送数据;之后,就逐个发送数据位、奇偶校验位和停止位(逻辑为“1”)。
发送时序图如图2.4所示。
图2.4RS-232串行口通信时序图
对于一个设备的处理器来说,要接收和发送串行通信的数据,还需要一个期间将串行口的数据转换为并行口数据以便于处理器进行处理,这个器件就是UART(UniversialAsynchronousReceiver/Transmitter)全称是通用异步收发器,其功能是辅助处理器与外部设备之间的通信。
作为RS-232通信接口的一个重要部分,UART具有以下功能:
将由计算机内部传动过来的并行数据转换成用于输出的串行数据。
将计算机外部传送来的串行数据转换成字节,供计算机内部使用并行数据的器件使用。
在输出的串行通信数据流中加入奇偶校验位,并对从外部接收的数据进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
提供和处理器之间的通信信号,可以处理处理器和串行通信设备之间的同步管理问题。
2.2.4.串行通信实现方案
实现串行通信主要需要完成三部分工作:
(1)将串口电压转换成设备电路板的工作电压,即实现RS-232电平和TTL/CMOS电平的转换。
(2)接收并校验串行的数据,将数据变成并行的数据并提供给处理器处理。
(3)接收并行数据并转换成串行数据供串行端口发送。
第三章EDA技术及FPGA的概述
EDA(ElectronicDesignAutomation)工程就是以计算机为工作平台,EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以ASIC、SOC芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。
3.1EDA技术发展历程
EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(ComputerAssistDesign,简称CAD)、计算机辅助工程设计(ComputeAssistEngineering,简称CAE)和电子设计自动化(E1ectronicDesignAutomation,简称EDA)三个发展阶段。
3.1.1CAD阶段
第一阶段(20世纪60年代中期—20世纪80年代初期),是EDA技术发展的初期,由于PCB布图布线工具受到计算机工作平台的制约,己无法满足设计精度和效率的要求。
因此工程师们开始进行二维平面图形的计算机辅助设计(ComputerAidedDesign,CAD),产生了第一代EDA工具。
该阶段的特征是采用小型计算机,软件功能为交互式图形编辑、设计规则检查。
第一代EDA工具用于集成电路的版图设计。
3.1.2CAE阶段
第二阶段(20世纪80年代中期—20世纪90年代初期),随着计算机和集成电路的法展,出现了以计算机仿真和自动布线为核心技术的第二代EDA工具。
产生了计算机辅助制造(ComputerAidedManufacturing,CAM)、计算机辅助测试(ComputerAidedTestCAT)和计算机辅助工程(ComputerAidedEngineeringCAE)等概念。
第二代EDA工具的主要特征是以逻辑模拟、定时分析、故障仿真、自动布局和布线为核心。
此工具主要用来解决电路设计没有完成之前的功能检测等问题。
3.1.3EDA阶段
20世纪90年代以来,设计师逐步从使用硬件转向设计硬件,从电路级电子产品开发转向系统级电子产品开发(即片上系统集成),因此EDA工具是以系统设计为核心,包括系统行为级描述与结构级综合,系统仿真与测试验证,系统划分与指标分配,系统决策与文件生成等一整套的电子系统设计自动化工具。
EDA工具不仅具有电子系统设计的能力,而且能提供独立于工艺和厂家的系统级设计能力,具有高级抽象的设计构思手段。
例如:
提供方框图、状态图和流程图的编辑能力,具有适合层次描述和混合信号描述的硬件描述语言(如VHDL、AHDL或verilog—HDL),同时含有各种工艺标准元件库。
第三代EDA工具可以使电子系统工程师在不熟悉各种半导体厂家和各种半导体工艺的情况下,完成电子系统的设计。
3.2EDA技术的基本特征及优势
现代EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。
传统手工设计方法对复杂电路的设计调试困难;在设计过程中对出现的错误进行查找和修改十分不便;不易管理在设计过程中产生的大量文档;并且必须在设计完成后或生产出芯片后才能进行实测,而EDA技术与其相比有着很大的优势:
采用硬件描述语言,有利于复杂系统的设计;具有强大的系统建模和电路仿真功能;具有自主的知识产权;其开发技术更标准化和规范化;全方位的利用计算机的自动设计、仿真和测试技术;对设计者的硬件知识和硬件经验要求低。
传统的电路设计采用的是自底向上的设计方法,而EDA技术采用一种自顶向下的设计方法。
所谓“自顶向下”法就是设计者首先从整体上规划整个系统的功能和性能,然后将系统划分为规模较小、功能较为简单的局部模块,并确立它们之间的相互关系,这种划分过程可以不断地进行下去,直到划分得到的单元可以映射到物理实现。
图3-2-1所示的是自顶向下与自底向上的设计比较。
图3-2-1自顶向下与自底向上的设计比较
自底向上的设计方法就是首先确定构成系统的最底层的电路模块或原件的结构和功能,然后根据主系统的结构和要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。
以此流程逐步向上递推,直到完成整个目标系统的设计。
它可以用来解决系统最底层硬件的可获得性和功能特性方面的诸多细节问题,不过在整个逐级设计和测试过程中,有时可能会出现目标器件的更换、某些技术指标不满足要求或提高运行速度等问题。
因此,传统的自底向上的设计方法是一种低效、低可靠性、且成本高昂的设计方法。
而自顶而下的设计方法使系统被分成各个模块的集合,然后将每个独立模块指派给不同的工作小组让其分工合作,最后将不同的模块集合成一整体系统模型,并对其进行综合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL UART 控制器 设计