基于vhdluart控制器设计说明书_第1页
基于vhdluart控制器设计说明书_第2页
基于vhdluart控制器设计说明书_第3页
基于vhdluart控制器设计说明书_第4页
基于vhdluart控制器设计说明书_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送装置,是设备之间进行通信广泛使用的接口。当两个设备需要通信时,通常采用数字信号,这种并行的信号必须转换成串行信号才能传输。在目的端,串行信号又转换成并行信号进行处理。UART控制器就是处理这种数据总线和串行口之间的串-并和并-串转换。本文所要实现的就是这种串-并和并-串的转换,使之能够进行数据的传输。现在市场上有许多为UART开发的专用芯片,但是其功能固定,不能根据用户的需求来灵活的改变控制逻辑。因此,本文介绍了用FPGA技术实现UART控制器设计的一种方法,用VHDL进行编程

2、,在下进行编译及仿真,从而实现能够更改灵活、既方便又实用的UART具有重要意义。关键字:FPGA,VHDL,UART,接收,发送AbstractUART(Universal Asynchronous Receiver/Transmitter),isthe 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 s

3、ignal to another device. 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

4、 a method implemented by FPGA technique programmed by VHDL,simulated and compiled by .in order to make it flexible, convenient and practical so that the UART is great significance.Keywords:FPGA,VHDL ,UART,receive ,send 目录摘要1ABSTRACT2第一章前言5本文研究的背景512 本文研究的内容5本论文的结构安排如下6第二章计算机接口与RS-232串口简介72.1 计算机接口介绍

5、72.1.1 计算机接口简介72.2 RS-232串口通信简介82.2.1 串行通信概述8RS-232协议9RS-232通信时序和UART112.2.4. 串行通信实现方案13第三章 EDA技术及FPGA的概述143.1 EDA 技术发展历程143.1.1 CAD 阶段143.1.2 CAE阶段143.1.3 EDA阶段153.2 EDA技术的基本特征及优势153.3 MAX+plus II软件介绍163.3.1 MAX+plus II开发系统的特点183.3.2 项目编译193.3.3 项目仿真20第四章UART方案设计214.1 UART实现原理214.2 UART工作流程22第五章 UA

6、RT模块的VHDL语言设计25信号监测模块的实现255.2 波特率发生器模块的实现25移位寄存器模块的实现28奇偶校验器模块实现29总线选择模块的实现305.6 计数器模块的实现315.7 UART内核模块的实现325.7.1 UART内核模块的接口325.7.2 UART内核模块的状态机设计385.7.3 UART内核模块的实现405.8 UART顶层模块的实现48第六章UART的VHDL程序的仿真、验证526. 1编译、综合526. 2 UART主要模块仿真波形526.2.1 信号监测器模块的仿真526.2.2 波特率时钟模块的仿真536.2.3 移位寄存器模块的仿真536.2.4 奇偶校

7、验器模块的仿真536.2.5 总线选择器模块的仿真546.2.6 计数器模块的仿真546.2.7 顶层模块的仿真54总结57致谢58参考文献59第一章 前 言本文研究的背景在1980至1990年代,提供FPGA数万逻辑门的FPGA器件主要被系统设计人员用作“连接逻辑”,将电路板上的不同元器件连接到一起,或用来修正ASIC不方便处理的问题。但在1990年代末期,百万门现场可编程门阵列(FPGA)产品的出现使在单块可编程芯片中集成系统级功能成为可能。目前市场上出售的最大规模FPGA产品有600万系统门和1.4亿个晶体管,已经跻身于最复杂的半导体器件之列。而如今,FPGA的一些新的技术发展趋势不仅使

8、其越来越多地替代ASIC,成为可编程逻辑领域的主流产品,从ASIC市场抢夺越来越多的市场份额;同时,还为自身不断带来新的利润增长点和广阔的市场前景串行外设都会用到RS232-C异步串行接口,传统上采用专用的集成电路即UART实现,如TI、EXAR、EPIC的。550、452等系列,但是我们一般不需要使用完整的UART的功能,而且对于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。如果设计上用到了FPGA/CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部。FPGA的发展也促进了PLD设计方法的进步,基于硬件描述语言(HDL)高级综合的电子设计自动化(EDA)方法已成为

