




已阅读5页,还剩81页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要 UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送 装置,是设备之间进行通信广泛使用的接口。当两个设备需要通信时,通常采用数字 信号,这种并行的信号必须转换成串行信号才能传输。在目的端,串行信号又转换成 并行信号进行处理。UART 控制器就是处理这种数据总线和串行口之间的串-并和并-串 转换。 本文所要实现的就是这种串-并和并-串的转换,使之能够进行数据的传输。现在 市场上有许多为 UART 开发的专用芯片,但是其功能固定,不能根据用户的需求来灵活 的改变控制逻辑。因此,本文介绍了用 FPGA 技术实现 UART 控制器设计的一种方法, 用 VHDL 进行编程,在 MAX+plus II 10.2 下进行编译及仿真,从而实现能够更改灵活、 既方便又实用的 UART 具有重要意义。 关键字:FPGA,VHDL,UART,接收,发送 Abstract UART(Universal Asynchronous Receiver/Transmitter),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. 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 1 make the transferring between data properly.This paper introduces a method implemented by FPGA technique programmed by VHDL,simulated and compiled by MAX+plus II 10.2. in order to make it flexible, convenient and practical so that the UART is great significance. Keywords:FPGA,VHDL ,UART,receive ,send 目录 摘 要.1 ABSTRACT2 第一章 前 言5 1.1 本文研究的背景 5 12 本文研究的内容 .5 1.3 本论文的结构安排如下 6 第二章 计算机接口与 RS-232 串口简介7 2.1 计算机接口介绍 7 2.1.1 计算机接口简介 7 2.2 RS-232 串口通信简介8 2.2.1 串行通信概述 8 2.2.2RS-232 协议.9 2.2.3RS-232 通信时序和 UART .11 2.2.4. 串行通信实现方案 13 第三章 EDA 技术及 FPGA 的概述 .14 3.1 EDA 技术发展历程 .14 3.1.1 CAD 阶段 .14 3.1.2 CAE 阶段14 3.1.3 EDA 阶段15 3.2 EDA 技术的基本特征及优势15 3.3 MAX+PLUS II 软件介绍.16 3.3.1 MAX+plus II 开发系统的特点.18 3.3.2 项目编译 .19 3.3.3 项目仿真 20 第四章 UART 方案设计21 4.1 UART 实现原理.21 4.2 UART 工作流程.22 第五章 UART 模块的 VHDL 语言设计 25 5.1 信号监测模块的实现 .25 5.2 波特率发生器模块的实现 .25 5.3 移位寄存器模块的实现 .28 5.4 奇偶校验器模块实现 .29 5.5 总线选择模块的实现 .30 5.6 计数器模块的实现 .31 5.7 UART 内核模块的实现.32 5.7.1 UART 内核模块的接口.32 5.7.2 UART 内核模块的状态机设计.38 5.7.3 UART 内核模块的实现.40 5.8 UART 顶层模块的实现.48 第六章 UART 的 VHDL 程序的仿真、验证.52 6. 1 编译、综合.52 6. 2 UART 主要模块仿真波形52 6.2.1 信号监测器模块的仿真 .52 6.2.2 波特率时钟模块的仿真 .53 6.2.3 移位寄存器模块的仿真 .53 6.2.4 奇偶校验器模块的仿真 .53 6.2.5 总线选择器模块的仿真 .54 6.2.6 计数器模块的仿真 .54 6.2.7 顶层模块的仿真 .54 总 结.57 致 谢58 参考文献.59 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 器件。 12 本文研究的内容 本论文的任务就是在 FPGA 技术的基础上,用 VHDL 语言来描述 UART 功能, 使之能完成 UART 的一些主要功能: 1)写数据 将数据总线上的一个数据写入发送寄存器。 2)读数据 数据从输出寄存器发送到数据总线上。 3)数据接收控制 当数据接收端 RxD 出现低电平,一个数据启动位到来时 送数据到来。 5)接收数据移位控制 进行数据,一个接收计数周期开始,当计数到 7 时, 计数器清零等待下一个启动位的到来。 4)数据发送控制 当一个数据写入到发送寄存器时,其控制计数器开始一 个发送的计数周期,当一个数据发送结束,计数器清零,等待下一个发的串并 2 变换。 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 程序的编译、综合、仿真、验证;介绍了编译、综合, 系统描述波形仿真,包括信号监测器模块的仿真、波特率时钟模块的仿真、移 位寄存器模块的仿真、奇偶校验模块的仿真、总线选择器模块的仿真、计数器 模块的仿真、顶层模块的仿真。 最后,对本文研究工作进行总结和展望,探讨今后工作改进的方法。 3 第二章 计算机接口与 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 是可以执行其他程序的,当外设为数据交换准备好时, 4 就可以向 CPU 提出请求,如果 CPU 响应该请求,就暂时停止当前的程序,去执 行和该请求对应的程序,待该请求完成后,继续执行原来的程序。 3)DMA(直接存储器存取)传送方式 DMA 不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据 交流,不需要 CPU 介入,提高 CPU 的工作效率。 2.2 RS-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 所示。 5 表表 2-12-1 RS-232RS-232,RS-422RS-422 与与 RS-485RS-485 的电气参数的电气参数 规定 RS-232RS-422RS-485 工作方式单端差分差分 节点数1 收 1 发1 发 10 收1 法 32 收 最大传输电缆长度50 英尺400 英尺400 英尺 最大传输速率 20kbit/s10Mbit/s10Mbit/s 最大驱动输出电压 +/-25V-0.25V+6V-7V+12V 驱动器输出信号电平 (附在最小值) +/-5V+/-15V+/-2.0V+/-1.5V 驱动器输出信号电平 (空载最大值) +/-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 标准对电器特性做出了规范,但是没有规 定连接插件、电缆或协议,所以在此基础上用户可以建成自己的高层通信协议。 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 信号线 6 RTS(Request To Send)是请求发送,终端需要发送数据时,使该数据有效, 向 Modem 请求发送。用于控制 Modem 是否有效,通知终端开始发送数据。 4CTS 信号线 CTS (Clear To Send) 是允许发送,对 RTS 信号的响应。当 Modem 已经准 备好接收终端发送过来的数据时,使该信号有效,通知终端开始发送数据。 5DCD 信号线 DCD (Data Carrier Detection) 为数据载波检出,有效时表示 Modem 已经 接通了通信链路,即本地 Modem 受到了通信链路另一端的远程 Modem 送来的载 波信号,终端可以准备接收数据。 6RI 信号线 RI(Ringing) 表示振铃指示,但本地 Modem 受到交换台发送的振铃呼叫信 号时,使该信号有效,通知终端已被呼叫。 TxD 信号线 TxD(Transmitted Data)是发送数据,终端通过此信号将数据发送给 Modem。 8.RxD 信号线 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 可以连接所有的 RS-232 标准定义的信号线。DB-25 也可用像 DB-9 那样使用,但是它们的针号与信号之间的连接关系是不一样的,如表 2-2。 7 表表 2-22-2DB-9DB-9 与与 DB-9DB-9 针号信号线连接对应表针号信号线连接对应表 9 针串口连接器 DB-925 针串口连接器 DB-25 针号功能缩写针号功能缩写 1 数据载波检测 DCD8 数据载波检测 DCD 2 接收数据 RXD3 接收数据 RXD 3 发送数据 TXD2 发送数据 TXD 4 数据终端准备 DTR20 数据终端准备 DTR 5 信号线 GND7 信号线 GND 6 数据设备准备 好 DSR6 数据设备准备 好 DSR 7 请求发送 RTS4 请求发送 RTS 8 清除发送 CTS5 清除发送 CTS 图图 2.12.1 RS-232RS-232 串行口连接器示意图串行口连接器示意图 最为简单常用的 RS-232 连接方法是三线连接法,即地、接收数据和发送数 据三角相连。对于上述的 DB-25 连接器和 DB-9 连接器,三线连接法的原则如下 所示。 表 2-3DB-25,DB-25, DB-9DB-9 三线连接法三线连接法 DB-9- DB-9DB-25- DB-25DB-25-DB-9 233222 322333 557757 由于 RS-232 电气特定的电平不符合通常电路中所使用的 TTL 或者 CMOS 点 评,所以在接入电路之前需要对其进行转换。RS-232 串口电平的转换一般使用 的是专门的芯片实现,其中最常用的就是 MAX232。MAX232 可以将串口设备需要 发送的 TTL/CMOS 逻辑电平转换为 RS-232 逻辑电平,同时也可以见要接收的 RS-232 电平转换为 TTL/CMOS 逻辑电平,下图 2.2 为 MAX232 的顶层图。 8 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 ),它是衡量传输串 行数据速度快慢的重要指标。有时也用“位周期”来表示传输速率,位周期是 波特率的倒数。国际上规定了一个波特率系列, 110bit/s、300bit/s、600bit/s、1200bit/s、1800bit/s、2400bit/s、4800bi t/s、9600bit/s、14.4kbit/s、19.2kbit/s、28.8kbit/s、33.6kbit/s、56kbi t/s。如 9600bit/s,其意义是每秒钟传送 9600 位数据,包含字符位和其他的 必要位,如奇偶校验位、起始位、停止位。 大多数串行接口电路的接收波特率和发送波特率多可以设置,但接收方的 接收波特率必须与发送方的发送波特率相同。通信线上所传输的字符数据(代 码)都是逐位传送的,1 个字符由若干位组成,因此每秒种所传输的字符数 (字符速率)波特率是两种概念。在串行通信中所说的传输速率是指波特率, 而不是指字符速率,假如在异步串行通信中,传输一个字符,包括 12 位(其中 9 有一个起始位,8 个数据位,2 个停止位),其传输速率是 1200bit/s,每秒所 能传送的字符是 1200/(1+8+1+2)=100 个。 在串行通信中,除了可以设置波特率外,其他的如字符数据的位数、奇偶 校验位、停止位也可以被设置。其中,字符数据的位数可以被设置为 58 位; 奇偶校验位可以去除,也可以设置为奇校验或者偶校验;停止位可以设置为 1 位、1.5 位或者 2 位。 串行通信的时序,串行总线在空闲时保持逻辑“1”状态(即串行连接线上 的电平为-3-15V),当需要传送一个字符时,首先会发送一个逻辑“0”的起 始位,表示开始发送数据;之后,就逐个发送数据位、奇偶校验位和停止位 (逻辑为“1”)。发送时序图如图 2.4 所示。 图图 2.42.4 RS-232RS-232 串行口通信时序图串行口通信时序图 对于一个设备的处理器来说,要接收和发送串行通信的数据,还需要一个 期间将串行口的数据转换为并行口数据以便于处理器进行处理,这个器件就是 UART ( Universial Asynchronous Receiver/Transmitter)全称是通用异步收 发器,其功能是辅助处理器与外部设备之间的通信。作为 RS-232 通信接口的 一个重要部分,UART 具有以下功能: 将由计算机内部传动过来的并行数据转换成用于输出的串行数据。 将计算机外部传送来的串行数据转换成字节,供计算机内部使用并行数据 的器件使用。 在输出的串行通信数据流中加入奇偶校验位,并对从外部接收的数据进行 奇偶校验。 在输出数据流中加入启停标记,并从接收数据流中删除启停标记。 提供和处理器之间的通信信号,可以处理处理器和串行通信设备之间的同 步管理问题。 10 2.2.4. 串行通信实现方案 实现串行通信主要需要完成三部分工作: (1) 将串口电压转换成设备电路板的工作电压,即实现 RS-232 电平和 TTL/CMOS 电平的转换。 (2)接收并校验串行的数据,将数据变成并行的数据并提供给处理器处理。 (3)接收并行数据并转换成串行数据供串行端口发送。 11 第三章 EDA 技术及 FPGA 的概述 EDA(Electronic Design Automation)工程就是以计算机为工作平台,EDA 软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体, 以 ASIC、SOC 芯片为目标器件,以电子系统设计为应用方向的电子产品自动化 设计过程。 3.1 EDA 技术发展历程 EDA 技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机 辅助设计(Computer Assist Design, 简称 CAD)、 计算机辅助工程设计 (Compute Assist Engineering,简称 CAE)和电子设计自动化(E1ectronic Design Automation,简称 EDA)三个发展阶段。 3.1.1 CAD 阶段 第一阶段(20 世纪 60 年代中期20 世纪 80 年代初期),是 EDA 技术 发展的初期,由于 PCB 布图布线工具受到计算机工作平台的制约,己无法满足 设计精度和效率的要求。因此工程师们开始进行二维平面图形的计算机辅助设 计(Computer Aided Design,CAD),产生了第一代 EDA 工具。该阶段的特征是 采用小型计算机,软件功能为交互式图形编辑、设计规则检查。第一代 EDA 工 具用于集成电路的版图设计。 3.1.2 CAE 阶段 第二阶段(20 世纪 80 年代中期20 世纪 90 年代初期),随着计算机 和集成电路的法展,出现了以计算机仿真和自动布线为核心技术的第二代 EDA 工具。产生了计算机辅助制造(Computer Aided Manufacturing,CAM)、计算机 辅助测试(Computer Aided Test CAT)和计算机辅助工程(Computer Aided Engineering CAE)等概念。第二代 EDA 工具的主要特征是以逻辑模拟、定时分 析、故障仿真、自动布局和布线为核心。此工具主要用来解决电路设计没有完 成之前的功能检测等问题。 12 3.1.3 EDA 阶段 20 世纪 90 年代以来,设计师逐步从使用硬件转向设计硬件,从电路级电 子产品开发转向系统级电子产品开发(即片上系统集成),因此 EDA 工具是以系 统设计为核心,包括系统行为级描述与结构级综合,系统仿真与测试验证,系 统划分与指标分配,系统决策与文件生成等一整套的电子系统设计自动化工具。 EDA 工具不仅具有电子系统设计的能力,而且能提供独立于工艺和厂家的系统 级设计能力,具有高级抽象的设计构思手段。例如:提供方框图、状态图和流 程图的编辑能力,具有适合层次描述和混合信号描述的硬件描述语言(如 VHDL、AHDL 或 verilogHDL),同时含有各种工艺标准元件库。第三代 EDA 工 具可以使电子系统工程师在不熟悉各种半导体厂家和各种半导体工艺的情况下, 完成电子系统的设计。 3.2 EDA 技术的基本特征及优势 现代 EDA 技术的基本特征是采用高级语言描述,具有系统级仿真和综合能 力。传统手工设计方法对复杂电路的设计调试困难;在设计过程中对出现的错 误进行查找和修改十分不便;不易管理在设计过程中产生的大量文档;并且必 须在设计完成后或生产出芯片后才能进行实测,而 EDA 技术与其相比有着很大 的优势:采用硬件描述语言,有利于复杂系统的设计;具有强大的系统建模和 电路仿真功能;具有自主的知识产权;其开发技术更标准化和规范化;全方位 的利用计算机的自动设计、仿真和测试技术;对设计者的硬件知识和硬件经验 要求低。 传统的电路设计采用的是自底向上的设计方法,而 EDA 技术采用一种自顶 向下的设计方法。所谓“自顶向下”法就是设计者首先从整体上规划整个系统 的功能和性能,然后将系统划分为规模较小、功能较为简单的局部模块,并确 立它们之间的相互关系,这种划分过程可以不断地进行下去,直到划分得到的 单元可以映射到物理实现。图 3-2-1 所示的是自顶向下与自底向上的设计比较。 13 图图 3-2-1 自顶向下与自底向上的设计比较自顶向下与自底向上的设计比较 自底向上的设计方法就是首先确定构成系统的最底层的电路模块或原件的 结构和功能,然后根据主系统的结构和要求,将它们组合成更大的功能块,使 它们的结构和功能满足高层系统的要求。以此流程逐步向上递推,直到完成整 个目标系统的设计。它可以用来解决系统最底层硬件的可获得性和功能特性方 面的诸多细节问题,不过在整个逐级设计和测试过程中,有时可能会出现目标 器件的更换、某些技术指标不满足要求或提高运行速度等问题。因此,传统的 自底向上的设计方法是一种低效、低可靠性、且成本高昂的设计方法。而自顶 而下的设计方法使系统被分成各个模块的集合,然后将每个独立模块指派给不 同的工作小组让其分工合作,最后将不同的模块集合成一整体系统模型,并对 其进行综合测试和评价。这样一来系统性能参数将得到进一步的细化与确认, 并随时可以根据需要加以调整,从而可保证设计结果的正确性,缩短设计周期, 设计规模越大,这种设计方法的优势越明显。 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 上可以完 成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程它提供了一 用系统级行为描述表达一个包输 入输出的顶层模块,同时完成整 个系统的模拟与性能分析 由 EDA 综合工具完成到工艺的映射 将系统划分为各个功能模块,每个 模块由更细化的行为描述表达 由各个功能模块连成一个完整系统 由逻辑单元组成各个独立的功能模块 由基本门组成各个组合与时序逻辑单 元 自顶向下(Top- down) 自底向上(Bottom-up) 进行整个系统的测试与性能分析 14 种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件 编程。 图图 3-3-1 MAX+PLUX II 软件的集成电路软件的集成电路 MAX+PLUX II 被普片认为是最优秀的 PLD 开发平台之一,适合开发中小规 模 PLD/FPGA MAX+PLUX II 软件的设计流程:输入设计项目和存盘;编辑文本文件;将 设计项目设置成工程文件 Project;选择目标器件进行编译;波形编译;时序 仿真;引脚锁定;编程下载。打开 MAX+PLUX II,执行菜单 File New 命令,弹 出如图 3-3-2 所示的新建文件对话框。 图图 3-3-2 新建文件对话框新建文件对话框 MAX+PLUX II 将用户所设计的电路原理图或电路描述转变为 CPLD/FPGA 内 部的基本逻辑单元,写入芯片中,从而实现用户所设计的电路。它的功能描述 如图 3-3-3 所示 15 输入设计 MAX+PLUX II CPLD/FPGA 实现 图图 3-3-3 MAX+PLUX II 的功能描述的功能描述 MAX+PLUX II 的具体功能如图的具体功能如图 3-3-4 所示所示 图图 3-3-4MAX+PLUX II 具体功能具体功能 3.3.1 MAX+plus II 开发系统的特点 (1)开放的界面 MAX+plus II 支持与 Cadence, Exemplarlogic, Mentor Graphics, Synplicty, Viewlogic 和其它公司所提供的 EDA 工具接口。 (2)与结构无关 MAX+plus II 系统的核心 Complier 支持 Altera 公司的 FLEX10K、FLEX8000、MAX9000、MAX7000、MAX5000 和 Classic 可编程逻辑器件, 提供了世界上唯一真正与结构无关的可编程逻辑设计环境。 设计输入 项目编译 项目校验 器件编程 MAX+PLUX II 文本编辑器 MAX+P LUX II 图形编 辑器 编译器网 表提取器 数据库建库器 逻辑综合 器 适 配 MAX+PLUX II 时序分析器 MAX+PLUX II 编程器 MAX+PLUX II 信息处理器和 层次显示 16 (3)完全集成化 MAX+plus II 的设计输入、处理与校验功能全部集成在统一的开发环境下, 这样可以加快动态调试、缩短开发周期。 ( 4 ) 丰富的设计库 MAX+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+PLUSII 编译设计项目时,编译器将进行设计错误检查、网 表提取、逻辑综合和器件适配等。从图 3-4-5 可见该项目设计正确,且该软件 自动为该项目选取 FLEX10K 系列器件 EPF10K10LC84 芯片。 图图3-4-5 VHDL 源代码编译过程源代码编译过程 系统自动通知应 选择的下载器件 编译过程 编译成功 17 3.3.3 项目仿真 仿真的主要作用是验证工程的逻辑操作与时延的正确性。由于本例的数字 系统是一个小规模的数字系统,无需进行代码级的功能仿真。图中的仿真是在 逻辑综合 、器件划分、适配之后进行的,只对逻辑综合后符合规则的接点进行 仿真,其过程考虑了器件的物理结构造成的延时,因此属于时序仿真。 运行仿真器,执行菜单 MAX+PLUS/Simulator 命令,单击弹出的仿真器窗 口的 Start 按钮,对话框中会显示“0 errors, 0 warnings”。如果没有变化, 看看是否因为显示比例太大,可以单击图左边工具栏的缩小按钮或显示全部按 钮。 当仿真器结束工作时,单击 Open SCF 按钮,将看到仿真结果。 使用 MAX+PLUS开发软件的波形编辑器直接画出输入激励波形,启动仿真 器,得到显示模拟仿真的结果。 18 第四章 UART 方案设计 4.1 UART 实现原理 UART 主要由 UART 内核、信号监测器、移位寄存器、波特率发生器,计数 器、总线选择器和奇偶校验器总共 7 个模块组成,如图 4.1.1 所示 图图 4.1.14.1.1 UARTUART 实现原理图实现原理图 UART 各个模块的功能如下: 1UART 内核模块 UART 内核模块是整个设计的核心。在数据接收时,UART 内核模块负责控制 波特率发生器和移位寄存器,使得移位寄存器在波特率是中的驱动下同步地接 收并且保存 RS-232 接收端口的串行数据。在数据发送时,UART 内核模块首先 根据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数 据位、奇偶校验位和停止位),之后控制移位寄存器将序列加载到移位寄存器 的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。 2信号监测模块 信号监测模块用于对 RS-232 的输入信号(经过电平转换后的逻辑信号)进 行实时的检测,一旦发现新的数据则立即通知 UART 内核。 3移位寄存器模块 移位寄存器模块的作用是存储输入或者输出的数据。当 UART 接收 RS-232 19 输入时,移位寄存器在波特率模式下采集 RS-232 输入信号,并且保存结果;当 UART 进行 RS-232 输出时,UART 内核首先将数据加载到移位寄存器内,再使移 位寄存器在波特率模式下将数据输出到 RS-232 输出端口上。 4波特率发生模块 由于 RS-232 传输必定是工作在某种波特率下,比如 9600,为了便于和 RS- 232 总线同步,需要产生符合 RS-232 传输波特率的时钟。 5奇偶校验模块 奇偶校验模块的功能是根据奇偶校验的设置和输入数据计算出相应的奇偶 校验位,它是通过组合逻辑实现的。 6总线选择模块 总线选择模块用于选择奇偶校验器的输入是数据发送总线还是数据接收总 线。在接收总线时,总线选择模块将数据接收总线连接到奇偶校验器的输入端, 来检查已接收的数据的奇偶校验位是否正确;而在发送数据时,总线选择模块 将数据发送总线连接到奇偶校验器的输入端,UART 内核模块就能够获取并且保 存发送序列所需的奇偶校验位了。 7,计数器模块 计数器模块的功能是记录串行数据发送或者接收的数目,在计数到某数值 时通知 UART 内核模块。 4.2 UART 工作流程 UART 工作流程可以分为接收过程和发送过程部分。 接收过程指的是 UART 监测到 RS-232 总线上的数据,顺序读取串行数据并 且将其输出给 CPU 的过程。当信号监测到新的数据(RS-232 输入逻辑变为 0, 即 RS-232 输入协议的起始位)就会触发接收过程,其流程如图所示。首先 UART 内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的工作模式 为波特率模式,以准备接收数据。其次,移位寄存器在波特率时钟的驱动下工 作,不断地读取 RS-232 串行总线的输入数据,并且将数据保存在内部的寄存器 内。接收完成后,UART 内核会对已接收的数据进行奇偶校验并且输出校验结果。 最后,UART 内核会重置信号监测器,以备下一次数据接收。 20 图图 4.2.14.2.1 UARTUART 接收数据流程图接收数据流程图 发送过程有加载和发送两个步骤组成,如图 4.2 所示。加载步骤是 UART 内 核按 RS-232 串行发送的顺序将起始位、数据位、奇偶校验位和停止位加载到移 位寄存器内,这个过程工作在系统时钟下,相对于 RS-232 的传输速度来说非常 快。完成加载步骤后,UART 内核会重置波特率发生器,并且设置移位寄存器工 作在波特率模式下,于是移位寄存器便在波特率时钟的驱动下依次将加载的数 据发送到 RS-232 的发送端 TxD,这样便产生了 RS-232 的数据发送时序。 图图 4.2.24.2.2 UARTUART 发送数据流程图发送数据流程图 21 第五章 UART 模块的 VHDL 语言设计 5.1 信号监测模块的实现 信号监测模块的功能是监测 RS-232 输入端的信号,当有新的数据传输时通 知 UART 内核开始接收数据,端口定义如表 5-1 所示。 表 5-1 信号监测器端口定义表 名称类型宽度说明 Clk 输入 1 时钟信号 Reset_n 输入 1 复位信号 RxD 输入 1 RS-232 输入信号 New_data 输出 1 指示信号,当监 测到新数据时置 高 在监测到传输的起始位后,信号监测器需要将自己锁定,即不对输入信号 进行监测,直到 UART 内核将其复位。信号监测器的实体声明代码如下: - 库声明 library IEEE; use IEEE.STD_LOGIC_1164.all; use WORK.UART_PACKAGE.ALL; - 实体声明 entity detector is port ( 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 串行通信的时序要求进行数据接收和发送。图 5.1 表 示了波特率时钟和 RS-232 接收端信号的时序关系,波特率时钟的频率就是波特 率。 22 图图 5.15.1 波特率时钟与波特率时钟与 RxDRxD 时序图时序图 实现上述的波特率时钟的基本思想就是设计一个计数器,该计数器工作在 速度很高的系统时钟下,当计数到某数值时将输出置高,在计数一定数值后再 将输出置低,如此反复能够得到所需的波特率时钟。 图图 5.25.2 波特率时钟实现原理波特率时钟实现原理 假设 FPGA 的系统时钟为 50MHz, RS-232 同心的波特率为 9600,则波特率 时钟的每个周期相当于(1/9600)/(1/50*e6)=5208 各系统时钟的周期。假设 要得到占空比为 50%的波特率时钟,只需使得计数器在计数到 5208*50%=1604 时将输出置高,之后在计数到 5208 时将输出置低并且重新计数,就能够实现和 9600 波特率同步的时钟,原理图如图 5.2 所示。波特率发生器得端口定义如下 表 5-2 所示。 表表 5-25-2 波特率发生器端口定义如下表波特率发生器端口定义如下表 名称类型宽度说明 Clk 输入 1 时钟信号 Reset_n 输入 1 复位信号 Ce 输入 1 使能信号 Bd_out 输出 1 波特率时钟输出 信号 indicator 输出 1 指示信号,在每 输出一个周期的 波特率时钟,在 信号上述出一个 小脉冲 波特率发生器在复位后,将内部计数器置为“0”,如果是能信号有效, 23 则在每个系统时钟的上升沿工作,将计数器计数增加一。当输出一个完整的波 特率时钟信号后,波特率发生器会自动将内部计数器置为零,同时开始下一个 脉冲的计数。还有一个 indicator 信号,每产生一个完整的波特率时钟周期, indicator 信号用于表示产生了一个完整的波特率时钟周期,UART 通过此信号 来了解波特率发生器已输出的脉冲个数。 波特率发生器的实体声明代码如下,其中在实体声明中声明了两个类属参 数,FULL_PULSE_COUNT 表示一个波特率时钟完整的周期所对应的计数器计数, RISE_PULSE_COUNT 表示波特率时钟信号上升时刻对应的计数器计数,这样波特 率时钟的占空比可以表示为(FULL_PULSE_COUNT-RISE_PULSE_COUNT)/ FULL_PULSE_COUNT。 - 库声明 library IEEE; use IEEE.STD_LOGIC_1164.all; use WORK.UART_PACKAGE.ALL; entity baudrate_generator is generic ( 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 baudrate_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; 下面介绍一下波特率发生器的仿真测试过程。由于 9600 波特率对应的参数 树枝比较大,所以为了观察仿真的波形,可以首先选择输出较小的测试数据。 24 比如,可以在 UART_PACKAGE 库中定义完整波特率时钟周期对应计数为 10,半 周期对应计数 5,代码如下: - 波特率测试参数 constant BDTEST_FPC : BD_COUNT := 10; constant BDTEST_HPC : BD_COUNT := 5; 在测试平台文件中,申明波特率发生器实例时应先将其类属参数设置为测 试参数,如下所示: - Unit Under Test port map UUT : baudrate_generator generic map ( FULL_PULSE_COUNT =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿支护考试题及答案
- 数学旋转考试题及答案
- 康复治疗面试题及答案
- 储能系统运维安全手册
- java自增自减面试题及答案
- 家电公司采购合同管理办法
- 西藏环卫工人考试试题及答案
- 海曙社工面试题及答案
- 咸宁叉车考试题及答案
- 物理磁学考试题及答案
- 2025汽车智能驾驶技术及产业发展白皮书
- 苯职业病防护课件
- 2025年铸牢中华民族共同体意识基本知识测试题及答案
- 2025年湖北省中考道德与法治真题(解析版)
- 2025-2030年中国胃食管反流病行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国苯丙酮尿症(PKU)行业市场发展趋势与前景展望战略研究报告
- 2025至2030年中国PA10T行业市场竞争态势及未来前景分析报告
- 催收新人培训管理制度
- DZ/T 0089-1993地质钻探用钻塔技术条件
- 2025-2030中国铁路道岔行业市场现状供需分析及投资评估规划分析研究报告
- 特种设备安全法培训课件
评论
0/150
提交评论