FPGA的USB模块实现.doc_第1页
FPGA的USB模块实现.doc_第2页
FPGA的USB模块实现.doc_第3页
FPGA的USB模块实现.doc_第4页
FPGA的USB模块实现.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

题 目 学 院 专 业 学生姓名 班 级 学 号 指导教师 二 年 月 日毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日 摘 要USB是一种新式总线接口标准,具有高速、可靠、可扩展、即插即用等特点。USB2.0协议中,数据的最高传输速率提高到480Mbps,这就使通过USB实现快速传递大容量数据的外设成为现实。而FPGA芯片因其工作频率高、设计周期短、成本低廉、可重复擦写等优点,被广泛应用于数据处理与算法实现中。因此,本文结合两者的优点,设计了具有数据传输与处理功能的系统,此系统经过扩展可用于数据采集。 本文主要介绍了一种基于FPGA 和U SB 数据传输电路的设计方法,采用硬件描述语言(VHDL)实现。论文在阐述了系统的整体设计思路的基础上,对电路所选芯片的结构和性能进行简单的介绍。然后提出了系统的软硬件设计与实现的方法。在硬件设计部分,给出了USB数据上传和下载模块、USB主机和设备模块及FPGA模块具体的硬件电路的设计方案以及模块之间的连接关系。文中对系统的整体框架进行了介绍, 然后对系统各个模块的设计与实现进行详细的阐述, 最后验证了结合FPGA 和USB 进行数据传输的可行性。关键词:USB;FPGA;数据传输;VHDLAbstractUSB is a new bus interface standards, with speed, reliable, extensible, plug and play, etc. USB2.0 agreement, the highest rate of data transmission to 480Mbps, this makes the USB realize rapid transfer capacity data peripherals to become a reality. Because of its work and FPGA chip design, high frequency, low cost, short cycle, the advantages of erase duplication, have been widely applied in data processing and algorithm. Therefore, combining with the advantages of both, design a data transmission and processing system, this system can be used by extension data acquisition. This paper introduces an FPGA and the USB-based data transmission circuit design methods, using hardware description language (VHDL) to achieve .In this paper the design thought of the whole system, on the basis of the selected for circuit structure and properties of the chips are introduced. Then put forward the system hardware and software design and realization method. In the hardware design part, gives the USB data upload and download module, USB host and device module and FPGA modules specific hardware circuit design scheme and the connections between modules. Keywords: USB;FPGA;driver;VHDL目 录目 录5第一章 绪论11.1 国内外发展状况及发展趋势11.2 课题的研究现状11.3 论文的主要任务21.4 本论文所做的工作31.5 本论文的技术实现3第二章 USB的体系结构及VHDL语言、FPGA器件42.1 USB简介42.2 USB的特点42.3 USB体系结构52.3.1 USB系统描述52.3.2 USB设备逻辑结构52.3.3 USB的配置、接口和端点62.3.4 USB管道72.4 USB的通信协议层72.4.1 传输方式72.4.2 USB的传输速率72.4.3 包的格式82.5 VHDL语言介绍92.5.1 VHDL语言92.5.2 VHDL语言的特点92.6 现场可编程逻辑门阵列(FPGA)102.6.1 FPGA的基本结构102.6.2 FPGA简介102.6.3 FPGA特点112.6.4 FPGA的设计流程122.7 Max+plusII12第三章 系统硬件设计143.1 系统硬件方案设计143.2 系统软件方案设计143.3 USB模块设计143.3.1 模块硬件电路1534 FPGA模块153.4.1 FPGA模块的上电配置电路实现163.4.2 FPGA与SDRAM的连接16第四章 系统软件实现和应用方案184.1 D12固件的编写184.1.1主循环实现184.2 FPGA模块程序的编写194.2.1程序仿真204.3 USB驱动程序编写介绍21结束语23致 谢24参考文献25附录A26附录B27附录C28山东英才学院2012届本科生毕业设计(论文)第一章 绪论1.1 国内外发展状况及发展趋势随着计算机硬件飞速发展,外围设备逐渐增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何方便快捷地与个人计算机连接,USB就是基于这个目的产生的。USB,即通用串行总线,也称通用串连接口,它是一个计算机周边设备连接标准化、单一化USB是一种新式总线接口标准,具有高速、可靠、可扩展、即插即用等特点。USB采用差分信号传输,具有很好的可靠性,设备的控制、管理和数据交换由PC机按USB协议进行,几乎不占用资源,对系统运行影响很小。USB允许即插即用和热插拔,当需要USB外设进行扩展的时候,只需将外设插入USB接口即可,其他的一切问题PC机会自动处理,无需用户干预。同时USB的接口数目可以通过USB集线器扩展至127个,可以同时扩展占很多的外设。因此采用USB与PC机连接是今后数据传输的一个趋势。随着USB设备的广泛应用,USB的发展经历了USB1.1时代、USB2.0时代以及USB3.0时代。最初的USB1.1标准接口传输速率为12Mbps,但是一个USB设备最多只可以得到6Mbps的传输频宽,要完成数据量大的数据传输明显就会十分的吃力,因而USB2.0就应运而生。其最初的目标是将USB1.1的传输速率提高十至二十倍,而实际上却提高了四十倍。但是随着技术的发展,Vsita、高清、DX10正在逐渐普及,于是很快就遇到了USB1.1后期遇到的问题,于是英特尔公司和业界领先的公司一起携手组建的USB3.0推广组又出现了。这次他们带来的USB3.0技术将支持铜和光两种线缆,使用光纤连接后,速度可以达到USB2.0的20倍甚至30倍。对于USB3.0来说,现如今种种迹象都表明还没有全面发挥USB3.0技术的优势。不过,随着时间的推移,各方面这些都会逐步的完善起来。至少未来3年我们都不会看到成熟的USB2.0相关产品退出市场。陪伴我们十多个年头的USB2.0早已经无法满足应用需要,这也催生了USB3.0的诞生,这正好迎合了用户的口味。其实更加吸引我们的,无外乎10倍于USB2.0的传输速度和向下兼容性。我们有理由相信,未来的移动存储设备搭载上USB3.0接口后速度会达到一个新的高度,那时候我们拷贝蓝光高清也不在话下,同时我们也期望USB3.0产品能尽快普及到每个人身边。1.2 课题的研究现状在以往的此类系统中,长距离的数据传输通常采用RS232或RS485串行总线与PC机进行通信,这种传输方式速度比较慢,达不到高速数据传输的要求。短距离的传输大多做成采集卡形式,通过系统总线与PC机相连,例如ISA、EISA、PCI等,或者采用直接插在PC机主板插槽上,这种总线传输方式速度比较快,但占用了PC接口资源有限而且需要对这些接口卡的硬件资源(地址、内存、中断、DMA等)进行合理配置,因此很难进行扩展。另外,这种插卡式的传输板在安装的时候都必须先停机然后拆卸机箱,安装和配置过程需要人工处理,当扩展卡多时经常出现无法正常配置而影响系统的运行。为了解决这些问题,1994年,Microsoft,Compaq,Digital,IBM,NEC,North-Telecom,Intel这些计算机公司和通信公司成立了USB论坛。并于1996年推出USB1.0规范,于1998年推出USB1.1规范,提供有低速和全速两种模式,分别支持1.5Mbps和l2Mbps的传输速率。紧接着在2000年公布的USB2.0规范,此时USB在高速模式最大带宽达到480Mbps,使USB的传输速率达到了一个新的高度,完全可以满足大容量、实时性的数据传输要求。随着电子技术的发展,电子系统的设计方法正从传统的分立元件设计方法逐步发展成基于集成芯片的EDA技术设计,系统一体已成为电子系统设计的主流。高级的FPGA是当今最流行的可编程专用集成电路(ASIC)之一,电子设计工程师利用它可以在办公室或实验室里设计出所需的专用集成电路,从而大大缩短了产品上市时间,降低了开发成本。此外,FPGA具有静态可重复编程和动态在系统重构的特性,使得它的功能可以象软件一样通过编程来实现,极大的提高了电子系统设计的灵活性和通用性。自1985年Xilinx公司推出第一片FPGA至今,经历十几年的发展,FPGA器件从最初的1200个可利用门,发展到90年代的25万个门到现在的几百万门。另外FPGA可以很好的实现数字信号的并行处理,在一些复杂控制领域和数字算法处理上具有很大的优势。因此在选择数据的传输及处理系统的数据处理芯片时,FPGA将成为首选。在现有的一些基于USB接口的数据传输与处理系统中,往往整个系统就集成在一个功能电路板上,只具有单个处理端,而一般USB的传输距离可扩展到30米,则双方距离较远,在这种情况下,只能由传输的一端来控制该硬件电路,另一端则无法根据自己的需要对电路进行相应的配置。这样系统就无法灵活的满足传输两端的需要,往往对用户的实际应用造成麻烦。总之,在数据传输与处理系统中结合USB和FPGA技术,通过设计硬件电路来实现数据传输和处理将会使系统的应用更加广泛、方便并且具有更高的效率。1.3 论文的主要任务本文提出了基于FPGA和USB数据传输与处理的系统,并实现了硬件设计和软件编写,具体任务如下:1)完成系统硬件电路设计,包括USB数据上传和下载模块、USB设备模块和USB主机模块以及FPGA处理模块;2)实现硬件部分所需程序的编写,包括PDIUSBD12固件、CH375固件及FPGA内部固件并对硬件进行调试;3)开发USB设备Windows的驱动程序;1.4 本论文所做的工作本论文在研究USB总线技术的基础上,充分利用自己编程基础,学习开发一种基于USB接口的数据采集传输系统方案。所研究的主要内容如下: (1)数据采集传输系统的硬件电路设计,包括信号输入时的模拟多路开关,信号调理电路,模数转换器和USB接口器件之间电路的连接,电路连接时对模拟地和数字地的处理,以及根据各个元器件对电源电压的需求,提供匹配的电源。 (2)充分了解USB协议,在FPGA芯片上利用硬件描述语言VHDL,编写USB接口芯片的固件代码。数据采集通道的软件设计,主要完成对模拟多路开关,A/D转换器和USB接口之间数据传输的时序控制。 (3)上位机的应用程序设计,主要是在USB设备驱动程序的支持下,从USB接口读取并处理数据。(4)数据传输系统的软件设计,完成服务器端对采集数据的传输,客户机成功接受数据并绘制波形曲线的功能。(5)整个系统软件和硬件结合的调试。1.5 本论文的技术实现本设计的实现主要采用以下技术和工具: (1)描述数字电路系统的VHDL语言 利用VHDL语言分别编写A/D模数转换程序,系统先进先出缓存器程序,USB设备固件程序及P对整个数据采集系统的时序控制程序。 (2)VHDL语言开发平台 本设计所有的语言编程都是在Max+Plus II开发平台下完成的,不断进行波形仿真,判断电路逻辑功能的正确与否。然后对设计进行综合优化,再通过翻译、映射、布局布线,生成网表,最终下载到FPGA芯片。第二章 USB的体系结构及VHDL语言、FPGA器件2.1 USB简介USB是一种支持热拔插的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。USB2.0被设计成为向下兼容的模式,当有全速(USB1.1)或者低速(USB1.0)设备连接到高速(USB2.0)主机时,主机可以通过分离传输来支持他们。一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。USB体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB接口以及接口管理能力的硬件、软件及固体的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机,设备包括USB功能设备和USB HUB,最多支持127个设备,物理连接即指的是USB的传输线。在USB2.0系统中,要求使用屏蔽的双绞线。一个USB HOST 最多可以同时支持128个地址,地址0作为默认地址,只有设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个USB HOSY最多可以同时支持127个地址,如果一个设备只占用一个地址,那么可最多支持127个USB设备。在实际的USB体系中,如果要连接127个USB设备,必须要使用USB HUB,而USB HUB也是需要占用地址的,所以实际可支持的USB功能设备的数量将小于127。USB采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和断点,从而保证了只有一个设备对被广播的数据包/令牌包作出响应。握手包表示了传输的成功与否。数据包:USB总线上数据传输的最小单位,包括SYNC、数据及EOP三个部分。其中数据的格式针对不同的包有不同的格式。但都以8位的PID开始。PID指定了数据包的类型(共16种)。令牌包即指PID为IN/OUT/SETUP的包。2.2 USB的特点USB接口理论上可以连接127个USB设备,每个设备间的距离可达5m。USB之所以能够得到广泛的支持和快速普及,是因为它具备如下特点:(1)使用方便,即插即用。使用USB接口可以连接多个不同的设备,支持热拔插。USB设备不涉及中断请求冲突问题,它单独使用自己的保留中断,不会和其他设备争用主机有限的资源,真正做到即插即用。(2)传输速度快。(3)连接灵活、可扩展性强。(4)不需要独立供电。使用串口或者并口的设备都需要单独的供电系统,USB设备不需要。USB接口提供了内置电源,这个内置电源能向同USB所连接的低压设备提供标称5V的电源,此低压设备就不需要专门的电源了。2.3 USB体系结构2.3.1 USB系统描述一个USB系统可以分为USB互连、USB设备和USB主机三个部分。每个部分的概况可描述如下:(1)USB互连指一种USB器件和USB主机进行通信的方法,它包括: 总线的拓扑:指设备和主机连接的模式。 各层之间的关系:指组成USB系统的各个部分在完成一个特定的USB任务时互相之间的分工与合作。 数据流动的模式:指USB总线的数据传输方式。 USB的“分时复用”。总线拓扑结构由主机、集线器和设备三种元素组成。在主机平台上的USB中,主机就是PC机和根集线器,用户可以将设备和下级Hub与PC机相连。而下级Hub又可以被连接更下一级的Hub和设备,从而构成了树状结构。在USB1.1协议中,一个USB拓扑网络最多可以支持4个Hub层。(2)USB设备分为集线器和功能部件。集线器就是常用的USBHub,它提供更多的USB连接点。功能部件是一种通过USB总线进行数据发送和接收的USB设备。一个USB器件可分为三层:最底层是一个总线接口,被用于发送和接收数据包;中间层被用于操作和路由总线接口和设备不同端点之间的数据,端点是数据接收或发送的终点,对数据来说它可被认为是一个消息源或接收器;最顶层是串行总线接口提供的功能部件。(3)USB主机指设备所服务对象的硬件和软件的集合。USB主机是USB系统的核心,通过主机控制器与USB设备进行交互。它分为主机控制器、USB系统和客户3个层次。其主要功能可描述如下: 检测USB设备的安装与拆卸。 管理在主机和USB设备之间的控制流。 管理在主机和USB设备之间的数据流。 收集USB设备的状态和动作信息。 给被连接的USB设备供电。2.3.2 USB设备逻辑结构USB的设备可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,这样可以使设备驱动程序的编写变得简单一些。USB Forum在USB类规范2中定义了USB的设备类型,比如音频、通信、HID、HUB等设备类。 每一个USB设备会有一个或者多个的逻辑连接点在里面,每个连接点叫端点。在USB的规范中用4位地址标识端点地址,每个设备最多有16个端点。端点0都被用来传送配置和控制信息。在NS公司的USB接口芯片USBN9602中有7个端点。 管道实现了在主机的一个内存缓冲区和设备的端点之间的数据传输,连接端点0的叫做缺省管道。管道是具有多个特征的信道,如带宽分配,包大小,管道类别以及数据流向。管道有两种类型分别是流管道(stream pipe)和消息管道(messagepipe)。流管道传输的数据包的内容不具有USB要求的结构,它是单向传输的;流管道支持批量、等时和中断传输方式。而消息管道与流管道具有不同的行为。首先,由主机发请求给USB设备,然后在适当的方向上传输数据,最后是到达一个状态阶段。为了保证三个阶段的数据传输,消息管道定义了一个数据结构使命令可靠地被识别和传输。消息管道是双向的,它只支持控制传输方式。 对于同样性质的一组端点的组合叫做接口,如果一个设备包含不止一个接口就可以称之为复合设备。 对于同样类型接口的组合可以称之为配置。但是每次只能有一个配置是可用的,而一旦该配置被激活,里面的接口和端点就都同时可以使用。主机从设备发过来的描述字中来判断用的是哪个配置,哪个接口等等而这些描述字通常是在端点0中传送的。2.3.3 USB的配置、接口和端点在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置有多个接口组成。在USB协议中,接口有多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的汇集。例如USB扬声器可以包含一个音频接口以及对旋钮和按钮的接口。一个配置中的所有接口可以同时有效,并可被不同的驱动程序连接。每个接口可以有备用接口,以提供不同质量的服务参数。端点是USB通信的最基本的形式,每一个USB设备接口在主机看来就是一个端点的集合。主机只能通过端点与设备进行通信,已使用设备的功能。在USB系统中每个端点都有唯一的地址,这是由设备地址和端点号给出的。每个端点都有一定的属性,其中包括传输方式、总线访问频率、带宽、端点号和数据包的最大容量的等。一个USB端点只能在一个方向承载数据,或者从主机到设备(成为输出端点),或者从设备到主机(成为输入端点),因此端点可看作一个单向的管道。端点0通常为控制端点,用于设备初始化参数等。只要设备连接到USB上并且上电端点0就可以被访问。端点1、2等一般用作数据端点,存放主机与设备间往来的数据。 2.3.4 USB管道管道是指主机端驱动程序的数据缓冲区与外设端点的连接,表明了在两者之间传输数据的能力,是一种逻辑抽象。管道可分为两种不同的互斥管道:流管道和消息管道。其作用可描述如下。(1)流管道流管道中的数据是以流的形式,也就是该数据的内容不具有USB要求的结构。数据从流管道一端流进的顺序与它们从流管道另一端流出时的顺序是一样的。流管道中的通信流总是单方向的。流管道只占用相关端点号的一个方向,该端点号的另一个方向可以被分配给该设备的其他流管道。流管道支持同步传输、中断传输和批量传输。(2)消息管道消息管道与端点的关系同流管道不同,其工作次序是由主机向USB发送一个请求,然后进行数据传输,最后进入状态阶段。为了适应上述请求/数据/状态的变化,消息管道要求数据有一个格式,此格式保证了在变化时命令能被可靠地传输和确认。消息管道是一个双向管道,允许双向通信流。当一个设备的消息管道需要占用该设备单个端点号的两个方向时,一个方向用于输入,另一个用于输出。USB不允许一个消息管道与两个方向上不相同的端点号相连。缺省控制管道就是一个消息管道,消息管道仅支持控制传输。2.4 USB的通信协议层2.4.1 传输方式针对设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式: 1、等时传输方式(Isochronous)该方式用来联接需要连续传输数据,且对数据的 正确性要求不高而对时间极为敏感的外部设备,如麦克风、嗽叭以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB 设备之间传输数据,在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。 2、中断传输方式(Interrupt)该方式传送的数据量很小,但这些数据需要及时处理,以达到实时效果,此方式主要用在键盘、鼠标以及操纵杆等设备上。 3、控制传输方式(Control)该方式用来处理主机到USB设备的数据传输。包括设备控制指令、设备状态查询及确认命令。当USB设备收到这些数据和命令后,将依据先进先出的原则处理到达的数据。 4、批(Bulk)传输方式该方式用来传输要求正确无误的数据。通常打印机、扫描仪 和数字相机以这种方式与主机联接 2.4.2 USB的传输速率 USB有两个规范,即USB1.1和USB2.0。USB1.1是目前较为普遍的USB规范,其高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps。注意:这里的b是Bit的意思,1MB/s(兆字节/秒)=8MBPS(兆位/秒),12Mbps=1.5MB/s。目前,家用低端扫描仪主要为USB接口类型。USB2.0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,折算为MB为60MB/s,足以满足大多数外设的速率要求。USB 2.0中的“增强主机控制器接口”(EHCI)定义了一个与USB 1.1相兼容的架构。它可以用USB 2.0的驱动程序驱动USB 1.1设备。也就是说,所有支持USB 1.1的设备都可以直接在USB 2.0的接口上使用而不必担心兼容性问题,而且像USB线、插头等等附件也都可以直接使用。在USB1.1规范中,有高速和低速两种传输速率,高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps。这里要多说一句,很多人都不明白“MB”与“Mb”之间的区别,“MB”是“Mega Byte”,指“兆字节”。而“Mb”则是“Mega bit”,指“兆位”。别看只是大小写之分,它们之间可是相差8倍呢,1MB=8Mb。而“Mbps”则是指“Mega bit per second”,意思是“兆位/秒”,要是想换算成“兆字节/秒”的话需要除以8。2.4.3 包的格式USB总线上数据的传输都可归结为令牌包、数据包和握手包的传输。(1)令牌包在USB系统中,任何事务处理都是从主机开始的,主机发出令牌包表示一个事务的开始,它包括了数据传输的方向、数据传输的设备地址、端点号等。根据PID的不同,令牌包主要分为:输入令牌包(IN):用于USB设备向主机发送数据。输出令牌包(OUT):用于主机向USB设备发送数据。设置令牌包(SETUP):用于主机向USB设备发送配置信息,使用于控制传输。(2) 数据包根据PID的不同,USB1.1规范支持DATA0和DATA1两类数据,在数据传输中,DATA0所表示的数据包为1、3、5等奇数包,DATA1所表示的数据包为2、4、6等偶数包,两类数据交替出现。(3)握手包握手包用于报告事务处理的状态,以表明数据成功接收、指定的端点被停止、不能响应命令等情况,只有支持流量控制功能的事务才需要使用握手包。根据PID的不同,握手包主要有三类。ACK:确认数据包被无错误的接收了。NAK:表示USB设备暂时不能接收或发送数据,但最终能完成事务处理,且不需主机的干涉。主机永远不会发出NAK包。STALL:由设备发出,表示USB设备不能发送或接收数据,或USB设备不支持某个控制请求,要求软件进行干预使设备从停止状态恢复。2.5 VHDL语言介绍2.5.1 VHDL语言VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。2.5.2 VHDL语言的特点VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: (1) VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。2.6 现场可编程逻辑门阵列(FPGA)2.6.1 FPGA的基本结构FPGA一般有三种可编程电路和一个用于存放编程数据的SRAM(static Random Access Memory)组成,这三种可编程电路是:可编程逻辑块CLB(Congigurable Logic Block)、输入输出模块IOB(Input/Output Block)和互联资源IR(Interconnect Resource).(1)可编程逻辑模块(CLB)CLB是FPGA的重要组成部分,是实现逻辑功能的基本单元。它们通常规则地排列成一个整列,散布于整个芯片。CLB主要有逻辑函数发生器、触发器、数据选择器等电路组成。CLB中有许多不同规格的数据选择器,分别用来选择触发器激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器德尔地址控制信号均由编程信息提供,从而实现所需的电路结构。(2)输入/输出模块(IOB)IOB模块主要是完成芯片的逻辑与外部封装脚的接口,它通常排列在芯片的四周,主要是输入触发器、输入缓冲器和输出触发/锁存器、输出缓存器组成,每个IOB控制一个引脚,它们可被置为输入、输出或双向I/O功能。(3)可编程互联资源(IR)IR由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。FPGA内部的各个CLB之间或CLB、IOB之间以及IOB之间的连接就是由可编程互联资源来完成,构成各种具有复杂功能的系统。FPGA逻辑功能的实现,是通过把设计生成的数据文件配置进芯片内的SRAM来完成的,这些配置数据可以事先存储在片外的EPROM或其它存储体上,用户可以控制加载过程,在现场修改器件的逻辑功能,即所谓的现场编程。2.6.2 FPGA简介现场可编程门阵列FPGA是20世纪80年代中期出现的一种新型可编程逻辑器件。FPGA是在PAL、GAL、EPLD等可编程逻辑器件的基础上进一步发展的产物,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的。FPGA既解决了定制电路的不足,又克服了原有可编程门电路有限的缺点。由于它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛地应用于产品的原形设计和产品的生产之中。目前FPGA的品种很多,如XILINX公司的Spartan、Vertex系列、ALTERA公司的FLEX系列、Actel公司的ProASIC系列以及TI公司的TPC系列等。2.6.3 FPGA特点FPGA以其灵活的设计性能及硬件的高密度性在芯片的设计使用中显示出愈来愈重要的作用。XILINX公司推出的Virtex系列FPGA是一种采用5层0.22um工艺的高性能、大容量现场可编程逻辑门阵列。其特性主要体现在以下几个方面:(1)快速、高密度的逻辑门阵列 从50K到1M逻辑门的密度,系统性能可达到200MHZ,且符合33MHZ和66MHZ时钟频率的PCI规范。(2)标准的可选择I/O接口 16种高性能接口标准,可直接连接到ZBRAM器接口,其独特的I/O分组方式可使多种不同电压标准接口在同一片FPGA上实现。(3)内置的时钟管理电路 四个专为高级时钟控制设制的延时锁相环(DLL),可实现倍频、分频、锁相等功能,4个主全局时钟分配网络,以及24个从本地时钟网络以实现高速时钟的传输。(4)层次性存储管理系统 内部查找单元可配置为16bit和32bitRAM、16bitDPRAM或16bit移位寄存器,其Block RAM资源可配置为4KbitDPRAM或FIFO、CAM等存储器件,且提供了高速外部RAM接口。(5)更加灵活的系统结构复杂的进位逻辑链提高了算术逻辑性能,复杂的乘法器支持,级连链支持宽位输入模块,丰富的带时钟使能的寄存器和锁存器,支持异步和同步复位及置位,支持IEEE 1194.1边界扫描逻辑。 (6)基于SRAM的在线可重构技术可无限次重复编程,包含主串、从串RAM和JTAG四种配嚣模式,支持部分重构。2.6.4 FPGA的设计流程设计准备逻辑划分设计输入硬件描述语言设计实现综合优化、翻译、映射、布局布线烧写芯片在系统编程功能仿真时序仿真器件测试 图2.1 FPGA/CPLD的设计流程 FPGA/CPLD的设计流程如图2.1所示,主要设计步骤可描述如下。 (1)设计输入:根据要实现的功能编写源代码。 (2)功能仿真:可以利用第三方仿真软件,通过波形仿真激励或者硬件描述激励语言实现波形仿真图,以验证设计文件的逻辑正确性,并判断其是否满足设计的要求。 (3)综合优化:具有时序优化的功能,它能通过再组合逻辑间移动寄存器来平衡时序关系,使得最终的电路比优化前电路要快左右。 (4)设计实现:主要包括转换、映射、布局布线和时间参数的提取等,将硬件描述语言翻译成与、或、非门、RAM、寄存器等基本逻辑单元,组成逻辑网表,并根据约束条件优化所生成的逻辑连接。 (5)下载配置:利用将生成的配置文件数据文件下载进入FPGA中的,并进行在线调试。下载配置是通过计算机并口下载电缆进行的,可采用JTAG方式、SlaveSerial方式或SelectMAP方式。本设计选用的是JTAG下载方式,下载电缆包括VCC、GND两个电源线和TDI、TDO、TMS、TCK四根JTAG信号线。本系统的FPGA设计是在Altera公司开发的Max+plusII软件环境下进行的。2.7 Max+plusIIMax+plusII (或写成MAX+PLUSII,或MP2) 是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:QuartusII,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAX+PLUSII把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用MAX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面,MAX+PLUSII被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。在这里我们可以先看一看用FPGACPLD开发工具进行电路设计的一般流程通常可将FPGA/CPLD设计流程归纳为以下7个步骤。 1.设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自90年代初, Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。2.前仿真(功能仿真)。设计的电路必须在布局布线前验证电路功能是否有效。PLD设计中,有时跳过这一步。3.设计编译。设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。4.优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。5.布局布线。在PLD设计中,3-5步可以用PLD厂家提供的开发软件(如Max+plusII)自动一次完成。6.后仿真(时序仿真)需要利用在布局布线中获得的精确参数再次验证电路的时序。(ASCI设计中,这一步骤称为第二次Signoff)。7.生产。布线和后仿真完成之后,就可以开始ASCI或PLD芯片的投产。同样,使用Max+plusII基本上也是有以上几个步骤,但可简化为:1、设计输入 2、设计编译 3、设计仿真 4、下载。 第三章 系统硬件设计3.1 系统硬件方案设计 系统的硬件框架图如图3.1所示,在系统中, FPGA为主处理模块,其可以与外部的功能电路进行连接,它接收外部模块发送的并行数据存入SDRAM中, 然后通将数据送给FPGA。在FPGA内部, 可以先对数据进行一定的处理, 在处理过程产生的数据同时再存入SDRAM。处理完毕之后该功能电路将SDRAM中的所有数据读出,传给 USB 模块。USB模块将FPGA发送出来的并行数据转化成USB差分信号,发送给PC。USB总线 数据传输与处理电路控制信号PC机端驱动程序和数据接收应用程序模块单片机芯片 FPGA模块外部功能电路FPGASDRAM数据总线图3.1 系统框架图3.2 系统软件方案设计系统软件方案设计分为以下几部分:1、USB驱动程序。2、USB芯片的固件程序。3、FPGA程序部分。3.3 USB模块设计在USB 模块中,采用Philips公司的PDIUSBD12( 以下简称 D12) 作为 USB 芯片, 它与USB专用芯片和带有USB口的微控制器等相比较, 具有灵活性强、 软/ 硬件可移植性好、可适应多种不同控制器等优点, 比较适合数据传输,它有如下的重要特点:1、符合通用串行总线USB1.1版规范;2、高性能USB接口器件集成了SIE FIFO存储器收发器以及电压调整器;3、可与任何外部的微控制器/微处理器实现高速并行接口;4、在批量模式和同步模式下均可实现1M Bps的数据传输速率;5、可通过软件控制与USB的连接;6、采用GoodLink技术的连接指示器,在通讯时使LED闪烁。这些主要特点可以很好的与本系统的设计进行结合,除此之外它还具有良好EMI特性的总线供电能力、可编程的时钟频率输出、内部上电复位和低电压复位电路等方面的功能。为降低成本、小体积和满足控制功能,主控制器选用技术成熟、性价比高的AT89S52单片机为 D12 芯片的控制器。 AT89S52内置在线可擦除编程8KB FLASH,不需要扩展存储器;具有32个可编程I/O口;而且采用了ISP在线编程,提高了调试效率, 减少了传统烧写器烧写芯片时对芯片造成的损耗。3.3.1 模块硬件电路USB模块电路如图3.2 所示, 单片机的 P0 口与 D12 的双向数据线 DATA 相连, 来实现两者之间控制与数据的传输。将 A0 直接接地,用 P2. 7作为 D12 的片选端。其余管脚与单片机相对应的应连接好, 如读、 写信号等。D12 的中断信号管脚与单片机的中断管脚相连。在 D12 的 D+ 、 D- 管脚与上行标准 USB 插座之间除了接电阻之外, 还应各串接一个磁珠消除高频电磁干扰。图 3.2 USB模块电路图在与 FPGA 连接部分, 采用单片机的 P1 口作为与 FPGA 的 I/ O 口连接, 作为数据总线通信的端口, 然后由 P3.0、 P3. 1、 P3. 3 和 P3. 4 与 FPGA 的 I/ O 口连接作为它们之间通信的控制信号。34 FPGA模块在 FPGA 模块中, FPGA 采用 Xilinx 公司的Virtex系

温馨提示

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

评论

0/150

提交评论