9、FPGA的主流设计技术,使得用户能够高效地完成复杂地大型设计任务,并直接生成FPGA的ASIC器件。12 本文研究的内容本论文的任务就是在FPGA技术的基础上,用VHDL语言来描述UART功能,使之能完成UART的一些主要功能:1)写数据 将数据总线上的一个数据写入发送寄存器。2)读数据 数据从输出寄存器发送到数据总线上。3)数据接收控制 当数据接收端RxD出现低电平,一个数据启动位到来时送数据到来。5)接收数据移位控制 进行数据,一个接收计数周期开始,当计数到7时,计数器清零等待下一个启动位的到来。4)数据发送控制当一个数据写入到发送寄存器时,其控制计

10、数器开始一个发送的计数周期,当一个数据发送结束,计数器清零,等待下一个发的串并变换。6)发送数据的并串变化。第1章 前言,主要介绍了课题的背景以及研究的意义,相关领域的发展和研究现状,提出了本文的主要研究内容。第2章 计算机接口与RS-232串口简介;介绍了常用的计算机接口,接口的控制方式,串行通信的工作原理,RS-232协议,RS-232通信时序和UART,串行通信的实现方案。第3章 UART设计方案。介绍了UART实现原理、UART工作流程。第4章 EDA技术及FPGA的概述;介绍了EDA技术的定义及发展历程、VHDL语言及程序结构、可编程逻辑器件、CPLD与FPGA及其特点。第5章 UA

11、RT模块的VHDL语言设计及仿真;介绍了语言的描述方式、信号检测模块的实现、波特率发生器模块的实现、移位寄存器模块的实现、奇偶校验器模块的实现、总线选择模块的实现、计数器模块的实现、UART内核模块的实现、UART顶层模块的实现。第6章 UART的VHDL程序的编译、综合、仿真、验证;介绍了编译、综合,系统描述波形仿真,包括信号监测器模块的仿真、波特率时钟模块的仿真、移位寄存器模块的仿真、奇偶校验模块的仿真、总线选择器模块的仿真、计数器模块的仿真、顶层模块的仿真。最后,对本文研究工作进行总结和展望,探讨今后工作改进的方法。第二章 计算机接口与RS-232串口简介2.1 计算机接口介绍计算机接口

12、简介计算机接口有串行接口、并行接口、磁盘接口等。1.串行接口串行口是计算机的一种标准接口,现在的PC机至少有COM1和COM2两个串行口。串行口的数据和控制信息是一位接一位串行地传送下去。虽然速度会慢一些,但传送距离较并行口更长,长距离的通信要使用串行口。COM1使用的是9针D形连接器,而COM2有些使用的是老式的DB25针连接器。2.并行接口目前,计算机中的并行接口主要用于打印机端口,接口使用的是25针D形接头。所谓“并行”,就是指8位数据同时通过并行线传送,这样数据传送速度得到提高,但并行传送的线路长度增加,干扰会增加,容易出错。标准的并行口有4位、8位、半8位:4位口一次只能输入4位数据

13、,但可以输出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通常处于等待状态,工作

14、效率也就很低。2)中断处理方式在这种方式下,CPU是可以执行其他程序的,当外设为数据交换准备好时,就可以向CPU提出请求,如果CPU响应该请求,就暂时停止当前的程序,去执行和该请求对应的程序,待该请求完成后,继续执行原来的程序。3)DMA(直接存储器存取)传送方式DMA不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据交流,不需要CPU介入,提高CPU的工作效率。2.2 RS-232串口通信简介2.2.1 串行通信概述在计算机网络、数据通信以及分布式工业控制系统中,常采用串行通信来实现数据和信息的交换。1969年,EIA(美国电子工业协会)将RS-232定为串行通信接口的电气标准,该

