基于AMBA总线的UART IP设计与实现——学士论文_第1页
免费预览已结束,剩余2页可下载查看

下载本文档

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

文档简介

哈尔滨理工大学学士学位论文基于AMBA总线的UART IP设计与实现摘 要当今社会,集成电路产业对整个社会的发展有着很大的影响。集成电路产业也是如今国家重点发展的产业。随着半导体技术的发展,芯片上电路的集成度越来越高,基于IP核的SOC设计已经成为集成电路设计的主流。其中IP软核的灵活性很好,对于复杂的IC设计,IP软核是绝佳的选择。本文针对可重构媒体SOC芯片系统功能的需求,在深入研究了AMBA总线接口协议和UART接口协议基础上,设计了基于AMBA总线的UART的IP设计与实现。本设计采用AMBA总线中的APB总线作为片上总线,为了与外围设备进行数据通信,设计了与总线接口的UART收发控制器、发送器、接收器以及中断控制器。使用硬件描述语言Verilog对设计进行编写,结合有限状态机的方法来实现本设计的要求,并通过了代码的功能验证。本设计是基于IC设计流程进行的,在完成了前端的设计验证的同时,也完成了后端流程中的逻辑综合、布局布线、形式验证和静态时序分析。布局布线后core的面积为73692.9um2。工作频率为200MHz。关键词AMBA;APB;UART;SOCI- -Design and Implementation of UART IP Based on AMBA BusAbstractNow, the integrated circuit industry has a great influence on the development of the society. Its very important to develop the integrated circuit industry for the whole country. With the development of semiconductor technology, the integration of circuit on chip is higher and higher. IP core based SOC design has become mainstream of IC design. And the flexibility of IP soft core is very well. IP soft core is an excellent choice for a complex IC design.In order to meet reconfigurable system functional requirements of the Media-SOC-chip, making the Design and Implementation of UART IP based on AMBA bus, after making a deep study of the AMBA bus interface protocol and UART interface protocol.This design uses APB of AMBA bus as the on-chip bus. In order to perform data communication with peripheral equipment, we designed a UART bus interface controller, a transmitter, a receiver, and an interrupt controller. Using the hardware description language to implement the design, with the Finite-state machine to satisfy the design requirements. And the functional verification has achieved.The implementation is based on IC-design flow. Not only front-end design verification but also accomplished a complete the back-end process which includes logic synthesis, formal verification, placement, routing and static II- -timing analysis. The core area is 73692.9um2. Its working frequency is 200MHz.KeywordsAMBA, APB, UART, SOC III- -目 录摘要IAbstractII第1章 绪论11.1 课题背景11.2 研究意义21.3 国内外研究现状分析21.3.1 SOC技术31.3.2 串行通信41.4 论文研究的主要内容5第2章 AMBA总线与UART接口72.1 AMBA总线72.1.1 AHB总线72.1.2 ASB总线92.1.3 APB总线92.2 UART传输协议112.2.1 UART简介112.2.2 UART通信协议122.3 本章小结12第3章 设计方案的实现133.1 方案设计133.1.1 收发控制器133.1.2 发送器143.1.3 接收器143.1.4 中断控制器143.2 模块的设计与实现143.2.1 收发控制器143.2.2 发送器163.2.3 接收器193.2.4 中断控制器213.3 功能仿真验证223.3.1 发送数据波形仿真结果分析223.3.2 接收数据波形仿真结果分析233.4 本章小结24第4章 物理设计254.1 逻辑综合254.1.1 Design Compiler工具介绍254.1.2 综合过程264.1.3 综合结果分析284.2 布局布线324.2.1 参数设置以及芯片利用率334.2.2 时序报告与验证报告344.2.3 版图354.3 形式验证384.3.1 逻辑综合后形式验证394.3.2 布局布线后形式验证404.4 静态时序分析414.5 本章小结42结论44致谢45参考文献46附录A48附录B54- V -第1章 绪论1.1 课题背景本文是以国家高技术研究发展计划信息技术领域的重点项目可重构移动媒体处理核心技术为研究背景。具有一下特征的嵌入式可重构处理器是当下和将来高性能并行移动计算的技术和移动媒体处理的研究发展方向。这些特征包括具有多种媒体方式处理、扩展性大、性能高,而且自身还具有低功耗特征。这类嵌入式可重构处理器的体系结构应当既具备通用构造的灵活性,同时要具有定制构造的高效性,其在高密度信号处理的SOC(System-on-Chip)应用领域具有十分广阔的发展前景。可重构媒体SOC是支持32位性能较高的具有高清解码功能的一款SOC芯片。其预期目标希望能够实现对一系列的可重构处理核心技术的掌握,这些技术包括可重构机理、新型系统架构和集成开发环境等。这些技术的研究都是为了国家开发重大项目能够有足够的技术储备,能够为我国在新一代并行移动计算技术产业和移动媒体产业的发展提供强有力的技术支持。可重构媒体SOC芯片的体系结构图如图1-1所示。调试接口功耗控制AHB总线控制器最小系统REmus锁相环PLL复位控制AHB总线ARM1 136AHB接口AHB主机口LCD控制器APB从机口外部存储器接口EMI控制器TS流接口控制器AHB DMA控制器AHB-APB控制器SD卡接口控制器APB总线PS2I2CIRUARTGPIO音频输出接口定时器图1-1 可重构媒体SOC芯片的体系结构图从上图可以看出,可重构媒体芯片(SOC芯片)主要包括这几个部分:ARM(Advanced RISC Machines)内核、片外存储系统、AHB(Advanced High Performance Bus)主机部件、AHB(Advanced Peripheral Bus)从机部件和APB从机部件。这个芯片能够实现的功能很多,并且能够提供很多的外围设备接口类型,也正是由于它具有大量的外围设备资源,因此对于媒体处理、有线通信和多通道无线通信的应用的需要,这款芯片可以更好的满足。本设计研究的通用异步收发传输器UART就是可重构媒体SOC芯片的众多外围设备中的一种,它可以用作集成于微处理器中的周边设备和独立的模块化芯片。其英文全称为Universal Asynchronous Receiver/Transmitter。UART设备与CPU、DMA的进行的数据通信是在其芯片内部通过AMBA(Advance Microcontroller Bus Architecture)总线来实现的,与外部连接的接口标准一般与RS-232C规格相同,通常情况下是选择的搭配对象是按照其标准信号幅度变换的芯片。UART主要的应用领域是PC机的操作系统的升级,对于传输速率要求不高的数据,UART就可以满足设计的要求。1.2 研究意义在可重构媒体SOC芯片中,UART(通用异步收发传输器)是PC机与CPU核之间连接的纽带,在芯片操作系统的升级中扮演着不可替代的角色。而UART还有更值得与研究设计的一点,对于串行数据传输速率要求的不太高的设备,使用UART进行通信是性价比更高的绝佳选择。接口简单、占用资源空间小、标准化、易于控制、易于实现软硬件模块化等都是串行总线设备所具有的优点。正是由于其的这些优势,使得UART在诸多领域都被广泛的使用,例如语音、图形图像、仪器仪表等。因此,研究设计一个高性能的UART设备,使其能够满足可重构媒体(SOC)芯片对规模大、来源广泛、实时性要求更高的数据传输,在整个可重构媒体芯片的设计中,甚至是国家高技术研究发展计划信息技术领域的重点项目,也就是作为本设计研究依据的嵌入式可重构移动媒体处理核心技术都有着十分重要的意义。1.3 国内外研究现状分析集成电路(Integrated Circuit)的发展到现在为止已经有了几十年的历史,它一直都在按着摩尔提出的规律增长。提出的规律是集成电路中晶体管的数目增加一倍的周期为18个月1。更新一代的时间周期大概是两到三年。造成这种现象的原因是器栅长在不断的减小,减小的规律基本上是按照等比例减小的规则,并且在一定程度上有利于提高其它的一些工艺参数。按照这一规律,集成电路的基本单元CMOS(Complementary Metal Oxide Semiconductor)器件已经进入到了超深亚微米甚至是纳米加工时代。纳米加工是指器件的栅长小于50nm。为了满足信息市场的需求、微电子产业的发展需求,必须把集成电路的特征尺寸尽可能的不断的缩小,发展多种工艺集成技术,并且这些技术都应该具有的特点是微细加工。生产面向应用的系统级芯片。在上个世纪末,SOC技术开始兴起,并且一直都在随着半导体工艺技术的发展而发展,IC设计者们在单个硅片上开始集成更加复杂的功能,SOC正是在集成电路(Integrated Circuit)向集成系统(Integrated System)转变的大方向下产生并不断发展的2。所谓的SOC(System-on-a-Chip)即为系统级芯片,通常也被叫做片上系统。它既是一个产品,也是一个集成电路。它包含着完整的系统,并且有嵌入软件的全部内容。它又是一门用来完成从确定系统功能开始一直到软硬件划分且完成全部设计的完整的过程的技术。1.3.1 SOC技术SOC技术具有两个与其他技术相比的巨大优势:集成度高和固件化。SOC技术设计系统的核心思想是将整个电子系统都集成在同一个芯片上。如果使用SOC技术来设计所需的应用系统,所有的系统电路必须全部都集成在一个芯片,但是这之中不包括那些不能够集成的机械部分和外部电路3。SOC是一个微型系统,用一个比较恰当的比喻来说,可以将中央处理器CPU比作人的大脑,SOC(片上系统)就是包括人的大脑、肺、心脏、手和脚的系统。国内外学术界都习惯于把SOC定义成为一个同时集成了微处理器、数字IP核、模拟IP核和片外存储控制接口的芯片系统。一般情况下它是客户定制的,是面向某些专用用途的一种标准化产品。具体来说,软硬件协同设计技术、IP核可复用技术、总线架构技术、SOC验证技术、低功耗设计术、可测性设计技术和超深亚微米电路实现技术都是SOC设计的核心技术4。另外,SOC技术还包括嵌入式软件移植等。SOC可以大量的使用已经存在的设计,从而明显地提高了整个ASIC(专用集成电路)领域的设计能力,这也是其发展迅速的最主要原因,并且引起了工业界、学术界两大领域的强烈的关注。随着社会的进步,微电子技术和SOC芯片处理技术也在不断地发展,如今已经可以合并成一个“单片系统”,从而进一步的提高芯片上电路的集成度,降低生产成本。这个SOC芯片是一个具有多个处理器核心的单片集成系统,并且在其中包含有CPU主处理器,集成的核心的类型有:专用集成电路类的硬核、DSP软核、协处理器类的软核以及某些专用处理的子系统。更值得大家注意的是它集成有丰富的外围设备。SOC技术已经是集成电路发展的必然趋势,SOC技术具有很多其他技术不具备的特点,具体的包括半导体工艺技术的系统集成、软件系统和硬件系统的集成。SOC技术也有着它的巨大优势,它能创造其产品不可估量的价值,同时能满足如今社会最求的耗电量低、体积小、系统功能强大、速度快,成本低廉的市场需求。当下,很多半导体方案提供商都在慢慢的开始使用SOC技术,提高集成度、使用先进工艺、降低成本、提高系统性能都成为决定半导体方案提供厂商市场竞争力的决定因素。每一次更新出的SOC技术据能够更高效地利用资源,实现资源优化和共享。并且每个子系统的协同工作能力也能不断的提高,致力于在提高产品可靠性的同时,不断的减小产品的成本和功耗。事实上,集成系统级芯片主要含有软、硬件的协同设计技术、IP模块库技术和模块界面间的综合分析技术。这三个技术是核心的支持技术。若想要系统级芯片作为主要特征的信息技术持续不断的更新就必须将这三个支持技术进行不断的更新。在21世纪,SOC技术正在不断的普及,这也真正是SOC技术飞速发展的时代。主控CPU不断的更替、视频协处理器能力的不断增强、DSP资源的充分利用以及且可以同时支持定点和浮点运算,这些在证明SOC芯片的发展趋势越来越强。未来的发展不可估量,还有更多的像是UART、DVI、SATA、PCI-E等等高性能外围设备接口将会被集成到同一个芯片中来,构成更加完美的“单片系统”芯片。1.3.2 串行通信如今,被人们所熟知的串行通信技术标准是由美国电子工业协会提出的RS-232、RS-422以及RS-485,也就是EIA-232、EIA-422以及EIA-4855。在工业通信领域习惯将称之为RS-232、RS-422以及RS-485,它们是串行数据接口标准。美国电子工业协会在1962年发布的RS-232,在之后不断的又推出了一些其他的版本。在其发布的这些标准中,RS-232-C是如今最受欢迎、最常用的版本。如今,在通信工业中,与PC机通信使用频率最高的串行接口仍然是RS-232。RS-232是一种在串行通信中对数据传输速率要求不高,但对数据通信距离要求相对较高的单端标准。不平衡的单端通信方法是RS-232采取的数据传输方式,它的传送距离可以达到15米左右,最高的数据传输速率可以达到20kbps6。RS-232对于传输距离不高的还可以满足,但是距离相对再远一些的就不适用了,因此EIA有更新发布了RS-422接口标准。平衡通信方法是RS-422采用的数据传输方式,它制订了双端通信接口标准。RS-422的数据传输速率可以达到10Mbps,传输距离也可以增加到大约1219米,与RS-232相比,大大的提高了数据传输速率和传输距离。其在一条平衡总线上最多可以连接的接收器可以达到10个左右7。RS-422也存在着一些缺点,它的传输速率越大,平衡双绞线的长度就越小,它们两个是成反比的。只有在数据传输速率小于100kbps时,传输距离的最大值才有可能达到。换句话说,距离和数据传输速率想要都达到最佳的效果还是个未完全实现的目标,虽然RS-422相对RS-232来说,性能方面提高了很多,但是其也只有在短距离传输时,传输速率才可以达到最快。一般传输速率达到最大的1Mbps时,双绞线的长度大约在100米左右。除此之外需要指明的一点是,在RS-422通信中可以有主设备(Master)个数一个,而从设备(Salve)多个。虽然从设备可以是多个,但是他们之间是不能进行数据通信的,因此RS-422支持的是一对多的双向通信。为扩展应用范围,在1983年美国电子工业协会有发布了RS-485标准,在RS-422的基础上允许同一条总线上同时连接多个发送器,实现了多点双向的通信能力8。在发送器的驱动能力和冲突保护特性这两个方面有了明显的提高,同时增加了总线共模范围。现在也叫RS-485-A标准。通过改进了一些性能而发展来的RS-485,在很多电气规范方面与RS-422的规范都相差不大,他们都采用数据传输方式都为平衡传输,需要在传输线上接电阻9。传输的距离最高可以达到1220米左右,数据传输的最高速率可以达到10Mbps左右。但是,RS-485与RS-422不同的地方是其可以采用二线与四线方式。如果想要真正的做到可以多点双向通信,需要采用二线连接方式。采用四线连接时,虽然同样只能实现一对多的通信,但是RS-485采用的二线连接方式和四线连接方式在总线上都可以接32个设备。1.4 论文研究的主要内容本设计完成了基于AMBA总线的UART的IP设计与实现。研究的主要方面如下:SOC技术和AMBA总线协议、UART通信协议。通过对系统功能的分析,研究了APB总线与UART设备之间通信的过程。分别设计了APB_UART收发控制器,接收器和发送器。APB_UART收发控制器根据APB总线发出来的信号,如时钟信号、使能信号、选择信号、地址信号等进行工作。APB总线通过输送给UART不同的地址信号来控制其不同的工作方式。本设计根据IC设计流程完成了前端设计和后端设计。前端设计通过使用QuartusII软件和Modelsim软件实现了RTL级代码的编写及验证,完成了APB总线和UART接口功能、结构以及其串行通信的数据传输协议的设计。后端流程中完成了逻辑综合、布局布线、形式验证以及时序分析,分别用到的工具是Design Compiler、SOC-Encounter、Formality和PrimeTime。论文的具体安排如下:第二章主要介绍了AMBA总线协议,并对UART接口的通信协议进行了详细的描述。第三章主要讲述了本课题的设计方案和IC设计流程中到前端流程部分。详细介绍了设计的收发控制器、发送器、接收器和中断控制器以及其实现的方法。并给了前端仿真结果。第四章主要叙述了IC设计流程中的后端流程部分。给出了后端流程中逻辑综合、布局布线、形式验证以及静态时序分析的结果,并对结果进行了解释说明。第2章 AMBA总线与UART接口2.1 AMBA总线AMBA片上总线是ARM公司研发推出的。AMBA总线提出了一种独特的机制,可以在其他IP芯核和外设中集成RSIC(Reduced Instruction Set Computer)处理器。AMBA除了作为一种总线存在以外,它还是带有接口模块的完整的互连体制。AMBA 2.0版标准定义了三组总线:AMBA高性能总线AHB、AMBA系统总线ASB(Advanced System Bus)和AMBA外设总线APB。AMBA总线的基本结构如图2-1所示。AHB/ASB高带宽外部存储接口High-bandwidth external menory interface高性能ARM处理器高带宽片内RAM High-bandwidth on-chip RAMBRIDGEDMA bus masterUARTTimerKeypadPIO(外围IO设备)APB bridge图2-1 AMBA总线的基本结构2.1.1 AHB总线AHB总线接口中的一种,被作为高性能总线的它具有以下特性:1突发连续传输2分布传输3单周期内主控制器处理4单时钟边沿操作5非三态操作6支持64位,128位总线宽度7支持字节、半字和字的传输CPU、高速RAM、DMA等这些性能较高的模块之间都是通过AHB总线实现各个接口之间的连接的。AHB系统由3部分组成,这三个部分分别是主模块、从模块以及基础结构,AHB总线上的数据传输命令均从主模块向外发出,而从模块负责做出相应的响应。系统的基本结构有以下几个部分构成:仲裁器、主从模块的两个双向的多路选择器、译码器以及虚拟主模块和从模块。其结构图如图2-2所示:仲裁器Arbiter主模块到从模块的多路选择器MUX_M_S从模块到主模块的多路选择器MUX_S_M译码器DecoderLCDARMREMUSSDDMADMASDAPBTSIEMI图2-2 AHB系统结构图AHB主控制器:总线上只能存在一个主控制器,它通过不同的地址信号和控制信号来进行初始化、读、写等操作。AHB从设备:从设备是用来响应主控制器发出的命令,并将执行命令后的操作的成功与否反馈给主控制器。AHB译码器:与主控制器相同,总线上只能存在一个译码器。它的功能是解析在总线上传输的地址信号和控制信号。AHB仲裁器:与主控制器相同,总线上只能存在一个仲裁器。他的功能是根据用户的配置信息,保证同一时间在总线上只用一个主控制器具有操作总线的权限。在任意的一个时间周期中,只允许一个主控制器接入总线,对该主控制器规定好的从设备进行读操作和写操作。总线统一规划从设备的地址,译码器根据地址选择指定的从设备与主控制器进行数据通信。授权访问机制的实现方法是使用多路选择器进行选择,多路选择器判断哪个传输给地址来选择哪个主控制器接入总线的依据是已经被选择授权的主控制器次序10。地址译码器通过需要访问的地址来选择相应的主控制器,并且可以同时为带有写数据功能的多路选择器提供控制信号,从而选择相应的从设备。2.1.2 ASB总线AMBA总线中主要用于性能较高的系统模块的总线是ASB总线。ASB总线与APB总线相比,其总线架构更具有优势,是比较适用于性能更高的系统模块的总线协议,它的特点有很多,具体如下:1突发连续传输2单管道数据传输3多总线主控制器对于AHB总线不需要的一些高性能的芯片设计,ASB总线是绝佳的系统总线选择。ASB支持片上内存、高性能处理器、片外内存提供接口以及慢速外围设备。ASB总线上可以存在的主控制器是可调的,可以是一个,也可以是多个。而ASB总线与AHB总线相比还有另外一个优点上,挂接一些慢速外围设备在ASB总线上,将这些外围设备作为从设备是可以的。但是APB总线还是主要被用来挂接慢速外围设备的,所以挂接在APB总线上还是比较常用的情况。2.1.3 APB总线APB总线接口是优化度很高的连接低功耗、低速率外设的精简接口。APB总线是一个本地的二级总线接口协议,AHB总线和ASB总线协议的从设备接口通常都是APB总线接口11。APB桥是从控制器模块,用来保证不同总线数据的有效传输,以及确保不同总线上的控制信号的转发处理。APB总线接口主要用于连接低带宽、低性能的数据传输的外围设备。APB总线协议指明了所有的信号的传递只有在时钟的上升沿来的时候才会被触发。这种方法有如下的优点:1易于实现高频率操作2通过单时钟操作简化静态时序3专用集成电路设计库在上升沿寄存器有较好的选择4简化整合的时钟模拟器上述的优点同时说明APB总线能够更好的连接最新的AHB总线接口。在APB总线协议中不可缺少的一个部分是APB桥,APB桥的作用是将APB总线从设备控制器可以使用的信号从AHB总线和ASB总线上的控制信号转换出来。APB总线上外围设备均是从设备,APB总线主要用于低带宽的周边外围设备之间的连接,UART就是其中之一。而这些从设备有如下的特征:1接收有效的地址和控制访问。2当这些外围设备不处于活动状态的时候,可以把外围设备设置成为功耗为0的状态。3译码器通过选通信号来提供时序供输出时使用。4访问时可执行数据写入。在APB总线系统中只有一个主模块,即APB桥。其特征主要有:传输的时钟周期为两个时钟、等待周期为0、没有任何响应信号以及控制逻辑不复杂等。APB的传输数据过程可以用图2-3来表示。TransferIDLEPSELx=0PENABLE=0SETUPPSELx=1PENABLE=0ENABLEPSELx=1PENABLE=1No transferNo transferTransfer图2-3 APB传输状态图IDLE状态:系统初始状态,在此状态时,不进行任何传输操作,任何从模块都不会被选中。SETUP状态:数据准备传输状态,将PSELx置“1”,PENABLE置“0”,系统只在SETUP状态停留一个时钟周期12。当下一个时钟上升沿到来时,立即转到ENABLE状态。ENABLE状态:使能状态,PADDR、PSEL和PWRITE均保持不变,此时将PENABLE置“1”。同样在ENABLE状态也只停留一个时钟周期。数据传输结束后如无传输要继续进行,系统回到IDLE状态等待,否则系统再次进入SETUP状态。2.2 UART传输协议2.2.1 UART简介UART(Universal Asynchronous Receiver/Transmitter)是一种用于异步通信的通用串行数据总线,其全称为通用异步收发传输器。UART总线可以实现全双工接收数据和传输数据。在SOC设计中,与PC机进行通信时使用的是UART,包括监控调试器等其它器件,例如EEPROM通信。计算机内部采用的数据格式是并行数据,因此不能直接将数据传送到Modem。想要进行异步数据传输操作,那么必须经过UART才可以正常的进行传输。传输过程如下:CPU先把准备写入串行设备的数据存储在UART的寄存器中,再通过FIFO(先入先出队列)传送到串行设备。这里FIFO是必须存在的,若是没有FIFO,信息的顺序将会发生改变,不可能完全无误的传送到Modem。UART之所以能够实现PC机与外围设备之间的通信是因为它可以进行串并转化换,它传输数据的方式是把接收到的并行数据转换成串行数据再进行传输。消息帧的格式如下:低位起始位、数据位、奇偶校验位和停止位,起始位为一位,数据位为5到8位,奇偶校验位为一位,停止位为一位或者几位13。开始位到达接收器之后,数据开始准备发送,接收器会立即与发送器进行时钟频率同步工作。如果存在奇偶,那么在数据位的后面,UART会加上一个奇偶校验位。奇偶校验位用来对传输的数据进行错误校验。UART在接收数据的过程中会先在消息帧中除去其中的起始位和结束位,并且对接收的数据进行奇偶校验,校验无误后把数据字节进行串并转换,将并行数据转换为串行数据14。并且对于接收状态和发送状态,UART可以用别的信号来显示。作为接口的一部分,UART还提供以下功能:1把计算机内部传送过来需要传输的并行数据转换为可以输出的串行数据流15。2把计算机外部传送来的需要传输的串行数据转换为供计算机内部使用并行数据。3将奇偶校验位加入到输出的串行数据流中,并对从外部接收的数据流进行奇偶校验。4将开始标志和停止加入到输出的数据流中,然后删除接收数据流中的开始标志和停止标志。5为输入数据、输出数据提供缓冲区。在计算机处理数据之前,可以在其缓冲区内存储16字节数据比较新的UART是16550,但通常使用的还是8250。2.2.2 UART通信协议UART是异步串口通信协议,把需要传输的数据按照每个字符一位接着一位地进行传输是它的工作原理。每一位的代表的意义如下:1起始位:逻辑为0的信号,开始传输字符的标志位。2资料位:构成一个字符的资料位的个数可以是4、5、6、7、8。采用的字符格式一般是ASCII码,通过时钟来定位,从最低位开始传送一直到最后一位。3奇偶校验位:位于资料位后一位,“1”为有效,以此来检验传送的数据是否正确。4停止位:字符数据的结束标志。有1位、1.5位、2位的三种高电平。在传输线上的数据是定时的,设备都有它自己的时钟,所以在通信中的两台设备之间经常会出现一些不能够同步的现象。因此停止位除了可以表示数据传输结束以外,也可以将计算机的时钟进行同步的校正。UART传输数据的格式如图2-4所示。第N帧数据停止奇偶校验位字符数据启动空闲位010101010101图2-4 UART传输数据格式2.3 本章小结本章主要给出了AMBA总线协议,详细介绍了2.0版AMBA标准定义的三组总线AHB高性能总线、ASB系统总线和APB外设总线,还介绍了UART接口以及其通信协议。第3章 设计方案的实现3.1 方案设计根据APB总线与UART设备的通信方式以及本设计需要实现的功能,分别设计了收发控制器、中断控制器、接收器和发送器。收发控制器用来发出各种控制信号,中断控制器用来发出和接收中断信号,接收器用来接收需要传送到CPU的数据,发送器用来发送CPU需要发送到外围设备的数据。本设计的基本结构框图如图3-1所示。intr发送状态标识接收FIFO状态标识发送FIFO状态标识状态pclkpresetnpselpenableprdata31:0r_thr7:0rbr7:0pwdata31:0接收状态标识APB_UART收发控制器发送FIFO接收FIFO发送模块接收模块中断产生模块padder31:0pwritetxrx图3-1 APB_UART结构框图3.1.1 收发控制器收发控制器主要的功能是串行接口和数据通路,包含一个单向的数据输出端口和一个单向的数据输入端口。接收数据和发送数据需要经过两个FIFO缓存。收发控制器面向APB总线的端口有地址信号(padder)、写数据信号(pwdata)、读数据信号(prdata)、读写控制信号(pwrite)、选择信号(psel)、使能信号(penable)、复位信号(presetn)和时钟信号(pclk)。当选择信号(psel)有效时,表示当前APB总线发出的信号选择UART设备,用于驱动UART设备开始工作。收发控制器通过接收APB总线上发来的地址信号(padder)来决定UART的工作方式接收数据或发送数据。3.1.2 发送器发送模块部分主要有两部分构成发送FIFO和发送模块。发送FIFO首先将CPU需要传输的并行数据发送的FIFO中,发送FIFO将并行数据转化为串行数据后传输到发送模块中,发送模块再将数据一个接着一个的传送出去。因为CPU向串行设备传输数据的时候,需要将并行数据转化成为串行数据,所以发送FIFO是必须存在的。3.1.3 接收器同发送模块相同,接收模块部分也主要由两部分构成接收FIFO和接收模块。当外围设备需要将数据传送到CPU时,首先需要接收的数据通过接收模块,将数据存储下来16。然后接收模块再将数据传送给接收FIFO,接收FIFO将数据传输给接收缓冲寄存器,将串行数据转换成并行数据之后,再传到APB总线上,传到CPU中。同样是,接收FIFO也是接收数据的过程中必不可少的。3.1.4 中断控制器中断控制器用来产生和发送中断信号。本设计中分别在发送器的发送FIFO和发送模块、接收器的接收FIFO和接收模块中设置了中断的状态标示符17。当发送FIFO和接收FIFO为几乎空、几乎满、空和满的状态时,发送FIFO和接收FIFO会将状态标识发送到中断产生模块中,产生响应的中断信号。当发送模块和接收模块的数据传输完成之后,也会发送一个状态标识给中断产生模块,中断产生模块产生中断信号。UART根据产生的中断信号做出相应的响应信号。3.2 模块的设计与实现3.2.1 收发控制器关键代码:根据分配不同地址信号控制实现不同的工作方式always (posedge pclk or negedge presetn)begin if(!presetn)begin r_dlh = 8h0; /Divisor latch high r_dll = 8h0; /Divisor latch low end else begin if(paddr11:0 = 12h00)begin for(iB=24; iB=31; iB=iB+1)begin r_dlhiB-24 = reg_writeiB? pwdataiB : r_dlhiB-24; end for(iB=16; iB=23; iB=iB+1)begin r_dlliB-16 = reg_writeiB? pwdataiB : r_dlliB-16; end for(iB=11; iB=13; iB=iB+1)begin r_widthiB-11 = reg_writeiB? pwdataiB : r_widthiB-11; end for(iB=10; iB=10; iB=iB+1)begin r_parityiB-10 = reg_writeiB? pwdataiB : r_parityiB-10; end for(iB=8; iB=9; iB=iB+1)begin r_stopiB-8 = reg_writeiB? pwdataiB : r_stopiB-8; end for(iB=2; iB=2; iB=iB+1)begin r_en_fifoiB-2 = reg_writeiB? pwdataiB : r_en_fifoiB-2; end for(iB=1; iB=1; iB=iB+1)begin r_rxeniB-1 = reg_writeiB? pwdataiB : r_rxeniB-1; end for(iB=0; iB=0; iB=iB+1)begin r_txeniB-0 = reg_writeiB? pwdataiB : r_txeniB-0; end end if(paddr11:0 = 12h0C)begin for(iB=12; iB=15; iB=iB+1)begin r_rff_empty_threiB-12 = reg_writeiB? pwdataiB : r_rff_empty_threiB-12; end for(iB=8; iB=11; iB=iB+1)begin r_rff_full_threiB-8 = reg_writeiB? pwdataiB : r_rff_full_threiB-8; end for(iB=4; iB=7; iB=iB+1)begin r_tff_empty_threiB-4 = reg_writeiB? pwdataiB : r_tff_empty_threiB-4; end for(iB=0; iB=3; iB=iB+1)begin r_tff_full_threiB-0 = reg_writeiB? pwdataiB : r_tff_full_threiB-0; end end if(paddr11:0 = 12h10)begin for(iB=0; iB=7; iB=iB+1)begin r_thriB-0 = reg_writeiB? pwdataiB : r_thriB-0; end end endend根据地址信号的不同执行不同的读数据操作/VCSF, reg readalways (posedge pclk or negedge presetn)begin case(paddr11:0) 12h00 : prdata = r_dlh, r_dll, 2h0, r_width, r_parity, r_stop, 5h0, r_en_fifo, r_rxen, r_txen; 12h04 : prdata = 21h0, r_parity_error_en, r_rff_almost_empty_en, r_rff_empty_en, r_rff_almost_full_en, r_rff_full_en, r_tff_almost_empty_en, r_tff_empty_en, r_tff_almost_full_en, r_tff_full_en, r_rx_done_en, r_tx_done_en; 12h10 : prdata = 24h0, r_thr; 12h14 : prdata = 24h0, rbr; default:prdata = 32hdeadbeaf; endcaseend上述代码中,不同的地址信号控制着不同的操作。在这里本设计共设置了六种的地址信号,分别用来实现数据传输、判断FIFO空满、判断FIFO开启及关闭。3.2.2 发送器发送状态机代码always (posedge pclk or negedge presetn)begin case(tx_cs) Tx_IDLE: begin tx_ns = Tx_START; update_tx_status = tx_start; end Tx_START: begin tx_ns = Tx_BIT1; update_tx_status = tx_cnt_done; end Tx_BIT1: begin tx_ns = Tx_BIT2; update_tx_status = tx_cnt_done; end Tx_BIT8: begin tx_ns = Tx_PARITY; update_tx_status = tx_cnt_done; end Tx_PARITY: begin tx_ns = Tx_STOP1; update_tx_status = tx_cnt_done; end Tx_STOP

温馨提示

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

评论

0/150

提交评论