UART电路的VHDL设计及实现
摘要:
UART是设备和设备间进行通信的关键,当一个设备需要和另一个连接的设备进行通信时,通常采用数字信号,这种源自并行的信号必须转换成串行信号才能通过有线或无线传输到另一台设备。在接收端,串行信号又转换成并行信号进行处理,UART处理这种数据总线和串行口之间的串-并和并-串转换。本文所要实现的就是就是这种串-并和并-串的转换,使之能够进行数据的传输。本文介绍了用FPGA技术实现UART电路的一种方法,用VHDL进行编程,在Modelsim下进行编译及仿真等。
关键词:
FPGA,VHDL,UART,接收,发送
Abstract:
UART is the key of communications between devices.When a device needs to communicate with a connected device,usually digital signals applied,which must be transformed into serialised signal to another device through wires or wireless space.When being received to process, the serialised signals must be transformed to parellised signals.UART processes this serial_data to parallel_data /parallel _data to serial_data transform between data bus and slave port. This paper is to implement this serial to parallel and parallel to serial transform and make the transferring between data properly.This paper introduces a method implemented by FPGA technique programmed by VHDL,simulated and compiled by Modelsim.
Keyword:
FPGA,VHDL ,UART,receive ,send
目录
第1章 绪论... 1
1.1 本文研究的意义... 1
1.2 本文研究的内容... 1
第2章 FPGA和VHDL语言简介... 2
2.1 FPGA. 2
2.2 VHDL语言... 2
第3章 串行通信的基本概念... 5
3.1 串行通信的特点及通信方式... 5
3.2 传输速率与传输距离... 11
3.3 UART简介... 12
第4章 UART结构... 13
4.1 串行数据时钟... 13
4.2 UART发送器... 14
4.3 格式化... 14
4.4 发送器状态... 14
4.5 UART接收器... 15
4.6 错误检测... 15
第5章 UART的VHDL语言编写... 17
5.1 UART的串行数据... 17
5.2 UART整体结构... 18
5.3 UART的接收部分... 19
5.4 UART的发送部分... 21
5.5 波特率发生部分... 23
5.6 总线接口及中断... 25
第6章 功能仿真... 26
6.1 总体布线图... 26
6.2 接收部分... 27
6.3 发送部分... 30
第7章 小结... 33
致谢:... 34
参考文献:... 35
第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.1 FPGA
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(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.2 VHDL语言
严格地讲,VHDL是一种用来描述数字逻辑系统的“编程语言”。它源于美国政府于1980年开始启动的超高速集成电路计划(Very High Speed Integrated Circuits,VHSIC)。在这一计划的执行过程中,专家们认识到需要有一种标准的语言来描述集成电路的结构和功能,由此,VHSIC的硬件描述语言(VHSIC HDL)即VHDL便诞生了,并很快被美国电气和电子工程师协会(IEEE)所承认。
由于VHDL语言已作为一种IEEE的工业标准,因而其语言标准、规范、语法比较严格,易于共享和复用。而且,VHDL设计技术齐全、方法灵活、支持广泛。目前大多数EDA工具几乎在不同程度上都支持VHDL语言。
当前各ASIC芯片制造商都相继开发了各自目的的HDL语言,但是大多都未标准化和通用化。唯一已被公认的是美国国防部开发的VHDL语言,它已成为IEEE STD_1076标准。另外,从近期HDL语言发展的动态来看,许多公司研制的硬件电路设计工具也都逐渐向VHDL靠拢,使得它们的硬件电路设计工具也能支持VHDL语言。
2.2.1 设计技术齐全、方法灵活、支持广泛
VHDL语言可以支持自上而下(Top Down)和基于库(Library_Based)的设计方法,而且还支持同步电路、异步电路、FPGA以及其它随即电路的设计。其范围之广是其他HDL语言所不能比拟的。例如,SFL语言和UDL/I语言,它们只能描述同步电路。另外,由于VHDL语言早在1987年12月已作为IEEE STD_1076标准公开发布。因此,目前大多数EDA工具几乎在不同程度上都支持VHDL语言。这样给VHDL语言进一步推广和应用创造了良好的环境。
2.2.2系统硬件描述能力强
如前所述,VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混和使用。例如,在PC机扩展槽上要设计一块接口卡,该接口卡的硬件设计应满足主机的接口要求。此时,主机部分功能可以用行为方式描述。这样,在接口卡设计出来以前就可以知道接口卡的工作是否满足系统要求。
VHDL语言能进行系统级的硬件描述,这是它的一个最突出优点。其他HDL语言,如UDL/I、Verilog等只能进行IC级、PCB级描述,而不能对系统级的硬件很好地进行描述。
再如,VHDL语言设计系统硬件时,没有嵌入与工艺有关地信息。当然,这样地信息是可以用VHDL语言来编写地。与大多数HDL语言地不同之处是,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同工艺(如MOS,CMOS等),这样,在工艺更新时,就无需修改原设程序,只要改变相应的映射工具就行了。由此可见,无论修改电路还是修改工艺相互之间不会产生什么不良影响。
2.2.4 VHDL语言标准、规范,易于共享和复用
由于VHDL语言已作为一种IEEE的工业标准,这样,设计成果便于复用和交流,反过来就能更进一步推动VHDL语言的推广及完善。另外VHDL语言的语法比较严格,其风格类似于Ada语言,给阅读和使用都带来了极大的好处。
2.2.5程序的基本结构
一个完整的VHDL语言程序通常包含实体(Entity),构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分。前4种是可分别编译的源设计单元。实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放各设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。库可由用户生成或由ASIC芯片的制造商提供,以便在设计中为大家所共享。 |