15、标准定义了数据终端设备(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/EI

16、A-422-A标准。为扩展应用范围,EIA又于1983年在RS-433基础上制定了RS-485标准,增强了多点、双向通信能力,即允许多个收发器连到同一条总线上,同时增强了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,命名为RS-485标准。RS-232,RS-422与RS-485的电气参数如表2-1所示。表2-1 RS-232,RS-422与RS-485的电气参数规定RS-232RS-422RS-485工作方式单端差分差分节点数1收1发1发10收1法32收最大传输电缆长度50英尺400英尺400英尺最大传输速率20kbit/s10Mbit/s10Mbit/s最大驱动输出电压+/-25V-

17、0.25V+6V-7V+12V驱动器输出信号电平(附在最小值)+/-5V+/-15V驱动器输出信号电平(空载最大值)+/-25V+/-6V+/-6V驱动器负载阻抗37千欧姆100欧姆54欧姆摆率(最大值)30V/usN/AN/A接收器输入电压范围+/-15V-10V+10V-7V+12V接收器输入门限+/-3V+/-200mV+/-200mV接收器输入电阻37千欧姆4千欧姆(最小)=12千欧姆驱动器共模电压-3V+3V-1V+3V接收器共模电压-7V+7V-7V+12V虽然RS-232,RS-422与RS-485标准对电器特性做出了规范,但是没有规定连接插件、电缆或协议,所以在此基础上用户可以

18、建成自己的高层通信协议。RS-232等协议在视频传输中被广泛应用,许多厂家多建立了一套高层通信协议,或公开或厂家独家使用。RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。2.2.2RS-232协议标准的RS-232接口有25跟信号线,4根数据线、11根控制线、3根定时线和7根备用线。通常使用9根就可以实现RS-232通信。1DSR信号线DSR (Data Set Ready) 是数据装置就绪,状态为有效时,表示Modem可以使用的状态。2DTR 信号线DTR(Data Terminal Ready)以四位数据终端就绪,状态为有效时,数据终端可以使用。3RTS 信号线RTS(Req

19、uest To Send)是请求发送,终端需要发送数据时,使该数据有效,向Modem请求发送。用于控制Modem是否有效,通知终端开始发送数据。4CTS 信号线CTS (Clear To Send) 是允许发送,对RTS信号的响应。当Modem已经准备好接收终端发送过来的数据时,使该信号有效,通知终端开始发送数据。5DCD 信号线DCD (Data Carrier Detection) 为数据载波检出,有效时表示Modem已经接通了通信链路,即本地Modem受到了通信链路另一端的远程Modem送来的载波信号,终端可以准备接收数据。6RI信号线RI(Ringing) 表示振铃指示,但本地Mode

20、m受到交换台发送的振铃呼叫信号时,使该信号有效,通知终端已被呼叫。TxD信号线TxD(Transmitted Data)是发送数据,终端通过此信号将数据发送给Modem。RxD (Received Data)是接收数据,终端通过此信号从Modem 接收数据。地线地线分别是信号地SG (Signal Ground)和保护地PE(Protection ground),信号地使所有信号的参考电平,保护地用于连接设备的外壳或者地表。常见的RS-232串行口连接器主要有两种,一种是25针的 DB-25,另一种是9针的DB-9,其示意图如图2.1所示,DB-9主要用于上述的9根信号线连接的方法,DB-25

21、可以连接所有的RS-232标准定义的信号线。DB-25也可用像DB-9那样使用,但是它们的针号与信号之间的连接关系是不一样的,如表2-2。表2-2DB-9与DB-9针号信号线连接对应表9针串口连接器DB-925针串口连接器DB-25针号功能缩写针号功能缩写1数据载波检测DCD8数据载波检测DCD2接收数据RXD3接收数据RXD3发送数据TXD2发送数据TXD4数据终端准备DTR20数据终端准备DTR5信号线GND7信号线GND6数据设备准备好DSR6数据设备准备好DSR7请求发送RTS4请求发送RTS8清除发送CTS5清除发送CTS图2.1 RS-232 串行口连接器示意图最为简单常用的RS-

22、232连接方法是三线连接法,即地、接收数据和发送数据三角相连。对于上述的DB-25连接器和DB-9连接器,三线连接法的原则如下所示。表2-3DB-25, DB-9三线连接法DB-9- DB-9DB-25- DB-25DB-25-DB-9233222322333557757由于RS-232电气特定的电平不符合通常电路中所使用的TTL或者CMOS点评,所以在接入电路之前需要对其进行转换。RS-232串口电平的转换一般使用的是专门的芯片实现,其中最常用的就是MAX232。MAX232可以将串口设备需要发送的TTL/CMOS逻辑电平转换为RS-232逻辑电平,同时也可以见要接收的RS-232电平转换为

23、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.3RS-232通信时序和UART在串行通信中,用“波特率”来描述数据的传输速率。所谓波特率,即每秒钟传送的二进制位数,其单位是 bit/s(bit per second ),它是衡量传输串行数据速度快慢的重要指

24、标。有时也用“位周期”来表示传输速率,位周期是波特率的倒数。国际上规定了一个波特率系列,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位数据,包含字符位和其他的必要位,如奇偶校验位、起始位、停止位。大多数串行接口电路的接收波特率和发送波特率多可以设置,但接收方的接收波特率必须与发送方的发送波特率相同。通信线上所传输的字符数据(代码)都是

25、逐位传送的,1个字符由若干位组成,因此每秒种所传输的字符数(字符速率)波特率是两种概念。在串行通信中所说的传输速率是指波特率,而不是指字符速率,假如在异步串行通信中,传输一个字符,包括12位(其中有一个起始位,8个数据位,2个停止位),其传输速率是1200bit/s,每秒所能传送的字符是1200/(1+8+1+2)=100个。在串行通信中,除了可以设置波特率外,其他的如字符数据的位数、奇偶校验位、停止位也可以被设置。其中,字符数据的位数可以被设置为58位;奇偶校验位可以去除,也可以设置为奇校验或者偶校验;停止位可以设置为1位、1.5位或者2位。串行通信的时序,串行总线在空闲时保持逻辑“1”状态

26、(即串行连接线上的电平为-3-15V),当需要传送一个字符时,首先会发送一个逻辑“0”的起始位,表示开始发送数据;之后,就逐个发送数据位、奇偶校验位和停止位(逻辑为“1”)。发送时序图如图2.4所示。图2.4 RS-232串行口通信时序图对于一个设备的处理器来说,要接收和发送串行通信的数据,还需要一个期间将串行口的数据转换为并行口数据以便于处理器进行处理,这个器件就是UART ( Universial Asynchronous Receiver/Transmitter)全称是通用异步收发器,其功能是辅助处理器与外部设备之间的通信。作为RS-232 通信接口的一个重要部分,UART具有以下功能:

27、将由计算机内部传动过来的并行数据转换成用于输出的串行数据。将计算机外部传送来的串行数据转换成字节,供计算机内部使用并行数据的器件使用。在输出的串行通信数据流中加入奇偶校验位,并对从外部接收的数据进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。提供和处理器之间的通信信号,可以处理处理器和串行通信设备之间的同步管理问题。2.2.4. 串行通信实现方案实现串行通信主要需要完成三部分工作:(1) 将串口电压转换成设备电路板的工作电压,即实现RS-232电平和TTL/CMOS电平的转换。(2)接收并校验串行的数据,将数据变成并行的数据并提供给处理器处理。(3)接收并行数据并转换成

28、串行数据供串行端口发送。第三章 EDA技术及FPGA的概述EDA(Electronic Design Automation)工程就是以计算机为工作平台,EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以ASIC、SOC芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。3.1 EDA 技术发展历程EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(Computer Assist Design, 简称CAD)、 计算机辅助工程设计(Compute Assist Engineering,简称CAE)和电子设计自动化(E1ectron

29、ic Design Automation,简称EDA)三个发展阶段。CAD 阶段第一阶段(20 世纪 60 年代中期20 世纪 80 年代初期),是EDA技术发展的初期,由于PCB布图布线工具受到计算机工作平台的制约,己无法满足设计精度和效率的要求。因此工程师们开始进行二维平面图形的计算机辅助设计(Computer Aided Design,CAD),产生了第一代EDA工具。该阶段的特征是采用小型计算机,软件功能为交互式图形编辑、设计规则检查。第一代EDA工具用于集成电路的版图设计。3.1.2 CAE阶段第二阶段(20 世纪 80 年代中期20 世纪 90 年代初期),随着计算机和集成电路的法

30、展,出现了以计算机仿真和自动布线为核心技术的第二代EDA工具。产生了计算机辅助制造(Computer Aided Manufacturing,CAM)、计算机辅助测试(Computer Aided Test CAT)和计算机辅助工程(Computer Aided Engineering CAE)等概念。第二代EDA工具的主要特征是以逻辑模拟、定时分析、故障仿真、自动布局和布线为核心。此工具主要用来解决电路设计没有完成之前的功能检测等问题。3.1.3 EDA阶段20 世纪 90 年代以来,设计师逐步从使用硬件转向设计硬件,从电路级电子产品开发转向系统级电子产品开发(即片上系统集成),因此EDA工

31、具是以系统设计为核心,包括系统行为级描述与结构级综合,系统仿真与测试验证,系统划分与指标分配,系统决策与文件生成等一整套的电子系统设计自动化工具。EDA工具不仅具有电子系统设计的能力,而且能提供独立于工艺和厂家的系统级设计能力,具有高级抽象的设计构思手段。例如:提供方框图、状态图和流程图的编辑能力,具有适合层次描述和混合信号描述的硬件描述语言(如VHDL、AHDL或verilogHDL),同时含有各种工艺标准元件库。第三代EDA工具可以使电子系统工程师在不熟悉各种半导体厂家和各种半导体工艺的情况下,完成电子系统的设计。3.2 EDA技术的基本特征及优势现代EDA技术的基本特征是采用高级语言描述

32、,具有系统级仿真和综合能力。传统手工设计方法对复杂电路的设计调试困难;在设计过程中对出现的错误进行查找和修改十分不便;不易管理在设计过程中产生的大量文档;并且必须在设计完成后或生产出芯片后才能进行实测,而EDA技术与其相比有着很大的优势:采用硬件描述语言,有利于复杂系统的设计;具有强大的系统建模和电路仿真功能;具有自主的知识产权;其开发技术更标准化和规范化;全方位的利用计算机的自动设计、仿真和测试技术;对设计者的硬件知识和硬件经验要求低。传统的电路设计采用的是自底向上的设计方法,而EDA技术采用一种自顶向下的设计方法。所谓“自顶向下”法就是设计者首先从整体上规划整个系统的功能和性能,然后将系统

33、划分为规模较小、功能较为简单的局部模块,并确立它们之间的相互关系,这种划分过程可以不断地进行下去,直到划分得到的单元可以映射到物理实现。图3-2-1所示的是自顶向下与自底向上的设计比较。自顶向下(Top-down)自底向上(Bottom-up)由基本门组成各个组合与时序逻辑单元用系统级行为描述表达一个包输入输出的顶层模块,同时完成整个系统的模拟与性能分析将系统划分为各个功能模块,每个模块由更细化的行为描述表达由逻辑单元组成各个独立的功能模块由各个功能模块连成一个完整系统由EDA综合工具完成到工艺的映射进行整个系统的测试与性能分析图3-2-1 自顶向下与自底向上的设计比较自底向上的设计方法就是首

34、先确定构成系统的最底层的电路模块或原件的结构和功能,然后根据主系统的结构和要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程逐步向上递推,直到完成整个目标系统的设计。它可以用来解决系统最底层硬件的可获得性和功能特性方面的诸多细节问题,不过在整个逐级设计和测试过程中,有时可能会出现目标器件的更换、某些技术指标不满足要求或提高运行速度等问题。因此,传统的自底向上的设计方法是一种低效、低可靠性、且成本高昂的设计方法。而自顶而下的设计方法使系统被分成各个模块的集合,然后将每个独立模块指派给不同的工作小组让其分工合作,最后将不同的模块集合成一整体系统模型,并对其进行综合测试和

35、评价。这样一来系统性能参数将得到进一步的细化与确认,并随时可以根据需要加以调整,从而可保证设计结果的正确性,缩短设计周期,设计规模越大,这种设计方法的优势越明显。3.3 MAX+plus II软件介绍MAX+PLUX II开发工具是Altera自行设计的EDA软件,Altera是世界上最大可编程逻辑器件的供应商之一。MAX+PLUX II界面友好,使用便捷,被认为是最易用易学的EDA(Electronic Design Automation)软件,可不需要第三方软件,支持3万门以下所有设计。如图4-3-1所示。在MAX+PLUX II上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整

36、个流程它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。图 3-3-1 MAX+PLUX II软件的集成电路MAX+PLUX II被普片认为是最优秀的PLD开发平台之一,适合开发中小规模PLD/FPGAMAX+PLUX II软件的设计流程:输入设计项目和存盘;编辑文本文件;将设计项目设置成工程文件Project;选择目标器件进行编译;波形编译;时序仿真;引脚锁定;编程下载。打开MAX+PLUX II,执行菜单File New命令,弹出如图3-3-2所示的新建文件对话框。图3-3-2 新建文件对话框MAX+PLUX II将用户所设计的电路原理图或电路描述转变为C

37、PLD/FPGA内部的基本逻辑单元,写入芯片中,从而实现用户所设计的电路。它的功能描述如图3-3-3所示输入设计MAX+PLUX IICPLD/FPGA实现图 3-3-3 MAX+PLUX II的功能描述MAX+PLUX II的具体功能如图3-3-4所示设计输入 项目编译项目校验 器件编程MAX+PLUX II信息处理器和层次显示MAX+PLUX II图形编辑器编译器网表提取器数据库建库器逻辑综合器MAX+PLUX II文本编辑器适配MAX+PLUX II 编程器MAX+PLUX II时序分析器图3-3-4MAX+PLUX II具体功能3.3.1 MAX+plus II开发系统的特点(1)开放

38、的界面MAX+plus II支持与Cadence, Exemplarlogic, Mentor Graphics, Synplicty, Viewlogic和其它公司所提供的EDA工具接口。(2)与结构无关MAX+plus II系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。(3)完全集成化MAX+plus II的设计输入、处理与校验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。( 4 ) 丰富的设计库MAX+

39、plus II提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Macro-Function)。( 5 ) 模块化工具设计人员可以从各种设计输入、处理和校验选项中进行选择从而使设计环境用户化。( 6 ) 硬件描述语言(HDL)Max+plus II软件支持各种HDL设计输入选项,包括VHDL、Verilog、HDL和Altera自己的硬件描述语言AHDL。( 7 ) Opencore特征Max+plus II软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。.3.3.2 项目编译使用编译器MAX+P

