基于FPGA的异步串行通信毕业论文.doc_第1页
基于FPGA的异步串行通信毕业论文.doc_第2页
基于FPGA的异步串行通信毕业论文.doc_第3页
基于FPGA的异步串行通信毕业论文.doc_第4页
基于FPGA的异步串行通信毕业论文.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

摘要摘 要为了适应全数字化自动控制更加广泛的应用,采用FPGA对UART进行多模块的系统设计的方法,使串口通信的集成度更高。对UART系统结构进行了多模块的分解。UART(通用异步收发器)是一种应用广泛的短距离串行传输接口,常用于短距离、低速、低成本的通信中。本文采用Verilog语言设计了一个UART发送模块和接收模块,从而可实现FPGA和PC机的异步串行通。利用Altera公司的EP1C6Q240I8芯片,采用Altium Designer Summer 09画出原理图及PCB图且在QuartusII9.0环境下进行设计、编译、仿真。关键字:UART,FPGA,Verilog,原理图,PCB IABSTRACT ABSTRACTIn order to meet the full digital automatic control is used more and more widely, a systematic design method of FPGA module of UART, the serial communication, a higher degree of integration. The structure of UART system is decomposed multi module. UART (Universal Asynchronous Receiver Transmitter) is a short distance serial transmission interface is a widely used, communication used in short distance, low speed, low cost. This paper describes the design of a UART transmitting module and a receiving module using Verilog language, which can be asynchronous serial FPGA and PC machine implementation. Using EP1C6Q240I8 chip of Altera company, 09 draw the schematic diagram and PCB diagram and design, compile, simulation in QuartusII9.0 environment using Altium Designer Summer. Key Words: UART,FPGA,Verilog,Schematic diagram,PCB 目录 目 录第1章 引言11.1 课题任务11.2 课题要求21.3 研究意义3第2章 设计方案52.1 硬件部分52.1.1 电源模块52.1.2复位电路82.2.1软件工具102.2.2模块流程图13第3章 实现功能描述163.1实现功能描述163.2电路设计163.2.1主要芯片介绍163.2.2原理图设计183.2.3 PCB图设计213.3 软件设计25第4章 调试与实现314.1 调试中遇到的重点和难点314.2 解决方案314.3 实现展示31第5章 总结36参考文献37 第1章 引言 第1章 引言1.1 课题任务本课题任务是使用Verilog语言,写一个异步串行通信(UART)接口,并在FPGA上面仿真实现。Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。异步串行通信(UART)是一种广泛应用的串行数据传输协议,UART的要求是传输线少,可靠性高而且传输距离远。UART功能负责从总线采集数据,转换成传输格式,然后发送到串口。也负责从串口接收数据,检查和删除附加的位,并传送结果数据给总线。异步串行通信广泛的应用于军事、工业、自动控制、仪器、通信、医药、话音图像处理等众多领域。现实应用中多采用专用集成芯片实现UART功能,如8250、825 0A、16450、16C451、16C551等。但在实际应用中,一般只需要UART的几个主要功能,专用芯片成本比较大且造成资源的浪费。近年来随着电子设计技术的日趋成熟,特别是FPGA在集成度和速度上的大幅提高,可以用一个芯片构成一个复杂的系统。一个芯片就能完成处理计算、通信、控制等多功能,而且成本大幅度降低。根据以上考虑,本文采用FPGA实现UART功能。在本文的设计中有着重要作用。FPGA(FieldProgrammableGateArray)现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物跚1。FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域心引。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA,FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。FPGA主要由三种可编程单元和一个用于存放编程数据的静态存储器组成。三种可编程单元是可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块lOB(InputOutputBlock)和互连资源IR(InterconnectResource)口钔。它们的工作状态全部由编程数据存储器中的数据设定,工作时需要对片内的数据存储器进行编程。用户可以根据不同的配置模式,采用不同的编程方式。它是一种大规模可编程逻辑器件,包含大量的单个逻辑单元,它的体系结构和逻辑单元灵活、集成度高以及适用范围宽,并且设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验。FPGA以其突出的优点,减少了电子系统的开发风险和开发成本,缩短了上市时间,通过在系统编程、远程在线重构等技术降低维护升级成本。随着可编程逻辑器件应用的日益广泛,许多IC制造厂家涉足FPGA领域。主要生产厂商有:Altera、Xilinx、Actel、Lattice等。其中Altera和Xilinx主要生产RAM工艺的作为一般用途的FPGA产品。而Actel主要生产采用反熔丝工艺和Flash工艺的非易失性的FPGA产品。本设计采用的FPGA是Altera公司的Cyclone系列的芯片,AlteraCyclone低成本FPGA前所未有地将低功耗、低成本和丰富的功能结合在一起。1.2 课题要求基本的UART通信只需要两条信号线,即RXD和TXD,TXD是UART的发送端,RXD是UART的接收端,接收与发送时全双工工作的。UART是异步通信方式,发送方和接收方分别有各自独立的时钟,传输的速率由双方约定,使用起止式异步协议。起止式异步协议的特点是一个字符一个字符的进行传输,字符之间没有固定的时间间隔要求,每个字符都以起始位开始,以停止位结束。基本的帧格式每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身由5-8bit数据位组成,接着是一位校验位(也可由没有校验位),最后是一位停止位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高点平,这样就保证起始位开始处一定有一个下降沿。数据发送实际就是按照基本UART帧格式将寄存器中的并行数据转换为串行数据,为其加上起始位和停止位,以一定的波特率进行传输。波特率(Baud Rate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。它是对符号传输速率的一种度量,1 Baud即指每秒传输1个符号。在基于FPGA实现通用异步通信时,波特率发生器是一个必不可少的部分。波特率发生器实际上就是一个分频器,可以根据给定的系统时钟频率和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数从而产生所需的时钟频率。在设定发送和接收使用相同的波特率的情况下,UART只需要一个波特率发生器就可以了,波特率可以有多种选择,如9600bit/s、14400 bit/s、19200 bit/s、38400 bit/s等,本文选择的是最常用的9600bit/s。UART的数据接收的首要任务是能够正确检测到数据的起始位,起始位是一位0,它作为联络信号附加发送信息,因为空闲位都为高电平,所以当接收数据线的信号突然变为低电平时,告诉接收端将有数据传送。一个字符接收完毕后,对数据进行校验(若数据包含奇偶校验位),最后检测停止位,以确认数据接收完毕。数据传输开始后,接收端不断检测传输线,看是否有起始位到来。当收到一系列的“1”之后,检测到一个下降沿,说明起始位出现。但是,由于传输中有可能会产生毛刺,接收端极有可能将毛刺误认为是起始位,所以要对检测到的起始位进行判别。一般采用以下方法:取接收端的时钟频率是发送频率的16倍频,当检测到一个下降沿后,在接下来的16个周期内检测接收到的“0”的个数,若“0”的个数超过8个或者10个,则认为是起始位,否则认为不是起始位,继续检测。在检测到起始位后,还需要确定起始位的中间点位置,由于检测起始位采取16倍频,因此计数器到8的时刻即是起始位的中间点位置,在随后的数据位接收中,应恰好在每一位的中间点采样,这样可提高接收的可靠性,接收数据位时可采取与发送数据相同的时钟频率,如果8位数据位、1位停止位的话,则需要采样9次,还需要进行串并转换,完成一个字符的接收。由上述描述中可以知道,异步通信是按字符传输的,每传输一个字符,就用起始位来通知接收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样的一些附加位,使得传输效率降低,只有约80%。因此,起止协议一般用在数据速率较慢的场合(小于19.2Kbit/s)。本课题需要的要求为以48MHZ晶振产生驱动,以产生波特率9600、8位数据位、一位停止位的格式进行数据传送。1.3 研究意义通用异步收发器主要实现功能是接收外设传送的串行数据转换为并行数据同时校验该数据,然后将并行数据提供给处理器处理,或者将处理器发送来的并行数据转换成串行数据同时根据串行通信协议附加上起始位、奇偶校验位以及停止位,然后从串行数据输出端发送出去。用UART来实现传输数据的串/并转换或者并/串转换。目前大部分处理器芯片中都集成了UART功能,但是在FPGA芯片中一般没有集成UART,这增加了FPGA芯片与其它处理器间数据交换的复杂性。为提高FPGA设计的灵活性,我们可以用硬件描述语言编写一个具有UART功能的模块,然后把这个模块配置到FPGA芯片中。由于FPGA的功能日益增大,开发周期短,现场可编程等一系列优点也越来越明显,将需要的UART功能集成到FPGA内部,利用Verilog语言将UART的核心功能集成,去掉一些不必要的管脚,这样既可简化电路又能提高系统可靠性以及稳定性并可以方便的对芯片进行升级或者内嵌到各种不同的FPGA芯片中,方便快捷,使整个设计更加紧凑、稳定、可靠。因此利用FPGA自身的优点来设计设备间串行通信接口具有较高的实用价值和重大意义。 37第2章 设计方案 第2章设计方案2.1 硬件部分本设计的电路框图如图2.1,包含着五个模块,分别是FPGA模块、JTAG电路模块、接收模块、发送模块以及电源模块。其中FPGA模块,在本设计使用的是芯片EP1C6Q24OI8,也是异步串行通讯模块的重要部分。对于JTAG电路而言在本设计中主要起着测试的作用。接收模块和发送模块是本设计的重点,基于FPGA的异步串行通讯的实现,就包括一个接收模块及发送模块,并且在此基础上进行仿真。电源模块在本设计中是分为外部电源电路和FPGA内部供电电源电路来完成供电部分。 图2.1 2.1.1 电源模块本设计需要的电路供电内核需要1.5V供电,I/O则需要3.3V供电所以我们需要1.5V和3.3V两个电源电路如图2.2。3.3V电源直接由主板提供的5V电源经过3.3VLDO芯片SPX1117-3.3并且滤波以后得到。3.3V用于给FPGA所有I/O口、核心板上存储电路、串行配置器件、复位电路和LED等供电,且供电能力最大为800mA。SPX1117系列LDO芯片输出电流可达800mA,输出电压的精度在正负百分之一以内,还具有电流限制和热保护功能。使用时,其输出端需要接一个至少10uF的钽电容来改善瞬态响应和稳定性。SPX1117为一个低功耗正向电压调节器,其可以用在一些高效率,小封装的低功耗设计中。这款器件非常适合便携式电脑及电池供电的应用。SPX1117有很低的静态电流,在满负载时其低压差仅为1.1V。当输出电流减少时,静态电流随负载变化,并提高效率。SPX1117可调节,以选择1.5V,1.8V,2.5V,2.85V,3.0V,3.3V及5V的输出电压。 SPX1117为提供多种3引脚封装:SOT-223,TO-252,TO-220及TO-263。一个10uF的输出电容可有效地保证稳定性,然而在大多数应用中,仅需一个更小的2.2uF电容为了确保SPX1117的稳定性,输出端至少需要一个2.2uF的钽/陶瓷电容或10uF铝电容。其值可以根据输出负载/温度范围的要求变动。ESR的值取决于用来保持稳定的电容类型。建议ESR选取0.5或更小的值。也可以选用一个更大的输出电容值(100uF)以增长负载瞬态响应。在焊接过程中,可以使用无活性剂或微活性剂。SPX1117的输入、输出、及地引脚可能在散热的过程中,导致器件损坏。尽量避免手工焊接及波峰焊接,因为这些方法可能对芯片的热稳定性造成伤害。 温度特性 SPX1117(SOT-223封装)从接点到焊贴片的热阻为15/W,31/W从焊贴片到周围环境,从接点到周围环境的总热阻为46/W。SPX1117的内部热限定功能,可以在一些过载的情况下保护器件。需要注意,当器件处于连续工作状态下,最大接点温度不会超过125。当温度155启动热保护功能,当温度145时,解除热保护功能。采用FR-4印刷电路板,并选取1盎司铜箔厚度的1/16。这种附带焊贴片的PCB材料可以有效地导热,其背面可以作为接地层。图2.1.3为SPX1117的引脚图。1.5V电源由主板提供的5V电源经过1.5VLDO芯片SPX1117-1.5并且滤波以后得到。1.5V只提供给FPGA的内核(VCCINT)以及PLL。 图2.2电源模块供电电源电路内核供电时1.5V,是由主板提供的5V电源经过1.5VLDO芯片SPX1117-1.5并且滤波以后得到的,并且1.5V只提供给FPGA的内核(VCCINT)以及PLL。I/O口供电都为3.3V。如图2.3 图2.3 FPGA 供电电源电路2.1.2复位电路本文原理由于FPGA芯片的高速低工作电压导致其噪音容限低,所以对电源的纹波、瞬态响应性能、时钟源的稳定性和电源监控可靠性等诸多方面也提出了更高的要求,所以本设计采用CAT1025SI-30芯片,如图2.4。 图2.4 复位电路2.2软件部分发送过程就是把并行总线上的数据发送到串行总线上。数据发送的过程可以分为空闲状态、加载状态、发送状态和发送完成状态。空闲状态就是UART内核复位后的空闲状态,等待加载状态。UART进入空闲状态后,当检测到发送控制信号有效时,就进行加载状态并开始进行数据的加载。加载状态就是发送模块按照串行发送的顺序将要发送的这一帧数据加载到移位寄存器内,将移位寄存器和计数器都复位,使移位寄存器和计数器的工作时钟为系统时钟。当计数器达到了计数的上限时,它会产生一个指示信号通知UART内核进入发送状态。UART内核状态机进入发送状态的同时要改变相应信号,这时移位寄存器时钟必须为波特率时钟,最重要的是将输出信号送到RS232的转换芯片SP3232E的发送端口TXD上。在发送状态,也需要计数器的控制,当计数器达到了计数的上限时,它会产生一个信号通知UART内核进入发送完成状态。当UART内核状态机进入发送状态后,并产生发送完成中断信号,如图2.5所示。 图2.5 发送模块数据的接收与数据的发送相比要复杂些。在数据的接收过程中,UART的接收模块首先要进行的是对起始位的检验。一般当接收的第一个是低电平,就标志着一个数据帧的开始,但是在一个数据帧中间也有可能包括一个低电平的位,系统有可能默认为这个低电平为起始位,这样就会产生一个“假的起始位”。所以,在数据接收的过程当中还要包括对数据起始位的判断。所以数据的接收过程可以分为空闲状态、起始位检测状态、数据位读取状态、读取停止状态、准备完成接收和停止位读取状态。在判断起始位低电平后,触发接收过程,进入数据位读取状态使串行总线的输入数据不断被读取并且保存在寄存器内,计数器也到达计数的上限时,接收完成之后并进入准备完成接收状态,UART控制器会在输出结果之前对已经接收的数据进行奇偶校验。然后进入停止位读取状态。在每一种状态,如果使能信号无效时都转回空闭状态。最后UART控制器准备下一次的数据接收并重置控制器内的信号检测器,如图2.6。 图2.6接收模块2.2.1软件工具Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎其主界面如图2.7。 图2.7 Quartus II主界面仿真软件我们使用的是modelsim,Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。ModelSim有几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。本设计采用的是QuartusII 9.0,因为其内置modelsim,较为方便如图2.8。 图2.8 modelsim工具栏电路设计自动化 EDA(Electronic Design Automation)指的就是将电路设计中各种工作交由计算机来协助完成。如电路原理图(Schematic)的绘制、印刷电路板(PCB)文件的制作、执行电路仿真(Simulation)等设计工作。随着电子科技的蓬勃发展,新型元器件层出不穷,电子线路变得越来越复杂,电路的设计工作已经无法单纯依靠手工来完成,电子线路计算机辅助设计已经成为必然趋势,越来越多的设计人员使用快捷、高效的CAD设计软件来进行辅助电路原理图、印制电路板图的设计,打印各种报表。Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。 由于Altium Designer 在继承先前Protel软件功能的基础上,综合了FPGA设计和嵌入式系统软件设计功能,Altium Designer 对计算机的系统需求比先前的版本要高一些。Altium Designer Summer 09的发布延续了连续不断的新特性和新技术的应用过程。这必将帮助用户更轻松地创建下一代电子设计。同时, Altium Designer更符合电子设计师的要求。Altium的一体化设计结构将硬件、软件和可编程硬件集合在一个单一的环境中,这将令用户自由地探索新的设计构想。在整个设计构成中,每个人都使用同一个设计界面。 Summer 09版本解决了大量历史遗留的工具问题。其中就包括了增加更多的机械层设置、增强的原理图网络类定义。新版本中更关注于改进测试点的分配和管理、精简嵌入式软件开发、软设计中智能化调试和流畅的License管理等功能,其主界面如图2.9所示。 图2.9 AD09主界面2.2.2模块流程图本课题包括接收模块和发送模块,如图2.10,2.11分别是发送、接收模块的流程图。图2.10发送模块流程图图2.11 接收模块流程图电子科技大学成都学院本科毕业设计论文第3章 实现功能描述3.1实现功能描述本课题需要的要求为以48MHZ晶振产生驱动,以产生波特率(衡量传送速率的指标)为9600、8位数据位、一位停止位的格式进行数据传送。(发送的数据要符合串行数据的格式,串行通讯的数据格式如图3.1所示。首先发起始位低电平,接着D0-D7发送8位数据,最后发送停止位的高电平。图3.1 基本UART帧格式3.2电路设计本设计是基于FPGA的异步串行通讯模块设计的实现,针对异步串行通讯我们就需要设计一个串口电路,电路图就包含了此次涉及到的主芯片、JTAG部分、电源部分以及时钟部分。详细介绍请看下边两小节。3.2.1主要芯片介绍本文原理图设计主芯片用的是FPGA为Altera公司Cyclone系列的EP1C6Q24OI8这款芯片,它与EP1C6Q240C8功能是一样的,只是一个是用于工业级,另一个则用于消费级。EP1C6Q240C8有240个引脚,采用的是PQFP封装(即Plastic Quad Flat Package,塑料方块平面封装),PQFP封装的芯片的四周均有引脚,而且引脚之间距离很小,管脚也很细,一般大规模或超大规模集成电路采用这种封装形式。 用这种形式封装的芯片必须采用SMT(Surface Mount Technology,表面组装技术)将芯片边上的引脚与主板焊接起来。对于SMT技术,个人理解,即表面组装技术,一般用来焊接一些引脚在几百以上的芯片,比如说BGA,PGA一般都采用这种技术.系统主芯片采用240引脚、贴片封装的E1C6FPGA ,它拥有5980个逻辑单元(LE)和92Kbit的片上RAM,2个高性能PLL 以及多达185个用户自定义IO 。同时,系统还可以根据用户不同的设计需求来更换其它不同系列的核心板,如: EP1C12 、EP2C20 、EP3C25等。所以,不管从性能上而言,还是从系统灵活性上而言,无论您是初学者,还是资深硬件工程师,它都会成为您的好帮手。如图3.2是此芯片的I/O口分配电路图。由于引脚太多,图无法看的很清楚。图3.2 EP1C6Q240I8 I/O口分配电路图SP3232E是RS232收发器对便携式或手持式应用如笔记本或掌上型电脑的一种解决方案。SP3232E有一个高效的电荷泵,工作电压为3.3V时只需0.1F电容就可进行操作。电荷泵允许SP3232E在+3.3V到+5.0V 内的某个电压下发送符合RS-232的信号。SP3232E系列是个2驱动器/2接收器的器件,适用于便携式或手持式设备(如笔记本或掌上型电脑)。SP3232E器件的ESD保护使得驱动器和接收器的管脚可承15kV人体放电模式和IEC1000-4-2 气隙放电模式。SP3232E接收器满足EIA/TIA-232和V.28/V.24通信协议,能应用于用电池供电,便携的手持式设备(如笔记本或掌上型电脑)。SP3232E器件都包含Sipex系列特有的片内电荷泵电路,可从+3.0V+5.5V的电源电压产生2Vcc的RS-232电压电平。该系列适用于+3.3V系统,混合的+3.3V+5.5V系统或需要RS-232性能的+5.0V系统。SP3232E是为便携或手持式应用设计提供的一个2驱动器/2接收器器件。SP3222E/3232E驱动器可以在满载时保持数据速率高达235Kbps。本文的SP3232E是3.3V工作电压的RS232转换芯片。LED用于指示串口的工作状态,如图3.3是SP3232E的管脚配置图。图3.3 SP3232E管脚配置图3.2.2原理图设计(1)JTAG原理图如图3.4所示。JTAG也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数高级器件都支持JTAG协议,如DSP、FPGA器件等。FPGA的JTAG接口信号包括TCK、TDI、TDO、TMS和TRST,它们连接到核心版上的10针JTAG接口。将ByteBlaster II和USBBlaster下载电缆连接到JTAG口,通过Quartus II软件就能直接对FPGA进行配置。通过JTAG接口,利用Quartus II软件可以直接对FPGA进行单独的硬件重新配置。Quartus II软件在编译时会自动生成用于JTAG配置的.sof文件。Cyclone FPGA设计成的JTAG指令比其他任何器件操作模式的优先级都高,因此JTAG配置可以随时进行而不用等待其他配置模式完成。JTAG模式使用的4个专门的信号引脚:TCK、TDI、TDO以及TMS, Cyclone FPGA不支持可选择的TRST引脚。JTAG的3个输入脚TDI、TMS和TCK具有内部弱上拉,上拉电阻大约为25K。与其它配置模式一样,在JTAG进行配置时,所有用户I/O口都为高阻态。表3.5表明了JTAG各引脚的功能。从表3.5中对各引脚的功能描述可以看出,为了在不使用JTAG口时,不影响电路工作,可以将TDI、TMS通过上拉电阻连接到VDD,而TCK通过下拉电阻连接到GND。虽然JTAG的TDI、TMS具有内部弱上拉,但为了可靠,还应该外接上拉电阻。另外,JTAG的电路连接要求将nCONFIG连接到VCC,MSEL0、MSEL1连接到GND(这正好与AS模式电路相同),还要求将DATA0和DCLK置成高或低,由于DATA0和DCLK内部都有弱上拉,所以可以不连接,用户也可以将DATA0和DCLK连接10K的下拉电阻到GND。 Quartus II软件可以验证JTAG配置是否成功。软件通过JTAG接口来检测CONF_DONE引脚信号。如果CONF_DONE不为高,Quartus II软件判定配置失败;否则认为配置成功。当所有的配置数据通过JTAG口传送完毕后,TCK会附加134个时钟来执行FPGA器件的初始化(寄存器和用户I/O初始化)。表3.5 JTAG各引脚功能描述引脚描述功能TDI测试数据输入指令、测试以及编程数据的串行输入。数据在TCK的上升沿移入。如果电路板上的JTAG不需要,可以将该引脚连接到VCCTDO测试数据输出指令、测试以及编程数据的串行输出。数据在TCK的下降沿移出。在没有数据移出时,该引脚是高阻态。如果电路板上的JTAG不需要,可以不连接该引脚TMS测试模式选择 控制信号输入引脚,控制信号决定测试访问端口控制状态的转换。状态的转换出现在TCK的上升沿。因此,TMS必须在TCK上升沿之前建立。如果电路板上的JTAG不需要,可以将该引脚连接到VCCTCK测试时钟输入 边界扫面测试(BST)电路的时钟输入。一些操作发生在其上升沿,一些发生在下降沿。如果电路板上的JTAG不需要,可以将该引脚连接到GND 图3.4 JTAG 原理图(2)SP3232E的原理图如图3.6所示 图3.6 SP3232E原理图(3) 电源滤波电路原理图如图3.7所示 图3.7 电源滤波电路(4) 时钟电路原理图如图3.8所示,本设计包含一个48MHz的有源晶振作为时钟源,为了得到一个稳定、精确的时钟频率,有源晶振的供电电源经过了LC滤波。图3.8 时钟电路3.2.3 PCB图设计(1)器件封装设计器件封装时,使用到的硬件开发工具依然是Altium Designer Summer 09,由于某些器件在器件库中找不到需要的器件时,我们需要动手设计封装库文件,建立自己的期间封装库。对于这些器件我们也必须上网查询此器件的封装尺寸,然后再画出器件封装图。并且检错。直到没有原则性的错误为止。下面是部分主要元器件的封装库截图:如图3.9、3.10、3.11所示。图3.9 SPX1117芯片封装图图3.10 SP3232E芯片封装图图3.11 EP1C6Q240I8芯片封装图(2)设计PCB确认原理图没有错误之后,即可开始制作PCB。首先绘出PCB的轮廓,确定工艺要求及使用几层板等。然后将原理图传输到PCB中来,在网络表(简单介绍各种器件来历及功能)、设计规则和原理图的引导下完成布局布线。设计规则检查工具用于对于绘制好的PCB进行检查。PCB设计是电路设计的另一个关键环节,它将决定该产品的实用性能需要考虑的因素很多,不同的电路有不同的要求。如图3.12、3.13、3.14、3.15所示为网表、导入、布局以及最后整理出来的结果图。图3.12 网表图3.13 导入图3.14 布局图3.15 PCB图3.3 软件设计(1)发送过程代码发送过程就是把并行总线上的数据发送到串行总线上。数据发送的过程可以分为空闲状态、加载状态、发送状态和发送完成状态。空闲状态就是UART内核复位后的空闲状态,等待加载状态。UART进入空闲状态后,当检测到发送控制信号有效时,就进行加载状态并开始进行数据的加载。加载状态就是发送模块按照串行发送的顺序将要发送的这一帧数据加载到移位寄存器内,将移位寄存器和计数器都复位,使移位寄存器和计数器的工作时钟为系统时钟。当计数器达到了计数的上限时,它会产生一个指示信号通知UART内核进入发送状态。UART内核状态机进入发送状态的同时要改变相应信号,这时移位寄存器时钟必须为波特率时钟,最重要的是将输出信号送到RS232的转换芯片SP3232E的发送端口TXD上。在发送状态,也需要计数器的控制,当计数器达到了计数的上限时,它会产生一个信号通知UART内核进入发送完成状态。当UART内核状态机进入发送状态后,并产生发送完成中断信号。这样就可以把数据从串行端口上发送出去了。下边是发送模块的代码及其注释:/*din :输入8位并行数据;rst:复位信号;clk16x:主时钟;start :开始发送信号;tx:输出串行数据;*/module uart_tx(din,rst,clk16x,start,tx);input rst,clk16x,start;input 7:0din;output tx;reg clk_en;reg 7:0sr; /移位寄存器reg clk96; /9.6KHz时钟信号reg tx;reg 3:0state;reg 2:0cnt;always (posedge clk16x)begin cnt=cnt+1;if(cnt=7)clk96=clk96;endalways (negedge clk16x or negedge start or posedge rst)/产生发送使能信号beginif(rst)begin clk_en=1b0;end else if (!start )begin clk_en=1b1;end else if(state=4d12)begin clk_en=1b0;endendalways (negedge clk96 or posedge rst)beginif(rst)begin tx=1b1;sr=8b0;endelse if(state =4b1)begin sr=din;endelse if(state =4d2) /发送起始位begin tx=4d3)&(state=4d10) /发送8位数据,采用状态机方式begin tx=sr0;sr6:0=sr7:1;sr7=1b1;endelse if(state=4b11) /发送停止位begin tx=1b1;endelse tx=1b1;endalways (posedge clk96 or posedge rst or negedge clk_en) /状态转换beginif(rst)state=4b0000;else if(!clk_en)state=4b0000;else state =state +1;endendmodule (2)接收过程代码数据的接收与数据的发送相比要复杂些。在数据的接收过程中,UART的接收模块首先要进行的是对起始位的检验。一般当接收的第一个是低电平,就标志着一个数据帧的开始,但是在一个数据帧中间也有可能包括一个低电平的位,系统有可能默认为这个低电平为起始位,这样就会产生一个“假的起始位”。所以,在数据接收的过程当中还要包括对数据起始位的判断。所以数据的接收过程可以分为空闲状态、起始位检测状态、数据位读取状态、读取停止状态、准备完成接收和停止位读取状态。在判断起始位低电平后,触发接收过程,进入数据位读取状态使串行总线的输入数据不断被读取并且保存在寄存器内,计数器也到达计数的上限时,接收完成之后并进入准备完成接收状态,UART控制器会在输出结果之前对已经接收的数据进行奇偶校验。然后进入停止位读取状态。在每一种状态,如果使能信号无效时都转回空闭状态。最后UART控制器准备下一次的数据接收并重置控制器内的信号检测器。 在接收数据过程中,会有一些其他原因使信号产生反转。产生毛刺,这样的情况下接收端极有可能将毛刺误认为是起始位,为了消除毛刺,在接收数据时,采用检测“0”的个数来确认是否是起始位,也就是取接收端的时钟频率是发送频率的16倍频,当检测到一个下降沿后,在接下来的16个周期内检测接收到的“0”的个数,若“0”的个数超过8个或者10个,则认为是起始位,否则认为不是起始位,继续检测。下边是接收模块的代码及注释/*clk16x:接收时钟 9.6*16kHZ;rx:输入数据;rst:复位信号;dout:输出数据;*/module uart_rx(rx,clk16x,rst,dout);input rx,clk16x,rst;output 7:0dout;reg clk_en;reg 2:0 count; /起始位检测计数器reg 7:0 sr; /移位寄存器reg 7:0 br; /缓冲寄存器reg 3:0 state; /状态标志reg clk96; /9.6KHz时钟reg 2:0 m; /分频计数assign dout = br;always (posedge clk16x or posedge rst) /检测到0,开始计数begin if(rst)count=0; else begin if(rx)&(state=0)count=count+1; else count=0; end end always (posedge clk16x or posedge rst) /产生接收使能信号begin if(rst)begin clk_en=0;end else if(count=7) clk_en=1; else if(state=4d10) clk_en=0;endalways (negedge clk16x ) /产生同步时钟begin if(rst)begin m=0;clk96=0; end else if(clk_en) begin m=m+1; if(m=7)clk96=clk96; endendalways (negedge clk96 or posedge rst) /接收数据,采用状态机设计begin if(rst)begin sr=8b0;br=1)&(state=8) begin sr7=rx; sr6:0=sr7:1; end else if(state =9) begin if(rx=1)br=sr; /接收数据进入缓冲寄存器 end endendalways (posedge clk96 or posedge rst or negedge clk_en) /状态转换begin if(rst) state=4b0000; else if(!clk_en)state=4b0000;else state=state +1;Endendmodule第4章调试与实现第4章 调试与实现4.1 调试中遇到的重点和难点在本设计中重点部分在于代码及其仿真部分,其中代码部分包含发送模

温馨提示

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

评论

0/150

提交评论