【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf

【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf

ID:32026101

大小:1.41 MB

页数:59页

时间:2019-01-30

上传者:U-1863
【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf_第1页
【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf_第2页
【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf_第3页
【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf_第4页
【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf_第5页
资源描述:

《【硕士论文】基于FPGA实现的PCI数据采集卡的研究.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

华北工学院硕士学位论文基于FPGA实现的PCI数据采集卡的研究姓名:赵敏申请学位级别:硕士专业:控制理论与控制工程指导教师:任作新20020101 华北工学院硕士学位论文摘要本文在分析PCI规范的基础上,开发出基于PCI总线的高速数据采集卡。用FPGA实现了33MHz、32位的PCI协议,并设计了用FPGA控制高速A/D转换器的电路,构成一个PCI数据采集系统,开发了系统的设备驱动程序。采用FPGA实现PCI协议和控制A/D转换器,使系统设计非常灵活、硬件成本低和可靠性高,具有很高的性价比。FPGA设计采用自上向下的设计方法,选用VHDL对电路进行描述,并在EDA工具下综合和仿真,使得较为复杂的电路设计能在短期内完成。关键词:PCI;FPGA:A/D转换;数掘采集VHDL:翻k卜.i匈下;EDA 兰i!三兰堕堡主兰垡堕奎AbstractBasedontheanalysisofPCISpecification,thispaperhasdevelopedaPCIhigh—speeddataacquirementsystem.Thepapernotonlyimplementsa33M,33bitPCIprotocolbutalsodesignshigh·speedA/DthecircuitbyusingFPGAcontrollingwhichcomposesadataacquirementsystem,anddevelopsdevicedrive;.SomeadvantagesofthemethodwhichimplementPCIbusandA/DcontrolcircuitusingFPGAlieinflexiblesystem,lowcost,highreliabilityandhighquality.ThisFPGAdesignintroducesthemethodwhichisfromtoptobutton,describesthedigitalcircuitusingVHDL,synthesizesandemulatesusingEDAtools.Sothatwecancompletecomplexdesigninshorttimebvusingthesemethods.KeywordsPCI;FPGA;A/D;DataAcquirement;VHDL;FromtoptoButton;EDA 华北工学院硕士学位论文第一章绪论1.1系统总线技术的发展微处理器系统总线最初是IBMPC的ISA总线。最初的ISA总线只有8位宽,寻址空间为1M字节,到IBMAT推出时,在原始xT总线接插件上增加了另一种接插件,这就增加了8根附加数据线、4根附加地址线和更多的中断/D姒线。随后,IBM公司在1987年推出Ps/2计算机系列时,曾试图借助卅croChannel总线夺回PC市场。MicroChannel是一条全新总线,改进了自动配置特性(无碗连接地址),速度更快,丽且还提供了任选32位数据和地址支持。但是IBM公司要求制造厂家每销售出一台基于MicroChannel总线的机器{i}5要给mM公司付赞。这种销售策略使MicroChannel总线未能获得火吐『『『场份额。Compaq公司决定采川l!I卧术解决[13M公司的MicroChanne】总线解决的『-日样问题。EISA总线通过使川一种独特的插接件与1SA总线反向jk容,该插接件与[SA边缘插接件兼容。但山于EISA总线特别昂贵,EISA总线并没有受到特别的欢迎。E[SA主要被用到需要多个网卡和多个磁盘控制器的服务器上,这就能够有效地使用总线控制特性和该总线的额外带宽。当4S6机器被广泛使刚的时候,就必;!;{为能提供快速觇频和磁盘性能的32他净制定。种标准。山fHSA价格昂贵,所以市场上出现了一种更摘咀的设计,即VESA局部总线。VESA局部总线基本上是486CPU总线到外部接插件的延长部分,这意味着所有VI!SA局部总线卡都是长卡。VESA局部总线有一个非常有限的目标(加速视频和硬盘),所以其设计既简单又便宜。PCI是Intel公司1992年推出的,最初是在486系统上实现的,旨在与VESA.ud,线分享高端PC市场。随着Pentium处理器推入主流PC市场,VESA丛本消失了,PCI取而代之,夺取了大部分Pc市场及相当一部分RISC工作站市场。1.2PCI的发展现状●陌『『:j.寸义乃周边吐缶JJ连(hf。iphL—t.1I(]t)1]li)oflelll.Interconnect) 华北工学院硕士学位论文⋯是一种高带宽、即插即用的总线协议,它被用来满足当今高性能Pc和工作站以及它们的高带宽应用。传统的ISA总线已不能满足如视频系统、图形加速卡、高速网卡、数据采集和数据存储设各的需要,所以PCI总线一出现就在计算机工业得到广泛应用。PCI总线技术规范l’0版由Intel公司开发,现由一个工业协会管理,称为PCISIG,规范的最新版本是2.2。PCI总线相对于ISA总线有以下一些特点和优点【【1:一独立于处理器。为PCI总线设计的器件是针对PCI的,而不是针对处理器的,因此设备的设计独立于处理器的升级。_低功耗。PCI技术规范的主要设计目标是实现尽可能小电流的系统设计。■传输速度高。32位PCI总线在读写传送中支持每秒132Mb的峰值传送速率,对于64位l,CI传送支持每秒264Mb峰值传送速率。对于64位66MttzPCI总线,传送速率可达到每秒528~1b。ISA总线的传送速率每秒只有20Mb左右。■地址自动配置。配黄寄存器的全位级别规范,支持自动的设备检验与配置,PCI设备的内存和I/0地址是由软件在系统启动时自动配首:的.不需要像JS^总线那样手动没置。■总线主设备支持。全面支持PcI总线主设备.允许同级PCI总线访问和通过PCI—PCI与扩展总线桥访问主存储器和扩展总线设备。另外,PCI主设备能够访问驻留于总线级别较低的另一个PCI总线上的目标。■软件透明。在与PCI设备或面向扩展总线的同类设备通讯时,软件驱动程序使用相同的命令集和状态定义。由于PCI总线的广泛应用,国外许多公司都在做基于PCI接口的产品,主要有以下几种类型口J:1.单独的PCI接口芯片此类型的主要特点的整个芯片的功能就是实现了PCI接口,主要生产睦商有ANICC和PLX.用的最多为AMCC公司的S5920及S5933两种芯片。它们将复杂的P.Ci总线接口关系转化为简单的8/16/32位附加总线(Add.on&ls)接口关系,并为使用者提供双向FIFO、邮箱等硬件资源。采 华=|t_-E学院硕士学位论文一用S5920及S5933两种芯片进行设计,优点是功能强、可靠性高、设计者可避开复杂的PCI总线接口关系,价格也不贵。其缺点是芯片本身及其所需的非易失性存储器件占用宝贵的板卡面积,设计上也缺少灵活性。2.IP(Intel]ectProperty)核目前,己有国外的芯片生产厂商或IP提供商设计出PCI核。这些PCI核以软件的形式提供,用户需下载到CPLD。或FPGA中。如Xilinx和Altera公司都有针对自己可编程逻辑器件的PCI核,这些一般都经过严格的仿真和测试,用户可以直接使用。设计者将PCI核与用户逻辑综合到一起,可设计出性能价格比最好的单芯片PCI总线接口电路板卡。因此这种方法的特点是功能强、速度高、可靠性好、占用板卡面积最少、硬件成本最低,但IP核价格昂贵,一般要5000-40000万美元左右‘2“。3.PCI协议集成到ASIC中许多专用集成电路在:笛片本身内部包古了PCI总线接口,如图像压缩的:卷片不仅节约了丌发芯片、以太网:芯片等这些通用的;Lt)f本身集成PCI协议,设计中选用这样时f叫,缩短了丌发周期,在一定程度上提高了电路的性能,简化了电路的测试程序。但是带有PCI接口的:占片毕竟是少数,一般是针对性很强的应用,还由大量的应用需要专门的PCI接口。.1.用CP[。D或FPGA设计PCI接口这种方法是设计者自己丌发PCI接口,利用CPLD或FPGA来实现PCI接口,这种设计可以节省丌发成本,对于实验性或少量产品的开发非常适合,用这种方法设计PCI接口有很高的性价比,并能节省板卡面积,降低功耗。本科题就是采用FPGA自行设计PCI接口,并在通用高速数据采集卡中得以应用,并设计了数据采集卡的设备驱动程序。下面介绍与本科题相关的技术国内外现状。1.3相关技术国内外现状1.3.1大规模集成电路技术⋯4‘1从国内外整体看,利用FPGA开发ASIC电路已成为一利t必然趋势。 华.ILI:学院硕十。学位论文电子系统的变革是从A-t一年代的t}·期玎始的,1984年XILINX公司发明了现场可编程门阵列(FPGA),l;:【』后出现了复杂可编程逻辑器件(CPLD)。这些器件山于具有刚户可编程的特性,使得r乜子系统的波计工程师利用与器件相应的CAD软什,在办公室或实验室就可以设计自己的ASIC器件,实现用户规定的各种专门用途,因此构成了可编程专用集成电路(ASIC)的一类器件。采用可编程ASIC,对于半导体制造厂家可按照一定的规格以通用器件-人量的生产,剥于用户可按通用器件从市场上选购,再由用户自己通过编程实现A8IC的要求,由于这种方式剥厂1家和用户都带来好处而受到欢迎,发展也就特别迅速,已经成为一个很重要的实现ASIC的手段。为了缩短VLSI的开发周期,逻辑合成方式在九十年代初成为设计标准,在以后的白顶向下的设计系统中,以逻辑合成技术为主,增补了各种的_[具,使具有多功能的复杂VLSI设计能够用EDA软件来实现。为了在⋯个:吝片上实现集成的设计,能够在短时inJ内将包含数千只品体管的单片:占』;。集成方案』1发出来,需要采用综合利用知谚{产权∽)功能块进行VLSI设汁的方法。所涮IP功能块是以VHDL语言描述的构成VLSI中各种功能J丫L元的软件群。IP助能块是要挝供中央处耻器(CPUl、数字信号处理器(DSP)、外设互联接EI(PCI)平LI通用串行总线接口(USB)等足够可靠的各种的功能块。这就大大方便了集成:B片的丌发。l_3.2硬件描述语言与EDA工具对于复杂的数字系统而言,用硬件描述语言’已成为当代数字系统的主要设计方法。对数字系统的描述可以在不同的层次上进行,即可分为系统行为级、行为处理级、寄存器传输级、逻辑门级和电路级等五个层次。最常用的硬件描述语言是VttD[。和VerilogHD[.,本设计采用的是VHDL。VHDL(VIl8ICItardareDescriptionLanguage)是美国国防部在70年代末和80年代初提出的VHSIC(VeryHighSpeedIntegragtedCircuit)计划的产物,支持硬件的设计、综合、验证和测试。VHDL于1987年由IEEEl076标准所确认。1993年,IEEEl076标准背升级为IEEEl164。VHDL己成为数字电路和系统的设计、综合、仿真的标准。VHDL因其强大的语言结构,多 华北I.学院硕十学位论文层次的描述功能,良好的移植性以及快速的ASIC转换能力,获得广泛的应用Ij9】【40㈣。VerilogHDL也是非常常用的硬件描述语言,语法和C特别相似,因此被更多人接受。Verilog最初由Gateway系统设计公司发明,Verilog语言于1995年成为IEEE标准,称为IEEEstdl364-1995。完整的标准在Verilog硬件描述语言参考手册中有详细的描述。随着电子系统设计复杂程度的不断增加,仅靠手工进行电子系统的设计已经无法满足要求,迫切需要更高、更快速和更有效的电子设计自动化EDA(E1ectroniCDesignAutomation)工具。业界最著名的生产EDA工具的公司有Cadence、Synopsys、Mentor和Avant等,每个公司基本都有一整套解决方案,从设计输入、仿真、综合、到后端布局。近年来,许多生产可编程逻辑器件的公司多相继推出适于本公司器件的ED^工具。这些工具对硬件的要求比较低,运行平台一般是PC机和WLndows或WindowsNT操作系统,价格相对也比较便宜。我们设计采用的EDA软件就是Xilinx公司的FoundationlSE,里面集成了Synopsys的综合工具FPGAExpress,Mentor公司的Modelsim仿真工具以及I-3己的布局和线等模块,使用非常方便。1.3.3驱动程序相关技术【7118㈣¨0I从编摇一I:具米祈,VireoSoftware公司f内VtoolsD提供方便快键的编程手段。程序可利用VisualC十+的,『:发环境编写自己的VxD。除此之外,也有一些公司提供了一些VxD的向导器以帮助用户生成C/c++的程序框架,使用它们可大大提高编程的效率,其中主要使用Vtoolsd95,VxD、=witer。调试运行在rin90级的驱动程序相当困难的,VC++及MASM中的调试均不能满足需要,而需要专门的调试环境:Microsoft的WDEB386以及Numega的SofllCE工具。当然也可以是用微软为设备开发者提供的软件包Windows95DeviceDriverⅪt(DDK)作为开发工具。这个软件包包括了有关设备的开发文档,编译需要的头文件、库文件,调试环境和程序规范。在DDK中还定义了一些设备的底层服务,象DMA服务,中断服务,内存管理服务,可安装文件系统服务等等但由于DDK主要使用汇编语言描述,开发起来比较困难,通常选用VtoolsD作为开发工具。VxD技术适用于 华北工学院硕士学位论文Windows9x操作系统,WindowsNT不支持此项技术,而是采用更为先进的面向对象的驱动程序模型,例如:WDM(WindowsDeviceManeger)。Jungo公司的Windriver工具更加简化了开发设备驱动的难度,用Windriver开发的驱动程序在许多平台代码兼容,Windriver提供了开发高性能驱动程序的完全的方案,现行主要支持PCI、PCMCIA、ISA和USB。用Windriver丌发设备驱动程序DDK或任何系统编程的知识,丌发非常简单,但Windfi、er开发的驱动程序比直接用DDK或Vtools工具丌发效率要低。1.4本人所做的工作及论文安排术人在认真消化PC【规范的基础一h研究用Fl,GA实现PCI协以的方法,jI:JIjVItDI.i52计⋯33MIIz的32位}】cj核,在EDA:I:j}仿真和测试通过,仡此I,c1核毡础上敬计了旗】--l,Cl总线的c渝躯数据采集},并编写了改播gK动f‘£J卜{fI』煎』H软1,F。沦史安排为:木章主要介绍了谍题的研究背景、研究内容和部分川关技术;第二章在介坌fjPCI规范、FPGA、A/D转换的基础上,提出了系统的总阵设计方案:第三章介绍了PCIm议和数据采集卡用户端的FPGA的实现:在第四章介纠PCI的仿真时序和设计中的难点,第h章介绍了系统驱动程序的殴汁;第六章刈全文作了简要的总结。 华北工学院硕I学位论文第二章PCI数据采集系统的整体设计整个数据采集卡除A/D转换等少量部件外基本上都用一片FPGA实现,其中PCI总线控制器的设计是关键部分,是本科题的重点,也直接关系到整个系统的性能。A/D转换器的产品和种类非常多,根据实际情况我们选用了~faxim公司的Maxl425,其转换速率为20M/S。本章介绍了PCI总线接口相关理论和A/D转换器的特点,并给出了系统的整体设计框图。2.1PCI系统结构⋯PCI总线是计算机I/0和内存设备的中枢(如图2.1),PCI总线独立于处理器。CpU通过CPg到PC]桥的发镉来访间PCI总线。I/0和内存设备可通过PCI总线来访问,PC【设箭分为日设备平¨目标致街。1;没笛是指能肩功交易的没备,而目标设备只能被访问,不能肩动交易。一般.来说,。卜设备也有fI标i5}笛的功能,因为-1-没备最少必须要实现配置空间。PCI总线能够配合要二R彼:E快速访问或快速访问系统存储器的适配器工作,也能I凹uI叫s姒Ml▲lPcI桥H。从Ml-I,CIBUS2工:网F-视频卡扩展桥FPGAPCI图2.1I,cI结牛勾 华北工学院硕士学位论文让处理器以接近自身总线全速的速度访问适配器。PCI总线的全部读写都可以用突发传送。传送的长度由主设备决定,在交易开始时,目标得到起始地址和交易类型,但没有传送长度。当主设备准备传送每一个数据项时,主设备通知目标是否为最后一个数据项。当最后~个数据项传送后即告结束。2.1.1系统PCI接口信号”1PCI总线设备至少要求有47个引脚。PCI主设备另有两个REq#和GNT#引脚一共49个引脚。还有许多可选的信号,如64位扩展、JTAG边界扫描、目标锁定、Cache支持等,可根据特定需要有选择地实现。PCI总线信号可划分为10大类型,如图2.1所示:地址数抛接u拄制锚;X报告总线仲裁系统PCI兼容设备64位扩J醍接Lj挖制中斯t青速缓冲支持JTAG图2.2PCI总线信号表2.1定义了PCI信号类型,构成PCI总线的信号包括下列电气特性:●IN是作为规范的输入信号数据采集系统的整体设计●OUT是作为规范的输出信号●T/S是双向、三态输入/输出信号●S/T/S是山~个所有者在某一时fhJl3E动的~个持续的三态信号。驱 华北工学院硕七学位论文动一个$/T/S引脚为低电平必须在三态它以前一个时钟,主动驱动它为高},平。一个上拉电阻保持信号为稳定状态,直到有另一个代理接管信号的所有权并驱动它。在系统设计中,电阻是作为中央资源来提供的,信号的下一个拥有者不能早于前一个释放信号后的一个时纠吗Ⅸ动S/l、/S信号。●O,D是一种漏极”路信号,它与其他的代理是线或关系。信号代理是信号有效,一个弱上拉电阻可实现信号返回稳定状态,上拉电阻可维持无效状态,}拉需要2个或3个PCT时钟将信号完全恢复为尢效状态。表2一l1,C1信号类型信号类型描述AD一.{l:0]T/S:j2位地址/数据总线C,B吣j:0]T/S命令/字H使能I?叭川讲S/T/S交易J『:始TIm、#S/T/S1]标准备好1R1)、芸S/7l、/S,卜准备女fDig\Sf:l,#S/,I/S|二=|标{cf|】认交易S1【)聪S/T/SEl标重试、断丌或终止:11)S{?}.1\配置读/写0IKI弋叫钟~胁SH#IN复位RZQ=7r/S主设备要求总线决断『GXT=T/S获得总线【PAR=T/S奇偶校验PERR;S/T/S数据奇偶校验错SfⅢH;S/T/S地址奇偶校验错2.1.2PcI系统输出接口数据传输【2J阿I,童线32f≯的数据宽度和:m11Iz的L作频率,与以扦的总线十¨比人 华北工学院硕士学位论文大提高了数据吞吐能力。当PCI总线的工作频率为33MHz,数据宽度为32位(DWORD)时,其理论数据传输率应为:33MH:×32位:-8=33×4=132(MB/s)理论数据传输率是忽略总线周期中启动和结束时间而求得的,即假定总线工作期间的每个节拍都用于传输数据,或者说一次猝发传送可达到无限个数据周期,但实际上主桥限制了一次猝发传送中数据周期的个数是有限的,当所需数据周期个数超过该限定值时,主桥将自动结束该总线周期,转入下一周期。也就是说批量数据传输是由多个传送周期完成的。由于在每一传送周期中都存在启动和结束时间(非数据周期),所以PCI总线的实际数据传输率远远小于理论数据传输率。造成这一结果的原因主要有两个方面:1.土挢中数据缓冲区对数据传输率的影响主桥是微处理器、Cache、主存子系统和PeI总线之间的界面。在主桥中有.1个数据缓川夏,它们在两条总线之问起缓冲作用,以使两条总线尽可能高的速度工作而不十廿互制约。其中,写缓冲区(writePostingbuffer)从一条总线』二接收数据并给出响应,使该总线可以丌始其它工作,在另一条总线空闲时,主桥将数据写出:读预取缓冲区(readpre—fetchbuffer)从读操作中获得地址,并将该地址的后续数据一起读出,其目的是提高读取速度。因为根据主存访问的局部性行为理论,这些后续数据极可能是将来要读的数据,这些缓存于读预取缓冲区中的数据一直保留到读操作结束。主桥中的数据缓冲区提高了系统性能,从理论上浣缓冲区越大越好,但是缓冲区太大,数据一致性就很难保证,故缓冲区大小~般只有2、4或8个DWORD。因此,PCI设备对主存访问时一个总线周期最多包含2、4或8个实际数据周期,可传输2、4或8个DWORD,当猝发传输的数目超过该数目时,主桥置STOP#信号生效,中止该周期,在该周期的末节拍重置STOP#信号无效。2.数据一致性对数掘传输率的影响主侨叶l的数掘缓冲区在提高系统性能的同时也会带来数据~致性的问题。Host总线上有L2Cache、主存和CPU中的L1Cache。所咀,PCI总线向主存写时要看I.1、L2Cache是否命中,若命中,就要使相应的CacheLine失效。当PCI总线从主存读时则要看是否命中了LI、L2Cache,是否修改 华北工学院硕士学位论文了CacheLine(设Cache采用写回策略),若命中,则把修改了的CacheLine写回主存,同时也送到主桥的读预取缓冲区中。为保证数据的~致性,主桥把PCt访问的主存地址放到Host总线上由Cache监听。监听过程中,PCI总线上需插入Tw等待周期,这样,由于总线周期加长而其中数据周期不变,使PCI的实际数据传输率进一步减小。考虑到上面的几个因素对数据传输率的影响,系统PCI输出接口从模式工作状态下读数据传输采用猝发方式,一次传输数据不超过240个字节。在这种规范下,主模式工作也很正常。2.2A/D转换器在工业控制、图像处理、网络等应用中都大量用到A/D转换,所谓A/D转换是指通过一定的的电路将模拟量转变为数字量。由许多国内和国外的公司生产A/D转换器,刚的最多有Maxim,National蒋公司的产品,根j】:i:不|司的应门],可选择不同的产I‰A/D转换主要涉及下面几个参数[41。1.转换十☆度【b于漠拟量是连速的,而数字量是离散的的,所以,一般是某个范围中的模拟量对应于某一个数字量。这就是说,在A/D转换时,模拟量和数字量之问不是一~对应的关系。转换精度反映A/D转换器的实际输出接近理想输出的精度程度。A/D转换的精度是常用数字量的最低有效位(LSB)来表示的。设数字量的最低有效位对应于模拟量△,这是称△为数字量的最低有效位的当量。如果模拟量在±△/2范围内都产生想对应的唯一的数字量,那么,这个A/D转换器的精度为±0LSB。2.转换率转换率是指用完成~次A/D转换所需要的时间的倒数来表示的,所以转换率表明了转换的速度。比如完成一次转换所需要的时间是lOOns.那么,转换率为10Ⅳ1Hz。3.分辨率A/D转换的分辨率表明了能够分辨最小的量化信号的能力。通常用位数柬表示^/D转换器的分辨率。刊于一个实现N位转换的;V0转换器来说, 华北工学院硕士学位论文一,它能分辨率的最小量化信号的能力为2N位。比如,对一个12位的A/D转换器,分辨率为2'z=2048位。前面已介绍32位33删zPCI理论上最大可达到132(MB/s),但实际上不可能达到,一般来说可达到50--60IVl/S,本次设计采用的A/D转换器为Maxim公司的采样速率为20MB/S的Maximl425,一共有2路,对PCI总线带宽来说,应能满足实时采样的要求。下面简单地介绍一下Maximl425的特性,具体的可参考Maxim公司的数据手册【27】。1.差分输入减少共模噪声2.信噪比(61db、fin=20Mlqz,59.3db、fin=lOMttz)3.内部2.5V参考电压4.150MIIz输入带宽5.±2V输入范围6.低功耗:172mW2.3数字电路的设计方法2.3.1数字电路的设计步骤f5】【6l由于PcI总线控制器及A/D转换器控制电路采用一片FPGA实现,电路非常复杂,为在短期内完成任务,传统的从具体的门电路、触发器及小规模功能电路入手,通过传统逻辑设计实现数字电路的设计的方法己不能满足趋大规模的数字电路设计。现代数字系统的设计方法更强调设计系统的复杂性、清晰性和可靠性:即从数字电路入手,先将较为复杂的数字系统划分为较为简单的子系统,再通过逻辑和接口设计用各种功能部件实现要求的数字系统,这就是自上向下的设计方法。这种方法要求对所设计的系统进行整体的推敲并全面消化理解,在此基础上将系统划分为数据处理子系统和控制子系统。采用自上而下的设计方法设计数字系统的基本步骤可归纳以下几点:1.明确设计要求一个实际数字系统的设计任务下达后,首先要对其进行消化,详细分析设计要求,明确设计系统需要完成的逻辑功能及其性能指标,并画出系 华北工学院硕士学位论文统的简易框图。2.确定系统方案明确设计要求后,需要进一步确定实现系§逻辑功能的原理和方法。同一系统实现可能有不同的设计方案,设计方案的好坏直接决定系统的质量,因此这一步非常重要。系统方案确定后,应当给出系统方框图、系统流程图,必要时给出系统的时序图。3.数字和控制处理子系统的设计数字子系统实现具体操作和产生的输出,控制子系统是一个时序逻辑系统。简单的系统可能比较容易提出具体的与系统功能要求一致的方案。但对于较为复杂的系统,先构造比较粗糙的、简单的单元结构,随着设汁的逐步深入,再提出较为细致的具体的设计方案。乱硬件实现在上述设计ti%gtiitij二,选择具体的1乜跚,Hj硬件1乜娇实现处理子系统和控制子系统。在进行予系统设计时可用硬件描述语言,利用软件工具对其编译和仿真,软件自动生成下城文件,最终将设计下城到可编程逻辑器件中。2.3.2FPGA结构与原理【28】【29】现场可编程门阵列FPGA(Fie]dProgrammableGateArray的缩写)是美国Xilinx公司与1984年首先丌发的一种通用用户可编程器件。本次设计采用的是x11jnx公司的Sparten[I系列的XC2S30器件。FPGA是由掩膜可编程门阵列和可编程逻辑器件两者演变而来的,因此FPOA既有门陈列器件的高集成度和通用性,又有可编程器件用户可编程的灵活性,对于AISC用户来髓,采用FPGA在实现小型化、集成度和高可靠性的同时,减少了风险,降低了成本,缩短了周期。不同的公司和型号的FPGA在结构和工作原理上有所不同,通常按基本结构、编程次数来划分。1.按基本结构分类FPGA可分为查找表型和多路丌关两种类型。查找表型FPGA是由静态存储器(SRAM)构成的函数发生器组成,用它来实现FPGA的逻辑功能。 华北工学院硕士学位论文xilinx公司和AT&T公司的ORCA都是采用这种结构。多路开关型FPGA逻辑单元的基本结构是多路开关,利用多路开关的灵活的数据选择特性,实现各种逻辑函数的设计,Actel公司的ACT—l、ACt一2等都是采用这种结构。2.按编程次数分类按编程次数可将FPGA划分为一次性编程和多次编程。一次可编程FPGA在编程时将编程数据写入器件内部,一旦编程完后不能再修改。可重复编程FPGA的编程数据不是直接写入FPGA内部,编程数据是存储在外部的EPROH中,若需重编程只需改写EPROM,特别适合新产品的研制和开发,但是保密性比一次可编程器件差。ActelACT系列是一次可编程器件,而Xi1inx的Sparten、Virtex等属于多次可编程器件。F面将以Xjlinx的Sparten[I系列器件为例来简单地介绍FPGA的内{}|j原理和jr发流程。Xilinx的SpartenII系列[ZPGA主要山可编程逻辑模块(C1.B)、输入/输出模块(IOB)以及可编程连线矩阵等构成。可编程逻辑块的是由逻辑单元(LogicCell)构成,一个逻辑单元出一个四输入函数发生器、进位逻辑和存储元素构成。每一个Sparten[I的CLB包括四个逻辑单元。SpartenII的函数发生器是由四输入查找表来实现,查找表除能实现函数发生器外,还能配置成16×1位的同步RAⅥ。SpartenII的IOB支持种类很多类型的I/O口信号标准。这些高速输入输出能支持不同类型的存储器和接El标准,包括本次设计的PCI总线,SpartenII的输入输出完全遵循PCI规范。所有焊盘都被保护,防止静电放电和瞬闻过压的损坏。可编程连线矩阵包括局部布线、通用前i线、WO布线、专用布线和全局柿线。2.3.3FPGA的开发流程【28】【29FPGA的丌发,是指利用FPGA芯片实现用户设计要求的全过程。FPGA的丌发需要借助于FPGA丁i=发系统,按照丌发系统的工作步骤.将用户的设计转换成FPGA的配置数据,并将配簧数据下载到FPGA中的过程。各FPGA 华北工学院硕士学位论文生产厂商都有自己的开发系统。在Xilinx的FoundationISE中的开发流程如图2.4所示。图2.4Xilinx丌发流程FoundatiOnISE软件包括n:多工’其,如原理图编辑器(SchematicEditot)、硬件描述语者‘编辑器(HDLEdJLot)、功能仿真及设计实现等,并可和许多其它的EDA软件配合使用。具体的关于FoudatiOnISE的详细晚明和使用方法和参考xilinx的数据手册。2.4系统的总体框图根据前面介绍的PCI总线、A/D转换器、FPGA以及数字电路的知识,我们可以画出数据采集系统的总体框图(如图2.j)。总体上分为两部分, 华北工学院硕士学位论文即FPGA和外围的.~/D转换部分。FPGA内部又有PCI控制器和用户端控制器(A/D控制器),下两章将详细介绍PGI控制器和用户端逻辑的实现。模拟输入|冬J2.5系统总体榧|{}】采集卡的一些基本参数有口”:1.两路模拟信号输入,采样率最高20M/S位2.采用差分输入的方式减少共校噪声3.输入信号的范围是±2V4.最高可达到150MHz的输入带宽由于本次设计的采集卡没有对输入的模拟信号进行预处理,所以使用时必须先对实际信号进行放大、滤波等处理,再把处理后的信号送入A/D转换中。 华北工学院硕士学位论文第三章PCI系统的硬件实现PCI控制器的设计是本课题的重点,也是难点。根据PCI规范,PCI总线实现即插即用,内部必须实现配置寄存器,驱动程序就是靠配置寄存器来对总线的地址、中断等实现动态分配。PCI总线协议还必须实现PCI目标状态机、PCI主状态机和奇偶校验等逻辑。本章先介绍PCI控制器的顶层模块,然后依次介绍子模块的实现。为实现PCI猝发性传输,用户应用必须实现D姒控制器、FIFO及A/D转换控制器等电路,本章依次介绍这些部件的FPGA实现。3.1PCI控制器的模块划分根拥数字电路自顶向下的方法,必须先确定系统的顶层模块以及各模块之M的关系,这一步j州;{,m要,氟接关系到电踏实现的性能和成败。必须反复推敲,确定合理的方案。刘PCI控制器的来说,就是ifFRAME#thennextState<=IDLE;e[sif!FRAME#+!HitnextState<=BBUSY,endit;WhenB—BUSY2>if(!FRAME#and∞一done)+!HitthennextState<2B—BUSY;elsifFI认ME#+DdoneandFRAME#+!Ddone+!DEVSEL抖thennextState<=IDLE;elsif(!FRAME#and!IRDY#)+Hit+(!TermandTeml}Ready)thennextState<=SDATA:elsiff!FRAME#and!IRDY#1+Hit+Teml+!Readythenq 华北r学院硕士学位论文nextState<=BACKOFF;endif;WhenS—DATA2>if!FRAME拌+!STOP薛+!TRDY荐+IRDY撑andIFRAME#+STOP#andFRAME抖+TRDY#+STCIP}j}thennextState(2S_DATA;elsif!FRAME#+!STOP#+(TRDY#and!IRDY#1thennextState<=BACKOFF;elsifFRAME撑+f!TRDY#and!STOP#)thennextState2TURN_AR:enditWhenBACKOFF=>it’1FRAME#ncxtState<=BACKOl?I?:elseFRAME#ncxtSlatc<2TURN—AR;endIl-endCase;JI;{,‘a-.B.Iy,Jf占号含义为:nowSrate状念机当日U的状态nexLStiltej状态机下一个状态HiL住地址段目标被选一I,D—Done目标解码完成T—Abort目标错误要求中止交易T(Tin日杯叶;止,主设备可以重斌交易Ready准备传输数掘主控:状念机负责交易的启动和数掘的读写控制,一般束酏比目标状态机要复杂.复杂的程度要看具{奉的实现,比如,要实现无等待猝发传送就[-L4B猝发传送要复杂的多,主设备可有选择地实现快速背靠背交易或地址步进,状态转换如图33所示I”。二L控:【凡态机主要Lb六个状态构成,分别是:●『d1c表示当前主控状态机处于空闲:帙态●Addr表_;地址段,n:此?状念,E漱嵛提供交易的起女fitllgJiL,l{标 华北工学院硕士学位论文设备必须锁存地址信息●M—Data是主控状态机的数据段,主设备进行数据读写●Dr—Bus当Gnt#信号有效而主设备没有数据传输,状态机进入此状态,此时,主设备必须驱动总线●STar是目标有效STOP#后的状态,实现此状态是为让主设备记住目标己有效STOP#●Tumar是转换周期,主设备准备三态总线信号,当设备实现快速背靠背交易时,主状态机必须能从此状态直接转到Addr状态图33主控状态机主控状态机的状态转换VHDL描述如下㈣㈨137】:CasenowStamisWhenIDLE=>ifRequest+!GNT#+FRAME撑+lRDY#theftnextState<=ADDR:elsif!GNT撑4FRAME撑+fRDY群thennextState<_DRBUS;elsenextState<=lDLE;endif:WhenADDR=’nextState<=MDATA. 华北J:学院硕士学位论文WhenM—DATA2>if!FRAME拱andFRAME撑十TRDY#+STOP群+!DevtothennextState<=M—DATA;elsifRequest+!GNT#+FRAME#+!TRDY#+STOP#thennextState<-ADDR;elsifFRAME撑+!STOP撑andFRAME撑+DevtOthennextState<2S_TAR;elsenextState<2TURNAR:endif;WhenTURNAR=>rRequest+!GNT#thennextState<=ADDR;eslit’!Requesl+!GNT#thennexlState<:DR—BUS;elsifGNT#nextState<=IDLE;endiIjWhenS—TAR=>if!GNT#thennextState<=DRBUS;elsifGNT#thennextState<=IDLE:enditWhenDRBUS=>IrGNT#titannextState<=DRBUS:elsifGNT#dlennextState<=1DLE:endjfjendCaSe;_i:碡l:吠态机中一些信号解释为:Request用户要求主交易Comp现交易的最后数掘段To主发备超时DexLtODe、sel#延时汁数器超IIq-I(IfDevsel#还未订效Ready川Jo数据准备好信号 华北工学院硕士学位论文3.2.2配置空间为了实现即插即用,所有的PCI设备都必须实现配置空间。在机器第一次上电时,配置软件必须扫描在系统中的不同总线,确定什么设各存在以及它们有什么要求,所有PCI设备必须实现256个字节的配置空间,这些配置空间包含设备状态、功能使能、基地址信息等。用户可根据需要实现其中的一部分,但是没有实现的寄存器必须返回0IJJ。在256配置空间的耵64个字节称为配置空间头,PCI规范定义了两种首部类型即类型00和01。其中01类型是PCI.tO—PC!是为PCI桥定义的,一般设备都采用类型00的配置头空间(如图3.5)。3116150}波掩枷;u{』一家丰,nU{PCI:队念奇L?-器PCI命令奇存器类代码修订版标U{内科I‘I枪头类型域小时延旆述缓冲人小璀地址寄仃器保留于系统设备标识子系统厂家标i_}{扩充ROM基地址保留最大潜力最小许可中断引脚中断线图3.4PCI功能配置首_;}Ij的格式供应商lD一这个16位寄存器代表设备的制造商。m这个只读奇存h∞舛吣踮mH体k如H弛川如N粥ru 华北工学院硕士学位论文器中硬连线的值由控制编号颁发的一个管理机构(PCISIG)分配。值FFFF被保留,当读取一个不存在的设备配置寄存器时,必须返回这个值设备Ip—-j奎个16位值由设备制造商分配,表示设备类型。与供应商ID和可能的版本ID一起,设备ID用于定位设备指定的驱动程序版本ID寄存器——这个8位值由设备制造商分配,表示设备的版本号。如果供应商提供版本指定的驱动程序,这样就保证OS装载正确的驱动程序类代码寄存器一一指定设备的参数化的功能基地址寄存器——指定设备的地址空|-白j的分配。分为I/O基地址和内存堪地址,由基地址寄存器的位0来确定,当返回为I时表示【O译码器,为0时表示内存阵码器。眦谢窄nIJffJ低192个字1y址楸圳改箭米定义的,PC】jk窬砹备可以不负观这世肖仃器,他足当歧这些没川的奇存}}}{叫必须返川0。PCI波挤的地址空川是动态的,系统通过写地址值到丛址寄存器米分配哎备的地划:空削。设备所需要的地址空州的数量是通过测试丛址寄存器来确定的。为确定设备的地址空间,程序人员先写值OxFFFFFFFF到基址奇仔器,然后读这个基址寄存器,非重要位的0的个数代表地址空问的大小。比如,一改备返回值OxFFFFFFSO,仲裁者就知道此i殳备需要128字节f|勺地址范Ⅲ(7个零位.2,=128)。配置空问的数字实现比较简单,就是由一些寄存器和解码逻辑构成,只是要注意未实现的奇存器必须在被读时必须返回值O。3.2.3奇偶校验位的产生7l{交易的地址和数据断中,PCI总线是被奇偶校验保护的。一个单独的奇偶校验位PAR保护了AD[3l:0]和C/BE[3:0]。如进行64位数据传送,llf;l-Dli的奇偶校验位PAR64保护AD[63:32]和C/BE[7:4]。在地址段或数据第一次被驱动到总线之后一个时钟,奇偶校验位必须被驱动,并且必须被连续驱动,直到数据段完成后一个mj-t,t,f”。n交易的地址段或任意数据段结束后的。个时钏,,收到地址或数据的陀I代胖j^1’了{:AI)[:¨:0]和C/lIE[=j=0]锁存的信息汁t}7:JOl单的奇偶校验。 华北工学院硕士学位论文提供奇偶校验的代理必须产生奇偶校验:■在地址段结束后一个时钟的上升沿;_在数据段中数据出现(写交易时IRDY#有效,或读交易时TRDY#有效)后一个时钟。在这一时刻,收到地址或数据的设备希望奇偶校验存在且稳定。然后计算出的奇偶校验位与PAR上实际收到的奇偶校验比较,确定是否发生地址或数据损坏。如果奇偶校验是正确的,没有行动发生;如果奇偶校验是错误的,必须通过SERR#或PERRY,S.告错误。最简单的产生奇偶校验功能的方法是用一个36输入的异或门,奇偶校验位确擞据写时必须在30ns内产生,在读时必须在60ns内产生。XiliFIX的FPGA内,吲iLh四输入的逻辑块构成,I习此实现36输入的异或门需要三级逻辙。⋯iii.¨ji要求4i能j曲足时,川以采川F晰一螳技术米。史观吲⋯。1.㈨I,CI。,j交易足采川流水线,则俞偶校验也可采九J流水线技术(如I冬|:j.5)。2.上面的方法适用于奇偶发生而不适用j二奇偶验“。侄这种。晰况下,PERR#必须在数据被锁存前两个周期产t|t,这样流水线刁i起作用。当然,PCI设备可以不报告奇偶错误而不管PAR线的状态。这种解决办法不会引起PCI不兼容,但不被推荐。3.在最坏的情况下,数据可以延时到奇偶完成以后。但对于猝发眭传输柬蜕,这样做会大大影响传输的性能。图3.5流水线奇偶校验实现 华Jbl:学院硕士学位论文3。2.4禽令解码及她鸯£计数咒{主设备奁囊葫交茹辩敖~个会令在惫绫C/BE[3:0]上,这个命令定义了交易的类型。PCI规穗定义的命令类型如图3.8所示。目标设备必须在地址段锁存PCI命令,然后解码它。本次设计的PCI核没有用到存储器、双地址周期、存储器行读羊珏存储器写和读无效嚣命令,根据PCI规范,必须穆这些余令变为各自的蕊本访闫命令。纛存锫器多{亍读秘露藤器嚣读应竣为存镶器读命令一存储器写与失效应改为存储器写命令州Ji啦箭米蜕,k设箭必须要求提供32位地址,在t些应用中,一个小的汁数器嗣J_。个大的寄存器就能提供32位地址,实际计数器的大小出用p{‘输的数摄妖波蛳定。皱嬲:的{疔况1-,}跛舔镭要‘令30位哟i;f燕皴城麴跨数撩,鳓潮童§j≥;矗≯:8||蚓。:112’O蚓3.630位Iq重装戡计数器刈口标设备来说,如裂要实现猝发憎!传输,它必须器份当前的地址并过在戏功传送当爵鼗援段磊爨动加一,幸运熬楚,这令砖数器可以绞小,其体的犬小秘掰弱标地自l:块的尺、}。鳓魏,E}},】:嚣解码4K鲍地强块,那么地j1|I=汁数器H需要跟踪4K范闻内的地址,这卡午⋯个10俯的汁数嚣就足够了。如阁置9所示侧川。3.3数据采集卡用户接口设计数蜷采集卡的用户接鞠非常灵活,裉掘不嗣妁需要有不同的设计要求,变装问遮藏是_定采蘩来赘数据蓉撵有效避懑过既【控裁器赞送爨耀户逝皤程序中。高速数据传送一般经过FIFO或SRA~I缓存后再经PCI控制器 华北工学院硕士学位论文送入内存中。本次设计采用FIFO缓存,即首先把A/D转换来的数据写入FIFO中,然后通过DMA控制器控制FIFO的读写把数据送入主机中,下面将详细介绍D姒控制器、FIFO缓冲器以及A/D控制逻辑的具体实现。3.3.1DMA控制器的设计㈣㈣【181Dm(DiFeCtMemoryAccess)称为直接存储器传送,是为在主存储器与I/o没备制进行高速交换批量数据而设置的。pcI规范中没有涉及DMA控制器,DⅥA实脱与甭依赖于用户应用,一般来晚,要实现猝发性读写,必须实现DMA控制器,用DMA米控制PCI主状态机实现猝发性读写。基本的D姒传输过程如下:1.f;起始地址到D.~IA起始地址寄存器2.‘q所要传送的数拂}K_}!{:到DMA块K汁数器:j.衲fc{{i化DMA控制寄存器m[NA请求,、刍FIr()准符好数捌或为审时,DMAJ1始请求PCI传输5D~|^响应,、刍PCI:l三状念机获褂总线J昕7i十义时,迎知DMA可以丌始传送数据6.DⅥA传送,J['Ofil}输数{I:i:,每次DMA传送后,地址指针自动加一,块K计数器减;7.结束处理,⋯块长度计数器的回零佶弓,或由接L1产'j-lcI,断请求,迎㈨Ln进”后处理。例如重新仞始化,准备r一数掘块,或处理刚接受的数据。本科题设计的DMA控制器是与Fll、O接口,jE有两个通道,分别对应两路A/D转换器。D姒内部有血个32位寄存器,两个起始地址寄存器、两个D姒块长度计数器和一个控制寄存器。起始寄存器存放着DⅥA传输的起始地址,每次成功传送后自动加一,块氏度寄存器存放传送数据的长度,每次传送后自动减一,为零时表示传输结束。控制寄存器控制D姒传输的方向、通道优先级等参数,DⅥA状态等控制寄存器的各位的具体功能如表xi所示。应用程序要进行叭n传输,!必须先jF确仞始化Dm控制器,当水:kI)MA传送完成肝,1)、I、拧制搽发小传输结束信lj.A/D控制器收到此信ljI,-;-停1I:屯71)转换。 华北工学院硕士学位论文表3.1D姒控制寄存器位类型说明l了l卜l-!O2l!卜3读/写读/、=;凄/。弓读/写堙/’写读/写读/。,jl史/1;滇/1i诗:?“Ell史。,jl爻jtj凄⋯tj主失败目标失败通道0完成通道1完成DMA中断状念通道O重试通道l亟试通道0的FmO选-}J0一选【rr第-个l一选-}l筇:=个通道l的l?Il?u选一1,(禽义ⅢI:)保释f优先级()一迎道0优先缴r_0一通道l优先级t%通道0使能迎j煎I使能迎逆u传输丌始迎道l抟输Jl‘始中断保尉3.32FIFO缓冲器的FPGA实现mII川【2‘1123FIFO存储器(FirstInFirstOutMemory)足一个具有两个端口.并按先进先出的顺序来暂时存放数据的存储器,也就是写入到FIFO输入口的第·个数据将是可以在输出口被读出的第一个数抓,接着便是第二个数据锋。输入口和输出【=fJ的jf‘怍彼此足独立的,即同时·q进}ji实≮,只要当时仃放瞳f?⋯)t{r的数扔:少于f、fFO的存量,祧可以继续向}?fFO-;t。j入数抓:,Jla安Fll?(】l~嗣:j土fji,j:数乱一:.50c||】。以继}丈1:tJl?11:【)z{·i葵}¨数越e.O19—35b7H9 华北工学院硕士学位论文为实现无等待状态的猝发数据传送,FIFO存储器采用乒乓缓冲的方式,所谓乒乓缓冲就是用两个FIFO存储器循环进行读写,当第一个FIFO满时,通知DMA控制器读第一个FIFO中的数据,同时把A/D转换来的数据写入第二个FIFO中,依次循环。这样就能保证FIFO中数据传输时不为空,实现无等待状态的猝发数据传输。FTFO的FPGA实现可用硬件描述语占描述经综合后生成实际电路,也可由x¨1nx的』r发系统中的CoreGeneraLeSystem自动生成,FIFO的宽度和深度都可由参数指定。x¨inx公司也推荐使用CoreGenerateSystem牛成FIF0,因为这样可以节约一GA的资源和提高FIFO的性能。有关CoreGenerateSystem的使用可参考X儿inx的数据手册。F【l?0存储器的引脚图和原理图分别如图:3.1I、吲:j.12所示。输入输Ⅲ引脚浣明:叭N[3l:0]一位数州输入线;DINl3I:0I)OUT[3l:0]一位数据输⋯线:Itl!AJ)Id!AI)一I实控诲1轿i入i嵩:w⋯I'l:w¨¨!一’,;控:削输入端:CI,KL1jK一时钟脉冲输入端:l?Ll。J,一满彬:奎{占号输jj{端:EMPTY一空状态信号输m端;FIF0图:{11F【170存储器二{g磅毫RAMCONTROLiWREnable八劁3.12FIFO厉i川’l割rIr0I}1』t个功能块ff=j成,它们是存储体眦\l、。列R针、歧指针t、控制 华北工学院硕士学位论文和满空逻辑。在时钟上升沿的作用下,当WRITE:I且FULL:O时允许写入数据,当EMPTY=O且READ=I时允许读出数据。FIFO的存储体RAM实际上是一个环行数据结构.有读指针和写指针分别指示数据读写的对应地址。这晕读指针总是指向下一个要读出的数据的单元地址,写指针指示下一个要写入的数据的单元地址。确定FIFO是否为空或满的方法是比较读指针和写指针,如它们不相等,则肯定既不是空状态也不是满状态。如读写指针相等并且最后的操作是读,则FIFO处于空状态。如读写指针相等且最后的操作是写,则FIFO处于满状念,,f:能继续写入数据。3.3.3A/D转换器控制逻辑的实现【271A/D转换器∞控制逻41f}也需要FP6A求实脱,圳为Mnxitttl,t25数据为i0f讧宽,必;01ff写入l?l㈨之前变为32位宽fn数据。A/t)转换器的控制器Hi㈥如:{.¨所ui。图3.11A/D转换器控制电路图312表示了MAXl425时钟输入、模拟输入平f1数掘输出的关系。¨x1—125采样输入时钟的卜降沿.输入数据在时钟的L升沿被采样,输出数抛有j.j时钟的内部延时.所以从采样时钟订效士0数掘输⋯有效有j.j个时钟的延时,但这个=i正时埘一f1)cl_卜来说没何任何影响,㈤为Pc【设备阿先坚刘配霄空川进行配霄,然后/[订川能篮?托A/D采样,这段时问已人 华北工学院硕士学位论文大超过5.5个时钟。采样时钟由PCI时钟经2分频得到。“mGIl开Ⅵ!跚厂]r]广]广]广]广]广]广]D^T^OⅥPUT图3.12MAXl425时序啦』i亏足数据宽度的转换问题,因为MAXl425的数川输⋯宽度址10位,m㈨I总线的数据宽度为32f讧,2,JTf效利川PL'1带宽,必须何采样:{次阿。tj入I?1FOI¨0送。-次数j:l-:依次oj入数{:ll:奇仃;}:{的0-9、IU_19和2()一29fi:,“曲他.心乃‘每。AFP(;A·I,’丈J砚这jj逛:4{i}".:占简·-,』1.^川J个I埘仲:汁数器。“1¨。z址2,J0州,数捌’,i入0-9f口:“数值为l时,数捌1;入10】9何;叫数蛆为2时,数拼写入2()一29位,JHlff整个32位值’·j入rlFO,川叫汁数器‘战0:依次循Jj:{;。蛮.*__㈡一_一尜~㈡_ 华北工学院硕士学位论文第四章PCI交易时序及设计中的难点在FPGA或ASIC设计中,设计仿真是非常重要的一步,只有仿真正确,实际电路刊。有可能正确。仿真一般包括功能性仿真和时序仿真,功能性仿真是验证电路的功能是否正确,不包括延时信息,而时序仿真则包括布线后的器件模块和连线的延时信息,在最坏情况下对电路的行为作出更准确的评估。本章先列举了几种PCI交易仿真时序图,然后还讨论了设计中如何满足PCI的严格的定时要求。4.1PCI目标交易(TargetTransactions)1271129】【30目标交易包括访问配置空fNJ;}11访问DMA控制器或A/D转换的内部寄存器。¨标状态机需要支持卜.丽儿种交蜴类J弘:1.t、『L数州段I~7f}妒;2.猝发性内存读。t;3-l-断确认4配置窄叫读写5.【/0渎写当t发备获得总线所有权,并有效FRA,~IEn(n的含义表示此信号低电平有效,与PCI规范中的#含义相同)信号时,一个目标读或写交易丌始。目标设备必须在FRK~IEn有效的第一个时钟锁存地址和命令,然后目标设备丌始解码命令信息并决定是否有效DEVSEI.n柬声明交易。当有效DEVSELn后,目标设备确认所有的控制信号,并在读时提供数据及在目标写时接受数据。4.1.1配置空间读写交易图4l表示了PCI主设备访问目标设备的配置寄存器的时序图,FRL\tEn信号在第一个时钟有效,目标设备必须在此崩期锁存AD和CBE信号进行译码,同时IDSEL有效表示是配霄空唰交易。DEVSLEn在第四时钭,周期有效,通知主机本采集卡被选中。在第七时钟周期TRDYn有效,表}岿设备己在总线』:提供:卜设备所需要的数据,在此周jtjj]RDYn同盯何效,这样就成功传 华北]:学院硕士学位论文送了一个配置数据。第八时钟周期是交接周期,FRAMEn,IRDYn,TRDYnDEVSELn同时无效,整个数据操作完成。CLKFRAMEnADPARCBEJROYnTROYnSTOPnDEVSELnlDSEL乱恳。.悟L币L。虱中U卟可L讯-●●‘\_L..(五⋯··。。··g甄h1)·--_。●。{广_●●L—厂。●●-Xr●●●●—r—;图4.1配’臀空【-|】J读交易配筲空njJ写交易的时序图如4.2所示。甘标设备在第一个时钟锁存命令和地址信息并丌始译码,IDSEI。有效表示是配置空问交易。第四个时钟周j“]目标有效DEVSELn以声叫交易,随后在第血个时钟周期目标有效TRI)Yn,通知li设备它准备接收数据,并把数掘写入配置寄存器。第六时钟刷JlJ】是交接川则.FR灿IEn,[RI)Yn,TRDYn,DEVSELn同时无效,整个数据操作完成。CLKFRAMEnADPARCBERDYn陛I42配。岢宅川“;交劫⋯;ll罢 华jb工学院硕士学位论文4.1.2目标猝发性读写交易当睾设套需要读写髫标设备鞠大块数据对,一般采用葬发性传送方式,獐笈魏读交易兹露寄螽灏4。3绣示。在繁一个辩镑蠲襄,主设备鸯效FIL(、,IEn开始⋯次交易,所有目标设备锁存地址和命令信息并开始译码。秘标设备在时钟周期四有效DEVSELn表明本设备被选中。在第六个时钟周期目标设备有效TRDYn提供第一个数据段给主设备。在第七、八、九个时钟周期,嶷抓继续提供数据给丰设备,在第九个时钟周期,主设备无效FKAMEn声明最露瓣数据段。第十令时镑耀麓是交接臻藕,FRAMEn,IRDYn,TRDYn,DEVSELn黼时无效,整个数裕传输完成。j_\.mHW甲L吼n阿,百\一+\fI厂.}..-●●●__+·∈≥⋯。‘墨蔓蕊K蔓必砸篼Dd》@D⋯’’●●【。.还弓.+⋯镙避匦焚o匹o∈焚D.-一一t立致>一·。l广●_●●●●、/--●●●,●●●●●—’/-翻t。3强标葬袋渎交荔l碧1.1蹩强标莽发写交荔时_|孚鹜,在第~令时钟髑麓,事设冬有数RAMEn开始一次交易,所有目标设备龟导地址和命令信息并开始译码。蹬嚣重,l}:}棘棼发写交易㈧胁舳黼雠叭一一m‰,Tf咖Ⅲ卧蚴雩喜醮黼m阳¨cM争c让让。强噬篡曼~ 华sill学院硕士学位论,<标设备在第五个时钟周期肖散TRDYn,通知主设铸它准备接收第一个数据。在第屯、,≮和丸个踺锌弱期,IROYn囊TRDYn阉辩有效寒连续传送数攮。在第,℃个时钟嗣麓,主设镶无效FRAMEn声明鼓鬃赞数据段。筹丸个辩锋周期是交接周期,FRAMEn,IRDYn,TRDYn,DEVSELn同时无效,整个数据传输完成。4.2PCI主交易(MasterTransactions)㈣【29I【30|既}主交荔是据本1)c£浚备跫交易懿发动方,PCI圭交易透过D淞狻裁其宋黻动,当D凇控制器爱求进行数据读写时,PcI主状态机有效REQ#信号中}ljfPCI总线所有权,当检测到GNl、#有效时,就可以丌始一次PCI主交易。烹状态机支持以下四种交易类型:l。啦数掘段读2。j强数舞笈写3.内存猝发性读4.内存猝发性写单数扒段唤写只是猝发性读jj的一个特例,时序笑系相剥+比较简单。_卜嘶将着眼介;“内存猝技性溃写的时序图。《.2。l丰猝发毪读交易冈4.5表示PCI主猝发性读交易,DP.START表示主改备可以丌始数A嗣3{:饿CBEl3:0lrL丁L扎干L丐\J刚风淞m■叫种丽Lr--X.\Il厂卜-。:末鲻攀辫_。p+rfrll_,一E●‘~——、jJ}厂——,瀚4。S主猝发性读交易粥}晕输,{j蹬笛矗:第艺令时钢;凋潮蠢效FRAMI'Init:同时鹱动地盎瀚】念令总线。。删)YnA第卜{、it,K,I,Y}效表l哪f:}标没舔已,I!At)J3l:O:驱动有效数据, 华北=I=学院硕士学位论文第一个数据段交易完成。IRDYn和TRDYn在随后的三个时钟周期同时脊效进行猝发数据传输。在十三个时钟周期,主设备无效FRA~iEn声明最后的数据段。第卡霆个露耱蜀絮是交搂溺羯,FRAMEn,{R瓣n,TRDYn,DEVSELn同时无效,整个数据传输完成。4.2.1主骅发性写交易图4.6显示了主猝发性写交易的时序图,主设备在第七个时钟周期有效FRAMEn劳同时驱动地址蟊命令憨线。TRDYn在鍪一卜令时钟奏效表明嚣标设蚕罐备接收数据,第一个数攒段被写进蟊标设备。随后的交易过程闭烹弹发性读交易~样。下L钆了L7L哥-矿o■叫叫叫■叫虬卜/--、●、{{{厂l-f,∈Ⅸ銎k羹参一+’·匹夏_________——Z>G弓领·@蛩>厂\厂图4~主褡发性写交易4.3设计中的难点讨论[1l【19心J126】}3Cl本地总线规范规定了PCI兼容设备的电予的、时序和协议的要求。为了达到这些要求,需要深入了解PCI规范中的要求弓FPGA的结构。主娶豹难点避≯e!妻蹩范趣定了严穆熬时窿要求,本节稳讨论PeI设蚤熬定瓣爱求及在设计中如筒满足这些要求。4.3.1PCI定时要求㈣为了和PCI兼容,FPGA必须宠全符合PCI协议的定时要求。PCI规范亢许;℃f|52鍪氇竣丈33MHz(33MHz设冀)内豹饪惑联率:[馋。整{.7表磷了33MltzPet豹定时关系。PCI时钟定0到33MIlz范阐肉任意变动,因此最小茹黧蒜罴ll咿CO 华北]i学院硕士学位论文允许的时钟周期为30ns。在这30ns的时间内,规范允许lOns的波形传播时间,另外规范也允许有2ns的时钟扭曲。剩下的18ns分为时钟到输出和建立时间两部分。Tckq代表了1lns的时钟到输出时间,即有效的数据必须在时钟后1lns内出现在FPGA的输出口。Tst表示7ns的建立时问,有效信号必须在时钟边缘前7ns稳定。另外还有一些定时规定没有在蚓q.7中指出。例如,PCI规范鼗求敬备具有0nsl!!:!!=!I!竺::!=!I妻刮兰:::I图4.733M[IZPC【定时关系n01:!{{持时间,当信号三态时,设街必须在28ns内无效I/0缓冲,上冤范也烈定了I)cI没器的复位时问。下而讨论在设计中最列l!满足的建立l忖削、保持时|-ilJ}U时钟到输出时州。4.3.2建立时间(SetupTiming)【19i’cf的建立时间被限制在7ns以内。然而,对FPGA来}兑,输入时钟信号在到达触发器时有一定的延时(图4.8),这相当于增加了PCI建立时BtJ限制,侵触发器的建立时问要求更容易满足。从输入缓冲不经过任何组合逻辑到达触发器的路径最容易满足PCI的建立时间要求。j择的FPGA器件应在这些路径上的建立时问应比7ns小。最难满足建立时间要求的路径是这些需要通过额外的组合逻辑才能到达内部触发器的信号。考虑奇偶佼验电路的例子。功奇偶胶骀错误佶ljl,l训诒,PCIJ山k+阡o‘7m+屯图4.8建立定时在】,CI实现中,PCI叭议要求PCI设备驱i52笛舀:AD[31:0]和c/BF[3:0]信号有效后 华北工学院硕士学位论文两个时钟驱动PERR#信号、一个时钟后驱动PAR信号。AD[31:0]和C/t3E[3:0]若经过输入缓冲器后立即锁存,可以很容易满足建立时间要求。然而,在下一个时钟周期,PAR必须经过一些组合逻辑来确定是否有奇偶校验错误。所有这些必须在7ns内完成。xilinx的Floorplanning工具可以用来帮助满足建立时间要求。把组合逻辑靠近I/O可以缩小路由延时。组合逻辑块的延时不可避免,但设计者可通过Floorplanning工具减少连线的路由延时,满足建立时间要求。管脚锁定也能用来减少建立时间。把需要通过相同组合逻辑的管脚放在一起可以减少路由延时。4.3.2保持时间(HoldingTiming)【25】PCI规范要求0ns的保持时问,这1规定是棚剥。j二输/kH,Fi·|I来说的。因为I,c【时钟有一些延时,这个延时了增加满足0ns的保持时『I]J的难度。如图d.8保持时剐的限制,即最小的数据延时加上触发器保持时间必须犬于最大的时钟延时。由图4.7和图4.8可以看出PCI的建立时蒯和保持时间是一对矛盾的参数。为满足两者的要求,内在的时钟延时必须足够大以满足最慢的输入路径的建立时问要求,而必须足够小以满足最快的输入路径的保持要求。k一,--------------------k+F‰≥or“+L图4.8保持定时如在设计中的一些路径的路径不能满足PCI保持时l刨的要求,可以在这些路径的引入延时。最可能的情况是这些没经过组合逻辑而直接输入触发器的路径,这些路径可以通过把触发器远离输入缓器来引入一些延时,直至满足0DS的保持时间。4.3.2时钟到输出时间(Clock—to—OutTiming)116 华北工学院硕士学位论文PCI的时钟到输出时间限制在11rls以内。与建立和保持时间用最小的时钟延时相反,时钟到输出时间用最大的时钟延时。图4.9显示PCI时钟到输出时间的定时规定。此图表明不仅数据而且三态缓冲器的控制信号也要符合定时要求。定时规定是相对于时钟信号的,时钟到输出时间也要考虑时钟延时,因此,选择一种具有快速时钟网络的FPGA有助于满足这种定时要求。实际表明,在数据和控制路径中的延时主要是路由延时,把触发器放置在靠近输出缓冲器的地方可以大大缩小路由延¨寸。m“,70J十To=kmzr7√+1:Ⅲ2l-k111Ⅲ图4.9时钟到输出定时另外,采用流水线技术也可以帮助满足时钟到输出时削要求,但同时也要注意到,因为时钟网络经过更多的触发器,流水线能增加时钟延时。上面描述的方法能帮助满足PCI的苛刻的定时要求,实际电路是奇满足这些要求还必须经过严格的仿真才能确定。 华北1:学院硕士学位论文第五章系统驱动程序和应用程序的设计美国微软公司出品的windows操作系统与其友好的图形用户界面,深得困内国外用户的喜欢,但也引出了一些别的问题。32位的Windows95&98不再基于16位DOS,它们对系统底层硬件操作采取屏蔽的策略,所以对用户而言,系统变得安全,但对硬件丌发或系统软件丌发人员带来不小的困难,它需要编写专门的设备驱动程序,来管理硬件设备。本章主要提出PCI驱动程序的设计流程及其他相关的驱动程序设计。5.1系统PCI驱动程序(VxD)驱动程序(VxD)足指管理外IHi52备的一段代码,J11米扩展Windows操作系统的功能,1i篮用来解决rin93应Jll&[J卜尤法处删的’系列问题。驱动襁膊小会独立地f,在,而是仃舀jJ:操作系统的部分。通过设备驱动程序,多个进袱¨J以聊时使J玎这些资源,从rfIJ-J。以实现多进程j}行运行,用户程序可以很力‘便的实现必耍的操作作业。5.1.1驱动程序(VxD)的特点Windo',va的内核(kernel)主要有虚拟管理器(VMM)和VxD(、rirtua]devicech‘iVeF)组成。虚拟机管理器(VMM)就是执行应用程序的虚拟环境,每个虚拟机郇自。独立的地_j:空间、寄存器:状态、堆栈、应刷程序、系统服务剃膨、llI断犬:1犬态平¨执行优先权。操作系统包含4个权烈级别。在Window9x操作系统中,它只使用了处理器-1个特权级中的2个特权级:最l岛级(RingO)和最低级(1{in93)。趴ngO级的驱动程序直接和硬件资源打交ji,州捕获fT一级的中断和I/0操作,然后建立缓冲队列,再一一进行串{J:处理。为了使自己的应用程序也能直接处理硬P{。,就需要编写专门的改备驱动f‘明i,完成我们的fI务。WindowsOx只使』1J了历干I|】:r:作模式:保护模式和V86授式。保护模式使得应用giUi:-l<受内存的限制,CPU可达到仰的j』址池明。这种情况下驰动程序利川lf,I拆、端u和内存影射、H’indows 华北工学院硕士学位论文内kernel提供的900多个服务函数来管理、控制物理设备、处理中断、创建网络协议站、管理文件系统。更重要的是VxD在Windows?x下可以动态的装入和卸载而不需要重新启动计算机系统,这就大大提高系统的灵活性,同时也为即插即用(plugandplay)提高了可能【2】o5.1.2PCI驱动程序设计中的几个问题在设计系统驱动程序之前,首先明白所要驱动总线的类型(PCI),熟悉设备寄存器的工作特性。如何判断设备的错误信号,这些信号要通过设各驱动程序返回给用户:熟悉总线的结构、控制操作:了解数据的传输机制、设备内存的选择等方面的内容。下面列出了PCI驱动程序设计中的几个问题‘7118”I:1.征PCI总线初始化的过程中,利用硬件设备的设别号、厂商的设别号、检索号搜索硬件设备,通过调用PCIBIOS中断确认总线的存在,确定硬件没备的物理位置:总线号、器件号、功能号。2.驱动程序从配置空间获得其参数。包括所用的中断号、端13地址范幽、内存映射空间范围。这些参数都可以从配置寄存器的基址地址空删中获得。读写配置空间可以调用PCIBIOS中断IAH,也可以通过配置空间的地址寄存器(OCF8H)写入总线和设备号和寄存器号,再对配置空f1II』的数据寄存器(OCFCH)进行读写。当然在Windows9x操作系统中,我们对端口操作一般都是32位的,编写的PCi设备驱动程序工作在16位环境下,此时构造能够进行32位操作的输入/输出函数。3.驱动程序实现端口和内存映射。端口映射后,动态装载它的Windows应用程序就可以象访问其他硬件一样的来操作这些端口。当然还有一些其他的任务要这些端口来处理时,需要在驱动程序中单独的重载端口类,在浚类中可以对输/k/输出汜数,跟踪应用程序对端口的访问操作。5.2系统PCI设备驱动程序总体结构设计系统l’c1驱动程序的栏体结构框冈如劁j.1所示吼 华北I.学院硕七学位论文-一一一一一一一一~一一。⋯~一一~j事件类舌孥中断类23系统1,cl驰动程序的总统结构框图中儿大类的作川如卜:r川析炎。!当有硬件中断发生,中断函数首先保护好现场,读“中断源”寄仔器,判断中断原因,清除“清除中断”寄存器,同时针对不同的中断做山相应的处理。处理结束,调用全局事ft二类,向应用程序发嘶,消启。数据处理伍应用程序中完成。!“件类。征艘什中断处理中刁j能渊用同步服务.行|J!|』系统会因重入而直对溃。此叫在中断处理结束安排一个全局事件,当-l,断完成,启动全局事件向应刚程序发送相应的消息。系统框架类。框架类的作用是它封装了、xD控制消息的接受、分配和处理。同时提供了三大类:VDevice类、VVirtua]Machine类和VThreacl类。VDcvio类提供了众多的成员函数来处理从虚拟机或其他VxD发束的控制消息。在该类中,重载了动态装载和卸载、W32入口、设备初始化、设备退出函数,同时自己定义了一些感兴趣的函数,协调墼个马区动程序各方面的功能。VVirtualMachine类主要处理相关的虚拟机类消息。v1’hl’cad类卜婴处删线程类的消息。C㈩、¨dh.。{盯类。尤系统肼功时,遍历殴箭树,检洲馁什改笛t定位 华.IILJ::学院硕士学位论文硬件设备的位置。检测结束,利用设备接点,获得配置空间的信息,实现I/O口和内存空间的映射,这些功能都是有浚类来完成的。5.通信接口部分。通信接口部分主要完成以下几个功能:检测PCI设备;实现内存映射;解除内存映射;共享内存;解除共享内存;获得整个系统参数;传递应用程序的消息句柄;动态装载和卸载驱动程序通知。下面介绍系统驱动程序中几个重要部分的设计流程。5.3系统PCI配置空间程序设计‘2岬通垃涮J|={JI)ClBIOS中断¨].在j,Cl总线初始化的过程clt,确认总线的存在,确定设备的物耻位簧:总线号、器件号、功能号。J._fi=柯这些信息都包含m阿li殳箭提供的个配置通道和一块独立的,珂Il川I一,这块宅问足l’cI的配‘N地址,;--.'fit3。l,Cl迎过眦氍地址。跏lJ为软仆提供动J好i化过程t{t所嵩竖的哆数羊1嘲C’H。刈配。N。跏,JK作时,坚求改挤选择洋ffj5,Jf:通过【DSEI.rjl心彬儿、i0找剑l,cl殴箭。×t改箭flq配W.JAJLI:空问f内i实1弓IJIl,cIf门^d*:周j"J米完成,在设计一Itfj‘先悍征ID.";IEI.ni弓线lr确的接入系统,再次使门jffqI)C机是PC—AT兼容系统。这种糕};HIl:川J软t}:产生W【iW{tIpy.J,,4j¨J.也就是经常捉到fnPCIBIOS中断系!充乃+止私:f'lJ。7j二“C借1J,qj9J,fJl眄利·卅、l—Jl'I'J4儿m0。U|】口L‘封目l拍』i:和】配胥:机:1:j!=耻霄{1l;hI』L=利刖两个叔‘,I/ok11]ZJll:奇仃器。个叔字地址(CF8t1)址个二二葺1J也Jil:奇仃器,负贞确定读’-j的1)Cl配。岢。l川的J山JJh另一个蚁‘j‘:地jL==iL:’c¨).tl』J‘保仃’一;入特定配。自2审l‘IIJ的数据或从指j之雕冒空间中读H¨内效囊、通过眦‘削习划.PC】侨路刁i断的检测这两个寄存器,完成读配‘;乍{砷i啊森n:。九:配‘岢凯制2=,I,ClfI',JSd‘封空j‘IIj被映利剑1,C机的10空蚓C000I{、0一}、}1。随后就明像操作[/o空问⋯样的操作配筲空问。5.4系统端口和内存映射程序设计021110⋯1‘运行往标准模』℃winclow,qF的心川程序能够访问仟意的I/0审问,将n爵ljI-7()映划剖叭ndows内没仃被f止川的l八)’剐fIj.操作乐兰壳对设备的}o。j’乏鞠乃他f¨仃设的彩。wIHdowsJ衄川WJj二延”九线+陀。≯问,没爸}l 华北一J一学院硕士学位论文能识别物理地址,利用驱动程序将内存映射后,既有利于发备直接使用PC的内存空间,也有利于CPU直接完成该空间的读写。驱动程序完成设备的内存映射后,应用程序就可以像操纵自己的内存一样的使用该内存,而不必再次复制数据,可以节省驱动程序将数据从设备拷贝到用户缓冲区的开销,从内存中读写一批数据变的相当方便。在PCI配置空间的基地址寄存器有两个作用。一是存放存储空间或l一‘O空间的基地址,另一个是存放定义空间的长度(一个双字节为长度)。基地址寄存器根据写入寄存器的ra容判断数据的类型,如果写入数据的最高位bit3i=I,写入数据则是定义空间的长度,否则,写入数据是基地址。在PCI的所有基地址寄存器一f一,位0是只读的,用于区分改地J:I}=寄存器存放f门址行伸器的』i#地J;l|:还是I/0f内Jil.,t电tll:。为l表示I/0fFj41-|}$11:,为0表示存储器的琏地址。n:改汁删仆压缩lU路时,[/oil,tll川刈’简-’阢汁算机腑动历读取眨设§!问(偏移量为IOH)的双字寄存器,llJ可褂剑l映射历的[/otIBtt:。jf|_!i/0映射相比内存映射就复杂的多。程序曲‘先读墩配簧空间(偏移!I£为141t)n勺双字奇存器.获得所要I帙t,J内存的物耻地址,然后通过以下儿个函数LW37下)或阿接利fj】丽数MapPhysl’optr0(Windows98下)史现内存映剩。这几个函数的J}体作用为:·PageConunILl)}1、s()提交物列1地址空间到已定位.的线性空洲。·I)ageResel,、。()陔函数得到线。rLJ_ltkliI:范川,线性tit!Ill:71.'_"问未被定位至.年何物删。≯I'ilJ。·l。in11agel.ock0锁定L定位的线‘『I-tSJiI:,孙口,幅性选择令局蒯定时媛,a遐划线陆宅问[:jl_I-II!ilk。·】。inPageUnLock(),PageDecolil|nit()当物理地址1i需要映射到线胜空间时,解除锁定的线性空问,撇消提交的物理地址空问。此时必须注意在编写系统PCI驱动程序时,从设备1111§i1置空间获得设器需要的酣置空间大小,旨先要保留足够的线性空间:然后将其定位在孩物理地址。孙j¨::为防jh炙线一队宅问被转移到硬盘,最后还必颈:博该线!;:zI问锁定。“1心刷程序撤潲刈驰动程序的使川州,j£。舆将}夤线。陀空l==,錾锁”释放。 华北工学院硕士学位论义5.5系统中断服务程序设计‘21【2∞在Windows9x平台下,VPICD负责所有硬件中断的初始化工作。在缺省情况下,~'PICD调用虚拟机中的中断处理程序处理硬件中断。当然如有其它的VXD提供了中断处理程序,那么VPICD就会调用VXD提供的中断处理程鼍。当系统启动时,VPICD会区别允许的中断号和禁止的中断号。对于那些允许的中断号,VPICD会按全局处理,也就是说这些中断可以在所有的虚拟机中处理:对于那些初始化时禁止的中断则只能在随岳允许它们的虚拟机中处理.而并不是在所有的虚拟机中都可以处理的。因此,VIPCD在。}I断产生时需要决定应陔在哪个虚拟机中处耻,电就是观需要将硬件‘11断映射到哪个虚拟机中。V[PCD虚拟了物耻可编程mt断控制器的端El,从晰¨j以控制物弛#断控制器。r1VI}ICI)某些硬件叫J断f门缺省处删爿i能满足要求II、J,I口。以丌发VXI)虚拟蚀什设备使川的Il姻,钩拊{一惭处F峨蝣‘央现fl■j岳要的助能。通常VXI)(t!ti'2fl:'{J断,“:q-II}会收到以rjJ)1知情|j:t.硬件中断话弓v⋯cI)通知VXD艘件tjt断发,ii了。这足蚀什,I,l'Oi:;2生Hd\\D收到的第.个通Ⅻ信Ij,VXDnj以往咳f占l如‘』处理槲序r{]进行。火时处理:!虚拟一{,M竹jj这个似lj,jJ!l常娃在艘仆qJ断处』型程序处删中VXD请求VJ)j∞在虚拟机rh。。!k一个虚拟的巾断.然后当虚拟机中的中断处理程序行:音执行时,\P[CD发:I{陔信·j通IillW1)。.;.中断;^束f占号“jJ、箍拟目【发:HEOl命令口1,VI’]CDⅡⅡ女¨VXD4中断返回信号当中断处理程序返回VPICI)重新获得控制权时,VPICD‘曼出陔信号通知“D。j圳敝。发变信号、zn陪jEI:IL:发变j’⋯q的t}1[tO.『W.iiiU,'/:H—J,VI’¨1)发⋯I夤俄lj遵):Ij\X1)。、11外岐的z}·II【jji,Ic4』、i要求n:最少的时nlJ内进¨‘丈叫响』世,代。‘1¨』以7I:琥 华北I:学院硕士学位论文拟机该IRQ的VXD中只处理硬件中断信号,而安全地忽略VPICD提供的其它信号。当VPICD调用你的中断处理程序,在中断处毪程序中你可以实现你需要的功能,然后请求VPICD发出EOI命令。下面给出在VtoolS下虚拟IRQ的编程思路:苗。先从Vhardwareint类中派生出一个类.在派生类中定义构造函数,并且重载各个信号处理程序。Onhardwareim是必须进{?重载的,而其它的信号处理程序,如OnVirtualint(虚拟中断信号处理程序)、OnV]rtualEOI(中断结束信号处理程序),可根据你的需要进行重载。接着在VXD的初始化是,如在DEVICElNlT消息处理中使用操作字new动态创建一个派生类对象实例。、j你需坚指定特定的虚拟机处理陔虚拟的系统启动时禁tt:的【Rq上的中断,川以酬川ForceDehuItOwnel’函数指定虚拟机处理浚lI姻上的I_}l断,从效粜』二术训这与系统』矗动时就允FI:fFJIKq可以在所有的虚拟机巾处_}fI!中断址棚川的。还需注意的足,该函数f门iJllJ川必须代饲挂函数之前。最后州川钩挂}}j;|数钩挂处川!移i叭:,住成功钩挂Jtj,你lzj以删川physi㈨1Lnmnsk队证允汁处理t}I断。5.2系统应用程序的设计⋯j惜¨l数抛采集功能的顺利‘实现,依赖于应用程序2√驱动酗予之间lr确的握r、合理的州朋和川关}『【j息处理。九编制应jH杠!J芋过程中,驱动程序就是作为内核剥象设加载。加裁后我们得到了驰动罔芋句柄位,利用该句柄值驸使驱动程序完成设备的压缩仟务,咳句柄值住程序停1L工作时释放。应用程序通过驱动程序采集来的数据后,剥‘数据进行分沂和处理,这部分1i是本设计的内容,本次设计只在VisualC++下编制了一个简单的应用程序对j)CI数据采集卡和驱动程序进行测试。 华北上学院硕士学位论文第六章结束语基于PCI总线的数据处理、图像压缩、网络传输等系统己得到广泛的应用,随着可编程逻辑器件和SOC(SystemOilChit博技术的发展,用FPGA实现PCI总线会是经济、有效的解决方案。本文是在PCI规范的基础上,用FPGA实现了33MHz、32位的PCI系统,并设计了用FPGA控制高速A/D转换器,构成一个PCI数掘采集系统,并开发了系统的驱动程序。经过软件仿真和硬件实验,能够达到预定指标。但PCI总线的实现及驱动程序的丌发是一个复杂的过程,还存在一些问题需要进一步完落,主要有两个问题:1.猝发性数掘蹊写问题,仿真中我们发脱,实现猝发性数据传输时会出现数掘}持洪,!必须插入等f洲搠J,刈木数执,:采集卜米晓影响不火,但xt-j二带宽需求更高的应川米酏,必须刈FPGA内部数据通道进行进一步优化以J_)41决这个问题。2.驱动程序需进一步优化。本课题的驱动程序是基于Windows95&98、F台的,与WindowsNT&2000并不通用,最新的发展趋势是丌发基于WDM模型的驰动程序,根据WDM丌发的驱动在Windows平台下通用。 华北一学院硕十学位论文致谢在本论文完成之际,向我的导师任作新教授表示深深的致意!本文的全部工作都是在任教授的悉心指导下完成的。他精深的学术造诣、严谨的治学态度和忘我的工作作风,令人难以忘怀。平时对我严格要求和细心辅导,使我受益匪浅。没有任老师的帮助和指导,我不可能顺利完成这篇论文.再次向任教授致以衷心的感谢!感谢99研张秀燕、李杰、吴吴、刘俊成、张志刚对我生活和学习上的帮助和支持,还要感谢在本文研究期问tt,曾经给予我帮助和鼓励的老师和同学们:蛙再要特"}J感谢父母及家人一“以术对我学jlkfP,j支持! 华北工学院硕士学位论文参考文献1.PCILocalBusSpecification,Revision2.2,19982.岳海霞,图像压缩系统的开发与研究,华北工学院硕士论文,20003.岳海霞、韩焱、庞彦伟,MPEG__2视频编码器的硬件实现方法,华北工学院测试技术学报,VOL.15,20014戴梅萼、史嘉权,卫星计算机技术及应用,清华大学出版社,19955.需宪元,可编程ASIC集成数字系统,电子工业出版社,1998:1.26路而红,电子设汁自动化应用技术,北京希望电子出版社,2000.17李海,PCI设备Windows通用驱动程序设计,计算机应用.2000.1:19.228.沈兰荪、陈彬,视频采集一g-Windows95驱动程序的设计,国外电子技术,1999.49.⋯忠刚、陈杜林,虚拟设街驱动袱序及其在视频采集卜巾的应川,光。学枯密_l:程,199910.彭礼孝,虚拟设备驱动程序丌发起步与进阶,人{『-J邮I【l出版社,20001l李博,Windows98下硬件驱动程序的丌发,测控技术,2000:38.4012.祝东文、吴东,一利,基于FPGA的卒l|1经网络的实现,无线电工程师,VOL30200013姚松、杨兆选,数据采集卡的研制和应用,自动化仪表,第16期.200114郭诞料、州城康,高速数据采集卜及其接㈠电路没汁,r乜_J,技术应用.第191tO】.19991j李本亮,Windows95下高速数据采集系统的设汁,fn予技术,第11{弱,199816.韩学超,采用DMA技术实现的高速数据采集系统,电子技术,第9;驹,200017.李玉山、陈颖琪,图象数据采集系统及其ASIC设计,电子测量与仪器学报,第9卷,199518蒋蜀革、王宇、李洪弟、王砚方,高速视频采集卡的研制,数据采集1j处理,VOL11,199719乃+橄、j}【I:斌、黄兜勋,PCI总线卡i殳计与实现f/,JJL个关键问题,汁弹"ll“1j科‘’芦,第23卷筇:!tOJ,2001年 华北工字院硕士学位论文20.金永贤,新型高速数据采集方法研究,华东交通大学学报,VOL.12,200221.李衍忠、向敬成,双路100MHz高速数据采集系统的设计与实现,系统工程与电子技术,VOL.22200022王江,基于PCI总线的网卡的硬件设计,电声技术,第10期,200023.唐越平、吴艳梅,一种基于FIFO芯片PCI总线插卡的设计方法,计算机自动测量与控制,第8期,200024.李桦,基于PCI总线的实时图像传输,《红外》月刊,第10期,200025.E,FinkelsteinandS.Weiss,ImplementationofPCI—Basedsj’stemsusingpmgrammablelogic,lEEProc.CircuitsDevicesSyst,Vol,147,N03,June,200026.RhadFinkelsteinandShlomoWesis,PCIinterfaceImplementationUsingCPLDandFPGADevices,ElvtricalEngineering,200027.IVtAXlM,MAX1425DataBook,200028.XILINX,TheReal-PCIDesignGuideV30,199929.XILlNX.TheProgrammableLogicDataBook.200030AlteraCorporati011,DataBook.200031.CPRESSSemiCorp.PCITargetDesignUsingUltra3000CPLDs.200032LatticeSemiconductorCorp.LatticeSemiconductorDataBook.199633.VictmPNelson.DigitalLogicCircuitAnalysis&Design,199734KexinSkahill.VHDLTechniques,ExperimentsandCa、一eats,199635AndrewRushton,VHDLforlogicSynthesis,199836Acte[,Actel’sFamilyFieldProgramlnableLogicDataBook、199637JeanP.Mermet,VHDLforSimulation.SynthesisandFomaaProofsofHarware,199238.JanVanhoof,High—levelynthesisOFeal—timeDigitalSignalProcessing,199339DouglasL.Perry,VHDL,清华大学出版社,199740.王小军,VHDL简明教程,清华大学出版社.19974l畅螺,人舰馍可编程集成逻辑器fJ}=与数字系统发汁,北京;lt空航天出版÷t-,1998.42.候们‘:r,VHDL艘仆描述晰.、iIj数j。:系统发汁,旧安l乜Ji科技大学UI5U 华北:L学院硕士学位论文版社,199943.杨之廉,超大规模集成电路设计方法学导论,清华大学出版社,199944.杜江洪、徐重阳,基于PCI总线数据分路/发送机制及实现,华中理工大学学报,200045.白JxL山、潘长勇,可编程器件在虚拟示波器中的应用,内蒙古大学学报(自然科学版),200146.侯孝民、王元钦、李刚、欧宏武,一种高速数据采集系统的设计,数据采集与处理,200147韩学超,DMA技术实现的高速数据采集系统,电子技术,第9期,200048毕有}¨J、杨铁梅,线阵CCD高速数据采集与处理系统,太原重型机械学院学报,200049.郫t:{J]华、李华旺,一种并行存储系统的FPGA实脱,lU于技术应用,第9j9|,200050麻红梅.--种基于PCI总线的实时、高述数掘通m系统,现代lcl予技术,第12.}{jj,200l5I.赵少眠黄瑞光,j毒于PCI总线的小波视频压缩#的改计与实现.计算材1]:程与J世J1j,200152张义和,ProtelSchematic98电脑辅助电路发计教程,}宁岛出版社,199953.1k义硐i,ProtelPCB98电脑辅助电路设计教程,菏岛出版社,199954.rj明建等,数据采集与处理技术,西安交通大学Uj版社.1998,55姚磊等,CPLD在超高速数据采集系统中的应用.电子技术应用,P58~59,No.10,199856.郑蕾,电子设计自动化(EDA)与现场可编程门g扔;O(FPGA),电子技术应用,P5—6,No.10,199757.高密度可编程逻辑器件开发指南,西安电子科技大学EDA实验室,】99958.刘{_2:f:等,在系统可编程技术及其器件服理与应用.西安电子科技大学}J:版社,199959潘松,CPLD/FPGA在电子设汁Irln,JJ照用前景,lU了技术应用.P6~8,N07,I999 』一五戮繁蜷《盛bH隧蕊 ∑l二颦蹙娑a/《N巫薹 【__i聱一u乱n匝耋..,l9:—]厂一翮渊嗍ii}j288㈣8’拉}il;1燃l斟;}i}躺熊i撩瀚粼鞴必i≮t{t’{{{错};嚣{;{i{甜{瞒耘{{{;’it≈≈;;;{;_{{{_“ 基于FPGA实现的PCI数据采集卡的研究作者:赵敏学位授予单位:华北工学院相似文献(10条)1.学位论文张强高速(200MSPS-300MSPS)数据采集卡的研究2008现代工业生产和科学研究对数据采集的要求日益提高,在雷达、声纳、软件无线电和瞬态信号测量等一些高速、高精度的测量中,需要进行高速数据采集。高速数据采集对信号完整性、噪声干扰、高速布线及数据处理和高速实时存储要求极高,而其应用环境又往往非常复杂,所以在目前的实际应用中,很难实现一种既能进行长时间高速数据采集、又能进行大容量存储的数据采集系统。在此背景下,本文提出了一种高速数据采集及存储的解决方案,具体研究内容如下:1.系统研究了高速AD采集电路的工作机理,对模拟输入电路、模数转换电路和数字输出电路进行硬件设计,并通过电路搭建组成高速AD采集电路;研究了高速电路中产生干扰的因素,并通过使用去耦电容、匹配电阻等器件提高了数据采集系统的抗干扰性能。最终使数据采集系统的采样速率达到210MSPS,有效位达到8.3b。2.通过对传统数据存储方式的研究,提出采用高速FPGA加嵌入式微处理器作为中央处理器来进行高速数据传输和磁盘阵列数据存储的方案。利用FPGA完成对数据的读取、分发和存储,并利用嵌入式微处理器控制数据传输的启动和停止,可以有效提高数据采集系统的存储性能,使数据采集系统的平均存储速率提高到200MB/s以上。3.通过分析印制电路板产生噪声的原因,对电源层进行内电层分割设计和对模拟和数字地线进行单点磁珠连接设计,抑制了不同电源之间产生的电磁干扰和模拟地与数字地之间产生的串扰,提高了印制电路板的抗干扰性能。通过构建传输线串扰模型,研究了传输线串扰产生的根本原因,提出了增大传输线间距的解决方案,并通过软件仿真验证了方案的可行性。4.通过对硬盘存储方式的研究,设计了顺序记录式文件系统,为每64字节的数据分配独立的地址和索引块,保证了数据存储的准确性,提高了数据调用的速度。2.学位论文宋鸿斋基于虚拟仪器的变频器测试系统的研究2008鉴于传统的变频器测试存在的问题,本文设计了一个基于虚拟仪器的变频器测试系统。该系统设计包括外围硬件电路设计和软件设计两大部分,这两部分通过数据采集卡PCI-1751联系成一个整体,完成测试功能。本文首先介绍了传统变频器测试存在的问题和虚拟仪器发展的现状,而后详细阐述了数据采集模块电路的功能和设计,对需要的电压、电流参量进行检测,然后对得到的检测信号进行滤波,最后进行A/D转换得到检测信号的数字值。此外该模块还包括对电机转速的检测,采样光电测速法,并通过单片机计算出转速值。最后得到的数据都通过数据采集卡上传到计算机。外围电路还包括保护性能测试的D/A转换电路。对外围电路的正确控制是其正常工作的必要条件,文章介绍了数据采集卡PCI-1751的特点和其驱动软件,详细论述了使用其驱动软件编写相应的驱动程序对外围电路进行控制。计算机软件的设计是虚拟仪器设计中的重要内容,也是其核心功能所在。文章逐个分析了各参量在计算机中的计算方法,讨论并确定了采样频率。对数据进行快速傅立叶变换得到个谐波分量的幅值也是软件要完成的一个重要功能,文章介绍了谐波计算理论和实现的方法。最后文章介绍了程序的总体结构,然后重点介绍了变频器基本性能检测和保护性能检测两部分程序的实现。3.会议论文李芳.叶敦范基于CPLD高速数据采集卡的电路设计2004本文介绍了采用CPLD和AD9240芯片进行高速数据采集卡的电路设计.该电路通过PC104的ISA接口来实现指令、数据的传输;通过CPLD(ComplexProgrammableLogicDevice)用来实现可编程采样时钟和可编程的采样长度,以及A/D转换电路的可编程启动方式.4.学位论文陈滢动载滑动轴承油膜分布及压力同步采集研究2006本文查阅了大量参考文献,在前人工作的基础上对滑动轴承实验台进行改型设计,采用高速CCD、数据采集卡、集电环等硬件实现了动载滑动轴承油膜压力和油膜分布图像的同步采集。对滑动轴承中油膜压力变化和空穴迁移图像进行实时实验研究,并与计算结果相对照。论文不仅对实验台机械部分的改进设计做了详细的阐述,同时还对压力采集部分的电路设计、数据采集系统以及采集数据的软件编程进行了介绍。利用直接模拟滑动轴承工况的改型设计的实验台,进行了不同混合载荷、不同工况的动载滑动轴承油膜分布与油膜压力同步采集实时实验研究,获得了大量可靠的实验数据和图片。利用同步采集的图像和数据,对轴颈旋转一周动载滑动轴承内的瞬态油膜分布和油膜压力一一对应进行了分析,对工作中的动载滑动轴承的性能做了进一步的研究。得出有益的结果,这是前所未有的。本文不仅对不同工况下动载轴承油膜分布和油膜压力进行瞬态的、实时的分析研究,还调试了现有的理论计算程序,计算了对应工况轴颈旋转一周期内油膜压力。利用理论计算压力值和编制的matlab编程,绘出理论计算的油膜压力和瞬态油膜分布图,使实验结果和理论结果能相互比较。通过分析,得出了一系列有意义的结论。通过对实验结果的分析,证明实验台的改进设计是合理的,数据采集的电路设计是实用的,采集数据程序方便直观,硬件环境和软件编程方便可靠。所以获得的实验图像和数据是真实的,结论是有益的。5.学位论文张利川基于PCI总线的数据采集卡的实现2008数据采集系统是信号与信息处理系统中的重要组成部分。因此有必要对其中的数据采集系统进行研究。本论文在研究数据采集卡的各个模块的工作原理的基础上,提出了由高速高精度A/D转换芯片、高性能FPGA、PCI总线接口、组成的高速数据采集系统设计方案及实现方法。其中FPGA作为本系统的控制核心和传输桥梁,发挥了极其重要的作用。通过FPGA不仅完成了系统中全部数字电路部分的设计,并且使系统具有了较高的可适应性、可扩展性和可调试性。在时序数字逻辑设计上,充分利用FPGA中丰富的时序资源,如锁相环PLL、触发器,缓冲器FIFO、计数器等,能够方便的完成对系统输入输出时钟的精确控制以及根据系统需要对各处时序延时进行修正。在存储器设计上,采用FPGA片内存储器。可根据系统需要随时进行设置,并且能够方便的完成数据格式的合并、拆分以及数据传输率的调整。在传输接口设计上,采用PCI总线接口的数据传输模式。通过FPGA中的宏功能模块和IP资源实现了接口的逻辑控制。文中针对FPGA中各功能模块的逻辑设计进行了详细分析,并对每个模块都给出了精确的仿真结果。同时,文中还介绍了系统的硬件电路设计、PCI接口设计、PC端控制软件设计并且也对系统的仿真结果给出了分析及讨论。在系统工作过程控制上,并通过PCI接口实现了PC和FPGA之间的交互,从而能够方便的在PC机上完成对系统工作过程的控制和工作模式的选择。本文使用DriverWorks开发了Windows操作系统下的设备驱动程序。6.学位论文张修斌基于VB的自动配料监测系统2009自动配料监测系统是一种在线检测动态计量监测系统,在饲料加工、建材、食品、化工、冶金、矿山、电力等行业中得到广泛应用。研究开发自动配料监测系统,对于改善劳动条件、提高产品质量和生产效率、完善现代企业管理具有十分重要的现实意义。论文首先对自动配料监测系统的应用背景、发展趋势进行了综述,以配料生产工艺为研究对象,深入分析了数据采集卡、计时计数卡的结构与控制原理,并对自动配料监测系统的功能需求进行了分析,在此基础上设计了一个自动配料监测系统的总体结构和硬件、软件实现方案,确定了硬件组成结构及各部分功能模块的电路设计,较详细地画出了监测系统软件流程图。硬件部分的设计包括:工控机配置、数据采集卡选型、计时计数卡选型、电源模块选型及自检、报警电路设计、I/O接口电路设计、信号处理接口电路设计等。软件设计包括:编程语言和数据库方案确定、数据采集模块程序设计、数据处理模块程序设计、报警功能模块程序设计、数据库操作模块程序设计、报表打印程序设计以及用户操作界面设计等。监测系统实现了对自动配料系统的12路输入信号、12路输出信号和1路马达转速信号的精确实时监测。监测系统同时对自动配料系统中机器工作时的温度和振动情况各进行4路实时监测,并以曲线图形式实时显示出来。监测软件用VB6.0开发,采用模块化设计。监测结果保存在Access数据库中,可以 对所有测试记录进行查询、历史回放、生成报表、打印等操作。硬件、软件测试结果表明,系统运行稳定可靠、实时精度高。7.学位论文叶松高压静电场中小鼠生物量实时数据采集卡的研制2004生物医学信号检测是对生物体中包括生命现象、状态、性质、变量和成分等信息的信号进行检测和量化的技术.对于生物信号的采集,传统的方法直接显示到一些专用的仪器上,数据只能进行一些固定的分析.对于操作人员数据是不可见的,所以要进一步分析很困难.该课题采用计算机中的ISA总线接口把传感器的数据采集到计算机中进行显示、分析.该课题分为三个部分:传感器部分、数据采集卡、计算机中的应用软件.该篇论文主要完成数据采集卡及其应用软件的设计.数据采集卡的核心部件采用可编程器件来实现,可编程器件是近年来迅速发展起来的一种元件,其集成度越来越高,而且由于电路可以集成到一块芯片内,电路工作更加稳定,运行速度更快.数据采集卡实现对数据的采集,并且根据需要在数据采集卡内完成了FIR低通滤波器,对输入数据进行滤波.采用硬件电路设计滤波器,解决了传统模拟滤波器设计繁琐,调试困难,受外界环境影响大等一系列困难,并且可以在同一块芯片内出设计不同的滤波器,这是模拟滤波器所不能实现的.数据采集卡对两种信号进行采集,分别是体温信号和心率信号.通过显示程序,可以在微机显示器实时显示小鼠的体温及心率波形图.根据实验需要,还可以对采集数据进行存储,以备日后分析.8.期刊论文王鲜芳.杜志勇.WangXian-fang.DUZhi-yong高速高精度数据采集卡的设计-微电子学与计算机2005,22(7)文章设计了一种采用PCI主控模式(Master)进行高速数据传输的12位分辨率,最高采样率105MSps、256K卡上缓存的PC机用数据采集卡.该采集卡信噪比可达60dB以上(含谐波),卡到计算机主存平均传输速度达到40Mbyte/s.该卡是将高速电路设计和大规模集成电路设计技术有机结合的一种新型产品.9.学位论文吴娜DSP数据采集系统的USB接口技术研究2002随着科技现代化的发展,传统的基于ISA、PCI接口的数据采集卡在使用中表现出许多弊端,针对这种现象,结合新兴技术,该文提出了一种基于USB(UniversalSerialBus通用串行总线)接口的DSP(Digitalsignalprocessing数字信号处理器)数据采集卡的实现方案,具有灵活、配置简便、易于更新等特点.该论文首先介绍USB的体系结构和特点,包括总线特征、协议定义、传输方式和电源管理等等.接下来针对该文提出的USB、DSP数据采集系统详细介绍了USB设备的硬件和软件开发的技术细节,包括电路设计、固件编程以及在Windows98下USB内核驱动程序开发的一般方法,对与DSP相关部分只作简单介绍.论文对广大的USB设备开发人员和技术人员具备较高的参考价值,可以帮助他们尽快掌握USB设备的特点,以及硬件电路设计和软件编程中的注意事项.10.学位论文李万军基于气动检测技术机械加工精度统计分析系统的研究2007在机械加工过程中造成加工误差的原因相当多,不可能对各个原因进行单因素分析,对单个工件的检验也不能反映整个加工过程中加工误差的性质和变化规律,并且单一工件的误差也不能代表整批工件的误差大小.要全面的反映加工过程中质量问题,必须采用统计分析法.统计分析方法就是在生产现场内以一批工件的检测结果为基础,运用数理分析的方法去处理这些结果,从中提炼其中的规律,用以找出产生误差的原因和解决问题.本文主要内容是利用气动量仪对工件进行测量,通过数据采集卡采集数据,利用VC++汇编语言编写应用程序实现数据的统计分析.本系统设计主要分三部分内容:系统电路设计,数据采集编程和数据处理编程.系统电路有气动量仪,传感器,数据采集卡和计算机组成.数据采集部分利用PCI-1710数据采集卡,以VC++为工作平台,编写采集程序,实现数据采集功能.数据处理是本文的主要工作,通过软件实现数据库操作,用统计分析的方法对数据进行处理,使之能够实现点图和分布图和正态分布图的波形显示,并对工件尺寸进行设定,通过图形查看是否存在不合格品,通过绘制图形来分析机械加工过程中存在的加工误差.本文链接:http://d.g.wanfangdata.com.cn/Thesis_W010213.aspx下载时间:2010年5月28日

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