40、LUSII编译设计项目时,编译器将进行设计错误检查、网表提取、逻辑综合和器件适配等。从图3-4-5可见该项目设计正确,且该软件自动为该项目选取FLEX10K系列器件EPF10K10LC84芯片。系统自动通知应选择的下载器件编译成功编译过程图3-4-5 VHDL源代码编译过程3.3.3 项目仿真仿真的主要作用是验证工程的逻辑操作与时延的正确性。由于本例的数字系统是一个小规模的数字系统,无需进行代码级的功能仿真。图中的仿真是在逻辑综合、器件划分、适配之后进行的,只对逻辑综合后符合规则的接点进行仿真,其过程考虑了器件的物理结构造成的延时,因此属于时序仿真。运行仿真器,执行菜单MAX+PLUS/Sim

41、ulator命令,单击弹出的仿真器窗口的Start按钮,对话框中会显示“0 errors, 0 warnings”。如果没有变化,看看是否因为显示比例太大,可以单击图左边工具栏的缩小按钮或显示全部按钮。当仿真器结束工作时,单击Open SCF按钮,将看到仿真结果。使用MAX+PLUS开发软件的波形编辑器直接画出输入激励波形,启动仿真器,得到显示模拟仿真的结果。第四章UART方案设计4.1 UART实现原理图4.1.1 UART实现原理图 UART各个模块的功能如下:1UART内核模块UART内核模块是整个设计的核心。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器

