《微电子学毕业设计(论文)UART接口设计及FPGA验证.doc》由会员分享,可在线阅读,更多相关《微电子学毕业设计(论文)UART接口设计及FPGA验证.doc(46页珍藏版)》请在三一办公上搜索。
1、UART接口设计及FPGA验证 The Design of UART Interface and FPGA Verification专业:微电子一班学生: 指导教师: 摘 要:随着电子技术的发展,以及数据传送的需要,通用异步接收/发送器(UART)已成为MCU、CPU、DSP等的基本配置,应用广泛。UART数据通过串行输入、输出,不同装置间通信不需要传送时钟信号,避免了同步传送的时序处理问题,数据线引脚较少,避免了信号间的相互干扰,是未来数据传送的发展方向。本文主要讨论如何应用Verilog HDL语言,基于FPGA器件实现可复用的UART IP Core。通过修改配置文件,用户可以根据需要设
2、置相应的参数,以实现相应功能的UART器件。本设计模块主要包括UART发送器、接收器、波特率发生器,以及总线接口控制逻辑。设计通过Xilinx公司的Spartan3系列器件XC3S400 FPGA进行功能验证。关键词:UART、IP核、发送器、接收器、波特率发生器、Verilog HDL Abstract: With the development of electronic technology, as the need of data transmitter, the Universal Asynchronous Receiver/Transmitter (UART) now is the
3、 basic component of MCU, CPU, DSP , etc. By series data input/output, there is no need to send clock signal when communication between different equipments, avoiding timing synchronous problem, and the data pin is only one, avoid the disturb among the signals in parallel communication. So, series da
4、ta transmitting is the development direction in future. This paper focuses on how to use Verilog HDL to carry out reusable UART IP Core, based on FPGA. By modifying the configuration documents, the user can design different UART component. The design is made up of these modules, such as Transmitter,
5、 Receiver, Bade_rate generator, and the Bus interface mastering logic. When validating the design, we use XC3S400 FPGA of Xilinx CO.,LTDs Spartan-3 spectrum. Key Words: UART , IP Core,Transmitter, Receiver, Verilog HDL目录第一章 引言1第二章 UART的协议.22.1 异步通信22.2串行通信的过程及通信协议.3 2.2.1串并转换与设备同步.32.2.2串行通信协议32.3 U
6、ART的典型应用.52.4 UART的时钟控制.62.5 UART的数据采样.6第三章 UART的硬件设计.73.1 UART总体构架.73.1.1 UART结构.73.1.2 UART的帧格式.73.1.3 UART 的设计规格83.2 串行数据发送模块 113.2.1 发送顶层模块. 113.2.2 取数控制. 12 3.2.3 发送状态机. 133.2.4 EDA工具验证 143.3 串行数据接收模块 15 3.3.1 接收顶层模块. 153.3.2 数据同步装置. 153.3.3 数据抽样装置. 163.3.4 接收状态机. 173.3.5 EDA工具验证.183.4 波特率发生器 1
7、8 3.4.1 波特率发生器概述18 3.4.2 EDA工具验证193.5 总线接口控制模块. 193.5.1 接口功能描述203.5.2 EDA综合结果.21第四章 UART的FPGA验证.22 4.1 Xilinx Spartan-3 系列器件介绍. 22 4.2 FPGA实现过程 23第五章 结论26致谢27参考文献28外文译文29翻译原文35第一章 引 言目前,基于传统IC芯片的微电子应用系统设计技术正在转向基于知识产权(IP,Intellectual Property)核的片上系统(SoC,System on Chip)技术发展。IC设计在国内外的发展很快,各种规模的IC设计中心和公
8、司不断出现。因此,IP核的设计已开始逐渐成为国内微电子系统设计的一项支撑技术。从应用功能角度划分,IP核分为两大类:微处理器IP核(如8位8051核、32位ARM核等)和各种接口IP核(如LCD控制器、各种串行总线接口IP核等)。其中,接口IP核在数字通信系统中有着广泛的应用。设备间的通信方式,可分为并行和串行两种。在相同频率下,并行总线优于串行总线。随着并行总线的数据传输率越来越高,传统的并行接口逐渐暴露出一些信号传输上的缺陷,其中最致命的莫过于信号互相干扰问题。要满足高速传输的需要,要么提升它的总线频率,要么增加数据宽度。但是这两种都会导致成本的上升,并且使信号偏移和串扰更加严重。而串行技
9、术采有极少的数据线,并使用差分信号线,在传输数据时几乎不会因为受到干扰而出错。通用异步接收器和发送器(UART)用异步串行输入、输出进行通信。串行传输以速度为代价,换取了成本的降低和连线复杂度的降低。UART提供串行异步接收数据的同步化,发送器和接收器两个部分的并串转换和串并转换,对于串行传输系统而言,这些功能是必不可少的。串行数据流的同步化是通过给发送数据增加起始位和停止位、以形成一个数据字符而实现的。数据完整性是通过在数据字符中附加一个校验位来实现的,由接收器来检验。对于主机系统,UART就像一个能读取和写入的8位输入和输出端口,任何时候,当主机要发送数据,它只需以字节格式把这些数据发送到
10、UART(8个位宽);当UART从另一个串行装置接收数据时,它把这些数据临时缓存在它的FIFO中(同样是8个位宽),然后通过内部寄存器位或硬件中断信号向主机指示这些数据的可用性。随着串行通信技术的发展,新一代的串行通信接口如USB1.0,USB2.0,1394,SATA等高速串行接口逐渐成熟,串行通信的传输速度不断提升,接口技术有串行化的趋势。本课题通过对由CCITT制定的串并转换协议RS-232-C, 及其协议实现的通用器件UART的研究、实现,以期进一步了解串行通信技术,并系统学习IP Core 的设计。第二章 UART的协议UART(即通用异步接收传送器)按照异步通信传输格式传送数据,它
11、的传送符合通信协议的规范。以下主要介绍异步通信及通信协议,以及UART中数据传输的具体方式。2.1 异步通信在异步通信中,数据是一帧一帧(包括一个字符代码或一个字节数据)传送的, 一帧的数据格式如下图所示。图 2-1 异步通信的一帧数据格式在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。起始位(0)只占用一位,通知接收设备一个待接收的字符开始到达。线路上不传送字符时应保持为1,接收端不断检测线路的状态,若连续为1后测到一个0,就表示发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。起始位后面紧接着是数据位,它可以是5位(D
12、0D4)、6位、7位或8位(D0D7)。奇偶校验(D8)只占一位,也可以不用校验位,则这一位就可省略。也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。停止位用来表征字符的结束,一定是高电位(1)。停止位位宽可以是1位、1.5位或者2位。接收端收到停止位后,表明上一字符已传送完毕,同时,也为接收下一个字符做好准备,如果再接收到0,就是新的字符开始传送。若停止位以后不是紧接着一个字符,则使线路电平保持为高电平(1)。2.2 串行通信的过程及通信协议串行通信指数据是一位一位按顺序传送的通信方式。它的突出优点是只需一对传输线,这样就大大降低了传送成本,特别适用于远距离通信;
13、其缺点是传送速度较低。串行通信的传送方向通常有三种:单工、半双工、全双工。全双工是一对单向配置,它要求两端的通信设备都具备完整和独立的发送和接收能力。本文设计的UART以全双工模式工作。2.2.1串并转换与设备同步两个通信设备在串行线路上成功地实现通信必须解决两个问题:一是串并、并串转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备和接收设备的工作节拍,以确保发送数据在接收端被正确读出。2.2.1.1 并串转换与串并转换串行通信是将计算机内部的并行数据转换成串行数据,然后将其通过一根通信线传送;在接收时将串行数据再转换成并行数据,再通过与主机的连接将其送
14、到计算机中。在计算机串行发送数据之前,计算机内部的并行数据被送到移位寄存器并一位一位地移出,将并行数据转换成串行数据。如下图所示。图 2-2 发送时的并串转换在接收数据时,来自通信线路的串行数据被送入移位寄存器,移位保存满8位后并行送到计算机内部。图 2-3 接收时的串并转换2.2.1.2 设备同步进行串行通信的两台设备必须同步工作才能有效地检测通信线路上地信号变化,从而采样传送数据脉冲。设备同步必须保证两点:一是必须采用统一的编码方法;二是通信双方必须保证相同的传送速率。统一的编码方法确定了一个字符的位发送顺序和位串长度,以及统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。
15、通信双方只有保持相同的速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。2.2.2串行通信协议通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。通信双方必须遵循统一的通信协议。串行通信协议包括同步协议和异步协议。以下是异步串行通信协议和异步串行协议规定的字符数据的传送格式。1、起始位通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先加入一个逻辑0的信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接
16、受数据位信号。起始位能使设备同步,通信双方必须在传送数据位前协调同步。2、数据位当接收设备接收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为数据。3、奇偶校验位数据位发送完,可发送奇偶校验位。奇偶校验属于有限差错检测,通信双方需约定一致的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。4、停止位约定在奇偶位或数据位(当无奇偶检验时)之后发送停止位。停止位是一个字符数据的结束
17、标志,可以是1位、1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。5、波特率设置通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度决定,即以每秒多少个二进制位来衡量的,这个速度就叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。6、握手信号约定计算机与modem进行数据交换时,往往通过一些信号线作为交换数据的先提条件,当满足条件时允许数据进行传送;当不满足条件时,处于等待状态,等到允许数据传送的信号发生时,才又开始传送数据。2.3 UART的典
18、型应用UART由于理想的低功耗、降低软件开销、降低CPU 开销、避免丢失数据、 发送和接收通道可以在不同的波特率下工作等优点,广泛应用于对速度要求不高的数据传输中。典型应用如下:ADSL boxes 基站 PCPABX 系统 便携式电话 Fax 服务器 Modem 集线器和路由器 工业自动控制 导航系统 自动售货机(角子机)其他更多2.4 UART的时钟控制UART以异步方式工作,接收器和传输器工作于不同的时钟频率,在传送数据的时候,一定要预先知道被传送数据的传输频率。也就是说,对于接收的UART来说,它在接收之前需要知道传输的UART的工作频率;相反,对于传输的UART来说,在它传输之前应该
19、知道接收的UART的工作频率。由于很多情况下,同一个UART的传输器和接收器都工作于相同的频率下,可以把UART的传输、接收模块设置为统一的工作频率。2.5 UART的数据采样在接收器接收数据时,UART的内部时钟频率往往高于外部数据输入频率。当接收器开始接收信号时,如果内部时钟工作的频率接近或者小于外部数据传输频率,那么在接收器接收数据时,在数据采样的边缘很可能采集不到数据,或者采集到错误的数据。采样的频率可以设置为外部数据传输频率的8倍,16倍。该UART采用的16倍外部时钟频率,采样的波形图如下所示。图 2-4 采样波形图第三章 UART的硬件设计UART是广泛使用的串行数据传输协议,允
20、许在串行链路上进行全双工的通信。串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO)。有时我们不需要使用完整的UART的功能和这些辅助功能。如果设计上用到了FPGA/CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部。本设计使用Verilog HDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。3.1 UART总体构架3.1.1 UART结构 UART主要有由数据总线接口、总线控制逻辑、波特率发生器、发送部分和接收部
21、分组成。其功能包括微处理器接口,发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、串转并。 图 3-1 UART的模块构成3.1.2 UART的帧格式UART的帧包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、58位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。这种格式是由起始位和停止位来实现字符的同步 UART内部一般有配置寄存器,可以配置数据位数(58位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等
22、设置。 图 3-2 UART的帧格式3.1.3 UART 的设计规格设计采用模块化、层次化的设计思想,全部设计采用Verilog HDL实现。整个UART IP由串行数据发送模块、串行数据接收模块、接收和发送FIFO、总线接口逻辑、寄存器和控制逻辑构成。串行发送模块和接收完成并/串和串/并的转换。发送和接收FIFO用于缓存发送和接收的数据。总线接口逻辑用于连接UART IP内部总线和微控制器接口。寄存器和控制逻辑实现UART IP内部所有数据的收发、控制和状态寄存器、内部中断的控制及波特率信号的产生。3.1.3.1 UART模块的划分该UART主要由波特率产生器模块、发送器模块、接收器模块、微
23、控制器模块构成。结构图可参考图 3-1。主要模块代码包括:UART.v :UART的顶层模块,主要是完成各子模块的调用。U_XMIT.v :异步发送传输模块,将数据由并行转换成串行的输出。U_REC.v :异步接收模块,完成数据由串行到并行的转换,并送给CPU。U_BAUD.v :波特率生成模块,主要产生波特率时钟。U_MP.v :微控制器模块,完成UART内部信号的处理、与外部信号的连接。3.1.3.2输入输出信号描述整个UART的输入输出信号如下描述:表3-1 UART输入输出信号说明信号输入/输出信号说明输入输出信号定义SYS_CLKinput系统时钟表3-1续SYS_RSTinput系
24、统复位信号MP_CSInputUART片选信号MP_WRInputUART写使能信号MP_RDInputUART读使能信号BAUD_RAT_DIVInput波特率分频系数UART_DATAInputUART数据接收端MP_DATA_TO_UARTInput控制器向UART的将要输出的数据UART_XMITHOutputUART数据发送端XMIT_DONEOutputUART数据发送完成反馈信号MP_DATA_FROM_UARTOutputUART到控制器的UART已经接收到的数据MP_DATA_READYOutputUART通知控制器可以取数信号3.1.3.3模块简介1、 发送器模块发送器模块
25、主要由并串转换装置、状态机、逻辑控制单元和数据选择器构成。它主要是负责并行数据转换成串行数据的输出,并在数据传输的开始置开始位0,数据传输结束是置停止位1。 图 3-3 发送器模块外部接口图表3-2 发送器输入输出信号说明信号输入/输出信号说明输入输出信号定义UART_CLKinputUART时钟UART_RSTinputUART复位信号XMITHinputUART发送使能信号表3-2 续XMIT_DATAinputUART发送数据并行输入口UART_XMITTHoutputUART发送数据线UART_DONEHoutputUART数据发送完成应答信号2、 接收器模块接收器模块主要由状态机、串
26、并转换装置和逻辑控制单元组成。主要功能是在检测开始位后,对输入的有效数据进行串行到并行的转换,在接收到的数据到一个字符宽度后将并行数据输出。图 3-4 接收器模块外部接口图表3-3 接收器输入输出信号说明信号输入/输出信号说明输入输出信号定义UART_CLKinputUART时钟UART_RSTinputUART复位信号UART_DATAinputUART数据接收信号REC_DATAoutputUART接收数据并行输出线REC_READYoutputUART数据接收完成应答信号3、 波特率产生模块波特率产生模块主要由计数器、逻辑控制单元和反向器构成。它主要负责由系统时钟生产波特率时钟。图 3-
27、5 波特率产生模块外部接口图表3-4 发送器输入输出信号说明信号输入/输出信号说明输入输出信号定义SYS_CLKinput系统时钟SYS_RSTinput系统复位信号BAUD_RAT_DIVinput波特率分频系数输入UART_CLKoutputUART时钟输出信号4、 总线接口控制模块本设计的数据接口比较简洁,包含两个接口:UART 管脚和同步处理器总线接口。UART 管脚包括发送和接收管脚,能直接通过底层通信协议与计算机进行通讯,也能直接与远程的UART器件进行数据交换。同步处理器数据接口是一个8位并行总线,受UART 控制模块的控制和驱动。由于其端口在后文中有很详细的说明,这里就不再累诉
28、。图 3-6 总线接口控制模块3.2 串行数据发送模块3.2.1 发送顶层模块串行数据发送模块将数据或地址码由并行转换为串行,并从串行总线输出。设计采用有限状态机实现,其顶层模块图如下 图 3-7 UART发送器顶层模块UART transmitter各信号定义: 输入部分: UART_CLK : 波特率时钟,频率是传送波特率的16倍 XMITH :输入使能位,高电平有效 SYS_RST_L : 系统复位,高电平有效时,发送器回到初始工作状态XMIT_DATAH : 并行输入数据,8 bits ,需要传送的数据输出部分: UART_XMITH : 串行输出数据,包括起始位和结束位 XMIT_D
29、ONEH : 每输出一字节数据,变为高电平,提示主机传送完毕 3.2.2 取数控制为了确保数据的同步性和准确性,UART发送器利用两个计数器来控制发送:Xmitbit Counter和Bit_Cell Counter。Xmited bit Counter用来控制发送的数据个数,数据可取,并开始传送时,用Xmited bit Counter来确定何时插入正确的起始位,数据传送完毕,即Xmited bit Counter计数到传送的数据宽度时,插入结束位。而另一个计数器Bit_Cell Counter是为了从寄存器中取数时控制数据位宽而设计的。 图3-8 发送器取数原理图在上图中,T为1 bit数
30、据的位宽,TUA=T/16,为波特率时钟周期。将发送字符中的每一个数据用16倍频的信号去对其抽样,计数器每进行一次循环,就采样1 bit数据,并在将该数据输出。所以在发送字符的数据宽度应为TUA的16倍,而起始位和结束位的位宽可以通过修改配置文件来确定用户需要的数据宽度。3.2.3 发送状态机发送器的主要控制装置为其状态机(State Machine)。分为空闲、取数、发送三个状态。下图为状态机流程图。图 3-9 发送状态机流程图各个状态说明如下:空闲状态:状态机不断检测发送UART使能位,如果使能位为高、UART使能打开,串行发送进入取数状态。取数状态:在此状态,分两个周期从发送寄存器中取出
31、待发送的数据或者地址,然后进入发送状态。发送状态:在此状态,状态机按照九位串行数据的格式依次发送开始位、数据位、地址指示位。待停止位发送完毕后,返回空闲状态。一个字节的数据发送完毕后,进行下一个字节数据的发送流程。发送状态其由R_WAIT的内部信号XMITDATASELH控制,未在图上标出。而X_START、X_STOP分别为起始和结束状态,在此状态,分别为数据添加起始位和结束位。X_WAIT为等待状态,由计数进行控制,计满一个循环后才对寄存器进行移位并取数。在X_SHIFT状态,有效数据被送出。3.2.4 EDA工具验证3.2.4.1综合顶层模块 图3-10 发送器顶层综合图由上图可以看出,
32、综合出来的结果与设计的构想一致,内部层次较为合理。限于篇幅,发送器内部各小模块的综合结果将不再赘述。3.2.4.2发送验证波形图图3-11 发送数据验证波形图上图是由Modelsim仿真得到的验证波形图。限于篇幅,在这里只列出了波形图的一部分,包括传送一字节数据的完整周期。由上图可以看出,在Reset之后,发送器检测到使能位有效,准备传送数据。发送端先插入长度为一个位宽的起始位0,然后将要传送的数据8b01010101从低位到高位逐个输出,即uart_xmitH依次送出1、0、1、0、1、0、1、0,送完数据以后,再插入长度为一个位宽的结束位1,整个字符连同起始位、结束位就传送完毕。起始位和结
33、束位是通过计数器bitcountH来控制的,在计到8以后,该计数器将被置0。而另一个计数器bitcellcount控制位宽,在整个周期内变化太快,未在图中列表里表示。3.3 串行数据接收模块3.3.1 接收顶层模块串行数据接收模块将串行总线上送来的串行数据转换成并行数据并输出,接收逻辑也采用有限状态机实现,接收模块顶层图如下UART Receiver 各信号定义: 输入部分:UART_CLK : 输入波特率时钟,频率为波特率的16倍SYS_RST_L : 输入系统复位信号,高电平有效UART_DATAH : 外部输入的串行数据 输出部分:REC_DATA : 接收并转化得到的8 bit 数据输
34、出REC_READY : 串并转换结束,为高电平,提示外设送下一个数据3.3.2 数据同步装置由于数据异步输入,为了保证在接收器内部处理时,数据在时钟的上升沿稳定,在输入端加入两个串联的D触发器,实现数据的同步:图 3-12 接收器顶层模块图 图 3-13 接收端数据同步装置 其RTL级描述为:always (posedge UART_CLK) if (!SYS_RST_L) begin DATA_T = DATA; /触发第一次 DATA_S = DATA_T; /触发第二次end示意波形图:图 3-14 输入同步示意图3.3.3 数据抽样装置3.3.3.1抽样原理为了使抽样数值更加准确,在
35、每个数据位中间进行三次抽样,即在UART_CLK的计数值为6,8,10时抽样,最后比较收到的0和1的个数,输出抽样次数最多的数据。原理图如下:图 3-15 接收数据抽样原理3.3.4 接收状态机接收逻辑也采用有限状态机实现,分为空闲状态、寻找开始位、接收数据和保存数据四个状态。流程图如下:图 3-16 接收状态机流程图Receiver各个状态说明如下:空闲状态(R_START):在此状态,接收器不断检测UART使能和串行输入信号的状态。如果串行输入信号出现由高到低的电平变化且UART复位信号(低电平有效)为高,则将采样计数器复位,并进入开始位状态。寻找开始位(R_CENTER):在此状态,状态
36、机等待到计数值为6,8,10时,采样串行输入的电平。如果有一次检测到1,表示起始位不稳定,返回空闲状态。否则三次均为0,判断开始位有效,进入接收数据状态。接收数据(R_SAMPLE和R_WAIT):在R_SAMPLE状态,对于接收数据,在脉冲的6 ,8 , 10位置采样三次,较多的电平作为接收的有效数据。而R_WAIT控制依次接收串行数据线上的数据位、地址指示位和停止位,控制何时进入保存数据状态。保存数据(R_STOP):此状态将收到的串行数据以并行方式从接口的并行总线输出,然后返回空闲状态,准备进行下一个字节数据的搜索和接收。3.3.5 EDA工具验证3.3.5.1顶层模块图 3-17 接收
37、器顶层综合结果由上图可以看出,综合结果与设计构想完全一致,各子模块功能、层次较为明确。限于篇幅,各子模块的综合结果不再赘述。3.3.5.2数据接收验证波形图图 3-18 接收验证波形图 上图中,reset后,串行送入数据8h55,在检测到起始位后,读入数据,串并转换,接收完后REC_READY为1,移位后数据为8b01010101,功能正确。3.4 波特率发生器3.4.1 波特率发生器概述UART的接收和发送是按照相同的波特率进行工作的。波特率发生器产生的时钟频率不是波特率,而是波特率的16倍,其目的在于发送时控制准确的数据宽度,接收时进行精确地采样,以接收到准确的数据。波特率时钟是由系统时钟
38、分频后生成的,设计中通过计数器控制来实现。当计数器极计到最大值BAUD_RATE_DIV时,将BAUD_CLK反转,就形成了波特率时钟的方波。BAUD_RATE_DIV的计算式如下:f (UART_CLK) =16 BAUD式1f (UART_CLK) = f (SYS_CLK) / (BAUD_RATE_DIV2) .式2所以,BAUD_RATE_DIV= f (SYS_CLK) / (16 BAUD2)式33.4.2 EDA工具验证3.4.2.1 综合结果图3-19 波特率发生器综合结果3.4.2.2仿真验证波形图图 3-20 波特率验证波形图 本例中,BAUD_RATE_CLK为164,
39、即16进制计数0a3。3.5 总线接口控制模块总线接口控制模块(MP模块)主要控制何时读写数据以及何时生成中断,数据引脚较多,但总共只有两部分:UART 管脚和同步处理器总线接口。 图3-21 MP模块顶层结构图 模块顶层结构如上。MP模块实际就是控制UART各内部信号,控制何时读写寄存器,并在必要时生成中断,以保证UART能够稳定、准确地读写数据,满足数据传输的需要。3.5.1 接口功能描述 MP模块中信号线较多,各信号线又与UART的内部模块互连,现将各接口功能分模块描述如下:1、MP使能信号SYS_RST系统同步复位MP_CLK系统时钟MP_CS_LUART使能信号MP_RD读使能信号M
40、P_WR写使能信号2、 发送相关信号MP_DATA_TO_UART待发送的数据XMIT_DONE发送完毕通知信号MP_DATA_TO_UART发送出的并行信号3、 接收相关信号MP_DATA_FROM_UART接受到的并行信号REC_DATA接收的串行数据REC_READY接收使能信号4、 波特率相关信号 BAUD_RAT_DIV输入到BAUD块中的计数最大值 3.5.2 EDA综合结果 图 3-22 MP模块综合结果第四章 UART的FPGA验证4.1 Xilinx Spartan-3 系列器件介绍Spartan-3系列器件采用Xilinx最成功的Virtex- FPGA器件构架,并利用90nm和12 英寸晶圆工艺生产,芯片大小比0.13m工艺的产品缩小了80。为了优化结构,降低成本,Xilinx对Spartan-3系列器件的内部结构做了部分简化,器件的晶元大小比0.13m工艺缩小了50。这就使得新产品的成品价格比其他厂商的器件降低了80,Spartan-3的性价比大幅度提高。为了能够提供更多的I/O引脚,Spartan-3采用错位的双排I/O引脚结构。该系列产品可提供5万至500万的系统逻辑门,从3.50美元起价,完全满足顾客对低成本解决方案的要求,并把价格降低到可以和ASI