资源描述
基于FPGA的RS-232串口通信控制器设计摘要串口是可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议也可以用于获取远程采集设备的数据。通过RS232以实现计算机之间、计算机与设备之间相互通信,目前仍是通讯领域广泛使用的方法之一。几乎每台计算机都有一两个串行接口,用来与调制解调器、实验室设备、工控设备、POS终端等进行数据传输。RS-232以其方便、经济的实现特点,一直深受工程界的青睐。不论是在电力、工控还是电信、金融交通等诸多行业都有广泛的应用。系统主芯片采用RS-232串口通信控制器,由基本时钟发生电路模块,复位电路模块,波特率选择模块,数据帧格式选择模块,串并转换模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,结合FPGA技术高度灵活性与模块化的特点,实现基本RS-232总线通信的功能,以实现串口数据帧结构选择,串并转换,波特率选择等功能。通过软件仿真,得到功能的验证,并进行功能逻辑模块的整合,从而验证设计的可行性与可靠性。关键词: RS-232串口通信控制器;硬件描述语言; FPGA Abstractcommunications between equipment, is still widely used method of communication field. Almost every computer has a serial interface, used and modems, laboratory equipment, industrial equipment, POS terminals, etc for data transmission. With its rs-five 232 convenient, economical realization of engineering characteristics, has been deeply favored. Whether in electric power, telecommunications, financial traffic control or many industries have widely application.The master chip adopt rs-five 232 serial communication controller, the basic clock circuit module, reset circuit happened module, baud rate, data frame format selection module choice module, and conversion module composition string. The compiler and simulation design program, in programmable logic devices on FPGA technology, combining download highly flexible and modular characteristics, basic RS - 232 fieldbus communication function, in order to realize the serial data frame structure, and the conversion of choice, baud rate etc. Function. Through the simulation test, the function and the integration of the logical module function, which verified the feasibility and reliability of the design. Keywords: RS - 232 serial communication controller, Hardware description language, The FPGA目录1 绪论11.1 选题背景11.1.1 课题相关技术的发展11.1.2 课题研究的必要性21.2 课题研究的内容32 FPGA及RS-232简介42.1 FPGA概述42.1.2 FPGA基本结构62.1.3 FPGA系统设计流程82.1.4 FPGA开发编程原理112.2 RS-232概述122.2.1 RS-232电气特性132.2.2 RS-232连接器的机械特性132.2.3 RS-232的接口信号143 RS-232串口通信控制器硬件设计方案183.1 锁相环设计183.2 模式选择模块设计193.3 接收模块设计193.4 发送模块设计214 RS-232控制器软件设计234.1 模式选择模块软件设计234.2 接收模块软件设计244.3 发送模块软件设计265 研究展望28实验结论29致谢30参考文献31附录321 绪论现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic,EDA)技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所设置的功能。因此,键信息输入是与软件结构密切相关的过程。根据键盘的结构不同,采用不同的编码方法。但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。1.1 选题背景本节将从FPGA嵌入式应用开发技术与数字钟技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计数字钟的设计与实现的必要性。 课题相关技术的发展当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上MaxplusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。EDA技术,技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。本设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示计时结果。数字钟可以由各种技术实现,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。因此,本设计采用可编程逻辑器件实现。 课题研究的必要性现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,速度,精准对人们来说是越来越宝贵,在快节奏的生活时, RS-232串口通信控制器给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对科技的要求也越来越高,传统的东西已不能满足人们的需求。 课题研究的内容本设计主要研究基于FPGA的RS-232串口控制器,针对具体设计要求进行原理设计(可在一般电子线路CAD软件,如protel99se上完成),提供电子版电路原理图用Quartus软件进行时序仿真,验证设计性能的可行性与可靠性,并提供相应的仿真效果图采用VHDL语言设计相关的功能化模块,实现串口数据帧结构选择,串并转换,波特率选择等功能。通过具体操作,验证设计的稳定性与操作的灵活性。2 FPGA及RS-232简介2.1 FPGA概述FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,是目前应用最广泛的现场可编程逻辑器件(FPLD)之一。FPGA是一类高集成度的可编程逻辑器件,起源于美国的Xillnx公司,该公司于1985年推出了世界上第一块FPGA芯片。在这二十年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。从最初的1200个可用门,90年代时几十万个可用门,发展到目前数百万门至上千万门的单片FPGA芯片,Xilinx、Altera等世界顶级厂商已经将FPGA器件的集成度提高到一个新的水平。FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。 FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA, FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。2. FPGA的发展历史 早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL,Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。FPGA和CPLD的内部结构稍有不同。通常,FPGA中的寄存器资源比较丰富,适合同步时序电路较多的数字系统;CPLD中组合逻辑资源比较丰富,适合组合电路较多的控制应用。在这两类可编程逻辑器件中,CPLD提供的逻辑资源较少,而FPGA提供了最高的逻辑密度、最丰富的特性和极高的性能,已经在通信、消费电子、医疗、工业和军事等各应用领域当中占据重要地位。因此,本文主要针对FPGA进行阐述。2. FPGA基本结构FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Block)、输入/输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G 、F和H。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G和F,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。2.输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。CLBCLBCLBCLBCLBBCLBCLBCLBCLBCLBCLBCLBCLBBCLBCLBCLB可编程开关矩输入输出模块互连资源图2-1 CLB基本结构3.可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。2. FPGA系统设计流程一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOP DOWN(自顶向下)的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图2-2所示。系统划分编译器代码级功能仿真综合器适配前时序仿真适配器CPLD/FPGA实现适配后仿真模型适配后时序仿真适配报告ASIC实现VHDL代码或图形方式输入仿真综合库器件编程文件图2-2 CPLD/FPGA系统设计流程流程说明:1.工程师按照“自顶向下”的设计方法进行系统划分。2.输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。3.将以上的设计输入编译成标准的VHDL文件。4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。在Quartus II用VHDL实现新建如图2-3所示图2-3新建vhdl5.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。6.利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。2. FPGA开发编程原理硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。CPLD/FPGA软件设计可分为两大块:编程语言和编程工具。编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGA Express、Modelsim、Synposys SVS等)。具体的设计输入方式有以下几种:1.HDL语言方式。HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3种形式。有的软件3种输入方法都支持,如Active-HDL。MAX+plusII 图形输入方式只支持电路原理图描述和波形描述两种。电路原理图方式描述比较直观和高效,对综合软件的要求不高。一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。2.2 RS-232概述EIA RS-232C 是由美国电子工业协会 EIA(Electronic Industry Association)在1969年颁布的一种串行物理接口标准。RS(Recommended Standard)是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232C 总线标准设有25条信号线,包括一个主通道和一个辅助通道。在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。 RS-232C 标准规定的数据传输速率为每秒150、300、600、1200、2400、4800、9600、19200波特。 RS-232C 标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中EIA (Electronic Industry Association)代表美国电子工业协会,RS(recommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。2.2.1 RS-232电气特性EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD上: 逻辑1(MARK)=-3V-15V 逻辑0(SPACE)=+3+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)+3V+15V 信号无效(断开,OFF状态,负电压)=-3V-15V 以上规定说明了RS-232C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在(315)V之间。 EIA RS-232C 与TTL转换:EIA RS-232C 是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA RS-232C 与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTLEIA双向电平转换。 2.2.2 RS-232连接器的机械特性连接器:由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。下面分别介绍两种连接器。 (1)DB-25: PC和XT机采用DB-25型连接器。DB-25连接器定义了25根信号线,分为4组: 异步通信的9个电压信号(含信号地SG)2,3,4,5,6,7,8,20,22 20mA电流环信号 9个(12,13,14,15,16,17,19,23,24) 空6个(9,10,11,18,21,25) 保护地(PE)1个,作为设备接地端(1脚) 注意,20mA电流环信号仅IBM PC和IBM PC/XT机提供,至AT机及以后,已不支持。 (2)DB-9: 在AT机及以后,不支持20mA电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个信号。DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。 电缆长度:在通信速率低于20kb/s时,RS-232C 所直接连接的最大物理距离为15m(50英尺)。 最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。2.2.3 RS-232的接口信号RS-232 的功能特性定义了25芯标准连接器中的20根信号线,其中2条地线、4条数据线、11条控制线、3条定时信号线,剩下的5根线作备用或未定义。常用的只有10根,它们是: (1)联络控制信号线: 数据发送准备好(Data set ready-DSR)有效时(ON)状态,表明MODEM处于可以使用的状态。 数据终端准备好(Data terminal ready-DTR)有效时(ON)状态,表明数据终端可以使用。 这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。 请求发送(Request to send-RTS)用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。 允许发送(Clear to send-CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。 这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。 接收线信号检出(Received Line detection-RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。 振铃指示(Ringing-RI)当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。 (2)数据发送与接收线: 发送数据(Transmitted data-TxD)通过TxD终端将串行数据发送到MODEM,(DTEDCE)。 接收数据(Received data-RxD)通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。 (3)地线 : GND、Siq.GND保护地和信号地,无方向。 上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。 2个数据信号:发送TXD;接收RXD。 1个信号地线:SG。 6个控制信号: DSR 数传发送准备好,Data Set Ready。 DTR 数据终端准备好,Data Terminal Ready。 RTS DTE请求DCE发送(Request To Send)。 CTS DCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。 DCD 数据载波检测(Data Carrier Detection),当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收, 并且由DCE将接收到的载波信号解调为数字信号, 经RXD线送给DTE。 RI 振铃信号(Ringing),当DCE收到对方的DCE设备送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。 由于RS232接口标准出现较早,难免有不足之处,主要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率20Kbps。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺(实际15米)。3 RS-232串口通信控制器硬件设计方案 在RS-232串口通信控制器设计中,一共包括锁相环,模式选择,接受模块和发送模块设计四部分。3.1 锁相环设计压控振荡器(用来产生信号),故名思议是根据输入的信号的电压(该电压是输入信号与标准信号的误差)来调整控制他本身输出信号的频率和相位(频率的变化会导致相位的变化),因为是个环路,所以然后再与输入信号比较,直至没有误差时,这时压控振荡器的输入为零,那么其输出就不变了。从而能稳定锁住输入信号的相位,故名锁相环。锁相环如图3-1所示。图3-1 锁相环设计流程锁相环由鉴相器、环路滤波器和压控振荡器组成。鉴相器用来鉴别输入信号之间的相位差 ,并输出误差电压。误差电压中的噪声和干扰成分被低通性质的环路滤波器滤除 ,形成压控振荡器(VCO)的控制电压。控制电压作用于压控振荡器的结果是把它的输出振荡频率。振荡频率拉向环路输入信号频率,当二者相等时,环路被锁定 。锁相环在图中的用途是可以在收、发通信双方建立载波同步或位同步。可以使时钟倍频增加,例如从图中的25MHz变成50MHz可以使时钟的相位稳定3.2 模式选择模块设计图3-2 模式选择设计流程模式选择模块实现对于按键模式输入进行判断,对于不同输入命令,进行解析,得到发送与接收使能模式输出,使功能实现时分操作的目的。模式选择模块输入协议分为以下两类:1 如果输入值是0B01时,接收模块使能输出,同时,屏蔽发送模块使能;2 如果输入值是0B10时,发送模块使能输出,同时,屏蔽接收模块使能。模式选择模块实现“软件开关”的作用,在每一功能时刻,保证串口控制器工作在一种模式之中,防止软件程序“竞争”,从而造成“死锁”现象发生,充分保证设计的安全性与运行的可靠性。3.3 接收模块设计串口接收模块针对于接收串行数据进行协议包的解析,实现串行数据输入,并行数据输出的功能,从接收判断的角度,实现了对于串口协议的解析功能。串口接收模块,输入控制信号分为:1 16位波特率分频系数输入端:其值表示对于系统50Mhz时钟分频的结果,实现对于不同波特率产生的分频输入,可以方便调节不同模式下的波特率,实现参数化设计。2 2位数据位输入控制位:当前输入表示串口控制协议中,数据位的宽度,其中“01”表示数据位为7位,“10”表示数据位为8位,“11”表示数据位为9位,“00”表示当前设置无效。3 2位校验位输入控制位:当前输入表示串口控制协议中,校验模式的选择,其中 “01”表示奇数校验,“10” 表示偶数校验,“11” 表示无校验,“00”表示当前设置无效。 4 1位停止位输入控制:当前输入表示串口控制协议中,停止位的模式选择,其中“0”表示1位停止位,“1”表示2位停止位。串口接收模块,输出控制信号分为:1 数据有效信号:0表示数据无效,1表示数据有效2 并行9位输出数据:表示当前串口协议解释后,7至9位并行数据输出。图3-3 接收模块设计3.4 发送模块设计串口发送模块针对于接收并行数据进行协议的组包设计,实现并行数据输入,串行数据输出的功能,从发送的角度,实现了对于串口协议的组合功能。发送模块设计与接收模块类似,依然针对波特率,数据位,校验位,停止位进行控制,实现全双向的串口通信控制功能。图3-4发送设计流程串口发送模块,输入控制信号分为:1 16位波特率分频系数输入端:其值表示对于系统50Mhz时钟分频的结果,实现对于不同波特率产生的分频输入,可以方便调节不同模式下的波特率,实现参数化设计。2 2位数据位输入控制位:当前输入表示串口控制协议中,数据位的宽度,其中“01”表示数据位为7位,“10”表示数据位为8位,“11”表示数据位为9位,“00”表示当前设置无效。3 2位校验位输入控制位:当前输入表示串口控制协议中,校验模式的选择,其中 “01”表示奇数校验,“10” 表示偶数校验,“11” 表示无校验,“00”表示当前设置无效。 4 1位停止位输入控制:当前输入表示串口控制协议中,停止位的模式选择,其中“0”表示1位停止位,“1”表示2位停止位。串口发送模块,输出控制信号分为:1 数据输出有效指示信号:0表示数据无效,1表示数据有效2 串行输出数据:表示对于控制协议解析后,对于原配置并行数据的串并转换后的协议输出。4 RS-232控制器软件设计本设计基于VHDL语言设计,实现了基于FPGA的硬件逻辑设计,从设计方式上,具有高度的灵活性,与可移植性,便于系统二次开发与项目集成整合,符合未来发展趋势。其中,软件设计内容,主要针对于不同模块进行说明,对于RS-232工作过程,进行匹配解析。 模式选择模块软件设计 模式选择模块整体工作流程如图4-1所示:图4-1模式判断模块工作流程模式判断模块的软件程序,主要包括以下实体部分:entity mode_sel isport( clr: in std_logic; clk: in std_logic; mode_sel: in std_logic_vector(1 downto 0); receive_enable : out std_logic; send_enable : out std_logic );end entity mode_sel;其仿真波形图,如图4-2所示:图4-2模式判断模块仿真波形图 接收模块软件设计当模式判断为接收模块,就先要对接收来的数据进行判断。具体过程:第一步输入数据产生波特率(表示对于时钟的分频), 产生波特率时钟然后进入数据指示,0表示数据无效,1表示数据有效;如果有效就进入指示模块工作启示。第二步在一起正常的时候就进行起始位寄存器,先判断起始位,判断起始位几个周期,一般只有1到2位起始位;然后进入数据寄存器,判断有几位数据(一般是8-10个),01表示7位,10表示8位,11表示9位,00表示无效,然后输出数据,7至9位并行数据输出;再进入校验寄存器,如果是01表示奇数校验,10表示偶数校验,11表示无校验,00表示无效;最后到停止位寄存器,判断停止位有多长,0表示1位,1表示2位。第三步实现串行数据转换成并行数据,然后就将其数据进行提取,提取的数据在判断校验是否有效,如果校验的数据有效就进行输出,若无效就结束。接收模块的软件程序,主要包括以下实体部分:entity rec_judge isport( clr: in std_logic; clk: in std_logic; judge_enable: in std_logic; data_input: in std_logic; baud_rate : in std_logic_vector(15 downto 0); data_bit : in std_logic_vector(1 downto 0); check_bit : in std_logic_vector(1 downto 0); end_bit : in std_logic; data_valid : out std_logic data_output: out std_logic_vector(8 downto 0)、 );end entity rec_judge;其中,clr为复位信号输入,clk为50Mhz系统时钟输入,judge_enable为接收使能控制信号输入,data_input为串行输入数据。 其仿真波形图,如图4-3所示:图4-3 接收模块仿真波形图 发送模块软件设计当模式判断为发送模块,就先要对发送来的数据进行判断。具体过程:第一步输入数据产生波特率(表示对于时钟的分频), 产生波特率时钟然后进入数据指示,0表示数据无效,1表示数据有效;如果有效就进入指示模块工作启示。数据长度是13位最大;第二步在一起正常的时候就进行起始位寄存器,先判断起始位,判断起始位周期,一般只有1到2位起始位;然后进入数据寄存器,判断有几位数据(一般是8-10个),01表示7位,10表示8位,11表示9位,00表示无效,然后输出数据,7至9位并行数据输出;再进入校验寄存器,如果是01表示奇数校验,10表示偶数校验,11表示无校验,00表示无效;最后到停止位寄存器,判断停止位有多长,0表示1位,1表示2位。第三步实现把并行数据转换成串行数据,将其数据进行打包,最后把打包的数据进行输出,然后就结束。发送模块的软件程序,主要包括以下实体部分:entity send_judge isport( clr: in std_logic; clk: in std_logic; judge_enable: in std_logic; data_input: in std_logic_vector(7 downto 0); baud_rate : in std_logic_vector(15 downto 0); data_bit : in std_logic_vector(1 downto 0); check_bit : in std_logic_vector(1 downto 0); end_bit : in std_logic; data_valid : out std_logic; data_output: out std_logic );end entity send_judge;其中,clr为复位信号输入,clk为50Mhz系统时钟输入,judge_enable为接收使能控制信号输入,data_input为并行输入数据。 其仿真波形图,如图4-4所示:图4-4 发送模块仿真波形图5 研究展望本设计中虽然有控制键对时钟进行控制,但是用到的按键太多,在实际应用上存在不足。故提出改进方案为用一个按键控制数码管的片选,再用两个按键控制计数的加减。这样可以节省按键资源,以供更多的功能的使用。本设计是采用硬件描述语言和FPGA芯片相结合进行的数字钟的研究,从中可以看出EDA技术的发展在一定程度上实现了硬件设计的软件化。设计的过程变的相对简单,容易修改等优点,相信随着电子技术的发展,RS-232串口通信控制器通过具体操作,验证设计的稳定性与操作的灵活性,它的功能会更加多样化,满足人们的各种需要。通过具体操作,验证设计的稳定性与操作的灵活性。实验结论在此次的RS-232串口通信控制器设计过程中,更进一步地熟悉有关数字电路的知识和具体应用。学会了利QuarterII软件进行原理图的绘制,硬件描述语言VHDL的编写,程序的仿真等工作。并能根据仿真结果分析设计的存在的问题和缺陷,从而进行程序的调试和完善。在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,例如在对具体模块的仿真的过程中,往往没有考虑到整体设计的层面以及与上下模块接口的设计。再加上器件对信号的延时等问题,实际下载到实验箱上后会出现一系列的问题,因此仿真图和电路连接图还是有一定区别的。此次的数字钟设计重在于按键的控制和各个模块代码的编写,虽然能把键盘接口和各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设计还有一定的缺陷和不足。总的来说,通过这次的设计实验更进一步地增强了实验的动手能力,对数字钟的工作原理也有了更加透彻的理解。在本设计调试过程中遇到了一些问题如下:1. 在进行系统的软件设计时,在保证程序功能的前提下,尽量采用指令字节少和执行时间短的指令,以减少程序占用空间和程序执行时间。2在设计各个程序模块时,需要对各个模块进行划分。模块的划分有很大的灵活性,但也不能随意划分,模块划分时应遵循每个模块应具有独立的功能,能产生明确的结果,这就是单模块功能的高内聚性。3. 模块说明应包括实现模块功能所用的基本算法,模块入口算法,出口参数,模块的数据结构及调用子程序等。一半有了层次图和模块说明后,划分模块的工作也就算完成了。.致谢在论文完成之际,我首先要向指导老师姜凯老师表示最真挚的谢意。姜凯老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。无论在理论上还是在实践中,都给与我很大的帮助。在理论上,老师耐心讲解电路原理图的绘制,以及元器件的性能;在实际操作中,从系统的设计到最终系统的调试,老师都给予了诸多帮助,使我得到不少的提高,这是在这次设计中我所得到的最宝贵的财富。对于我以后的工作和学习都是一种巨大的帮助,感谢他耐心的辅导。在这次毕业设计中,我的专业知识水平也取得一定的进步。而这些进步都离不开老师和同学的帮助。在此我向曾经帮助和关心我的老师和同学致以诚挚的感谢。由于本人学识有限,加之时间仓促,文中不免有错误和待改进之处,真诚欢迎各位师长、同学提出宝贵意见。参考文献1 刘君,常明,秦娟,基于硬
展开阅读全文