42、在波特率是中的驱动下同步地接收并且保存RS-232接收端口的串行数据。在数据发送时,UART内核模块首先根据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数据位、奇偶校验位和停止位),之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。2信号监测模块信号监测模块用于对RS-232的输入信号(经过电平转换后的逻辑信号)进行实时的检测,一旦发现新的数据则立即通知UART内核。3移位寄存器模块移位寄存器模块的作用是存储输入或者输出的数据。当UART接收RS-232输入时,移位寄存器在波特率模式下采集RS-232输入信号,并且保存

43、结果;当UART进行RS-232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS-232输出端口上。4波特率发生模块由于RS-232传输必定是工作在某种波特率下,比如9600,为了便于和RS-232总线同步,需要产生符合RS-232传输波特率的时钟。5奇偶校验模块奇偶校验模块的功能是根据奇偶校验的设置和输入数据计算出相应的奇偶校验位,它是通过组合逻辑实现的。6总线选择模块总线选择模块用于选择奇偶校验器的输入是数据发送总线还是数据接收总线。在接收总线时,总线选择模块将数据接收总线连接到奇偶校验器的输入端,来检查已接收的数据的奇偶校验位是否正确;而在发

44、送数据时,总线选择模块将数据发送总线连接到奇偶校验器的输入端,UART内核模块就能够获取并且保存发送序列所需的奇偶校验位了。7,计数器模块计数器模块的功能是记录串行数据发送或者接收的数目,在计数到某数值时通知UART内核模块。4.2 UART工作流程UART工作流程可以分为接收过程和发送过程部分。接收过程指的是UART监测到RS-232总线上的数据,顺序读取串行数据并且将其输出给CPU的过程。当信号监测到新的数据(RS-232输入逻辑变为0,即RS-232输入协议的起始位)就会触发接收过程,其流程如图所示。首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的工作模式为波特率模式

