• 4.49 MB
  • 2022-04-22 13:42:46 发布

基于PCI总线的数据采集卡电路与软件驱动设计.doc

  • 72页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于PCI总线的数据采集卡电路与软件驱动设计一、原始依据(包括设计或论文的工作基础、研究条件、应用环境、工作目的等。)数据采集卡是仪器仪表中常用的模块,一般包含多个A/D转换通道、D/A转换通道和I/O通道,它与LabView等软件开发平台联用可以便利地设计出高水平测控软件进行数据采集、模拟量输出和动作控制等,应用十分广泛和便利。数据采集卡涉及模拟电路、数字电路、A/D转换、D/A转换、I/O控制、计算机硬件系统和软件技术等。本毕业设计的任务是就是开发基于PCI总线的数据采集卡的电路和软件驱动,对这些技术进行综合训练。设计将利用实验室的各种电路开发仪器、设备、计算机和软件工具等条件,完成电路板的设计、加工与调试以及软件编程。本设计综合性强,可以迅速提高学生的电路设计和调试能力。二、参考文献[1]中泰研创,PCI总线8336A使用说明书,2010年10月[2]张国雄,金篆芷,测控电路,机械工业出版社,2000年,ISBN:7-111-08247-8[3]徐惠民,安德宁,延明,数字电路与逻辑设计,人民邮电出版社2009.9,ISBN:978-7-115-19767-2[4]周明德,蒋本珊,微机原理与接口技术,人民邮电出版社,2007,ISBN:978-7-115-15751-5[5]戴鹏飞,测试工程与LabVIEW应用[6]李江全,LabVIEW虚拟仪器数据采集与串口通信测控应用实战,人民邮电出版社,2010,9787115227140 三、设计(研究)内容和要求(包括设计或研究内容、主要指标与技术参数,并根据课题性质对学生提出具体要求。)1、技术指标:A/D转化:12bit,32通道(单)或16通道(双)转换速率250kHz输入范围:0~10V,程控增益1、2、5、10倍(可定制)D/A转换:12bit,4通道输出范围:0~5V、±5V(可定制),0~10mA、4~20mA;可编程DIO:32通道2、设计具有上述功能的采集卡原理图;3、调试该信号采集卡,并开发它的软件驱动程序;4、开发基于LabView的软件程序,对信号采集卡进行A/D转换、D/A转化、可编程DIO等功能的测试;5、提交与本设计相关的各种原理图和软件源代码等技术资料;6、翻译相当于5000汉字的英文文献;撰写20000字以上的毕业设计说明书。指导教师(签字)年月日审题小组组长(签字)年月日 天津大学本科生毕业设计(论文)开题报告课题名称基于PCI总线的数据采集卡电路与软件驱动设计学院名称精密学院专业名称测控技术与仪器学生姓名张禄鹏指导教师李艳宁一、课题的来源及意义计算机测控技术在生产实践中有着广泛的应用。基于计算机技术的测控系统主要分为两种类型。一类是以各种单片机、可编程逻辑芯片为核心组成的测控系统,这类测控系统一般适用于功能要求相对简单的被控对象,可独立构成测控系统,或以PC机作为上位机构成两级级联的测控系统,此时PC机一般负责界面处理。一类是以PC机为核心构成的测控系统,PC机通过数据采集卡及接口电路连接到被控对象。由于PC机具有高性能、易用性、可扩展性和丰富的软件资源等,此类系统可适用于功能要求较为复杂的被控对象。计算机总线的飞速发展使高速大容量的数据采集和存储成为可能,用于数据采集的计算机总线有ISA总线、PCI总线以及PCIExpress总线等。ISA总线位宽度为8位或者16位。它使用方便,无需开发驱动程序,在上个世纪80年代得到广泛应用。不过它的弱点也是显而易见的,比如传输速率过低、CPU占用率高、占用硬件中断资源等。后来在PC98规范中,就开始放弃了ISA总线,而Intel从i810芯片组开始,也不再提供对ISA接口的支持。PCIExpress总线(PeripheralComponentInterconnectExpress,外围组件高速互连),简称PCIE,是新一代的总线接口。PCIExpress总线采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都享有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到很高的频率,达到PCI总线所不能提供的带宽。随着人们对数据采集系统的要求越来越高,PCIExpress总线将会得到更广泛的应用。但目前在进行简易数据采集时,PCI总线在数据采集技术领域仍然是主流,将基于PCI总线的数据采集卡嵌入PC机的PCI扩展插槽中,这样可充分利用微处理器的控制功能、PC机的快速数据处理能力以及多任务工作方式等特点,进行数据信号的输入采集。二、国内外发展状况PCI局部总线(PedpherdComponentInterconnect,周边元件扩展接口)是由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。此标准允许在计算 机内安装多达10个遵从PCI标准的扩展卡。最早提出的PCI总线工作在33MHz频率之下,传输带宽达到133MB/s(33MHz*32bit/s),基本上满足了当时处理器的发展需要。随着对更高性能的要求,1993年又提出了64bit的PCI总线,后来又提出把PCI总线的频率提升到66MHz。目前广泛采用的是32-bit、33MHz的PCI总线,64bit的PCI插槽更多是应用于服务器产品。PCI总线系统要求有一个PCI控制卡,它必须安装在一个PCI插槽内。这种插槽是目前主板带有最多数量的插槽类型,在当前流行的台式机主板上,ATX结构的主板一般带有5~6个PCI插槽,而小一点的MATX主板也都带有2~3个PCI插槽。目前市面上的PCI总线接口数据采集卡产品已经非常成熟,具有即插即用(PnP)的功能。其操作系统可选用目前流行的Windows系列、高稳定性的Unix等多种操作系统以及专业数据采集分析系统LabVIEW等软件环境。在硬件的安装上也非常简单,使用时只需将接口卡插入机内任何一个PCI总线插槽中并用螺丝固定,信号电缆从机箱外部直接接入,可实现模入模出、数入输出等功能,安装使用方便,程序编制简单。一、设计内容及方法电路部分设计完成模入模出PCI总线接口卡硬件电路,主要由主要由模数转换电路、数模转换电路、数字量输入输出电路和接口控制逻辑电路构成,A/D转换、D/A转换均为12位,同时还设计备有32路单通道或16路双通道输入和4路输出接口,以及32通道可编程DIO。模入部分外部模拟信号经多路转换开关选择后送入高速放大器处理,处理后的信号送入模数转换器进行转换。A/D转换启动方式可以选用程序触发、定时器自动触发、外同步触发等方式,转换状态可以用程序查询,也可以用中断方式通知CPU读取转换结果。模拟量输出部分由D/A转换器件和有关的基准源、运放、阻容件和跨接选择器组成,D/A部分具有加电自动清零功能。数字量输入输出电路为用户提供16路DI及16路DO的信号,DO部分具备加电清零功能。软件驱动部分根据Windows驱动程序模型(WDM)编写Windows系统下的驱动程序,支持即插即用。驱动程序可以采用三种方法动态数据采集,分别是用中断触发、DMA触发和看门狗触发。开发基于LabView的软件程序,设计图型界面实现信号采集卡进行A/D转换、D/A转化、可编程DIO等功能。二、实验方案 由数据采集卡、计算机和LabVIEW程序组成数据采集系统,对信号发器的不同波形信号进行数据采集测试。编写程序实现对数据采集卡的DIO端口的控制,测试数字信号输入输出功能。测试各项功能时需调用DLL中对应的函数。一、进度安排2010.12.10~2011.3.10:了解设计任务要求,查阅文献资料,进行准备工作。2011.3.11~2011.4.20:确定设计方案,设计采集卡原理图并绘制PCB板。2011.4.21~2011.4.31:制作数据采集卡实物,并调试信号采集卡。2011.5.1~2011.5.30:开发开发软件驱动程序和LabView的软件程序。2011.6.1~2011.6.18:整理原理图和源代码等,撰写毕业设计说明书。二、主要参考文献[1]中泰研创,PCI总线8336A使用说明书,2010年10月[2]张国雄,金篆芷,测控电路,机械工业出版社,2000年,ISBN:7-111-08247-8[3]徐惠民,安德宁,延明,数字电路与逻辑设计,人民邮电出版社2009.9,ISBN:978-7-115-19767-2[4]周明德,蒋本珊,微机原理与接口技术,人民邮电出版社,2007,ISBN:978-7-115-15751-5[5]戴鹏飞,测试工程与LabVIEW应用[6]李江全,LabVIEW虚拟仪器数据采集与串口通信测控应用实战,人民邮电出版社,2010,9787115227140选题是否合适:是□否□课题能否实现:能□不能□指导教师(签字)年月日选题是否合适:是□否□课题能否实现:能□不能□审题小组组长(签字)年月日 摘要随着信息技术和电子技术的进步和日益成熟,计算机数据采集技术得到了广泛应用,由于ISA总线的固有缺陷,基于PCI总线的数据采集系统逐渐取代ISA总线数据采集系统,成为数据采集的主流。本文分析了PCI总线数据采集卡的设计方案和性能参数,采用FPGA简化数据采集卡结构,提高数据采集的可靠性。利用EDA技术对数据采集卡电路设计,数据采集电路部分包括:前端采样电路、FPGA控制电路、PCI接口电路、电源供电电路以及其他功能部分电路。基于WDM模型编写Windows系统下的驱动程序,完成上机调试。最后编写数据采集卡各部分功能的程序函数,使用LabVIEW程序等对数据采集卡的数据采集和其他功能进行测试。关键词:数据采集;PCI总线;模数转换;FPGA;WDM ABSTRACTAlongwiththerapiddevelopmentofinformationtechnologyandelectronictechnology,computerdatacollectiontechnologyhasbeenwidelyapplied.BecausetheinherentdefectsofISAbus,dataacquisitionsystemsbasedonPCIbusgraduallyreplacetheonesusingISAbus,becomingthemainstreamofDAQ.ThispaperanalyzesthedesignsandperformanceparametersofPCIbusdatacollectioncard.TheapplicationofFPGAsimplifiesthestructureandincreasethereliabilityofdataacquisitioncards.DataacquisitioncardhardwareisdesignedwithEDAtechnique.TheDAQcircuit componentsincludetheinputsampalingcircuit,FPGAcontrolcircuit,PCIinterfacecircuit, powersupply circuits,andotherfunctionalparts.ThedriverforwindowsiswrittenbaseonWDMandtestedonacomputer.Atlast,programsarewrittenforvariousfuctionsofthedataacquisitioncard,andthesefunctionsaretestedwithprogramssuchasLabVIEW.Keywords:DAQ;PCIbus;ADC;FPGA;WDM 1 天津大学2011届本科生毕业设计(论文)第一章绪论1.1数据采集系统的发展与应用数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文件,由非熟练人员进行操作并且测试任务是由测试设备高速自动控制完成的,由于该种数据采集测试系统具有高速性和一定的灵活性,可以满足众多传统方法不能完成的数据采集和测试任务,因而得到了初步的认可。大约在60年代后期,国外就有成套的数据采集设备产品进入市场,此阶段的数据采集设备和系统多属于专用的系统。20世纪70年代中后期,随着微型机的发展,诞生了采集器、仪表同计算机溶为一体的数据采集系统。由于这种数据采集系统的性能优良,超过了传统的自动检测仪表和专用数据采集系统,因此获得了惊人的发展。从70年代起,数据采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统,另一类是工业现场数据采集系统。就使用的总线而言,实验室数据采集系统多采用并行总线,工业现场数据采集系统多采用串行数据总线。20世纪80年代随着计算机的普及应用,数据采集系统得到了极大的发展,开始出现了通用的数据采集与自动测试系统,该阶段的数据采集系统主要有两类:一类以仪器仪表和采集器、通用接口总线和计算机等构成,这类系统主要由于实验室,在工业生产现场也有一定的应用;第二类以数据采集卡、标准总线和计算机构成,这种接口系统采用积木式结构,把相应的接口卡装在专用的机箱内,然后由一台计算机控制这类系统在工业现场应用较多[1]。这两种系统中如果采集测试任务改变,只需将新的仪用电缆接入系统,或将新卡再添加到专用的机箱即可完成硬件平台重建,比专用系统灵活得多。20世纪80年代后期,数据采集系统发生了极大的变化,工业计算机、单片机和大规模集成电路的组合,用软件管理使系统的成本降低,体积减小,功能成倍增加,数据处理能力大大加强。20世纪90年代至今,数据采集技术已经在军事,航空电子设备及宇航技术工业等领域被广泛应用,由于集成电路制造技术的不断提高,出现了高性能、高可靠性的数据采集系统,数据采集技术已经成为一种专门的技术。该阶段数据采集系统采用更先进的模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速地组成一个新的系统。现阶段并行总线数据采集系统向高速模块化和即插即用方向发展、典型系统有VXI总线系统,PCI、PXI总线系统等,数据位已达到32位总线宽度,采样频率可以达到100MSps[2]。由于采用了高密度,屏蔽型,针孔式的连接器和卡式模块可以充分保证其稳定性及可靠性,但其昂贵的价格是阻碍它在自动化领域普及的一个重要因素。但是,并行总线系统在军事等领域取得了成功的应用。串行总线数据采集系统向分布式系统结构和智能化方向发展,可靠性不断提高。串行总线传送的是串行的位(bi38 天津大学2011届本科生毕业设计(论文)t)信号,一般只适用于采集低频或变化缓慢的传感器或信号调理器输出信号。其在工业现场数据采集和控制等众多领域得到了广泛的应用。由于目前局域网技术的发展,一个工厂管理层局域网车间层的局域网和底层的设备网已经可以有效地连接在一起,可以有效地把多台数据采集设备联在一起,以实现生产环节的在线实时数据采集与监控[3]。1.2PCI总线概述1.2.1微机总线概述任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。总线是支持一种多于二个模块(或子系统)间传送信息的公共通路。计算机各组成部分可以通过总线传送各种数据和命令[4]。初期的总线实际上就是微处理器芯片总线的延伸,是微处理器与外部硬件接口的通路。从微型计算机系统的第一条标准化总线——S-100总线于1975年出现至今,微机系统的性能,有了很大的提高,原先存在的一些总线标准已不适应当前技术发展需要,因而有的被淘汰,有的进行了改进[5]。一般微机系统的总线如图1-1。图1-1微机系统的总线38 天津大学2011届本科生毕业设计(论文)微机中总线一般有系统总线、局部总线和扩充总线。系统总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连,如I2C总线、SPI总线、SCI总线等;而局部总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连,如ISA总线、VESA总线、PCI总线等;扩充总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连,如RS-485总线、IEEE-488总线、USB总线等。从广义上说,计算机通信方式可以分为并行通信和串行通信,相应的通信总线被称为并行总线和串行总线。并行通信速度快、实时性好,但由于占用的口线多,不适于小型化产品;而串行通信速率虽低,但在数据通信吞吐量不是很大的微处理电路中则显得更加简易、方便、灵活。串行通信一般可分为异步模式和同步模式。随着微电子技术和计算机技术的发展,总线技术也在不断地发展和完善,而使计算机总线技术种类繁多,各具特色。1.2.2PCI总线简介PCI(PeripheralComponentInterconnect,即外围部件互连)由Intel在1992年发布,并联合IBM、Compaq、AST、HP、DEC等100多家公司成立了PCI集团,其英文全称为:PeripheralComponentInterconnectSpecialInterestGroup(外围部件互连专业组),简称PCISIG。PCISIG发表了PCI2.0技术规范,并在微机领域得到了广泛的影响[6]。从创立规范发展至今,PCI总线已成为了计算机的一种标准总线。PCI总线作为一种先进的高性能32/64位局部总线,非常适合于显卡、网卡、多串口卡等高速外设,PCI总线取代了早先的ISA总线成为微机系统的主流总线。当然与在PCI总线后面出现专门用于显卡的AGP总线和现在的PCIExpress总线,但是PCI能从1992用到现在,说明他有许多优点,比如即插即用(PlugandPlay)、中断共享等。所谓即插即用,是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。而不象旧的ISA板卡,需要进行复杂的手动配置。ISA卡的一个重要局限在于中断是独占的,而计算机的中断号只有16个,系统又用掉了一些,这样当有多块ISA卡要用中断时就会有问题了。PCI总线硬件与软件两部分组成实现中断共享。PCI总线具有严格的规范,这就保证了良好的兼容性符合PCI规范的扩展卡可以插入任何PCI系统工作。和其他只为图形加速或视频操作的局部总线相比,PCI总线是一套更加整体化整体的系统解决方案。1.2.3PCI总线的特点38 天津大学2011届本科生毕业设计(论文)PCI总线不依附于某个具体处理器,是在CPU和原来的系统总线之间插入的一级总线,具体有一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送,支持多处理器和并发工作。PCI总线还具有良好的扩展性,通过PCI-PCI桥路,可允许无限的扩展[7]。具体来说,PCI总线具有以下特点:1)数据传输率高PCI的数据总线宽度为32位,可扩充到64位。它以33MHz的时钟频率操作。因此,若采用32位数据总线,数据传送速率可达132MB/s;而采用64位宽度,则最高传输速率可达264MB/s。2)支持突发传输(BurstTransmission)通常的数据传输是先输出地址后进行数据操作,即使所要传输数据的地址是连续的,每次也要有输出和建立地址的阶段。而PCI支持突发数据传输周期,该周期在一个地址相位(phase)后可跟若干个数据相位。这意味着传输从某一个地址开始后,可以连续对数据进行操作,而每次的操作数地址是自动加l形成的。显然,这减少了无谓的地址操作,加快了传输速度。这种传输方式对使用高性能图形设备尤为重要。3)支持多主控器不同于ISA总线,PCI总线的地址总线与数据总线是分时复用的。这样做的好处是,一方面可以节省接插件的管脚数,另一方面便于实现突发数据传输。在做数据传输时,由一个PCI设备做发起者(主控,Initiator或Master),而另一个PCI设备做目标(从设备,Target或Slave)。总线上的所有时序的产生与控制,都由Master来发起。PCI总线在同一时刻只能供一对设备完成传输,这就要求有一个仲裁机构(Arbiter),来决定在谁有权力拿到总线的主控权。在同一条PCI总线上可以有多个总线主控器(主设备),各个主控器通过总线仲裁竞争总线控制权。4)减少存取延迟PCI总线能够大幅度减少外围设备取得总线控制权所需的时间,以保证数据传输的畅通。例如,对于连接局域网的以太网控制器,其缓冲区随时从网络接收大量信息,如果等待总线使用权的时间过长,会使网卡无法及时在缓冲区溢出之前迅速将数据送给中央处理器,而被迫将接收的信息作额外的处理。5)独立于处理器传统的系统总线(如ISA总线)实际上是中央处理器信号的延伸或再驱动,而PCI总线以一种独特的中间缓冲器方式,独立于处理器,并将中央处理器子系统与外围设备分开。一般来说,在中央处理总线上增加更多的设备或部件,会降低系统性能和可靠程度。而有了这种缓冲器的设计方式,用户可随意增添外围设备,而不必担心会导致系统性能的下降。这种独立于处理器的总线结构还可保证外围设备互连系统的设计不会因处理器技术的变化而变得过时。6)支持即插即用(PlugandPlay)38 天津大学2011届本科生毕业设计(论文)所谓即插即用,是指在新的接口卡插入PCI总线插槽时,系统能自动识别并装入相应的设备驱动程序,因而立即可以使用。即插即用功能使用户在安装接口卡时不必再拨开关或设跳线,也不会因设置有错而使接口卡或系统无法工作。即插即用的硬件基础是每个PCI接口卡(PCI设备)中的256个字节的配置寄存器。在操作系统启动时或在PCI接口卡刚接入时PCI总线驱动程序要访问这些寄存器,以便对其初始化,并装入相应的设备驱动程序。7)数据完整性PCI总线提供了数据和地址的奇偶校验功能,保证了数据的完整性和准确性。8)适用于多种机型PCI总线适用于各种规格的计算机系统,如台式计算机、便携式计算机以及服务器等。通过支持3.3V的电源环境,PCI局部总线可应用在便携式计算机中。在服务器环境下,往往要求能连接较多的外围设备,而PCI总线规范规定一个计算机系统中可同时使用多条PCI总线,这又使得PCI总线广泛应用于服务器中。9)低成本、高可靠性PCI总线插槽短而精致(总线物理引脚窄且间距小);为总线标准提供支持的PCI芯片均为超大规模集成电路,体积小而可靠性更高;PCI总线采用地址/数据复用技术,减少了引脚需求。这些使得PCI板卡的小型化成为可能,从而使成本降低,而可靠性提高。PCI总线的硬件曾进行2000多小时的电子SPICE模拟试验验证[3]。1.3PCI数据采集卡现状综述PCI数据采集卡在集成度上可以分成三代.第一代PCI数据采集卡采用PCI接口芯片+通用数字逻辑芯片+存储芯片+数据采集芯片的模式,卡上芯片数量很多,功能也不容易做的强大,而且故障率高,生产成本也不容易降低。第二代PCI数据采集卡采用PCI接口芯片+FPGA芯片+存储芯片+数据采集芯片的模式,卡上资源比一代数据采集卡多,另外,在功能增强的情况下,没有突破PCB制版面积的限制,生产成本比较低,故障率也有所降低。第三代PCI数据采集卡是目前各个公司正在研制的主流卡。该类卡将PCI接口逻辑与数据采集管理逻辑都做到同一片大容量FPGA中,这样可以降低生产成本,同时出现故障的可能也在降低。另外,利用大容量FPGA可以嵌入更多的IP核,构成一个更加强大的SOC系统,这样可以大大提高数据采集卡的性能。目前,市面上又多款PCI采集卡出售,已经商品化的PCI数据采集卡大多是第二代产品。研制PCI数据采集卡的公司不下十几家。现在,国内研制PCI数据采集卡比较著名的公司有研华公司和中泰公司等,每个公司都有上十款不同规格的PCI数据采集卡出售。以中泰创研的两款多功能PCI数据采集卡PCI-8333(图1-2)和PCI8336(图1-3)为例,这两款卡分别是第一代和第二代数据采集卡,都具有12位A/D转换分辨率,但PCI-8336采用了FPGA控制,输入通道数达到了38 天津大学2011届本科生毕业设计(论文)单端32路,双端16路,是PCI-8336输入通道数的两倍,而且具有增益范围可编程控制等优势,功能更为强大。同时板卡上的元器件有所减少,可靠性更高。图1-2ZTICPCI-8333D图1-3ZTICPCI-8336A38 天津大学2011届本科生毕业设计(论文)第二章PCI总线规范和接口设计方案2.1PCI总线规范2.1.1PCI总线系统结构  典型的PCI总线系统结构包括两个桥接器:Host/PCI桥和PCI/ISA桥[8]。图2-1展示了PCI、扩展系统、CPU及存储器之间的连接关系。图2-1 典型的PCI总线系统结构Host/PCI桥也称为北桥(NorthBridge),连接CPU和基本PCI总线,其中包括存储器管理部件和AGP接口部件,使得PCI总线上的部件可以与CPU并行工作。PCI/ISA桥也称为南桥(SouthBridge,即标准总线桥路),连接基本PCI总线到ISA或EISA总线,其中包括中断控制器、IDE控制器、USB主控制器和DMA控制器,它可将PCI总线转换为标准总线,如ISA,EISA等,以便在标准总线上挂接低速设备如打印机、MODEM、传真机、扫描仪等。  北桥和南桥构成芯片组,基本PCI总线上,可以连接一个或多个PCI桥,一个芯片组可以支持一个以上北桥。PCI系统由桥接器将处理器、存储器、PCI和扩展系统联系在一起。38 天津大学2011届本科生毕业设计(论文)PCI总线定义Memory(存储器)空间、I/O(输入/输出)空间和配置空间3种地址空间,并具有两种工作模式。其中主模式下的PCI设备具有总线控制权,可以实现DMA传输;而被主设备控制进行通信的称为从模式(TARGET)。2.1.2 PCI总线信号定义PCI总线引脚数为120条(包含电源、地、保留引脚等),总线的信号采用了复用技术,线数大大减少。PCI信号可分为必备和可选两大类。如果是主设备,必备信号为49条;如果是从设备,则必备信号是47条。可选的信号为51条,主要用于64位扩展、中断请求和高速缓存支持等。利用这些信号线,可以处理数据、地址信息,实现接口控制、仲裁及系统功能。PCI总线信号如图2-2所示图2-2PCI总线信号2.1.3PCI总线的配置空间所有的PCI设备都必须实现配置空间,该空间分为首部区和设备有关区。首部区中的强制性寄存器有:供应商代码(VendorID)寄存器用于标明设备制造商,设备代码(DeviceID)寄存器用于指明特定的设备它由供应商分配,版本识别(RevisionID)寄存器,首部类型(HeaderType)寄存器和类别寄存器(ClassCode)以上五个寄存器均可用于PCI总线上设备的识别。另外,首部区中还有两种必须实现的寄存器:其中命令寄存器用于存放PCI命令,而设备状态寄存器则用于记录PCI的状态信息。操作系统在启动时应判断系统中有多少存储器以及I/O设备需要多少地址空间,然后建立统一的地址映射关系,这时的PCI设备需要用到基地址寄存器。另外,若要实现中断,还必须设置中断引脚(InterruptPin)寄存器和中断线(InterruptLine)寄存器。38 天津大学2011届本科生毕业设计(论文)2.1.4PCI总线的中断机制PCI总线的硬件中断方式分为边沿触发和电平触发,PCI设备为低电平触发(level-sensitive)。PCI总线上有4条中断请求信号线INTA#、INTB#、INTC#、INTD#,中断引脚寄存器的值01H~04H分别对应4条中断线,单功能PCI设备只能使用INTA#。此外,使用了中断引脚的设备还必须实现中断线寄存器。POST例程(加电自检测程序)在进行系统初始化和配置时还要将中断线信息写入该寄存器。PCI总线中断是可以共享的这一方面解决了中断资源紧张的问题,但另一方面也会给PCI中断的实现带来麻烦。2.1.5PCI总线的操作PCI总线的数据传输采用突发(Burst)方式,每次传输由一个地址周期和一个或多个数据周期组成。PCI总线的读操作和写操作时序分别如图2-4和图2-4所示。图2-3PCI总线读操作时序图2-4PCI总线写操作时序时序图中椭圆部分表示一个周转周期(TurnaroundCycle),即某信号线由一个设备驱动转到另一个设备驱动之间的过渡期,这样可以避免2个设备同时驱动一条信号线所造成的竞争[4]。PCI总线的信号大多由时钟CLK的前沿取样而起作用,每次总线交换都从帧信号FRAME#开始。在读操作时序中,FRAME#有效后的第一个时钟上升沿为地址周期,C/BE[3::0#]上出现的是读命令。当主控设备准备好接收数据时,置TRDY#38 天津大学2011届本科生毕业设计(论文)有效;当目标设备准备好数据时,置TRDY#有效。数据传输发生在IRDY#和TRDY#均有效时的时钟上升沿处,IRDY#或TRDY#任一个无效都将使总线自动插人1个等待周期。数据传输过程中,主控设备和目标设备都可以请求终止当前总线操作,通常情况下,主控设备通过置FRAME#为高,IRDY#为低来指示最后一个数据传输。目标设备则通过置STOP#有效来请求终止,然后由主控设备最终终止操作。在图2-4所示的写操作时序中,由于AD[31::0]一直由主控设备驱动,所以不需要周转周期。写操作其间的数据传输类似于读操作。2.2PCI接口设计方案2.2.1采用CPLD或FPGA自行设计一般来说,CPLD结构比较适合于实现PCI总线接口设计,该方法可根据系统需要有选择的实现PCI的相应功能,设计灵活,有利于系统优化,而且具有较高的性能价格比,节省板卡面积,但缺点是要求设计者对PCI总线协议必须有较深入的理解实现难度大。采用CPLD或FPGA等可编程逻辑器件实现PCI接口最大的优点在于其灵活的可编程性,不受插卡功能的限制,如Altera公司的FLEX8000(CPLD),Xilinx公司的XC3100A(FPGA)等。首先对于一个典型的PCI设计,并非要实现PCI规范中的所有功能,而是这些功能的一个子集,可编程逻辑器件可以依据插卡功能进行最优化,只实现必要的PCI接口功能,这样可以节约系统的逻辑资源。其次可以将PCI插卡上的其他用户逻辑与PCI接口逻辑集成在一个芯片上面实现紧凑的系统优化设计,再者当系统升级时,只需要对可编程器件进行逻辑设计,而无需更新PCB版图。目前几乎所有的可编程器件生产厂商都提供经过严格测试的PCI接口功能模块,由用户进行简单的组合设计即可,如Xilinx公司的Logicore,Altera公司的AMPP(AlteraMegafunctionPartnersProgram)等。采用可编程逻辑器件设计PCI接口具有灵活的特点,但在实际中有一些限制。实现PCI规定功能要完成逻辑校验、地址译码、实现配置所需的各类寄存器等PCI的基本要求,大致需要10000个门电路;可编程器件生产厂商提供的经过严格测试的PCI接口功能模块价格昂贵。用户必须自己进行设计,设计难度大,调试困难。在小规模的应用中,就限制了可编程逻辑器件来实现PCI接口的应用。2.2.2采用专用接口新芯片在PCI总线配置卡的设计中,采用专用PCI接口芯片来实现PCI接口,卡发人员只需要考虑用它来实现自己要求的功能,而不需要考虑PCI芯片的内部构造,这样就是设计者可以把主要精力放在对整个系统的设计上,以实现完整的PCI主控模块和目标模块接口功能,将复杂的PCI总线接口转换为相对简单的接口。但是,这种芯片必须具有较低的成本和通用性。38 天津大学2011届本科生毕业设计(论文)目前只要少数厂家提供这类专用芯片。如AMCC(AppliedMicroCircuitsCorporation)公司的S5920(TARGET接口)、S5933(MASTER接口)和PLX公司的PCI9052、PCi9054等,放置于系统或插卡与PCI总线之间,将复杂的PCI总线接口关系转化为简单的8/16/32位附加总线接口关系,用于提供数据和控制信号的接口电路。附加总线接口关系与ISA总线接口关系相似,使得原ISA板卡的设计者可以很容易地针对附加总线接口关系进行PCI总线接口设计。2.2.3采用IP核设计如果设计者不想使用现有的PCI总线接口芯片以节约板卡面积,同时也不想对PCI总线进行深入的理解,还可采用IP核来实现PCI接口,使得设计更有效、更快,尤其是便利于调试,灵活性好。IP核(IntellectualPropertycore)是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。PCIIP核有软核、硬核之分。FPGA+PCIhardIP方式与专用PCI接口芯片相似,将PCI接口逻辑固化在FPGA里,设计者只需要根据要求设计PCI用户逻辑接口,并能通过顶层仿真验证PCI接口以及用户设备逻辑设计的正确与否。而FPGA+PCIsoftIP方式可以根据实际要求配置PCI软核,然后设计者再将PCI软核与PCI用户逻辑集成在一片FPGA中,并可以在顶层通过仿真及下板编程验证PCI接口以及用户逻辑设计的正确与否。因此,这种方式的特点是具有功能强、速度高、可靠性好、占用板卡面积少、硬件成本最低,但卡发系统比较昂贵。2.3.4接口方案选择由以上几种接口方案比较可知,用可编程逻辑器件可以较为灵活地实现所需功能。但是为了达到PCI规范的严格要求,需要作大量的逻辑验证、时序分析和程序调试。而采用可编程逻辑器件厂商提供的功能模块或IP核设计价格比较昂贵。采用PCI接口芯片可以比较容易地实现PCI接口,无路从技术或者成本都是比较理想的选择。PCI9052具有强大的功能和简单的用户接口,为PCI总线接口的开发提供了一种简单的解决方案,设计者只需设计局部总线接口控制电路,即可实现与PCI总线的高速数据传输[9]。2.3PCI9052接口芯片2.3.1PCI9052接口芯片的功能特性  PCI9052是PLX公司开发的低价位PCI总线目标接口电路,功耗低,采用PQFP型160引脚封装,符合PCI2.1规范,它的局部总线(LOCALBUS)可以通过编程设置为8/16/32位的(非)复用总线,数据传送率可达到132Mb/s,38 天津大学2011届本科生毕业设计(论文)提供了ISA接口,可以使ISA适配器迅速、低成本地转换到PCI总线上。主要功能与特性如下所述: 1)异步操作PCI9052的LocalBus与PCI总线的时钟相互独立运行,两总线的异步运行便于高、低速设备的兼容。LocalBus的运行时钟频率范围为0MHz~40MHz,TTL电平,PCI的运行时钟频率范围为0MHz~33MHz。2)支持突发操作PCI9052提供一个64字节的写FIFO和一个32字节的读FIFO,从而支持预取模式即突发操作。3)中断产生器可以由LocalBus的二个中断信号LINTi1和LINTi2产生一个PCI中断信号INTA#。4)串行EEPROM接口用于存放PCI总线和Local总线的配置信息。5)5个局域总线地址空间和4个片选基址和地址范围可以由串行EEPROM或主控设备进行编程。6)总线驱动所有地址、数据和控制信号都有PCI9052直接驱动,不用额外的驱动电路。7)Localbus等待状态除了等待信号LRDYI#用于握手之外,PCI9052还有一个内部等待产生器(包括地址到数据周期、数据到数据周期和数据到地址周期的等待)。8)PCI锁定机制主控设备可以通过锁定信号占有对PCI9052的唯一访问权。 9)ISA总线模式PCI9052提供一个ISA逻辑接口,用户可直接使PCI总线和ISA总线相连,可以非常容易地将ISA设计转换到PCI。PCI9052的接口示意图如图2-5所示。图2-5PCI9052的接口示意图38 天津大学2011届本科生毕业设计(论文)2.3.2PCI9052的芯片操作1)初始化和复位在上电过程中,PCI9052的内部寄存器有PC总线的RS信号复位,并给以响应信号RETRY,在LOCALBUS上输出LRESET#信号,还要检查串行EEPROM否存在,如果安装EEPROM并且它的前16位不为FFFFH,则PCI9052用EEROM中的值来配置片内的寄存器,否则使用缺省值。PCI总线上主控设备还可通过软件的途径(在NCTRL寄存器中设置相的位)对PCI9052复位,并给出LRESET#信号。采用这种复位后,主设备只能访问PCI9052的配置寄存器,而不能访问LOCBUS,直到由主设备将软件复位的位清除为止。2)片内寄存器访问为了接口设计的最大灵活性,PCI9052提供了两种类型的片内寄存器,它们分别是PCI配置寄存器和局部配置寄存器,二者都可以PCI总线和串行EEPROM访问,也可以通过设置寄存器CNTRL~CNTRL禁止对串行EEPROM的访问。3)直接数据传输模式PCI9052支持PCI主设备直接访问LOCALBUS的设备,数据的传输方式分为内存映射的突发传输和I/O映射的单次传输,并由PCI基地址寄存器设置其在PCI内存和I/O空间的合适位置,局部映射寄存器还允许PCI地址空间转换到局部地址空间。4)PCI中断的产生PCI规范定义了四个中断信号,以INTA#为例,要产生PCI中断INTA#,首先要将寄存器INTCST的第6位(PCI中断使能位)设置为1;如果需要以软件方式产生中断,则只需将INTCST的第7位(软件中断位)设置为1即可。38 天津大学2011届本科生毕业设计(论文)第三章数据采集卡硬件电路设计3.1数据采集卡硬件电路结构PCI数据采集卡是一个复杂的系统,它插入计算机的PCI插槽,工作是靠计算机PCI插槽供电,将采集到的信号转换成计算机能够识别的信号,依靠符合PCI协议的通信格式,将数据送入计算机主板,并在操作系统的驱动程序的配合下,将数据发送个虚拟示波器或逻辑仪进行显示。本设计采用FPGA进行逻辑控制,这样有利于减少数据采集卡上的芯片数量,同时增强系统的可靠性。实现数据采集功能的硬件电路包括前端模数转换电路、FPGA控制电路和PCI总线接口电路三部分,如图3-1所示。实际上,图中的结构可分为两部分组成,即数据通道子系统和控制子系统。除了数据采集功能部分还有电源模块。图3-1系统设计框图硬件设计绘图使用AltiumDesigner10计算机辅助电路绘图软件完成,AltiumDesigner10最为Altium公司最新版本的产品,继承了ProtelDXP2004功能全面,绘制查图方便的优点,添加了三维PCB设计功能和FPGA系统设计方面的新功能,界面更加简洁和人性化,为电子产品开发提供了一套完整的解决方案。3.2电源供电电路电源模块的外部供电由PCI插槽提供5V电源,电源模块的主要作用是将PCI插槽提供的5V电源进行滤波,去除高低频波。电源模块使用NR5D5/100A电源模块,单路5V直流输入,输出一路±5V直流电压。另外由于PCI数据采集卡还需要3.3V的直流电源,因此数据采集卡上还包含5V直流转3.3V直流的稳压电源部分。该部分使用了AX1117M-ADJ低压差正电压稳压器和RC117M-33低压先行稳压器,分别向模数转换电路和FPGA提供3.3V直流电压。38 天津大学2011届本科生毕业设计(论文)为了使数据采集卡上的各个芯片都能对噪声有良好的抑制,还需要进行退耦设计,以消除供电电路中电流冲动对正常工作的影响。退耦电路采用旁路电容接地或大电容与小电容并联的方法。一般芯片的供电引脚采用旁路一个0.1μF的退耦电容接地,因为这些地方的信号主要是高频信号,使用小电容即可。对供电稳定要求较高的电路使用0.1μF电容与10μF电容并联接地,这样就可以很好的屏蔽高频和低频信号。另外,滤波电容离芯片的位置越近越好。3.3FPGA控制电路FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列的概念,内部包括可配置逻辑模块和、输入输出模块和内部连线三个部分,有丰富的触发器和I/O引脚。本设计中使用Altera公司的Cyclone系列FPGA,芯片型号为EP1C3T144。AlteraCyclone系列FPGA基于1.5V,0.13um工艺,Cyclone系列侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求。EP1C3T144共有2910个逻辑单元,59904位RAM,一个PLL和104个用户I/O。I/O输出可以根据需要调整驱动能力,并具有压摆率控制、三态缓冲、总线保持等功能;调整器件的I/O管脚分为四个区,每个区可以独立采用不同的输入电压,并可以提供不同电压等级的I/O输出。图3-2EP1C3T144部分引脚图38 天津大学2011届本科生毕业设计(论文)BANK1与PCI9052芯片相连,进行数据传输交换,为PCI通信服务;BANK2与模数转换电路相连,接受模数转换的结果信号并对多路开关和模数转换电路实现逻辑控制;BANK3和BANK4与其他芯片相连完成数字输入/输出功能和四路模拟输出功能。该芯片上的CLK信号由PCI总线控制器提供时钟,最高电平只需要上拉到2.4V,依靠信号脉冲的过冲现象可以拉高到5V。按照这个要求,该信号不能接任何电平转换器。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程,用户可以根据不同的配置模式采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系小时。因此,FPGA能够反复使用。FPGA的编程无需专用的FPGA编程器,只需通用的EPROM、PROM编程器即可。3.4前端采样电路和模数转换电路3.4.1多路开关电路数据采集卡的信号输入端采用37芯D型插头与外部信号源及设备连接,用户可以根据需要选择单端或双端输入方式,输入方式通过跨接器选择实现。单端输入方式中各路输入信号共用一个参考电位,即各路输入信号共地,这是最常用的接线方式。使用单端输入方式时,地线比较稳定,抗干扰能力较强。双端输入方式中各路输入信号各自使用自己的参考电位,即各路输入信号不共地。如果输入信号来自不同的信号源,而这些信号源的参考电位(地线)略有差异,可考虑使用这种接线方式。使用双端输入方式时,输入信号易受干扰,而且所有接入的信号,不论是高电位还是低电位,其电平相对于模拟地电位应不超过+12V及-5V,以避免电压过高造成器件损坏。在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。通常在数据采集系统中,需要采集的模拟量一般比较多,且它们的变化是缓慢的,为了节省资源,可以使用多路开关,使多个模拟量公用一个A/D转换器进行分时采集和转换[10]。该数据采集卡设计中输入通道数需达到单端32路和双端16路,通道数较多,难以通过并行数据输入实现,故采用串行数据输入。串行数据的输入方式通过四片CD4051芯片实现。CD4051是单8通道数字控制模拟电子开关,有三个二进控制输入端A、B、C和INH输入,具有低导通阻抗和很低的截止漏电流。幅值为4.5~20V的数字信号可控制峰值至20V的模拟信号。例如,若VDD=+5V,VSS=0,VEE=-13.5V,则0~5V的数字信号可控制-13.5~4.5V的模拟信号。这些开关电路在整个VDD-VSS和VDD-VEE电源范围内具有极低的静态功耗,与控制信号的逻辑状态无关。当INH输入端=“1”时,所有的通道截止。三位二进制信号选通8通道中的一通道,可连接该输入端至输出。38 天津大学2011届本科生毕业设计(论文)CD4051的芯片功能满足输入信号条件,使用四片CD4051芯片即可构成32路通道。CD4051引脚图如图3-3所示。图3-3CD4051芯片引脚图四片CD4051的片选由FPGA发出信号控制,EP1C3T144的111~114和119~121发出七路信号,其中有四路分别控制每片CD4051的INH管脚,当INH管脚接受到低电平时芯片进入工作状态,另外三路控制信号通向四块芯片的A、B、C三个管脚,控制芯片上的一个通道被选通。输入状态接接通通道真值表如表3-1所示。表3-1CD4051输入状态接通通道真值表INHCBA输出LLLLOLLLH1LLHL2LLHH3LHLL4LHLH5LHHL6LHHH7HXXX无EP1C3T144输出的信号为3.3V电压,首先通过SN54HCT245J芯片。得州仪器公司的(TI)SN54HCT245J是八进制总线收发器,专为总线之间的异步双向沟通设计,由DIR输入状态决定是由A总线传输到B总线还是由B总线传输到A总线。输出使能(OE)引脚可以关闭芯片功能,使总线之间相互隔离。SN54HCT245J芯片的引脚如图3-4所示。38 天津大学2011届本科生毕业设计(论文)图3-4SN54HCT245芯片引脚图HCT245的输出电压为5V,经过ULN2003A芯片后接到CD4051。ULN2003A是一个7路反相器,即当输入端为高电平时ULN2003A输出端为低电平,当输入端为低电平时ULN2003A输出端为高电平。ULN2003A是内部包含七个NPN复合晶体管组成的阵列,由集成达林顿管组成驱动电路,输入电压为5V,适用于TTL和COMS电平。前端采样电路和片选通道控制电路如图3-5所示。38 天津大学2011届本科生毕业设计(论文)图3-5前端采样电路和片选通道控制电路前端采样电路的输入信号最后从CD4051的第三引脚输出,FPGA发出控制信号每次选通一路通道将数据输出到模数转换电路,采集的数据处理完成后选通下一通道,依次实现多路通道的串行数据传输38 天津大学2011届本科生毕业设计(论文)3.4.2可编程增益放大电路数据采集系统一般与具有在1mV~±10V之间变化的满量程输出信号的各种传感器连接。这些传感器也具有多种输出阻抗,因此数据采集前端必须提供高输入阻抗以避免负载误差。仪表放大器通常用于调理来自传感器的差分信号。然而,由于信号大小变化较大,因此需要许多不同的增益。采集到的信号在进入模数转换器件之前首先要进行运算放大,放大电路采用亚德诺半导体公司(ADI)的AD8250芯片。AD8250是一款具有数字式可编程增益的仪表放大器,拥有GΩ级输入阻抗、低输出噪声和低失真等特性仪表放大器,除了输入共模电压范围很宽之外,该器件还拥有80dB的高共模抑制能力(G=1,直流至50kHz)。精密直流性能与高速能力的结合则使AD8250成为数据采集应用的绝佳选择。此外,这款单芯片解决方案简化了设计与制造,并可通过内部电阻与放大器的严格匹配来提高仪器仪表的性能。AD8250适合与高性能ADC配套使用,可提供1,2,5和10的增益。AD8250采用10引脚MSOP封装,这种封装面积大约是8引脚SOIC封装的1/2,并且比现有解决方案减少了90%以上。更小的封装面积意味着可以在PCB上放置更多的器件,从而允许在产品增加额外的数据通道。图3-6可编程增益放大电路可编程增益放大电路路如图3-6所示,+IN引脚接受从CD4051传输来的数据信号,经过放大后的数据信号从Vout引脚输出到模数转换器(ADC)。AD8250的增益用数字方式设定,A0和A1管脚必须被设为相对于地的高电平或低电平,由EP1C3T144的129和130引脚发出一个2bit信号到A0和A1,选择增益放大倍数。WR引脚控制一个三态开关,可以设置为高电平、低电平或-VS。当WR引脚设置为-VS时可以进行编程控制增益,增益设置模式如表3-2所示。38 天津大学2011届本科生毕业设计(论文)表3-2AD8250增益模式设置GWRA1A01-VSLL2-VSLH5-VSHL10-VSHH3.4.3模数转换电路图3-7模数转换电路模数转换电路部分主要使用了德州仪器公司的ADS7835精密ADC和诺德亚半导体的AD5623R芯片,以及TL081C和TL082C运放。模数转换电路如图3-7所示。AD5623R芯片是低功耗双12位缓冲电压输出DAC,具有片上参考基准电压源,可以确保DAC输出0V并保持有效。AD5623R工作原理如图3-8所示。VoutA和VoutB是电压输出引脚,4~8号引脚与EP1C3T144的124~128号引脚相连,由FPGA控制AD5623R的工作状态,同时通过数据输入管脚DIN的输入信号控制VoutA输出0V电压,VoutB输出ADC参考端所需的参考电压。10号管脚即可用于参考电压输入,也可用于参考电压输出,当选中内部参考电压时用于参考电压输出;当使用外部扩展参考电压时38 天津大学2011届本科生毕业设计(论文)用于参考电压输入,默认情况下该引脚用于参考电压输入。图3-8AD5623R原理图TL081C和TL082C芯片是低成本JFET输入运算放大器,每个内部补偿运算放大器具有良好的高压匹配,提供宽带宽和低输入偏置电流转换速率快。TL081C为单路运算放大器,TL082C为双路运算放大器,引脚如图3-9所示。图中OP1使用TL081C构成同向放大电路,其闭环增益为K=1+R24/R25=1.5[11]。OP2使用TL082C的两个运算放大器构成两个电压跟随器,用于提供固定电压或稳定其他芯片的参考电压。图3-9Tl081/TL082引脚图OP1的3号管脚输入信号电压值为AD8250输出信号电压值的2/3,经过同步运算放大器后恢复为原值,处理后的信号输入ADC进行模数转换。ADS7835是12位小尺寸、低功耗、高速模数转换器,吞吐率达500kHz,ADS7825工作原理如图3-10所示。图3-10ADS7835原理图38 天津大学2011届本科生毕业设计(论文)ADS7835包含一个内部2.5V参考电压,但动态负载会引起参考电压的变化。使用扩展参考电压时,VERF引脚旁路到地至少有一个0.1μF的陶瓷电容(接近尽可能ADS7835放置),可以提供更好的稳定性。模数转换输入信号范围在-VERF到+VERF之间,VERF参考电压的数值由FPGA控制AD5623R提供,所以使用外部参考电压可以扩大输入范围。Ain引脚为模拟信号输入引脚,DATA引脚为数字信号输出引脚,时钟信号引脚CLK和转换启动引脚CONV分别与EP1C3T144的131和133号引脚相连,由FPGA控制ADC的工作状态,最终的数字输出信号也传输到131号管脚,通过FPGA继续传输。3.5PCI接口电路3.5.1PCI接口连接器PCI接口部分是数据采集卡与计算机主板的PCI插槽连接的连接器,如图3-11所示。该连接器一共有124个引脚,对应PCI接口的124个连接金手指。PCI接口连接器的5V电源引脚都并联引出,作为PCI接口对PCI数据采集卡的基本电源;连接器的所有GND端均并联引出,作为基本电源的公共地端。图3-11PCI接口连接器芯片的电源布线必须遵循PCI规范,在电源层和地线层之间的的电容可为连接器上的电源引脚提供去耦作用,所有3.3V引脚和没有用到的5V引脚需要耦合到地。对于PCI板卡,必须指明版上的电源功耗的最大值,而系统无论在5V或3.3V电源线上都必须满足这个功耗。该连接器中PRSNT1接地,而PRSNT2悬空,这样,将该卡插入PCI插槽后,PCI数据采集卡将使用PCI板卡的最大允许功耗25W。另外,该连接器中提供地址和数据(AD0至AD31)、总线命令/字节使能(C/BE0#至C/BE3#)、周期帧(FRAME#)、设备选择(DEVSEL#)、初始化设备选择(IDESL)、准备好(IRDY#)、复位(RST#)等信号引脚,使PCI卡与主机之间进行通信。38 天津大学2011届本科生毕业设计(论文)3.5.2PCI9052接口电路图3-12PCI9052接口示意图PCI9052芯片的接口示意图如图3-12所示。PCI分配资源的数据来源是通过外扩的EEPROM来实现的,根据PCI9052接口芯片的要求,选用Microchip公司支持三线串行接口的EEPROM。在电源上电期间,PCI的RST#信号复位PCI9052内部寄存器。而PCI9052也输出局部复位信号(LRESET#)并检查是否存在外部EEPROM,如果存在并且第一个16位字不是FFFFH,则PCI9052加载EEPROM中的数据到PCI9052的内部寄存器中;否则默认值被使用。PCI9052配置寄存器仅能由EEPROM或PCI主机处理器写。在EEPROM初始化期间,PCI9052用RETRY信号来响应PCI目标访问。图3-13给出了本设计中EEPROM(93CS46)和PCI9052的连接电路图。38 天津大学2011届本科生毕业设计(论文)图3-13EEPROM和PCI9052的连接电路图EEPROM中配置的主要信息包括:设备识别号、供应商代号、四个局部总线空间的大小以及空间的基地址等。可以事先通过编程器将配置信息写入配置EEPROM中,也可在系统启动后用系统在线烧录对EEPROM进行操作。串行EEPROM端信号有以下几种:时钟信号(EECK)、读数据信号(EEDO)、写数据信号(EEDI)和片选信号(EESC),分别和EEPROM相应管脚相连即可。PCI9052的135号引脚LCLK由晶振源提供时钟信号,可与PCI时钟异步。晶振源使用16MHz晶振作为局部总线时钟信号。149号引脚为CLK为时钟信号,做为PCI设备必须的输入,提供时序可达33MHz。根据PCI通信协议,CLK信号不能经过中间任何电平缓冲器或者电阻,因为CLK信号线是PCI电平,这个信号在高速通信中作为通信交易的节拍信号,这个信号不能有比较大的通信延迟时间,在信号完整性方面也不能由用户别进行缓冲控制。38 天津大学2011届本科生毕业设计(论文)第四章驱动程序编写4.1Windows环境下的驱动程序4.1.1WDM模型在设计和使用PCI设备时,经常要在软件中对系统资源进行访问,因此只有编制设备驱动程序才能实现对PCI总线设备的完全访问。在DOS操作系统时代,对于一个应用程序而言,它总认为自己是唯一运行的程序,因此常常可以直接访问硬件,独占所有的系统内存以及系统运行时间,也就不需要设备驱动程序。但是到了Windows时代,系统不可能让程序随意直接访问硬件,以免引起混乱导致系统崩溃。计算机在插入新的板卡时,需要向操作系统申请系统资源,操作系统调用相应的驱动程序为板卡提供可以调用的资源界面。WDM模型(WindowsDriverModel)是微软公司为当前主流操作系统的驱动程序设计的一种构架,和传统的VXD的驱动是完全不同的的体系结构。WDM驱动程序使用了一组可用来与内核模式Windows组件(如I/O管理器和即插即用(PnP)管理器)进行通信的接口,为存在于操作系统中的设备驱动程序提供了一个参考框架。模块化的WDM体系结构中灵活统一的接口,是操作系统可以动态地配置不同的驱动程序模块来支持特定的设备。一个典型的驱动程序堆栈由通用设备、协议以及特定协议和特定总线的微型驱动程序连接的总线类型驱动程序构成。动态构造WDM驱动程序堆栈是实现即插即用设备的关键。WDM和其他模式设备驱动程序基本上是相同的,代码中的主要区别在于如何创建设备。在WDM驱动程序中,即插即用(PnP)设备管理器告知何时向系统添加一个设备,或者从系统删除设备。PnP管理器使用安装的INF文件查找新设备的正确驱动程序。对于开发WDM驱动程序来说有三个常用的开发环境,Microsoft公司的WindowsDDK,NuMega公司的Driverstudio、和Jungo公司的WinDriver等。在使用中虽然利用DDK开发的驱动程序代码非常简洁,结构清晰,效率也高,但是开发难度较大,它需要阅读大量的DDK文档,深入了解操作系统的内核工作方式,开发的周期长,因此适于专业的驱动程序开发人员。用WinDriver开发虽然难度不大,但是它是针对PCI、ISA、EISA、USB等总线设备开发的,通用性不强,并且程序运行效率不高。利用DriverStudio则使用简单,开发速度较快,因此选用NuMega公司提供的Driverstudio作为开发工具。Driverstudio包括DriverWorks、DriverNetworks、SoftlCE和VToolsD等工具模块。其中,DriverWorks包含一个非常完善的源代码生成工具(DriverWizard)以及相应的类库和驱动程序样本,它提供了在C++下进行设备驱动程序开发的支持[12]。4.1.2驱动程序框架设计和安装文件38 天津大学2011届本科生毕业设计(论文)Windows驱动程序模型重新定义驱动程序分层使用了如图4-1所示的层次结构。图中左边是一个设备对象堆栈。设备对象是系统为帮助软件管理硬件而创建的数据结构。一个物理硬件可以有多个这样的数据结构。处于堆栈最底层的设备对象称为物理设备对象PDO(PhysicalDeviceObject),代表了设备和总线之间的连接。在设备对象堆栈的中间的对象称为功能设备对象FDO(FunctionalDeviceObject),代表了设备的功能。在FDO的上面和下面还会有一些过滤器设备对象FIDO(FilterDeviceObject)。位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面(但仍在PDO之上)的过滤器设备对象称为下层过滤器[13]。图4-1Windows程序分层结构模型驱动程序的主要功能主要是完成设备初始化和读写定义,驱动程序在初始化过程中利用器件识别号(DID)、厂商识别号(VID)和检索号(Index)搜索PCI器件,通过调用PCIBIOS确认其存在,然后利用总线号、器件号和功能号寻址该设备PCI配置空间(ConfigurationSpace),获得该硬件的参数。使用DriverWizard完成驱动程序框架,生成两个类,一个是设备驱动程序类,另一个是设备应用对象类。驱动程序类只要完成WDM的DriverEntry和AddDevice例程。设备对象类针对与硬件对应的功能设备对象(FDO)类,主要完成硬件交互例程。驱动程序入口程序向操作系统提供一个名称为DriverEntry()的函数,在启动驱动程序的时候,操作系统将调用这个入口。在这个入口函数中,必须做必要的初始化设置,并设置必要的回调函数。对功能驱动程序,一般调用AddDevice函数创建一个设备对象并把它连接到以PDO为底的设备堆栈中。Windows系统需要INF文件来得到硬件设备驱动程序的安装信息。INF文件包含了驱动程序的名称,驱动程序应该复制到的目录以及在驱动程序安装时必须生成和修改的注册表入口。DriverWizard在所建工程中生成设备信息文件框架,通过添加对应信息得到所需的设备信息文件。38 天津大学2011届本科生毕业设计(论文)4.2设备的操作4.2.1配置空间的访问模块PCI设备是可以再定位的,设备的地址空间不是硬件固定的,PCI设备驱动程序及其它配置软件应当用该设备配置空间中的映射信息来决定将设备映射到何处,这个可以在例程OnStartDivce中实现。PCI配置空间是一容量为256字节并具有特定结构的地址空间,其中前64字节包含PCI接口的信息。任何因设备而异的信息必须安置在64~255的地址空间。DriverWorks的KPeiConfiguration类封装了访问PCI设备配置空间的所有操作。首先初始化这个类的实例:KpeiConfigurationPeiConfig(m_Lower.TopOPStack());初始化完后就可以利用成员函数ReadBaseAddres/Write-BaseAddress读写基地址寄存器,ReadCommandRegister/Write-CommandRegister读写命令寄存器,ReadInterrupt/WriteInterrupt读写中断寄存器。4.2.2实现中断控制中断处理是系统设计中常用的方法,一旦中断出现,要求系统尽快响应。在系统实现中,各个设备可能连到一条中断线上,这就要求PCI设备驱动程序能够支持共享的中断。在DivceStudio中使用Kinterrupt类实现中断处理,调用成员函数对中断初始化,控制一个中断服务程序和另一个之间的连接和断开。对于DriveWizard生成的框架,它在OnStartDevice(KIrpI)中对一个中断对象调用InitializeAnd-Connect(),完成初始化和连接。驱动程序能执行相应的中断服务例程ISR。为了实现PCI中断的共享,中断服务程序必须迅速作出是否为自己板卡来的中断的判定,如果是则返回TURE,否则返回FALSE。对于需要大量操作的工作,中断服务程序会调用一个低于DIRLQ级别的延迟调用函数,在DISPATCH-LEVEL上完成处理。由于ISR总是运行在DIRQL上,因此在硬件中断服务中,常使用DPC,即延迟过程调用,当处理器处于DISPATCH—LEVEL层上时,立即执行相应的DPC对象。按以下步骤,可以实现PCI中断控制:1)产生中断类KInterrupt的一个实例,即产生中断对象。通常使用在设备类中嵌人中断类的方法产生中断对象。采用这种方法的优点是,当相应设备对象产生时,中断对象就产生,当然这时候中断对象没有初始化,当设备对象在卸载过程中被销毁时,中断对象也自动被销毁。2)中断服务例程ISR可以是标准函数或者是自定义的派生类成员函数,如类KDeviee派生类的成员函数。ISR采用标准函数比自定义类的成员函数有潜在的优点。下面的函数可以声明一个标准类型的ISR例程:BOOLEANIsr(PKINTERRUPTInterrupL,PVOIDServieeCon-text);如果使用派生类成员函数实现ISR,必须使用宏MEM—BER—ISR在类中声明这个函数。38 天津大学2011届本科生毕业设计(论文)3)确定中断对象参数,如中断优先级、中断矢量、模式、共享属性、总线等。通常这些参数确定在设备类构造体中实现。在PCI驱动程序中,通常从注册表中获取参数,然后进行资源请求。4)煅用成员函数Disconnect断开钩链。4.2.3DMA传输编程在PCI总线上进行高速数据传输,通常采用DMA技术。在DMA方式下,数据能够达到PCI总线规范的最大数据传输速率,所以在PCI设备驱动程序的开发过程中,实现DMA的工作方式成为驱动程序的开发的重点。DMA传输通过以下几步实现:1)创建DMA传输控制对象在SerialReadO例程中为目前的IRP创造一个DMA传输控制对象。SerialRead0用来实现串行化读操作,当从队列中取出IRP请求时,如果是读操作请求,则调用该例程,从而保证多个读操作请求不被同时执行。voidDMADeviee::SerialRead(KlrpI){m_CurrentTransfer=-new(NonPagedP001)KDmaTransfer(this,&m_Dma);if(m_CurrentTransfer==NULL)……}2)初始化该DMA传输控制对象Initiate例程所做的工作就是创建适配器资源(适配器对象、映射寄存器),初始化传输记录,并调用用户定义的回调函数启动第一次分割传输。If(!NT_SUCCESS(status)){deletem_CurrentTransfer;//如果初始化失败,释放DMA传输控制对象}3)定义回调函数OnDmaReady0OnDmaReady0是用户定义的回调函数。首先判断分割传输是否全部结束,可以通过调用成员函数BytesRemainin90实现,如果是,则调用成员函数Terminate0结束DMA传输,反之进行分割传输。每次的分割传输都要获取适配器资源,记录已经传输的字节数,更新下次传输的用户缓冲区的虚拟地址和长度,回调函数的最后应启动总线设备上的直接存贮器存取通道(DirectMemoryAccessChannel,DMAC)J差行DMA传输。当完成本次DMA的分割传输时,就会产生中断,此时简单地复位输入控制移位寄存器(InputControlShiftRegister,ICSR)清中断,在延迟过程调用(DeferredProcedureCall,DPC)中启动下一次分割传输,简单地调用用户定义的回调函数即可。38 天津大学2011届本科生毕业设计(论文)第五章数据采集卡功能编程与测试5.1数据采集卡的动态连接库LabVIEW本身是一个功能比较完整的软件开发环境,Labview是为替代常规的BASIC或C语言设计的。Labview是编程语言而不仅仅是一个软件开发环境。与VC或VB编程相比,Labview将繁琐复杂的语言编程简化成为以菜单提示方式选择功能,并且用线条将各种功能连接起来,提供了更简明、直观易用的编程方式[14]。作为编写应用程序的语言,除了编程方式不同外,Labview具备语言所有的特性,因此又称为G语言。由于测试界面程序不能直接访问硬件I/O端口,因此需要在程序中调用数据采集卡动态链接库(DLL)中的相关函数进行数据采集了。DLL是一个包含了若干函数的文件,是Windows实现代码和数据共享的基本工具。DLL不仅可以提高编程效率和多任务环境下的程序执行效率,而且还可以在Windows应用程序中实现代码和资源共享[15]。该DLL文件可为所有在Windows环境运行的编程环境(如LabVIEW,VisualBasic和VisualC++等)所使用.为了将数据采集卡的操作简单化,动态链接库中所有函数的参数均通过一个结构体(ZT_PCI-BOARD)来传递,结构体如下:structZT_PCI-BOARD{  longlIndex;/*PCI卡索引值,该值在安装时被系统自动分配*/  HANDLEhHandle;/*PCI卡的操作句柄(只有涉及中断时才用)*/  shortnChBase;/*通道号;默认为0,表示通道号从0开始;设为1,表示通道号从1开始;不能设为0或1以外的数*/  longlData;/*输入输出数据变量,一般用于传递单个数据*/  long*plData;/*输入输出数据指针,用于传递成批数据*/  longlCode;/*设备控制字*/};打开和关闭设备的必备底层函数说明如下:打开设备函数:longAPIENTRYOpenDevicePlx(ZT_PCIBOARD*bs)入口有效参数:lIndexPCI卡索引值出口返回参数:hHandlePCI卡的操作句柄(只有涉及中断时,返回才有意义)调用此函数时,不改变errorLevel的值函数返回值:0表示打开设备成功,-1表示打开设备失败关闭设备函数:longAPIENTRYCloseDevicePlx(ZT_PCIBOARD*bs)入口有效参数:lIndexPCI卡索引值38 天津大学2011届本科生毕业设计(论文)出口返回参数:无,调用此函数时,不改变errorLevel的值函数返回值:0表示关闭设备成功,-1表示关闭设备失败5.2数据采集卡功能测试5.2.1数据采集卡的安装将PCI数据采集卡插入计算机主板的PCI插口,开机启动后系统将提示发现新硬件安装驱动程序,指定路径到驱动程序INF文件所在位置安装好驱动后,在设备管理器中可以查看到PCI数据采集卡已安装好。数据采集卡的资源配置为:内存配置ED003000~ED00307F,输入/输出范围为9800~987F和9C00~9CFF,中断请求个数为19个。PCI数据采集卡安装好后将37芯D型插头插到PCI数据采集卡的37芯D型插头上,以方便信号发生器或示波器的探头与数据采集卡相连。插头上每个引脚分别对应的信号定义如表5-1所示。ADX表示模拟量输入的第X通道,括号外的为单端定义,括号内的是双端定义;AGND指模拟地,单端使用时为信号地;DAX表示计数器输出的第X个通道。为防止引入现场干扰,不应该使AD输入信号引脚悬空,可以将不使用的信号引脚与模拟地短路。表5-1插头引脚与信号定义插座引脚号信号定义插座引脚号信号定义1AD0(AD0+)20AD16(AD0-)2AD1(AD1+)21AD17(AD1-)3AD2(AD2+)22AD18(AD2-)4AD3(AD3+)23AD19(AD3-)5AD4(AD4+)24AD20(AD4-)6AD5(AD5+)25AD21(AD5-)7AD6(AD6+)26AD22(AD6-)8AD7(AD7+)27AD23(AD7-)9AD8(AD8+)28AD24(AD8-)10AD9(AD9+)29AD25(AD9-)11AD10(AD10+)30AD26(AD10-)12AD11(AD11+)31AD27(AD11-)13AD12(AD12+)32AD28(AD12-)14AD13(AD13+)33AD29(AD13-)15AD14(AD14+)34AD30(AD14-)16AD15(AD15+)35AD31(AD15-)17AGND36DA018DA137DA219DA338 天津大学2011届本科生毕业设计(论文)5.2.2模拟信号数据采集和输出测试本实验通过LabVIEW图形化编程实现虚拟示波器,可以直观的查看采集到的数据。使用LabVIEW编写的虚拟示波器程序可以将数据采集卡中的数据即时描绘成波形,并且可以LabVIEW编程更改数据采集卡工作方式参数。图5-1AD定时方式采集参数设定数据采集测试的参数设定程序框图如图5-1所示,程序中可以对单端/双端信号,固定单通道/多通道循环采集等模式进行定。入口参数包括ulChMode:通道方式、ulChNo:通道号或多通道循环输出中止通道号、ulRange:AD采集量程、ulGainInx:增益倍数、ulStartMode:AD启动方式和ulFreqDiv:采样频率。测试中设定程序固定单通道采集,使用20号通道采集数据,将信号发生器的的输出探头与对应引脚相连。AD量程分别设置成0~10000mV和-5000mV~+5000mV两种量程分别测试。使用定时方式AD采集,增益倍数为0,采样频率250KHz。打开信号发生器电源,分别生成不同的信号波形发送到数据采集卡,进行数据采集,运行LabVIEW程序得到数据采集结果。图5-2AD定时方式采集程序框图38 天津大学2011届本科生毕业设计(论文)AD定时方式采集程序框图如图5-2所示,调用DLL文件中的模拟量采集函数:longAPIENTRYZT8336AI(ZT_PCIBOARD*bs)对某一通道模拟量数据采集。入口有效参数中PCI卡索引值lIndex,默认板卡号为1,通道号nCh和设备控制码的值由LabVIEW中输入的参数确定。出口返回参数lData为该通道模拟量的数值,错误返回码errorLevel返回0时表示无错误,函数返回值为0表示采集成功,-1表示采集失败。设置数据采集卡的输入范围为单极性0~10V时得到的脉冲图样如图5-3所示,幅值为8.5V,频率为20Hz。图5-3单极性0~10V数据采集设置数据采集卡输入范围为-5~+5V时,不同频率的正弦波、方波和三角波的数据采集图样如图5-4~图5-6所示。图5-42V25Hz和250Hz的正弦波图5-52V25Hz和250Hz的方波38 天津大学2011届本科生毕业设计(论文)图5-62V25Hz和250Hz的三角波数据采集卡共有4路单端输出通道,输出电压范围可设为0~5V或-2.5V到+2.5V。测试模拟量输出功能的LabVIEW程序框图如图5-7所示,程序调用动太连接库中的输出模拟量输出函数longAPIENTRYZT8320DA(ZT_PCIBOARD*bs)指定某一通道模拟量输出,入口通道参数中的设备控制码lCode值为1时输出范围为0~5000mV,值为2时输出范围为-2500mV~+2500mV,lData为输出模拟量的数值。图5-7DA程序框图37芯D型口的模拟输出引脚为18、19和36、37四个引脚,将DA0通道对应的36号引脚与示波器探头相连,在程序中指定不同的输出值,示波器中显示出对应的信号。不同波形模拟输出的DA测试使用C语言编程,程序中分别对方波、三角波、正弦波的波形发生编程,为了得到连续的波形程序使用循环体。方波程序每隔半个周期交换一次输出值,三角波使用递增和递减函数,从最小值开始逐渐递增,达到最到值后递减至最小值;正弦波程序将一个周期内的256个正弦波信号存放在表中,然后通过查输出并调节两个点之间的延时可得到正弦波。用示波器观测到的模拟量波形如图5-8所示。图5-8DA输出方波、三角波、正弦波38 天津大学2011届本科生毕业设计(论文)5.2.3开关量输入输出测试数据采集卡上的开关量输入输出(DIO)共32路,每8路一组,可编程实现I/O功能,电平方式为TTL。本实验通过C语言编程对数据采集卡的开关量输出功能进行测试。开关量输入函数longAPIENTRYZT8336DI(ZT_PCIBOARD*bs)读取指定通道或全部通道的开关量输入状态,入口有效参数与模拟量数据采集函数相同。出口返回参数lData表示工作通道的输入状态,单通道操作时,返回0表示低电平,1表示高电平,多通道操作时,返回所有通道的输入状态。函数返回值与模拟量采集函数完全相同。开关量输出函数:longAPIENTRYZT8336DO(ZT_PCIBOARD*bs)控制某个通道或全部通道开关量输出,入口有效参数与模拟量采集函数基本相同,设备控制码lCode设为0时为单通道操作方式,同时需要设定nCh,lCode设为1时为多通道操作方式,不需要设定nCh。通过lData的值指定工作通道的输出状态,但通道时只能为0或1。出口返回参数和函数返回值与模拟量采集函数完全相同。测试时使用两组I/O口,第一组设置为输入端,第二组设置为输出端。数据采集卡上的开关量输入输出引脚不与模拟量采集引脚共用,采用单独的排线。第一组和第二组I/O通道对应的引脚号分别为1~8和9~16,将这两组的引脚对应两两相连,第一组通道采集第二组的输出信号,同时达到对数据采集卡开关量的输出和输入功能进行测试的目的。单通道输入输出测试时设置IO7和IO8通道处于工作状态,在程序界面输入值01设置IO8输出高电平,IO8接受到高电平信号,程序返回值为80,如图5-9所示。多通道输入输出测试时将第一组和第二组的所有通道全部打开,在程序界面输入值0F设置IO8~IO11输出高电平、IO12~IO15输出低电平,第一组输入采集到的结果为IO0~IO3输出低电平、IO4~IO7输出高电平,程序返回值为F0,如图5-10所示。图5-9单通道DIO测试图5-9多通道DIO测试38 天津大学2011届本科生毕业设计(论文)使用软件方式产生脉冲信号从数据采集卡的数字输出端口输出,LabVIEW程序框图如图5-11所示,利用Wait函数可产生200Hz~500Hz的低频脉冲。使用单通道输出数字信号,示波器测得的脉冲波形如图5-12所示。图5-11数字输出脉冲信号程序框图图5-12低频脉冲信号38 天津大学2011届本科生毕业设计(论文)第六章总结与展望PCI总线技术在计算机和通信、电子行业有着广泛的应用,基于PCI总线的数据采集系统有着十分广阔的前景。但是PCI协议的复杂性使得开发PCI总线的接口设备存在很大的困难。专用PCI总线控制器芯片的大大缩短了PCI总线硬件设备的开发周期,同时也使硬件设备的可靠性和稳定性都有了较大的提高。PLX公司的专用接口芯片PCI9052以其简单的用户接口为PCI总线接口的开发提供了一种简单的方案。FPGA在数据采集卡中的应用也减少了通用逻辑控制芯片的使用,简化了板卡的元器件布局,并且增强了数据采集卡的功能。本设计以PCI9052为基础作为PCI总线的接口电路,使用EP1C3T144对数据采集通道进行逻辑控制并完成与PCI9052之间的数据传输。驱动程序使用DriverStudio基于WDM模型编写,并完成上机调试。最后使用Lavview虚拟示波器对数据采集卡的功能进行实验测试。通过这次毕业设计我掌握了硬件电路设计和软件编程方面的技能,锻炼了分析问题和解决问题的能力。当然,由于时间仓促以及本人水平有限,数据采集卡上的一些其他功能没有完全开发,在今后的学习和工作中,我将继续努力,不断提高自己的知识水平和专业技能,将来在解决这类问题时努力做到更好。38 天津大学2011届本科生毕业设计(论文)参考文献[1]阮鹏,张峥.基于DSP和PCI总线的通信数据采集系统[J].电子技术应用,2002,(5):1—78.[2]王琳,商周.王学伟.数据采集系统的发展与应用[J].电测与仪表,2004,(8):4—8.[3]徐德炳,徐兴.数据采集与总线技术的发展[J].测控技术,2002,(6):1—6.[4]梁恺,孙世贵,杨廷善,徐炳仑.现代测量与控制技术词典[M].北京:中国标准出版社,1999.156—157.[5]朱家维,魏庆福.总线概述[J].中国计算机用户,1994.(5)4—8.[6]李贵山,陈金鹏.PCI局部总线开发者指南[M].西安:西安电子科技大学出版社,2000.3—5.[7]尚朝轩,刘利民,马彦恒.PCI总线及其特点[J].测控技术,1998.(3):34-35.[8]TomShanley,DonAnderson,刘晖译.PCI总线结构[M].北京:电子工业出版社,2000.91—94.[9]张磊,邱绍峰.基于ATM数据采集卡的PCI接口电路.微计算机信息[J].2008,(5):298—300.[10]周名德,蒋本珊.微机原理与接口技术[M].北京:人民邮电出版社,2007.291—292.[11]张国雄.测控电路[M].北京:机械工业出版社,2008.24—25.[12]孔祥速,李正.WindowsXP下PCI设备驱动程序的设计[J].电子质量,2000,(7):12—14.[13]伊勇,李宇.PCI总线设备开发宝典[M].北京:北京航空航天大学出版社,2005.105—106.[14]李江全,刘恩博,胡蓉.LabVIEW虚拟仪器数据采集与串口通信测控应用实战[M]2010.16-20.[15]韩俊鹤,程培红,孙献文,黄宗胤.自制多功能数据采集卡驱动程序设计及其与LabVIEW的适配[J].河南大学学报,2004(3):88-90.38 外文资料ALTERACycloneFPGAFamilyDataSheetMarch2003,ver.1.1IntroductionPreliminaryInformationTheCycloneTMfieldprogrammablegatearrayfamilyisbasedona1.5-V,0.13-mm,all-layercopperSRAMprocess,withdensitiesupto20,060logicelements(LEs)andupto288KbitsofRAM.Withfeatureslikephase-lockedloops(PLLs)forclockingandadedicateddoubledatarate(DDR)interfacetomeetDDRSDRAMandfastcycleRAM(FCRAM)memoryrequirements,Cyclonedevicesareacost-effectivesolutionfordata-pathapplications.CyclonedevicessupportvariousI/Ostandards,includingLVDSatdataratesupto311megabitspersecond(Mbps)and66-MHz,32-bitperipheralcomponentinterconnect(PCI),forinterfacingwithandsupportingASSPandASICdevices.Alteraalsooffersnewlow-costserialconfigurationdevicestoconfigureCyclonedevices.Features...■2,910to20,060LEs,seeTable1■Upto294,912RAMbits(36,864bytes)■Supportsconfigurationthroughlow-costserialconfigurationdevice■SupportforLVTTL,LVCMOS,SSTL-2,andSSTL-3I/Ostandards■Supportfor66-MHz,32-bitPCIstandard■Lowspeed(311Mbps)LVDSI/Osupport■UptotwoPLLsperdeviceprovideclockmultiplicationandphaseshifting■Uptoeightglobalclocklineswithsixclockresourcesavailableperlogicarrayblock(LAB)row■Supportforexternalmemory,includingDDRSDRAM(133MHz),FCRAM,andsingledatarate(SDR)SDRAM■Supportformultipleintellectualproperty(IP)cores,includingAlteraâMegaCoreâfunctionsandAlteraMegafunctionsPartnersProgram(AMPPSM)megafunctionsTable1.CycloneDeviceFeaturesFeatureEP1C3EP1C4EP1C6EP1C12EP1C20LEs2,9104,0005,98012,06020,060M4KRAMblocks(128×36bits)1317205264TotalRAMbits59,90478,33692,160239,616294,912PLLs12222MaximumuserI/Opins(1)104301185249301NotetoTable1:(1)Thisparameterincludesglobalclockpins. Cyclonedevicesareavailableinquadflatpack(QFP)andspace-savingFineLineBGAâpackages(seeTables2through3).Table2.CyclonePackageOptions&I/OPinCountsDevice100-PinTQFP(1)144-PinTQFP(1),(2)240-PinPQFP(1)256-PinFineLine324-PinFineLine400-PinFineLineEP1C365104EP1C4249301EP1C698185185EP1C12173185249EP1C20233301NotestoTable2:(1)TQFP:thinquadflatpack.PQFP:plasticquadflatpack.(2)Cyclonedevicessupportverticalmigrationwithinthesamepackage(i.e.,designerscanmigratebetweentheEP1C3deviceinthe144-pinTQFPpackageandtheEP1C6deviceinthesamepackage).Table3.CycloneQFP&FineLineBGAPackageSizesDimension100-PinTQFP144-PinTQFP240-PinPQFP256-PinFineLine324-PinFineLine400-PinFineLinePitch(mm)0.50.50.51.01.01.0Area(mm2)2564841,024289361441Length×width(mm×mm)16×1622×2234.6×34.617×1719×1921×21 FunctionalDescriptionCyclonedevicescontainatwo-dimensionalrow-andcolumn-basedarchitecturetoimplementcustomlogic.ColumnandrowinterconnectsofvaryingspeedsprovidesignalinterconnectsbetweenLABsandembeddedmemoryblocks.ThelogicarrayconsistsofLABs,with10LEsineachLAB.AnLEisasmallunitoflogicprovidingefficientimplementationofuserlogicfunctions.LABsaregroupedintorowsandcolumnsacrossthedevice.Cyclonedevicesrangebetween2,910to20,060LEs.M4KRAMblocksaretruedual-portmemoryblockswith4Kbitsofmemoryplusparity(4,608bits).Theseblocksprovidededicatedtruedual-port,simpledual-port,orsingle-portmemoryupto36-bitswideatupto200MHz.TheseblocksaregroupedintocolumnsacrossthedeviceinbetweencertainLABs.Cyclonedevicesofferbetween60to288KbitsofembeddedRAM.EachCyclonedeviceI/OpinisfedbyanI/Oelement(IOE)locatedattheendsofLABrowsandcolumnsaroundtheperipheryofthedevice.I/Opinssupportvarioussingle-endedanddifferentialI/Ostandards,suchasthe66-MHz,32-bitPCIstandardandtheLVDSI/Ostandardatupto311Mbps.EachIOEcontainsabidirectionalI/Obufferandthreeregistersforregisteringinput,output,andoutput-enablesignals.Dual-purposeDQS,DQ,andDMpinsalongwithdelaychains(usedtophase-alignDDRsignals)provideinterfacesupportwithexternalmemorydevicessuchasDDRSDRAM,andFCRAMdevicesatupto133MHz(266Mbps).CyclonedevicesprovideaglobalclocknetworkanduptotwoPLLs.Theglobalclocknetworkconsistsofeightglobalclocklinesthatdrivethroughouttheentiredevice.Theglobalclocknetworkcanprovideclocksforallresourceswithinthedevice,suchasIOEs,LEs,andmemoryblocks.Theglobalclocklinescanalsobeusedforcontrolsignals.CyclonePLLsprovidegeneral-purposeclockingwithclockmultiplicationandphaseshiftingaswellasexternaloutputsforhigh-speeddifferentialI/Osupport.Figure1showsadiagramoftheCycloneEP1C12device. Figure1.CycloneEP1C12DeviceBlockDiagramThenumberofM4KRAMblocks,PLLs,rows,andcolumnsvaryperdevice.Table4liststheresourcesavailableineachCyclonedevice.Table4.CycloneDeviceResourcesDeviceM4KRAMPLLsLABColumnsLABRowsColumnsBlocksEP1C311312413EP1C411722617EP1C612023220EP1C1225224826EP1C2026426432 LogicArrayBlocksEachLABconsistsof10LEs,LEcarrychains,LABcontrolsignals,alocalinterconnect,look-uptable(LUT)chain,andregisterchainconnectionlines.ThelocalinterconnecttransferssignalsbetweenLEsinthesameLAB.LUTchainconnectionstransfertheoutputofoneLE’sLUTtotheadjacentLEforfastsequentialLUTconnectionswithinthesameLAB.RegisterchainconnectionstransfertheoutputofoneLE’sregistertotheadjacentLE’sregisterwithinanLAB.TheQuartus®IICompilerplacesassociatedlogicwithinanLABoradjacentLABs,allowingtheuseoflocal,LUTchain,andregisterchainconnectionsforperformanceandareaefficiency.Figure2detailstheCycloneLAB.Figure2.CycloneLABStructure LABInterconnectsTheLABlocalinterconnectcandriveLEswithinthesameLAB.TheLABlocalinterconnectisdrivenbycolumnandrowinterconnectsandLEoutputswithinthesameLAB.NeighboringLABs,PLLs,andM4KRAMblocksfromtheleftandrightcanalsodriveanLAB’slocalinterconnectthroughthedirectlinkconnection.Thedirectlinkconnectionfeatureminimizestheuseofrowandcolumninterconnects,providinghigherperformanceandflexibility.EachLEcandrive30otherLEsthroughfastlocalanddirectlinkinterconnects.Figure3showsthedirectlinkconnection.Figure3.DirectLinkConnectionLABControlSignalsEachLABcontainsdedicatedlogicfordrivingcontrolsignalstoitsLEs.Thecontrolsignalsincludetwoclocks,twoclockenables,twoasynchronousclears,synchronousclear,asynchronouspreset/load,synchronousload,andadd/subtractcontrolsignals.Thisgivesamaximumof10controlsignalsatatime.Althoughsynchronousloadandclearsignalsaregenerallyusedwhenimplementingcounters,theycanalsobeusedwithotherfunctions.EachLABcanusetwoclocksandtwoclockenablesignals.EachLAB’sclockandclockenablesignalsarelinked.Forexample,anyLEinaparticularLABusingthelabclk1signalwillalsouselabclkena1.IftheLABusesboththerisingandfallingedgesofaclock,italsousesbothLAB-wideclocksignals.De-assertingtheclockenablesignalwillturnofftheLAB-wideclock.EachLABcanusetwoasynchronousclearsignalsandanasynchronousload/presetsignal.Theasynchronousloadactsasapresetwhentheasynchronousloaddatainputistiedhigh.WiththeLAB-wideaddnsubcontrolsignal,asingleLEcanimplementaone-bitadderandsubtractor.ThissavesLEresourcesandimprovesperformanceforlogicfunctionssuchasDSPcorrelatorsandsignedmultipliersthatalternatebetweenadditionandsubtractiondependingondata.TheLABrowclocks[5..0]andLABlocalinterconnectgeneratetheLAB-widecontrolsignals.TheMultiTrackTMinterconnect’sinherentlowskewallowsclockandcontrolsignaldistributioninaddition todata.Figure4showstheLABcontrolsignalgenerationcircuit.Figure4.LAB-WideControlSignalsLogicElementsThesmallestunitoflogicintheCyclonearchitecture,theLE,iscompactandprovidesadvancedfeatureswithefficientlogicutilization.EachLEcontainsafour-inputLUT,whichisafunctiongeneratorthatcanimplementanyfunctionoffourvariables.Inaddition,eachLEcontainsaprogrammableregisterandcarrychainwithcarryselectcapability.AsingleLEalsosupportsdynamicsinglebitadditionorsubtractionmodeselectablebyanLAB-widecontrolsignal.EachLEdrivesalltypesofinterconnects:local,row,column,LUTchain,registerchain,anddirectlinkinterconnects.SeeFigure5.Figure5.CycloneLE EachLE’sprogrammableregistercanbeconfiguredforD,T,JK,orSRoperation.Eachregisterhasdata,trueasynchronousloaddata,clock,clockenable,clear,andasynchronousload/presetinputs.Globalsignals,general-purposeI/Opins,oranyinternallogiccandrivetheregister’sclockandclearcontrolsignals.Eithergeneral-purposeI/Opinsorinternallogiccandrivetheclockenable,preset,asynchronousload,andasynchronousdata.Theasynchronousloaddatainputcomesfromthedata3inputoftheLE.Forcombinatorialfunctions,theLUToutputbypassestheregisteranddrivesdirectlytotheLEoutputs.EachLEhasthreeoutputsthatdrivethelocal,row,andcolumnroutingresources.TheLUTorregisteroutputcandrivethesethreeoutputsindependently.TwoLEoutputsdrivecolumnorrowanddirectlinkroutingconnectionsandonedriveslocalinterconnectresources.ThisallowstheLUTtodriveoneoutputwhiletheregisterdrivesanotheroutput.Thisfeature,calledregisterpacking,improvesdeviceutilizationbecausethedevicecanusetheregisterandtheLUTforunrelatedfunctions.AnotherspecialpackingmodeallowstheregisteroutputtofeedbackintotheLUTofthesameLEsothattheregisterispackedwithitsownfan-outLUT.Thisprovidesanothermechanismforimprovedfitting.TheLEcanalsodriveoutregisteredandunregisteredversionsoftheLUToutput. LUTChain&RegisterChainInadditiontothethreegeneralroutingoutputs,theLEswithinanLABhaveLUTchainandregisterchainoutputs.LUTchainconnectionsallowLUTswithinthesameLABtocascadetogetherforwideinputfunctions.RegisterchainoutputsallowregisterswithinthesameLABtocascadetogether.TheregisterchainoutputallowsanLABtouseLUTsforasinglecombinatorialfunctionandtheregisterstobeusedforanunrelatedshiftregisterimplementation.TheseresourcesspeedupconnectionsbetweenLABswhilesavinglocalinterconnectresources.See“MultiTrackInterconnect”onpage17formoreinformationonLUTchainandregisterchainconnections.addnsubSignalTheLE’sdynamicadder/subtractorfeaturesaveslogicresourcesbyusingonesetofLEstoimplementbothanadderandasubtractor.ThisfeatureiscontrolledbytheLAB-widecontrolsignaladdnsub.TheaddnsubsignalsetstheLABtoperformeitherA+BorA-B.TheLUTcomputesaddition;subtractioniscomputedbyaddingthetwo’scomplementoftheintendedsubtractor.TheLAB-widesignalconvertstotwo’scomplementbyinvertingtheBbitswithintheLABandsettingcarry-in=1toaddonetotheleastsignificantbit(LSB).TheLSBofanadder/subtractormustbeplacedinthefirstLEoftheLAB,wheretheLAB-wideaddnsubsignalautomaticallysetsthecarry-into1.TheQuartusIICompilerautomaticallyplacesandusestheadder/subtractorfeaturewhenusingadder/subtractorparameterizedfunctions.LEOperatingModesTheCycloneLEcanoperateinoneofthefollowingmodes:■Normalmode■DynamicarithmeticmodeEachmodeusesLEresourcesdifferently.Ineachmode,eightavailableinputstotheLE¾thefourdatainputsfromtheLABlocalinterconnect,carry-in0andcarry-in1fromthepreviousLE,theLABcarry-infromthepreviouscarry-chainLAB,andtheregisterchainconnection¾aredirectedtodifferentdestinationstoimplementthedesiredlogicfunction.LAB-widesignalsprovideclock,asynchronousclear,asynchronouspreset/load,synchronousclear,synchronousload,andclockenablecontrolfortheregister.TheseLAB-widesignalsareavailableinallLEmodes.Theaddnsubcontrolsignalisallowedinarithmeticmode.TheQuartusIIsoftware,inconjunctionwithparameterizedfunctionssuchaslibraryofparameterizedmodules(LPM)functions,automaticallychoosestheappropriatemodeforcommonfunctionssuchascounters,adders,subtractors,andarithmeticfunctions.Ifrequired,thedesignercanalsocreatespecial-purposefunctionsthatspecifywhichLEoperatingmodetouseforoptimalperformance. NormalModeThenormalmodeissuitableforgenerallogicapplicationsandcombinatorialfunctions.Innormalmode,fourdatainputsfromtheLABlocalinterconnectareinputstoafour-inputLUT(seeFigure6).TheQuartusIICompilerautomaticallyselectsthecarry-inorthedata3signalasoneoftheinputstotheLUT.EachLEcanuseLUTchainconnectionstodriveitscombinatorialoutputdirectlytothenextLEintheLAB.Asynchronousloaddatafortheregistercomesfromthedata3inputoftheLE.LEsinnormalmodesupportpackedregisters.Figure6.LEinNormalModeNotetoFigure6:(1)ThissignalisonlyallowedinnormalmodeiftheLEisattheendofanadder/subtractorchain.DynamicArithmeticModeThedynamicarithmeticmodeisidealforimplementingadders,counters,accumulators,wideparityfunctions,andcomparators.AnLEindynamicarithmeticmodeusesfour2-inputLUTsconfigurableasadynamicadder/subtractor.Thefirsttwo2-inputLUTscomputetwosummationsbasedonapossiblecarry-inof1or0;theothertwoLUTsgeneratecarryoutputsforthetwochainsofthecarryselectcircuitry.AsshowninFigure7,theLABcarry-insignalselectseitherthecarry-in0orcarry-in1chain.Theselectedchain’slogiclevelinturndetermineswhichparallelsumisgeneratedasacombinatorialorregisteredoutput.Forexample,whenimplementinganadder,thesumoutputistheselectionoftwopossiblecalculatedsums:data1+data2+carry-in0ordata1+data2+carry-in1.TheothertwoLUTsusethedata1anddata2signalstogeneratetwopossiblecarry-outsignals¾oneforacarryof1andtheotherforacarryof0.Thecarry-in0signalactsasthecarryselectforthecarry-out0outputandcarry-in1actsasthecarryselectforthecarry-out1output.LEsinarithmeticmodecandriveoutregisteredandunregisteredversionsoftheLUToutput. Thedynamicarithmeticmodealsooffersclockenable,counterenable,synchronousup/downcontrol,synchronousclear,synchronousload,anddynamicadder/subtractoroptions.TheLABlocalinterconnectdatainputsgeneratethecounterenableandsynchronousup/downcontrolsignals.ThesynchronousclearandsynchronousloadoptionsareLAB-widesignalsthataffectallregistersintheLAB.TheQuartusIIsoftwareautomaticallyplacesanyregistersthatarenotusedbythecounterintootherLABs.TheaddnsubLAB-widesignalcontrolswhethertheLEactsasanadderorsubtractor.Figure7.LEinDynamicArithmeticModeNotetoFigure7:(1)TheaddnsubsignalistiedtothecarryinputforthefirstLEofacarrychainonly.Carry-SelectChainThecarry-selectchainprovidesaveryfastcarry-selectfunctionbetweenLEsindynamicarithmeticmode.Thecarry-selectchainusestheredundantcarrycalculationtoincreasethespeedofcarryfunctions.TheLEisconfiguredtocalculateoutputsforapossiblecarry-inof0andcarry-inof1inparallel.Thecarry-in0andcarry-in1signalsfromalower-orderbitfeedforwardintothehigher-orderbitviatheparallelcarrychainandfeedintoboththeLUTandthenextportionofthecarrychain.Carry-selectchainscanbegininanyLEwithinanLAB.Thespeedadvantageofthecarry-selectchainisintheparallelpre-computationofcarrychains.SincetheLABcarry-inselectstheprecomputedcarrychain,noteveryLEisinthecriticalpath.OnlythepropagationdelaysbetweenLABcarry-ingeneration(LE5andLE10)arenowpartofthecriticalpath.ThisfeatureallowstheCyclonearchitecturetoimplementhigh-speedcounters,adders,multipliers,parityfunctions,andcomparatorsofarbitrarywidth. Figure8showsthecarry-selectcircuitryinanLABfora10-bitfulladder.OneportionoftheLUTgeneratesthesumoftwobitsusingtheinputsignalsandtheappropriatecarry-inbit;thesumisroutedtotheoutputoftheLE.Theregistercanbebypassedforsimpleaddersorusedforaccumulatorfunctions.AnotherportionoftheLUTgeneratescarry-outbits.AnLAB-widecarry-inbitselectswhichchainisusedfortheadditionofgiveninputs.Thecarry-insignalforeachchain,carry-in0orcarry-in1,selectsthecarry-outtocarryforwardtothecarry-insignalofthenext-higher-orderbit.Thefinalcarry-outsignalisroutedtoanLE,whereitisfedtolocal,row,orcolumninterconnects.Figure8.CarrySelectChainTheQuartusIICompilerautomaticallycreatescarrychainlogicduringdesignprocessing,orthedesignercancreateitmanuallyduringdesignentry.ParameterizedfunctionssuchasLPMfunctionsautomaticallytakeadvantageofcarrychainsfortheappropriatefunctions.TheQuartusIICompilercreatescarrychainslongerthan10LEsbylinkingLABstogetherautomatically.Forenhancedfitting,alongcarrychainrunsverticallyallowingfasthorizontalconnectionstoM4Kmemoryblocks.Acarrychaincancontinueasfarasafullcolumn. MultiTrackInterconnectLAB-widesignalscontrolthelogicfortheregister’sclearandpresetsignals.TheLEdirectlysupportsanasynchronousclearandpresetfunction.Theregisterpresetisachievedthroughtheasynchronousloadofalogichigh.ThedirectasynchronouspresetdoesnotrequireaNOT-gatepush-backtechnique.Cyclonedevicessupportsimultaneouspreset/asynchronousloadandclearsignals.Anasynchronousclearsignaltakesprecedenceifbothsignalsareassertedsimultaneously.EachLABsupportsuptotwoclearsandonepresetsignal.Inadditiontotheclearandpresetports,Cyclonedevicesprovideachip-wideresetpin(DEV_CLRn)thatresetsallregistersinthedevice.AnoptionsetbeforecompilationintheQuartusIIsoftwarecontrolsthispin.Thischip-wideresetoverridesallothercontrolsignals.IntheCyclonearchitecture,connectionsbetweenLEs,M4Kmemoryblocks,anddeviceI/OpinsareprovidedbytheMultiTrackinterconnectstructurewithDirectDriveTMtechnology.TheMultiTrackinterconnectconsistsofcontinuous,performance-optimizedroutinglinesofdifferentspeedsusedforinter-andintra-designblockconnectivity.TheQuartusIICompilerautomaticallyplacescriticaldesignpathsonfasterinterconnectstoimprovedesignperformance.DirectDrivetechnologyisadeterministicroutingtechnologythatensuresidenticalroutingresourceusageforanyfunctionregardlessofplacementwithinthedevice.TheMultiTrackinterconnectandDirectDrivetechnologysimplifytheintegrationstageofblock-baseddesigningbyeliminatingthere-optimizationcyclesthattypicallyfollowdesignchangesandadditions. 天津大学2011届本科生毕业设计(论文)中文译文ALTRERACycloneFPGA系列数据手册March2003,ver.1.1简介初步信息CycloneTM现场可编程门阵列系列基于一个1.5伏、0.13微米,全铜层密度SRAM工艺,具有多达20,060个逻辑单元(LE)和高达288Kbits的内存。具有诸如计时用的锁相环路(PLL)和一个专用的双倍数据速率存储器(DDR)接口以满足DDRSDRAM和快速循环随机存储器(FCRAM)需求等特性,Cyclone器件是一个低成本的数据路径解决方案。Cyclone器件支持各种I/O标准,包括数据传输率高达311兆赫兆比特每秒(Mbps)的LVDS和66MHz,32的外部互联接口(PCI),以支持并和ASSP和ASIC器件连接。Altera同时为Cyclone器件提供了新的低成本的串行配置器件配置。特性■2,910至20,060个LE, 见表1■高达294,912位RAM(36,864字节)■支持通过低成本的串行配置器件配置■支持LVTTL,LVCMOS,SSTL-2和SSTL-3I/O标准■支持66-MHz,32-bitPCI标准■低速(311Mbps)LVDSI/O支持■每个设备最多两个PLLs提供时钟乘法和相移■每个逻辑阵列(LAB)行最多八条可用六个时钟源的全局时钟线■支持DDRSDRAM(133MHz),FCRAM和单数据速率(SDR)SDRAM■支持AlteraâMegaCoreâ功能和Altera宏功能合作伙伴计划(AMPPSM)的宏功能等多种知识产权(IP)内核表1.Cyclone器件特性特性EP1C3EP1C4EP1C6EP1C12EP1C20LEs2,9104,0005,98012,06020,060M4KRAMblocks(128×36bits)1317205264TotalRAMbits59,90478,33692,160239,616294,912PLLs12222MaximumuserI/Opins(1)104301185249301表1注释:(1)本参数包括全局时钟引脚。12 天津大学2011届本科生毕业设计(论文)Cyclone器件封装可以采用四方扁平封装(QFP)和节省空间的FineLineBGAâ封装(见表2到3)表2.Cyclone封装选项及I/O管脚数器件100-PinTQFP(1)144-PinTQFP(1),(2)240-PinPQFP(1)256-PinFineLine324-PinFineLine400-PinFineLineEP1C365104EP1C4249301EP1C698185185EP1C12173185249EP1C20233301表2注释:(1)TQFP:薄型四方扁平封装.PQFP:塑料四方扁平封装.(2)Cyclone器件支持在相同封装中纵向移植(例如,设计者可以在144管脚TQFP封装的EP1C3器件和相同封装的EP1C6器件间移植).表3.CycloneQFP&FineLineBGA封装尺寸规格100-PinTQFP144-PinTQFP240-PinPQFP256-PinFineLine324-PinFineLine400-PinFineLine间距(mm)0.50.50.51.01.01.0面积(mm2)2564841,024289361441长×宽(mm×mm)16×1622×2234.6×34.617×1719×1921×21功能说明Cyclone器件包含一个二维的行和列的架构来实现自定义逻辑。不同速度的行列连接提供逻辑阵列模块和嵌入式存储器的信号连接。逻辑阵列组成逻辑阵列模块,每个逻辑阵列模块有10个逻辑元件。一个逻辑元件是一个有效实现用户逻辑功能的的小逻辑单元。逻辑阵列模块在整个器件上通过行和列分组。Cyclone器件中的逻辑元件数介于2,91020,060。M4KRAM模块是全双端口内存模块,具有4Kbits带奇偶校验内存(4,608bits)。这些模块提供专用的多达36位宽高达200兆赫的全双端口、简单双端口、或单端口存储器。这些模块在整个器件的某些逻辑阵列模块间成列。Cyclone提供60到288Kbits的嵌入式RAM。每个Cyclone器件的I/O管脚有一个分布在逻辑阵列模块行列端点位于器件周边的I/O单元(IOE)控制。I/O管脚支持各种单端和差分标准,例如66MHz、32位PCI标准和LVDS标准、高达311Mbps的I/O标准。每个IOE包含一个双向I/O缓存寄存器和三个用于寄存输入、输出和输出时能信号的寄存器。具有延迟链(用于相一致的DDR信号)兼用DQS、DQ,和DM管脚提供与例如DDRSDRAM和FCRAM器件等高达133MHz(266Mbps)的外部存储设备接口的支持。Cyclone器件提供了一个全局时钟网络和最多两个PLL。全局时钟网络包括驱动整个器件的八个全局时钟线。全局时钟网络可以为如IOE、LE和内存模块的所有设备内的资源提供时钟。全局时钟线也可用于控制信号。CyclonePLL提供了通用的时钟乘法和相移以及高速差分I/O支持的外部输出时钟。12 天津大学2011届本科生毕业设计(论文)图1显示了CycloneEP1C12设备的图解。图1.CycloneEP1C12器件模块图解M4KRAM模块、PLLs、行以及列的数列随器件不同而不同。表4列出了每个Cyclone器件中的可用资源数量。表4.Cyclone器件资源器件M4KRAMPLLsLAB列数LAB行数列数模块数EP1C311312413EP1C411722617EP1C612023220EP1C1225224826EP1C202642643212 天津大学2011届本科生毕业设计(论文)逻辑阵列模块每个LAB包含10个LE、LE进位链、LAB控制信号、一个本地连接器、查找表(LUT)链、和寄存器链连线。本地连接在同一LAB内的LE内传输信号。LUT链传输一个LE的LUT的输出到同一LAB内的临近LE以达到快速连续LUT。寄存器链连接传输一个LE的寄存器输出到同一LAB内的邻近LE寄存器。Quartus®II编译器在一个LAB或相邻的LAB内设置相关的逻辑,以允许使用本地、LUT链和寄存器链来执行运算和实现区域效果。图2详细说明CycloneLAB。图2.CycloneLAB结构12 天津大学2011届本科生毕业设计(论文)LAB连接LAB本地连接能够驱动相同LAB的LE。LAB本地连接通过行和列连接以及同一LAB内的LE输出驱动。左右临近的LAB、PLL和M4KRAM模块也可以通过直接链路连接驱动LAB的本地连接。直接链路连接功能最大限度地减少使用的行和列的互连,提供更高的性能和灵活性。每个LE可以通过快速本地和直接链路连接驱动其他30个LE。图3显示了直接的链路连接。图3.直接链路连接LAB控制信号每个LAB包含专用的逻辑用来驱动它的LE的控制信号。控制信号包括两个时钟使能,两个异步清零,同步明确,异步预置/负载,同步负载,加/减控制信号。最多可以同时给出10个控制信号。同步负载和清零信号通常用于在计数器操作,但它们也可以用于其它功能。每个LAB可以使用两个时钟和两个时钟使能信号。每个LAB的时钟和时钟使能信号相连。例如,特定LAB中的任何LE使用labclk1信号也将使用labclkena1。如果LAB同时使用一个时钟的上升沿和下降沿,它也同时使用实验室宽时钟信号。撤销时钟使能信号将关闭LAB范围内的时钟。每个LAB可以用两个异步清零信号和异步加载/预置信号。当异步加载数据输入是连续高时异步加载作为预调装置。当有LAB范围内的加减法控制信号时,单一的LE可以实现1位加法器和减法器。这样可以节省LE资源并提高例如DSP相关器和随数据不同而变换加法和减法的带符号乘法器的和逻辑功能的性能。12 天津大学2011届本科生毕业设计(论文)LAB行时钟[5..0]和LAB本地连接器发生LAB范围的控制信号。MultiTrackTM连接器固有的低偏移允许除了数据的时钟和控制信号分配。图4显示了LAB控制信号发生电路。图4.LAB范围控制信号逻辑元件Cyclone结构中的最小的逻辑单元,LE,紧凑并且提供高效逻辑运的先进功能用。每个LE包含一个四输入LUT,是一个可以实施四个变量函数的函数发生器。此外,每个LE包含一个可编程的寄存器和具有进位选择功能的进位链.单独的LE还支持通过LAB范围内的控制信号进行动态单一位加减模式选择。每个LE驱动所有类型的互连:本地、行、列、LUT链、寄存器链和直接链接互连。见图5。12 天津大学2011届本科生毕业设计(论文)逻辑元件Cyclone结构中的最小的逻辑单元,LE,紧凑并且提供高效逻辑运的先进功能用。每个LE包含一个四输LUT,是一个可以实施四个变量函数的函数发生器。此外,每个LE包含一个可编程的寄存器和具有进位选择功能的进位链.单独的LE还支持通过LAB范围内的控制信号进行动态单一位加减模式选择。每个LE驱动所有类型的互连:本地、行、列、LUT链、寄存器链和直接链接互连。见图5。图5.CycloneLE每个LE可编程寄存器可配置为D,、T、JK或SR操作。每个寄存器有数据真正的异步加载数据、时钟、时钟使能、清除和异步加载/预置输入。全局信号、通用I/O引脚或任何可以驱动寄存器的时钟和清除控制信号的内部逻辑。无论是通用I/O引脚还是内部逻辑可以驱动时钟使能、预置,异步加载和异步数据。异步加载数据输入是从data3输入LE。对于组合功能,LUT输出绕开寄存器直接驱动LE输出。每个LE有三个输出驱动本地,行和列路由资源。LUT或寄存器输出可以驱动这三个独立的输出。两个LE输出驱动行或列和直接链路路由连接,一个驱动本地互连资源。这使得当寄存驱动另一个输出时LUT驱动一个输出.。此功能称为寄存器打包,提高了设备利用率,因为该设备可以使用寄存器和LUT调用不相关函数。另一个特别的打包模式允许寄存器输出反馈到同一LE的LUT以便寄存器和和它本身的输出LUT打包。这提供了另一种改善配接的机制。LE还可以驱动寄存中或非寄存中的LUT输出。12 天津大学2011届本科生毕业设计(论文)LUT链及寄存器链除了三个一般路由输出,一个LAB内的LE包含LUT链和寄存器链输出。LUT链连接允许同一LAB的LUT级联在一起实现宽带功能输入。寄存器链输出允许同一LAB的寄存器进行级联。寄存器链的输出允许LAB使用LUT调用单组合函数以及寄存器进行不相关位移。这些资源加快了LAB之间的连接同时节省本地资源。见第十二页“多轨互联”查阅更多关于LUT链和寄存器链连接的信息。加减信号LE的动态加法器/减法器的功能通过使用一组LE来同时实现加法器和减法器节约逻辑资源。这一功能通过LAB范围的控制信号addnsub来控制。Addnsub信号设置LAB进行A+B或A-B运算,LUT计算加法;减法通过把两个减数的补码相加来实现。LAB范围的信号通过在LAB内将B按位取反然后设置进位等于1来向最低有效位(LSB)加一转换两个补码。一个加法器/减法器的LSB必须放置在LAB的第一个LE,LAB范围内的addnsub信号自动设置进位为1。QuartusII当使用加法器/减法器的参数化功能时自动放置和使用加法器/减法器功能。LE操作模式CycloneLE可以在下列模式之一操作:■普通模式■动态算术模式每种模式使用LE的资源不同。每种模式中LE的输入——LAB本地连接的四个数据输入,之前LE的carry-in0和carry-in1,之前进位链LAB的LAB,和寄存器链接被定向到不同的标以实现所需的逻辑功能。LAB范围信号提供时钟,异步清零,异步预置/负载,同步明确,同步负载和寄存器的时钟使能控制。这些LAB范围信号广泛适用于所有LE模式。在动态算术模式中可以有addnsub控制信号。QuartusII软件,连同参数化功能如参数化模块库(LPM)功能,为计数器、加法器、减法器和算术功能等普通功能自动选择合适的模式。如果需要,设计人员还可以创建专用功能,指定使用某种LE操作模式来达到最佳性能。12 天津大学2011届本科生毕业设计(论文)普通模式普通模式适用于一般逻辑应用和组合功能。在普通模式下,LAB本地连接的数据输入是四输入LUT的输入(见图6)。QuartusII自动选择进位输入或data3信号作为LUT的一个输入。每个LE可以使用LUT链连接驱动其组合输出直接到LAB的下一个LE。为寄存器异步加载数据来自LE的data3输入。正常模式下LE支持封装的的寄存器。图6.LE普通模式表6注释:(1)如果LE位于一个加法器/减法器的末端,该信号只允许在普通模式下。动态算术模式动态算术模式可以理想地实施加法器、计数器、累加器、广泛奇偶校验功能和比较器。动态算术模式的LE使用四个双输入LUT配置为一个动态加法器/减法器。前两个双输入LUT计算两个基于可能进位输入为1或0的求和;另外两个LUT产生两个进位选择回路的进位输出。如图图7所示,LAB进位信号选择carry-in0或carry-in1链中的一个。选中链的逻辑电平反过来决定了生成哪一个平行总和作为组合或寄存的输出。For例如,当执行一个加法器,总和输出是是两个可能计算和中的选择:data1+data2+carry-in0ordata1+data2+carry-in1。另外两个LUT使用data1和data2信号产生可能的进位输出信号——一个控制进位1,另一个控制进位0。carry-in0作为carry-out0输出的进位选择,carry-in1作为carry-out1输出的进位选择。算术模式的LE可以驱动除寄存和未寄存的LUT输出。12 天津大学2011届本科生毕业设计(论文)动态算术模式还提供时钟使能、计数器使能、同步up/down控制、同步清零、同步负载和a动态加法器/减法器选项。LAB本地连接生成计数器使能和同步up/down控制信号。同步清零和同步加载选项是影响LAB中所有寄存器的LAB范围信号。QuartusII软件自动放置所有输出到其他LAB的计数器所不使用的寄存器。LAB范围信号addnsub控制LE作为加法器或减法器。图7.LE动态算是模式图7注释:(1)addnsub只绑定到进位链第一个LE的进位输入。进位选择链进位选择链提供了一种非常快速的动态算术模式中在LE之间的进位选择功能。进位选择链使用冗余进行计算,以提高进位功能的速度。LE为可能的并联进位0和进位1配置成计算输出。来自低序位的carry-in0和carry-in1信号通过并联进位链前馈到高序位并且输入到LUT和进位链的下一部分。进位选择链可以从LAB内的任意LE开始进位选择链的速度优势是并行进位链预计算。由于LAB进位选择与计算的进位链,不是所有LE都在回路路径中。只有传播延迟在LAB进位产生期(LE5和LE10)是在当前回路路径中。该特性使Cyclone构架实现高速计数器、加法器、乘法器、奇偶校验功能、任意宽度比较。12 天津大学2011届本科生毕业设计(论文)图8显示了10位全加器在LAB中的进位选择电路。LUT的一部分使用输入信号和相应的进位位生生了两个位的总和;和将将被路由到LE的输出.可以绕过寄存器实现简单的加法和累加器功能。LUT的另一部分生成进位位。LAB范围的进位位选择用于相加给定输入的链。每个链的进位信号,carry-in0或carry-in1,选择进位输出进位到下一高序位的进位信号。最终进位输出信号被路由到回馈到本地、行或列连接的LE。图8.进位选择链QuartusII在设计执行中自动创建进位链逻辑,或者设计者在在设计过程中手动创建输入。例如LPM功能的参数化功能自动为合适的功能利用进位链的优势。QuartusII编译器通过自动将LAB连接创建的进位链链超过10个LE的长度。为了提高拟合,长进位链纵向运行允许快速横向连接到M4K存储器模块进位链最远可以延续到整个列。12 天津大学2011届本科生毕业设计(论文)多轨互联清零与预设逻辑控制LAB范围信号控制的寄存器清零和预设信号的逻辑。LE直接支持异步清零和预设功能。该寄存器预设是通过逻辑异步高负荷实现。直接异步预置不需要非门后推技术。Cyclone器件支持同时预置/异步加载和清零信号。如果两个信号同时被中断,异步清零信号优先。每个LAB支持多达两个清零和一个预设的信号。除了清零和预设端口,Cyclone器件提供复位设备所有寄存器的芯片全复位管脚(DEV_CLRn)。编译前设置在QuartusII软件的一个选项可以控制这个引脚。该芯片全复位覆盖所有其他控制信号。在Cyclone器件结构中,LE之间的连接、M4K存储器模块和设备连接的I/O引脚通过DirectDriveTM技术提供的多轨互连结构。多轨互连由连续的、优化性能的路由连线,具有不同速度的用于内部或交互设计模块连通性。QuartusII编译器自动在更快的互连上布置回路设计,以提高设设计性能。DirectDrive技术是一个确定性的路由技术,确保不论在设备的哪个位置都安置相同的路由资源使用任何功能。多轨互连和DirectDrive技术排除了省去了通常需要设计修改和补充的重新优化周期,简化了基于模块设计整合阶段。12 天津大学2011届本科生毕业设计(论文)致谢本次毕业设计是在李艳宁教授的细心指导下完成的,从课题的开题到设计完成的整个过程中,李老师都以他严谨的治学态度和敏锐缜密的思维言传身教,对我严格要求,不仅指导我完成了这次毕业设计,还教给了我处理问题和解决问题的方法,使我不论在对学术还是对人生的态度上都受益匪浅。在此对李老师致以最诚挚的谢意。我还要感谢实验室几位学长和学姐的我毕业设计过程中的关照和帮助,他们是陈琨、郭旭敏、刘健和陈澄。学长们不仅帮助我解决了很多专业问题,更给了我莫大支持和信心。学长们丰富的专业知识和高超的专业技能也让我确定了努力的目标。最后,对周围帮助过我的同学们表示衷心的感谢。'