45、,以准备接收数据。其次,移位寄存器在波特率时钟的驱动下工作,不断地读取RS-232串行总线的输入数据,并且将数据保存在内部的寄存器内。接收完成后,UART内核会对已接收的数据进行奇偶校验并且输出校验结果。最后,UART内核会重置信号监测器,以备下一次数据接收。图4.2.1UART接收数据流程图发送过程有加载和发送两个步骤组成,如图4.2所示。加载步骤是UART内核按RS-232串行发送的顺序将起始位、数据位、奇偶校验位和停止位加载到移位寄存器内,这个过程工作在系统时钟下,相对于RS-232的传输速度来说非常快。完成加载步骤后,UART内核会重置波特率发生器,并且设置移位寄存器工作在波特率模式下

46、,于是移位寄存器便在波特率时钟的驱动下依次将加载的数据发送到RS-232的发送端TxD,这样便产生了RS-232的数据发送时序。图4.2.2 UART发送数据流程图第五章 UART模块的VHDL语言设计信号监测模块的实现信号监测模块的功能是监测RS-232输入端的信号,当有新的数据传输时通知UART内核开始接收数据,端口定义如表5-1所示。表5-1信号监测器端口定义表 名称类型宽度说明Clk输入1时钟信号Reset_n输入1复位信号RxD输入1RS-232输入信号New_data输出1指示信号,当监测到新数据时置高在监测到传输的起始位后,信号监测器需要将自己锁定,即不对输入信号进行监测,直到U

47、ART内核将其复位。信号监测器的实体声明代码如下:- 库声明library IEEE;use IEEE.STD_LOGIC_1164.all; use WORK.UART_PACKAGE.ALL;- 实体声明entity detector isport (clk : in std_logic;reset_n : in std_logic;RxD : in std_logic;new_data : out std_logic );end detector;5.2 波特率发生器模块的实现波特率发生器的功能是产生和RS-232同心所采用的波特率同步的时钟,这样才能方便的按照RS-232串行通信的时序

48、要求进行数据接收和发送。图5.1表示了波特率时钟和RS-232接收端信号的时序关系,波特率时钟的频率就是波特率。图5.1 波特率时钟与RxD时序图实现上述的波特率时钟的基本思想就是设计一个计数器,该计数器工作在速度很高的系统时钟下,当计数到某数值时将输出置高,在计数一定数值后再将输出置低,如此反复能够得到所需的波特率时钟。图5.2 波特率时钟实现原理假设FPGA的系统时钟为50MHz, RS-232同心的波特率为9600,则波特率时钟的每个周期相当于(1/9600)/(1/50*e6)=5208各系统时钟的周期。假设要得到占空比为50%的波特率时钟,只需使得计数器在计数到5208*50%=16

49、04 时将输出置高,之后在计数到5208时将输出置低并且重新计数,就能够实现和9600波特率同步的时钟,原理图如图5.2所示。波特率发生器得端口定义如下表5-2所示。表5-2波特率发生器端口定义如下表名称类型宽度说明Clk输入1时钟信号Reset_n输入1复位信号Ce输入1使能信号Bd_out输出1波特率时钟输出信号indicator输出1指示信号,在每输出一个周期的波特率时钟,在信号上述出一个小脉冲波特率发生器在复位后,将内部计数器置为“0”,如果是能信号有效,则在每个系统时钟的上升沿工作,将计数器计数增加一。当输出一个完整的波特率时钟信号后,波特率发生器会自动将内部计数器置为零,同时开始下

50、一个脉冲的计数。还有一个indicator 信号,每产生一个完整的波特率时钟周期,indicator 信号用于表示产生了一个完整的波特率时钟周期,UART通过此信号来了解波特率发生器已输出的脉冲个数。波特率发生器的实体声明代码如下,其中在实体声明中声明了两个类属参数,FULL_PULSE_COUNT表示一个波特率时钟完整的周期所对应的计数器计数,RISE_PULSE_COUNT表示波特率时钟信号上升时刻对应的计数器计数,这样波特率时钟的占空比可以表示为(FULL_PULSE_COUNT-RISE_PULSE_COUNT)/ FULL_PULSE_COUNT。- 库声明library IEEE;

51、use IEEE.STD_LOGIC_1164.all;use WORK.UART_PACKAGE.ALL;entity baudrate_generator isgeneric (FULL_PULSE_COUNT : BD_COUNT := BD9600_FPC;RISE_PULSE_COUNT : BD_COUNT := BD9600_HPC );port (clk : in std_logic;reset_n : in std_logic;ce : in std_logic;bg_out : out std_logic;indicator : out std_logic );end ba

52、udrate_generator;以上代码中的BD_COUNT是在UART_PACKAGE库中定义的,它代表范围从065535的整数(即16位整数);BD9600_FPC代表波特率时钟完整周期对应的计数,而BD9600_HPC代表的是波特率时钟半周其对应的计数,它们也在UART_PACKAGE库中定义的,如下所示:- 计数器计数范围type BD_COUNT is range 65535 downto 0;- 9600波特率对应参数constant BD9600_FPC : BD_COUNT := 5208;constant BD9600_HPC : BD_COUNT := 2604;下面介绍

53、一下波特率发生器的仿真测试过程。由于9600波特率对应的参数树枝比较大,所以为了观察仿真的波形,可以首先选择输出较小的测试数据。比如,可以在UART_PACKAGE库中定义完整波特率时钟周期对应计数为10,半周期对应计数5,代码如下:- 波特率测试参数constant BDTEST_FPC : BD_COUNT := 10;constant BDTEST_HPC : BD_COUNT := 5;在测试平台文件中,申明波特率发生器实例时应先将其类属参数设置为测试参数,如下所示:- Unit Under Test port mapUUT : baudrate_generatorgeneric ma

54、p (FULL_PULSE_COUNT => 10,RISE_PULSE_COUNT => 5)port map (clk => clk,reset_n => reset_n,ce => ce,bg_out => bg_out,indicator => indicator);移位寄存器模块的实现移位寄存器模块在整个设计中非常关键,无论是数据接收还是数据的发送都需要用到移位寄存器。移位寄存器的基本工作原理是在触发信号的驱动下将内部寄存器序列的最高位输出,将此高位到最低为向高位移动一位,并且读取输入端的数据保存到最低位。由于在RS-232通信在不同的传输设

55、置下(比如奇偶校验,停止位)总的数据位数不同,所以为了能够灵活的配置移位寄存器,可以在声明移位寄存器实体的时候添加一个表示寄存器序列总长度的类属参数,代码如下:entity shift_register isgeneric (TOTAL_BIT : integer := 10 );port (clk : in std_logic;reset_n : in std_logic;din : in std_logic;regs : out std_logic_vector(TOTAL_BIT-1 downto 0);dout : out std_logic );end shift_register;以上代码中的TOTAL_BIT表示的就是寄存器序列的长度,默认为10,对应的传输设置是8为数据位、奇偶校验位、1位停止位。表5-3移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论