基于pci总线的ccd图像采集卡的研制

基于pci总线的ccd图像采集卡的研制

ID:33982631

大小:2.85 MB

页数:44页

时间:2019-03-03

上传者:U-10915
基于pci总线的ccd图像采集卡的研制_第1页
基于pci总线的ccd图像采集卡的研制_第2页
基于pci总线的ccd图像采集卡的研制_第3页
基于pci总线的ccd图像采集卡的研制_第4页
基于pci总线的ccd图像采集卡的研制_第5页
资源描述:

《基于pci总线的ccd图像采集卡的研制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

够比以往的CCD更加接近自然的颜色,特别是青绿色和红色系的颜色表现力都得到大幅度提升。Sony公司把四色滤光CCD和全新处理器相接合,使色彩还原的准确度提高一倍,得到的颜色特性非常接近人眼,特别是对青绿色和红色系的颜色表现力大大提高,虽然增加了运算量,但是电能消耗量却可减低30%。除此之外,还有一些诸如微透镜技术、HADCCD技术、VPmixCCD(垂直混合CCD)技术、空间偏执技术、电子快门技术、清晰扫描技术、电子色温校正等新技术的接连出现与应用,都加速了CCD图像传感器技术的更新换代。1.2课题研究的目的和意义当今社会是信息的社会,信息的获取日益重要。而人类获取的总信息量的80%以上,是通过视觉器官得到的。图像信息不仅在人类信息中占有很大比例,而且因它形象直观的特点而一直是人们所乐于接受的一种信息形式。特别是现代计算机技术的迅速发展,为图像的采集处理技术提供了极为有利的条件。一个图像采集处理系统从原理上分主要由三部分组成:图像的获取、图像的处理和分析、输出或显示。它综合了电视技术和计算机技术,集图像的采集、存贮、分析与处理等诸多功能于一身,广泛应用于诸多领域:生物医学领域B超、CT、X光、ECT、内窥镜、病理分析、医学影像、血管造影等;保安监控领域的电子警察、图像自动跟踪、安全监控等;工业检测领域的材料图像分析、锅炉火焰监测、颗粒分析、流水线产品外观检测、焊缝检测等;文化体育领域的保龄球道计分、电脑人像打印、骨龄检测、运动人体动作分析等;交通管理领域的汽车车牌识别、高速公路收费、违章闯红灯检测、交通管制系统等;军事、公安领域的各种运动物体的自动制导、运动物体的经纬度测量、指纹识别、痕迹辨认、夜间侦察等;金融票证领域的印章支票真伪判别、票证处理、柜员机自动检测、金库监控、运钞车现场自动检测与传输等;军事和航空航天领域的运动目标制导、运动物体经纬度测量和痕迹辨认等这些工作中都需要图像测量系统。其中图像采集卡是整个系统不可缺少的硬件基础,因此,研究图像采集有着重大的工程意义。1.3图像采集的研究现状及发展趋势计算机科学的高速发展,为人们利用现代数字信号处理技术高速、大量地处理信息提供了有效手段。在总线结构中,ISA总线已经退出历史舞台,ISA槽已经不再作为计算机主板的标准配置,并且ISA总线的带宽也不能满足高速数据采集系统的要求。而PCI总线是一种即插即用的总线标准,支持全面的自动配置,最大允许64位并行数据传送,采用地址/数据总线复用方式,最高总线时钟可达66MHz,支持多总线结构和线性突发传输,最高峰值传输速度可达528MB/S,它是目前各种总线标准中定义最完善、性能价格比最高的一种总线标准。目前,大多数采集卡都采用了视频局部总线,可以将图像数据直接采入内存,采集卡原则上可不再需要专门的帧存储体。随着CPU的性能不断提高,CPU直接在内存中对图像作处理,充分发挥J『微机本身越来越高的2 性能潜力。基于PCI总线的采集卡己开始占主导地位,也是采集乍近年来的重大技术进步。目前,采集卡的内部结构,根据图像采集处理是否分离、数据处理的实现方法,大体上分为三种形式:(1)模拟输入专用图像采集系统:这类系统将采集卡放置在与摄像头相连的计算机中,采集卡的作用是对摄像头采集到的模拟视频信号进行A/D转换,并且通过计算机总线接口传入计算机内存,用软件实现对数字化图像的处理分析。面阵CCD摄像机大多配有这种类型的数据采集卡,如北京嘉恒中自公司的OK系列PCI图像采集卡。(2)模拟输入采集处理一体化系统:这类采集处理系统仍然采用模拟视频输入,而它的特点是视频信号的采集、量化集成到一块板卡上,结构一般为输入输出接口、A/D转换数字化单元、高速缓冲区、FPGA或DSP构成的MPU处理单元,这种结构设计大大减轻了计算机的处理负荷,不过增加了电路设计实现的难度。闻亭公司的WT-6201PA以TI公司的TMS320C6201为主处理器,辅以2万门的FPGA预处理单元,通过CPLD实现接口之间胶合逻辑,可以满足通用视频信号采集的要求。(3)数字输入、采集处理分离图像采集系统:这类处理系统的前端是数字输出的CCD摄像机,输出的数字化图像信号直接输入采集卡,采集卡一般采用内嵌DSP模块的大容量FPGA用作处理单元,实现海量数字信号的实时处理。这种采集处理结构图像信号传输距离长、受外部干扰小,FPGA的在线可编程性可以实现处理算法的柔性选择,是大数据量、实时信号处理系统的理想选择。Tsunami采集处理卡就是基于FPGA技术的PC工业高端图像处理解决方案,AlteraStratix系列FPGA使得该板卡能够达到最优的性价比。板上有超过160000LUTs和200个DSP模块在以66/132MHz的速率工作,I/O速度可以达到3GB/s,FPGA内部总线之间的传输速度可达到2GB/s,板卡的Cameralink接口可以连接各种线扫描CCD扫描摄像机,方便的进行数据传输和同步控制。近几年来,随着以多媒体技术为代表的信息产业的快速发展,人们对视频信息的需求愈来愈强烈,图像采集与分析显得越来越重要。依托计算机技术、通信技术、网络技术以及数字信号处理技术的快速发展,图像采集系统得到了很大发展,图像采集卡呈现出五大发展趋势:(1)集成图像处理开发软件,使得系统集成商更加容易将图像采集卡根据实际运用开发相应软件。如著名的加拿大图像处理公司Matrox公司开始用一半的开发资源去做软件了。·(2)随着硬件的发展,图像卡越来越趋于高性能、低价位。如Foreseesight致力于工业、医学图像的应用,提供高速、高清晰的图像捕捉卡。(3)与网络结合,实现远程图像采集。LabView,PXI/CompactPCI用于图像测量、境的图像捕捉。3如NationalInstruments在开发其软件识别的同时,逐渐把目光转向基于网络环 (4)采用嵌入式的图像捕捉设备,将视频采集系统的所有功能都集成在一个小小的电子设备上,不需要辅助设备与PC机,携带方便,使用简单。(5)由于有各种特殊的需求和环境,在很多情况下,开发人员更愿意抛弃专业图像卡厂商的产品,开发专属的图像设备。1.4本文的研究工作课题要求研制一款支持数字相机视频信号的图像采集卡,采集卡完成对相机视频信号的采集,将图像信号经PCI总线传至PC机内存并显示。基于此本课题的研究工作主要包括以下几个部分:(1)PCI总线技术,基于PCI总线的接口技术。(2)基于CameraLink协议的相机接口电路研制,高速率数据缓存设计。(3)基于PCI9054总线接口芯片的图像采集卡硬件设计及PCB设计。(4)基于FPGA技术的逻辑控制器的设计。(5)设备驱动程序设计。4 第二章PCI总线技术2.1概述计算机总线是计算机各部件之间进行信息传输的公共通道。其发展大致经历了以下几个阶段:ISA总线(IndustrialStandardArchitecture,工业标准结构总线);MCA(标准MicroChannel.Architecture;.微通道结构),它是一个经过很好定义的32位总线标准;EISA总线(ExtendedIndustrialStandardArchitecture,扩展的工业标准结构总线);随着计算机技术的不断发展,微型计算机的体系结构发生了很大变化,要求有高速的总线来传输数据,从而出现了多总线结构。在多总线结构中,局部总线(LocalBus)的发展最令人瞩目‘。PCI(PeripheralComponentInterconnect)总线即外围部件互连总线,是由Intel公司1991年首先提出的,并联合世界上多家公司成立了一个叫PCISIG(PCISpecialInterestGroup)来完善、推广和强化PCI标准。PCI总线是一种高性能的局部总线,与CPU时钟频率无关,它能支持多个外设,尤其适用于各类高速外设。PCI局部总线是具有地址数据多路复用的高性能32位或64位的同步总线,在33MHz总线时钟下,最大数据传输率为132MB/s或264MB/s。PCI总线是微型机上的处理器/存储器与外围控制部件、外围附加卡之间的互连结构,它规定了互连结构的协议、电气、机械以及配置空间规范。其典型的系统结构如图2.1所示。从图中可以看出,微处理器、高速缓存(Cache)、系统内存(DRAM)通过PCI桥连接到PCI总线上,该桥提供了一个低延迟的访问通路,使微处理器能够访问通过它映射到存储器或I/O空间的PCI设备;也提供了使PCI主设备访问系统内存的高速通路;PCI桥还具有数据缓存功能,使CPU可以与PCI总线上的设备并行工作。扩展总线桥的设置是为了能在PCI总线上接出一条标准i/o扩展总线,如ISA、EISA或MCA总线,从而可继续使用现有的I/0设备。5 图21PCI结构框图2PcI总线的特点PCI是先进的高性能局部总线,可同时支持多组外围设备。PCI总线小受制于处理器,为中央处理器及高速外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量。其优化的设计可充分利用今日最先进的微处理器及个人电脑科技。它可确保电脑部件、附件仁及系统之间的运作可靠。PCI总线有如下显著的特点:(1)线性突发传输PCI能支持一种称为线性突发的数据传输模式,可确保总线不断满载数据。外围设备一般会由内存某个地址顺序接受数据,这种线性或顺序的寻址方式,意味着可以由某一地址起读写大量数据,然后每次只需将地址自动加l,便可接受数据流内下‘个字节的数据。线性突发传输能更有效的利用总线的带宽去传送数据,以减少无谓的地址操作。(2)良好的兼容性PCI总线可以与ISA、EISA、VL—BUS总线兼窖。这使得在这些系统上的扩展卡也可以在PCI系统卜丁作,这种兼容能力,可以保障用户的投资.让用户既能继续沿用以前的附加卡,又提供额外的插槽,便于用户选用新的外围设备。且PCI总线不受处理器的限制,它与Intel公到的各种处理器完全藏容。({)预留了发展空闻PCI总线在开发时预留了充足的发展空间,例如,它支持64位地hi:/数据多路复片j。PCI的64位延伸设m可将系统的数据传输速率提高到264MB/s。PC]还提供r 自动配置功能,从而保证厂用户在安装外围卡时,不需要手工调整跨接线。(4)极小的存_收延误支持PCI的设备,存取延误极小,能够大幅度减少外围设备取得总线控制权所需的时间。例如,连接局域网的以太网控制器,其缓冲区随时需要从网络接受大型文档,由于要等待使用总线的批准,从而使以太网界面卡往往无法及时在缓冲区溢出之前迅速将数据送给中央处理器,网卡被迫将文件内容存在额外的内存区。对于PCI兼容的外围设备,由于它能提供更快速的存取,因此网卡可及时将数据传至中央处理器,减少所需的额外内存,从而降低附加卡的整体成本。(5)采用总线主控和同步操作PCI的总线主控和同步操作有利于PCI性能的改善。总线主控是大多数总线都具有的功能,目的是让任何一个具有处理能力的外围设备暂时接管总线,以加速执行高吞吐量,高优先级的任务。PCI独特的同步操作功能可保证微处理器与这些总线主控同时操作,不必等待后者的完成。(6)不受处理器限制PCI独立于处理器结构,形成一种独特的中间缓冲器设计方式,将中央处理器子系统与外围设备分开。一般地说,在中央处理器总线上增加更多的设备或部件,只会降低性能和可靠程度。而有了缓冲器的设计方式,用户可随意增加外围设备,以扩展电脑系统而不必担心在不同时钟频率下会导致性能的下降。(7)扩展性好如果需要把许多设备连接到PCI总线上,而总线驱动能力不足时,可以采用多级PCI总线,这些总线上均可以并发工作,每个总线上均可挂接若干设备。因此PCI总线结构的扩展性是非常好的。(8)严格规范PCI总线对协议、时序、负载、电气性能、机械性能等指标都有严格的规定,这正是其它总线不及的地方,从而保证了它的可靠性和兼容性。当然,由于PCI总线规范十分复杂,其接口的实现与ISA、EISA相比有较高的技术难度。(9)低成本、高效益PCI芯片将大量系统功能高度集中,节省了逻辑电路,耗用较小的电路板,成本降低。PCI部件采用地址/数据线复用,从而使PCI部件用以连接其它部件的引脚数减少至50以下。2.3PCI总线信号定义在一个PCI应用系统中,如果某设备取得了总线控制权,就称其为“主设备”;而被主设备选中以进行通信的设备称为“从设备”或“目标节点”。对于相应的接口信号线,通常分为必备的和呵选的两大类,为了进行数据处理、寻址、接口控制、仲裁等系统功能,PCI接口要求作为目标的设备至少需要47条引脚,若作为丰设备则需要49条引脚。下【{ii对主设备与目标设备综合考虑,将这些信号表示在图2.2中。其中,7 必要的引脚在左边,任选的引脚在右边。数据/地址信号接口控制信号错误报告信号仲裁信号系统信号图2.2PCI引脚信号64位总线扩展信号接口控制信号中断信号JTAG信号PCI局部总线定义的信号主要有以下几类:(1)系统信号:系统时钟CLK:对于所有的PCI设备都是输入信号,其频率范围为O-33MHz或O-66MHz,这一频率也称为PCI的工作频率。异步复位RST#:用来使PCI专用的配置寄存器、特性寄存器、定序器、主设备、目标设备以及输出驱动器恢复为规定的初始状态。(2)地址和数据信号:地址、数据多路复用输入、输出信号AD[31:0]。总线命令和字节使能多路复用信号C/BE[3:0]#。奇偶校验信号PAR:用于AD[31..00]和C/BE[3..0]#上的数据奇偶校验。(3)接口控制信号:帧周期信号FRAME#:由当前主设备驱动,表示一次交易的开始和持续时间。主设备准备好信号IRDY#:由当前主设备驱动(交易的启动方)驱动,该信号的有效表明发起本次传输的设备能够完成交易的当前数据期。8 目标设备准备好信号TRDY#:由当前被寻址的目标驱动,该信号有效表示目标设备已完成当前数据传输的准备工作,也就是说,可以进行相应的数据传输。停止数据传输信号STOP{{:有效时表示目标设备要求主设备终止当前的数据传输。锁定信号LOCKet:有效时表示一个对桥的原始操作可能需要多个传输才能完成。初始化设备选择信号lDSEL#:在参数配置读和配置写交易期间,用作片选信号。设备选择信号DEVSEL9:有效时表示驱动它的设备己成为当前访问的目标设备。(4)仲裁信号(只对总线主设备):总线占用请求信号REQg:信号有效时表明驱动它的设备向仲裁器要求使用总线。总线占用允许信号GNT#:用来向申请占用总线的设备表示其请求已经获得批准。(5)错误报告信号:数据奇偶校验错误信号PERR#。系统错误信号SERR#。(6)中断信号:PCI局部总线中共有四条中断线INTA#,INTB#,INTC#和INTD:目t,其中INTB#一INTD#只能用于多功能设备。中断在PCI局部总线中是可选项,其信号属于电平敏感型,低电平有效,采用漏极开路方式驱动。(7)边界扫描信号:包括TCK,TDI,TDO和TMS四个引脚,用以与PCI设备内的TAP控制器连接。如表2-1在此将PCI信号的所有电气类型规定综述如下:煮2-1电气类型2.4PCI总线操作总线命令是用来规定主从设备之间的传输类型的,它出现于地址期的C/BE[3:0]#线上。这里的主设备是指通过仲裁而获得总线控制权的设备;目标设备是指在C/BEU上出现的命令的同时,被AD[31:0]#线上的地址所选中的设备。9 表2-2总线命令的编码、类型说明PCI总线的基本传输机制是突发分组传输。一个突发分组由一个地址期和一个(多个)数据期组成。PCI总线支持存储器空间的突发传输,可以将多个存储器写访问在不产生副作用的前提下合并为一次传输。只要处理机发出的一系列写数据所隐含的地址顺序相同,主桥路就可以将它们组合成突发数据。主桥路不能把顺序的I/O访问合并成一个突发的访问或单个的I/O访问,它们一般只有一个数据期。基本的PCI数据传输的主要操作由三个信号控制:FRAME#:由总线主控驱动,以说明传输的开始和结束;IRDY#:由总线主控驱动,该信号能产生等待周期;TRDY#:由目标设备驱动,该信号能产生等待周期;当数据有效时,数据资源需要无条件设置XRDY#信号(写操作为IRDY#,读操作为TRDY#)。接受方可以在适当的时间发出它的XRDY#信号。FRAME#信号有效后的第一个时钟前沿是地址周期的开始,此时传送地址信息和总线命令。下一个时钟前沿开始一个或多个数据周期,每逢IRDY#和TRDY#同时有效时,所对应的时钟前沿就使数据在主、从设备之间传送。在此期间,可由主设备或从设备分别利用IRDY#和TRDY#的无效而插入等待周期。一旦主设备设置了IRDY#信号,直到当前数据周期结束为止,主设备不能改变IRDY#信号和FRAME#信号。而一个从设备一旦设置TRDY#信号或STOP#信号,就不能改变DEVSEL#、TRDY#或STOP#,直到当前的数据周期完成。当最后一次数据传输时(有时紧接地址周期之后),主设备应撤消FRAME#信号,而建立IRDY#信号,表明主设备己做好了最后一次传输数据的准备,待到从设备发出TRDY#信号后,就说明最后一次数据传输己完成,FRAME#和IRDY#信号均撤消,接口回至了空闲状态。PCI总线传输包含读、写和中止三个阶段。当一个PCI设备需要占用PCI总线传输数据时,首先发出其REQ#信号,请求占用总线。若总线仲裁器允许其占用总线时,发出相应的GNTtt信号。该设备收到允许信号后,要查询当前总线是否空闲,若总线忙,说明由其它主设备仍在使用PCI总线,必须等到总线空闲后方可启动总线传输。10 读传输:如图2.:{,显示了读操作的传输过程。1234CLK一.r—U一、\一’一、一√一\~,FL&M【E拜一’、’—.----——-—n.--一一.—-....—-—--_-·-··--—*-——--~一56789—\二.一、—厂!一/~、√?⋯———;——JAD~、疆葡■‘—。一f=_’蔼葫西■一蔓疆j:(i蔼丽—■卜一⋯_伽脚一:至篓鍪多(里蔓受[)7二二譬j受匿=、,:=]受翌堕二>一}IRDY#一一。::⋯:⋯⋯i⋯二⋯⋯j/———、Li,一瑚张一二三~越一萋⋯萋土蚤一;一D聍硼EL厂——————一、⋯~—三一j⋯⋯I⋯』一⋯一:厂一·丝丝鼙·墼堡垒-·垫丝墼-.·~整艘~◆。强绒馋瑜'●r⋯一·⋯⋯⋯⋯——⋯⋯⋯⋯~⋯~⋯,⋯⋯一⋯图2.3读操作的传输过程FRAME#有效指示读操作开始,FRAME#有效后的第一个时钟上升沿为地址周期,C/BE[3:0]#出现的是读命令(I/O读或存储器读)。当主设备准备好接受数据时,置IRDY#有效;当目标设备准备好接受数据时,置TRDY#有效;数据传输发生在IRDY#和TRDY#有效时的时钟上升沿处,IRDY#和TRDY#两者中的任意一个无效都将使总线自动插入一个等待周期。由FRAME#无效和IRDY#有效指示最后一个数据传输完成。写传输:如图2.4,显示了写操作的传输过程。cLK~厂~、⋯夕⋯\一/一\⋯y⋯、i:,/、y⋯Lr一\矿⋯、~y—FRAM]沏1。;:,——?一叶一i、一————r————●—————÷一⋯⋯?⋯—~—争—————÷。i:i:,;}÷啪—t鱼堑3。警缝£×二蔓鲢二:≥t≮.二::磐篓生二:二∑,~“专c嚣鼢一:’磊瓣l孥每>俘鼍绣疆F:(争写丽F二’7——事辑焉驴——1≯;僦,柏~÷⋯⋯。、;户:⋯、;;;,一⋯}彻Y弹—I耄耋釜莹一霉萋一三彻Y弹—l。囊霉,—}—一.蓬一专DE懈E聃一⋯~、;,{i:,,一一一0‘垃~i}苎嚣一塾窒竺卜·墼墅壁,●⋯——~——纛簸璺谤.一⋯——~◆图2.4写操作的传输过程 在写操作中,由于地址和数据都是由主设备提供,不存在AD[3l::0]切换驱动的问题,所以没有转换周期。除此之外,写传送和读传送类似,数据节拍完成的:【作是相同的。中止操作:‘总线主设备和从设备都可以终止PCI传送。无论什么原因引起终止,当FRAME#和IRDY#都无效时,所有传送将被终止,进入IDLE周期。总线主设备引起终止:由于某种原因,总线主控设备常常要终止一个PCI传送,最典型的是一次数据传送结束;或者由于总线上具有更高优先级的设备请求占用总线而由总线仲裁器取消当前主设备的总线主控权(移去GNT#信号);或者主设备发出了FRAME#信号后在规定的时间内没有检测到目标设备DEVSEL#响应信号,都可能导致终止。从设备引发的终止:从设备可以通过STOP#信号请求总线主控设备终止传送,一旦STOP#信号有效,必须保持有效直到主设备置FRAME#无效。IRDY#与TRDY#之间的关系与STOP#与FRAME#之间的关系无关。所以,在从设备请求终止期间(置STOP#有效),数据仍可以传送,这仅取决于当时IRDY#和TRDY#的状态。从设备可由以下两种原因导致终止。一种是从设备正处于不能传送数据状态而导致终止;另一种是从设备解除连接,导致从设备解除连接的原因有很多。例如,设备响应速度太慢,从设备可解除连接,让出总线,以允许访问更快的设备;突发传送中,从设备检测到下一个数据的地址已经超出规定的范围,也可能导致从设备解除连接。总之,PCI局部总线的交易一般遵循如下管理原则:(1)只要STOP#有效,按FRAME#无效规则,FRAME#应尽可能无效。使FRAME#无效应在STOP#有效后立刻进行,或许在2~3个周期内完成。目标不能假定在STOP#有效和FRAME#无效之间有任何时间联系,但必须保持STOP#有效直到FRAME#无效。当总线主控采样到STOP#有效时,它必须在IRDY#有效后的第一个周期使FRAME#无效。IRDY#的有效可能作为总线主控正常IRDY#动作之结果(当前传送未被目标终止),并根据总线主控何时做好完成数据传送的准备而被延迟O个或多个周期。相应地,如果TRDY#无效,总线主控可以立刻使IRDY#有效,这说明将不再有数据传送。(2)一旦STOP#有效,它必须保持有效直到FRAME#无效,随后STOP#必须有效。(3)在传送的最后一个数据段期间(FRAME#无效而IRDY#有效),STOP#或TRDY#之间任何有效的时钟沿就成为本次传送的最后时钟,且在下一个时钟沿IRDY#无效。(4)如果总线主控想完成操作,它必须用下一个未传送数据的地址来重试被目标中止的传送。(5)一旦目标使TRDY#或STOP#有效,到当前数据段完成之前不能改变DEVSEL#、TRDY#或STOP#。12 2.5PCI总线的配置空间PCI总线规范定义J,配置空间来存放自动配置信息,从而使所有与PCI兼容的设备实现真正的即插即用。PCI总线上定义了三个物理地址空间:内存地址空间、I/O地址空间和配置地址空间。前两个地址空间是微机都有的,配置地址空间用以支持PCI的硬件配置。PCI规范规定PCI设备必须实现一定数目的配置寄存器,以提供必要的配置信息,便于系统对该设备进行配置,PCI规范采用这种配置的目的在于提供一套既满足于现行系统又便于扩充的配置机构。配置空间反映了设备的功能和状态,提供了无需用户干预的安装、配置和引导完全的设备重定位。2.5.1配置空间的组织.配置空间是一个容量为256字节的地址空间,分为头标区与设备相关区两部分。头标区长度为64字节,安排在配置地址空间的最前面,如图2.5所示,每个PCI设备都必须支持头标区的寄存器。设备相关区安排在配置地址空间的64--255字节处,该区不是必须的,各个设备根据自己的需要进行定义。所有多字节的PCI寄存器遵循低位在前,高位在后的排列顺序。在每个区中,设备只实现必要的和与之相配的寄存器。配置寄存器映射到PCI配置地址空间,通过AD[7:2]地址信号编码访问。图2.5配置空间头标l霹=13 2.5.2配置空间头标区的寄存器描述供应商标识符(VendorID):这一部分说明了设备的制造商。有效的制造商由PCISIG分配,以确保唯一性。OFFFFH是无效的供应商标识符。设备标识符(DeviceID):这一部分说明特定的设备。由供应商分配。状态字(Status):被加在配置内存地址04H的D31一vDl6‘位,用来从与PCI总线有联系的事件中解码状态。命令字(Command):提供对设备产生和应答PCI周期的能力的粗略控制,存在于04H单元的D15~DO位。版本标识符(RevisionID):这个寄存器规定了设备的特殊版本说明,该值由供应商选择。O是一个有效的值。这部分应被当作是销售商对设备标识符的扩充定义。类码(ClassCode):类码寄存器是只读寄存器,用来说明设备的通用功能(在某些情况下)说明特殊寄存器级编程接口。头标类型字段(HeaderType):该字段有两个作用,一是用来表示配置空间头标区第二部分(开始于IOH)的布局类型;二是用以指出设备是否包含多功能。该字段的位7用来标识一个多功能设备,此位为“0”,表示相应的设备为单功能设备;此位为“1”,则说明该设备为多功能设备。位6一位O指出头标区第二部分的布局情况。基地址寄存器:PCI设备可以在地址空间中浮动是PCI总线的最重要的功能之一,能够简化设备的配置过程。BIOS在引导操作系统之前必须建立一个统一的地址映射,通过基地址寄存器来获得PCI设备的内存或I/O请求,从而在系统资源中分配合理的地址空间。基地址寄存器的bitO用来决定设备申请的是存储器空间还是I/O空间,为O表示存储器空间,为1表示I/O空间。BIOS通过向基地址寄存器中写全1后读回,就可确定设备需要多大的地址空间。与地址空间无关的位其返回值为O。中断线寄存器(InterruptLine):中断线寄存器是8位寄存器,用于交流中断线连线信息。该寄存器可读/写,任何使用中断引脚的设备必须使用它。当POST软件初始化和配置系统时,它要写程序信息到这个寄存器中。这个寄存器的值说明设备的中断引脚连到系统中断控制器的哪一个中断上。设备驱动器的操作系统能用这些信息来判断优先级和向量信息。这个寄存器中的值由系统体系结构确定。Min—Gnt和Max-Lat:这2个只读寄存器用来规定设备所希望的延迟计数器的值的设置。对于这两个寄存器,这个值以1/4ms为单位规定出一段时间。若为O,说明设备对延迟计时器的设置无大的要求。Min-Gnt用来规定在33MHz条件下,设备所需突发期间有多长。Max-Lat用来规定该设备需要获得总线操作权有多频繁。设备会规定这样一个值:允许它们在大多数情况下如同它们的内部资源一样有效地使用PCI设备。扩展ROM基地址寄存器:用于PC结构扩展板上的设备,需要局部的E2PROM作为扩展ROM。该寄存器和32位基地址寄存器相比,除了位的编码和用途不同之外,其它功能完全相似。中断引脚(InterruptPin)寄存器:此寄存器说明被采用的中断请求管脚。值14 0lH一04H对应于PCI中断请求引脚[NTA#"--INTDt}。如果未使用中断引脚,则必须将该寄存器清0。命令寄存器:头标区中的命令寄存器(Command)uJ.分为发出和响应PCI局部总线命令以提供对没备的粗略控制。当向这个寄存器写入0时,对应的设备在逻辑上除了可进行配置访问外,其它所有访问均与总线脱开。要求所有的设备都应支持这一基本的功能。根据一个设备的功能要求,命令寄存器的个别位可以实现,也可以不实现。设备状态寄存器:状态寄存器用于记录PCI局部总线有关事件的状态信息。设备可以根据自己的功能来决定实现状态寄存器的那些位,不一定实现所有的位。2.5.3配置周期正常的访问中,每个设备都对它自己的地址译码。然而,对于配置地址空间的访问,则需要采取另外的方法进行设备选择译码,即通过IDSEL引脚来选择PCI设备,也就是将IDSEL引脚作为芯片选择信号。对于某一PCI设备,只有当它的IDSEL引脚上有信号并且ADCl:0]在地址周期内为00时,该设备才会作为配置(读或写)命令目标设备。为了支持分层的PCI总线,采用了两种类型的配置访问,分别称为O类配置访问和1类配置访问,其格式如下:31111087210l像翩|功能I':寄仃器哆|o|o|312423161511087210图2.6配置地址寄存器格式对于O类配置访问,AD[1:o]=oo,用来在运行的PCI总线上选择一个设备;对于1类配置访问,AD[1:O]=01,用来将一个配置请求传递到另一条PCI总线上。可见,此处AD[1:O]相当于标志位。下面对各字段的具体含义做一说明:寄存器号:选择目标设备配置空间中的一个双字(DWORD)。功能号:用来选择多功能设备的某一功能,最多有八种功能供选择。设备号:用以在一条给定的PCI总线上选择32个设备之一。但如果采用[DSEL与一条AD线相连,只能选择到21个设备。总线号:用以在一个系统中从256条总线中选择一条。倘若配置访问的目标不在本地总线上,而是在另一条PCI总线上,那就必须用l类配置访问。也就是说,l类访问只适用于PC]到PCI的桥,其它所有设备都将其忽略,不作出任何访问。 由以.卜.内容可知,PCI总线具有严格的标准和规范,符合PC]规范的扩展卡可插入任何PCI系统可靠地工作:PCI总线可以提供高数据传送速率l32MB/s或264Mb/s;PCI总线与CPU无关,与州+钟频率亦无关,可适用于各种平台,支持多处理器和并发工作;PCI总线还具有良好的扩展性,通过PCI—PCI桥路,可进行多级扩展。PCI总线的自动配置功能使其应用更为简单、方便,由于该总线标准为元件和插件分配了相应的配置寄存器,对于某个系统只要有嵌入的自动配置软件,就可以在系统加电时自动配置PCI总线上的设备,为用户提供了极大的方便。PCI总线是目前PC机上最先进的一种总线。16 第三章总体方案设计3.1图像采集卡结构根据任务要求,图像采集系统主要由图像采集模块,数据缓存模块,核心控制模块,总线接口模块。图像采集模块l数据缓存模块I图3.1图像采集系统下面对各个模块方案进行概要分析并给出实现方案。3.2图像采集卡具体实现方案3.2.1图像采集模块:图像采集有两种方案可供选择:第一种方案:采用高速模数转换器对视频信号进行模数转换,把黑白参考电平之间的模拟量进行分级。采用位数越高的模数转换器采样后的图像越精确,表现力越强,但提高位数的同时也带来了数据量的大幅度增长。对于彩色视频信号进行采集时则需要采用多个模数变换器,这使得电路的设计难度增加。由于视频信号结构的特殊性,信号中不仅含有图像数据还含有同步信息,而视频信号的传输是靠这些同步信号来保持信号的准确性与一致性的,因此还需要把这些同步信号提取出来,这样才能保证图像数据的准确性。由于同步信号幅度占全电视信号幅度25%的电平范围,可根据这一特征采用幅度分离法将复合同步信号分离出来,不同同步信号再根据不同的脉冲宽度来识别,但这种方法的设计与实现十分复杂,加上视频信号对时序的要求极为严格,行、场同步信号之间要通过高可靠性的锁相环电路来保持同步。如果设计方法不合理引入了系统延时或误差,将严重影响视频信号的准确性。提取同步信号的另外一种方法是采用同步信号提取芯片,比如LMl88l,它只需几个外接元件就可以可靠的提取出同步信号,方便了电路的设计,可以使设计者将精力集中到其他环节的设计当中心31。第二种方案:采用视频解码芯片进行视频信号的解码和同步信号的提取。这种方17 法最大的好处是设计简单,采用一个芯片即u『完成视频信号的解码和ll刁步信号的分离,稳定性好,通用性强,但不适合非标准的视频信号。比较以上朗种方案,明显后一种方案比较稳定简单,所以我们选择了后者。本文设计的采集卡前端为CameraLink接口的数字相机。根据CameraLink协议的要求,MDR26连接器作为相机与数据采集卡的接口,我们采用专用的LVDS信号至TTL信号的转换芯片来实现数据流的传输。3.2.2数据缓存模块图像信息的数据量大、实时性强,同步传输要占用大量的计算机资源,导致整个系统性能的降低和资源的极大浪费,因此图像数据的传输要采取必要的缓冲措施,先采用大容量的数据缓冲器将数据缓存,之后采用高效的方式进行传输,这样可以提高数据传输的效率和整个系统的性能。目前比较常用的存储器件有SDRAM,FIFO。SDRAM即同步动态存储器。从技术角度上讲,同步动态存储器是在现有的标准动态存储器中加入同步控制逻辑(一个状态机),。利用一个单一的系统时钟使所有的地址数据和控制信号同步。使用SDRAM不但能提高系统性能,还能简化设计和提高数据传输的速率.在功能上,它类似常规的DRAM,且也需进行刷新。可以说,SDRAM是一种改善了结构的增强型动态随机存储器。但SDRAM的控制逻辑比较复杂,对时序要求也十分严格,使用很不方便。FIFO是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加l完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为|J一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。SDRAM容量大往往用在需要对待处理的原始信号的缓存器,本设计并不对信号进行实时处理,只需顺序读写,因此选择FIFO存储器作为图像缓存单元,FIFO有独立的数据输入、输出端口,操作方便。3.2.3核心控制模块系统的核心器件一般采用数字信号处理器(DSP,DigitalSignalProcessor)芯片或FPGA。DSP作为当今信号处理的主流芯片,是在原有通用CPU的基础上,发展改进硬件结构和指令集结构而来的。DSP能够更好的完成在数字信号处理的滤波、卷积和FFT中最重复出现的乘加和操作。DSP的特点总结起来有以下几个方面:硬件乘法器、多功能单元、精简指令集、总线结构、专用寻址单元、片内存储器、流水处理。DSP数字信号处理器不但拥有非常适合于数字运算的硬件结构,而且其丰富的指令集和各种寻址方式使之在数字图像处理和视频处理中得到了广泛应用。FPGA作为当今主流的大规模可编程专用集成电路,随着VLSI(VeryLargeScaleIC)18 丁:艺的不断提高,FPGA芯片的集成规模也越来越大,它所能实现的功能也将越来越强,可以实现系统集成,具有实现宏函数的嵌入式阵列及实现普通功能的逻辑阵列,提供异步的“乘积项”或者“和项”构成的奇存器的置位/复位信号。对于1/o驱动能力强的器件,可以在印刷线路板上直接驱动总线,每个r/o引脚都有一个独立的三态输出使能控制,从而可以方便地实现总线结构,另外每个I/o引脚都有漏极开路选择,还有单独的、可编程的输出电压摆率控制位,可配置成高摆率或低摆率输出,在速度要求低的情况下,采用低摆率可减小印制板上线间干扰和地线上的毛刺。每一种器件都有多种封装,每一种封装都有多种容量的器件,且引脚兼容,便于设计移植和升级,针对某种器件的某一种封装形式,都有不同速度等级的芯片,以满足不同速度要求的需要。时钟信号可以由器件外部输入,也可以由内部产生异步时钟,时钟信号的有效边沿可以选择为上升沿和下降沿,提供一定的全局网线和缓冲器,全局网线由全局缓冲器驱动,为信号提供最短的延时和可忽略的扭曲。目前,大多数的FPGA器件都具有符合IEEEl149.1技术规范的边界扫描测试(JTAG)电路,可以方便地进行芯片和板级的测试。遵守外围部件接口(PCI)技术规范,能够与PCI总线连接,实现复杂的PCI设计。FPGA芯片在出厂之前全部进行测试,不需要设计人员承担投片风险,设计人员只需在自己的实验室里通过相关的软硬件环境来完成芯片的最终功能指定,研制开发费用相对较低。FPGA芯片和EZPROM配合使用时,用户可以反复地编程、擦除使用,或者在外围电路不动的情况下,用EZPROM就可以实现不同的功能,实现方案很容易改动。结合FPGA和DSP各自硬件结构的特点,具有各自的应用领域。本采集卡的核心器件主要完成各个模块之间的逻辑控制,FPGA在逻辑控制方面比DSP更具优势,本系统采用FPGA作为核心器件进行设计。3.2.4总线接口模块目前,实现PCI总线接口一般有两种有效的方案。(1)使用大规模的可编程逻辑器件:用这种方法实现PCI接口的最大优点是比较灵活,一般来说,典型的PCI设计并非要实现PCI规范中的所有功能,因此,采用可编程逻辑器件可以有选择的实现自己需要的PCI功能,具有很强的针对性和灵活性。要实现PCI接口功能,可以利用的可编程逻辑器件型号比较的多,但是需要设计者深入理解复杂的PCI总线协议的细节,同时还要有一定的可编程逻辑设计的功底以及扎实的电路设计基础,实际工程中需要做大量的逻辑验证和时序分析工作,开发周期较长,不易实现。目前,很多可编程逻辑器件生产厂商都提供由VHDL或VerilogHDL编制的针对PCI接口设计的IP核,这些IP核都经过严格的测试,并针对各自产品进行了优化,直接利用IP核能极大减轻设计者的工作量。典型的IP核产品有Xilinx公司的LogicCore,A1tera公司的AMPP等。这种方案采用FPGA+PCI软核的方式,将用户逻辑与PCI核集成在一片FPGA中。用户町根据实际要求配置PCI软核,并可以通过顶层仿真及下板编程验证PCI接口以19 及用户逻辑设计的丑:确与否,具有很高的灵活性。但总的来说,这种方案需要我们将大量的精力花费在逻辑验汪和时序仿真的:[作上,成本较高,开发周期较长。(2)使用专用总线接口器件:在PCI板卡的设计中,采用PCI接口芯片来实现PCI接口,开发人员只需要考虑用它来实现自己要求的功能,不用考虑PCI芯片的内部结构。这样设计者主要精力放在整个系统的设计上,将复杂的PCI接口转换为相对简单的接口。目前,只有少数厂家这类专用芯片,如AMCC公司的S59xx,PLX公司的PCI90xx系列等,放置于系统与PcI总线之间,提供数据和控制信号的接口电路。在以上的两种方案中,用可编程逻辑器件价格较便宜,可以较为灵活地实现所需功能,但是为了达到PCI规范的严格要求,需要做大量的逻辑验证、时序分析和程序测试,难度较大,而采用可编程逻辑器件生产厂商提供的PCI接口功能模块价格又昂贵。采用专用的接口芯片比较简单,有良好的应用文档说明,但价格较高,如大批量生产就会影响经济效益,在实际工作中我们综合各方面的因素,本系统选择了PLX公司生产的专用接口芯片PCI9054。 第四章硬件设计设计的图像采集卡硬件结构如下图所示,系统中采用的视频源是基于CameraLink接口的数字相机;采集卡采用FPGA作为核心芯片,系统中各个模块的相互连接都直接或者间接的采用FPGA来完成,其内部主要由三个模块构成:相机接口模块、数据缓存模块、PCI接口模块;PCI接口部分采用专用接口芯片PCI9054实现与PCI总线传输。图4.1系统硬件结构4.1PCI接口部分根据用户设备的性质不同,连接到PCI总线上的设备可分为MASTER(主控设备)和TARGET(目标设备)两种,相应的PCI接口类型也分为MASTER和TARGET两种。主控设备可以控制总线驱动地址、数据和控制信号,目标设备不能启动总线操作,只能依赖于主控设备从其中读取或向其传输数据。图像采集卡信息量大传输速率快,需要同PC高速进行数据交换需要有主动启动PCI传输的能力。我们的设计采用MASTER,即主控设备接口。本系统选择了PLX公司生产的专用接口芯片PCI9054实现。4.1.1PCI接口芯片PCI9054PCI9054是由美国PLX公司生产的先进的PCII/O加速器,符合PCI本地总线规范2.2版,突发传输速率达到132MB/s,本地总线支持复用/非复用的32位地址/数据;21 有M、C、J三种模式;具有可选的串行EZPROM接口,本地总线时钟可和PCI时钟异步。PC9054内部有6种可编程的FIFO,以实现零等待突发传输及本地总线和PCI总线之间的异步操作;支持主模式、从模式、DMA传输方式,因其强大的功能町应用于适配卡和嵌入式系统中。PCI9054是一一种性价比较高的PCI桥路芯片,比PCI9080、PCI9050等性能更优越。PCI9054其内部原理如图4.2所示。它采用先进的PLX数据管道结构技术,是32Bit、33MHz的PCI总线I/o加速器。图4.2PCI9054其内部原理图PCI9054主要特性如下:·符合PCIV2.1,V2.2规范,包含PCI电源管理特性。·支持VPD(VitalProductData)的PCI扩展。·支持PCI双地址周期,地址空间高达4GB。·具备120准备报文单元,完全兼容120V1.5规范。·提供了两个独立的可编程DMA控制器,每个通道均支持块和Scatter/Gather的DMA方式,DMA通道O支持请求DMA方式。·在PCI启动模式下,PCI9054可插入类型1和类型2的配置周期。·内核工作电压为+3.3V,I/0引脚兼容+3.3V和+5V两种电压。·支持本地总线直接接口MotorolaMPC850或MPC860系列、Inteli960系列、IBMPPC401系列及其它类似总线协议设备。·本地总线速率高达50MHz;支持复用/非复用的32bit地址/数据;本地总线有三种模式:M模式、C模式和J模式,可利用模式选择引脚加以选择。·具有6个零等待可编程FIFO存储器。·具有可选的串行UPROM接口。·具有8个32bitMai1box寄存器和2个32位Doorbell寄存器。 4.1.2PCI9054的功能介绍啪1PCI9054提供了三种物理总线接口:PCI总线接口,LOCAL总线接口及串行EZPROM接[j。LOCAL总线的数据宽度为32位,时钟频率可达到50MHz并且支持数据预取功能。PCI9054的总线操作包括PCI总线操作和本地总线操作。对于PCI总线操作,它完全遵守2.2版本PCI规范。PCI9054本地总线支持非多路复用32位地址/数据总线,多路复用32位和8位,16位或32位本地总线设备从属访问,运行速率高达50MHz,可以获得200MB/S的本地总线突发传输速率。PCI9054的LOCAL总线与PCI总线之间数据传输有三种方式:主模式(DirectMaster)、从模式(DirectSlave)和DMA方式。其内部具有两个DMA数据通道,双向数据通路上各有6个FIFO进行数据缓冲,可同时进行高速的数据接收和发送。8个32位Maibox寄存器可为双向数据通路提供消息传送。PCI9054还提供了一个串行ESpROM接口,容量2K字节。在配置存储器中存放了厂家标志、设备标志以及本地总线的基地址空间、I/O空间和中断控制信号等信息。初始化时,系统自动将串行ESPROM中的配置参数装入PCI配置寄存器,并根据本地总线对内存、I/O端口和中断的需求统一划分,自动配置。其中本地端寄存器也可以由本地CPU读写,直接进行配置。(1)PCI9054工作模式PCI9054的本地总线有三种工作模式:M模式、C模式和J模式,可方便地与多种微处理器连接。M模式是专门为Motorola公司的MCU设计的工作模式,这种模式为Motorola公司的MPC850和MPC860提供直接非复用的接口。在M模式下,可以进行配置寄存器、主模式、从模式、DMA模式等总线操作。C模式是一种类似于单片机的工作方式。在这种模式下,PCI9054通过片内逻辑控制,将PCI的地址线和数据线分开,很方便的为本地工作时序提供各种工作方式,设计者只要严格控制Local端和PCI端的各种时序控制线,就可以很好的应用PCI9054芯片。C模式下可以进行配置寄存器、主模式、从模式及DMA模式等操作。J模式是一种没有LocalMaster的工作模式,它的好处是地址数据线没有分开,.严格仿效PCI总线的时序,只是为时序的控制,增加了很多的控制信号,为设计者了解PCI协议和更好的控制PCI通信提供了良好的环境,但使用起来比较麻烦。PCI9054的工作方式可以利用模式选择引脚加以选择,对于176脚PQFP封装的PCI9054芯片,选择方式如表4—1所示。本设计中PCI9054将在C模式下工作,电路设计中,156脚和157脚均接地。 表4-1工作模式选择,总线模式Pinl56(MODEO)Pinl57(MODEl)总线类型(2)PCI9054的数据传输模式在C模式下,PCI有主模式、从模式和DMA模式三种数据传输模式。主模式就是由本地CPU访问PCI总线上的I/O接口和计算机的内存资源,由本地处理器发起整个数据传输。在主模式下,PCI9054是本地总线的目标设备,可以进行单周期或突发传输。从模式就是PCI总线作为主控设备访问本地总线上的资源,包括对本地处理器的控制,对PCI9054配置寄存器及本地内存的访问。此时,PCI9054作为本地总线的主设备,有权仲裁本地总线。DMA是一种快速的数据传输机制,它能在不需要CPU干预的条件下,实现高速外设和主存储器之间自动成批的交换数据。这种方式不但极大的节省了CPU的宝贵资源并显著提高了总线的传输速率。PCI9054集成了两个互相独立的DMA通道,每个通道都支持两种DMA传输方式:连续模式和集散模式。连续模式即一般的DMA传输方式(块传输),要求PCI主机或Local主机提供PCI和Local的起始地址、传输字节数、传输方向。主机设定DMA开始位启动数据传输,一旦传输完成,PCI9054设定DMA“传输结束位”结束DMA,如果中断允许位被使能,在传输结束时PCI9054将向主机申请中断。在DMA传输中,PCI9054既是PCI总线的主控器又是Local总线的主控器。集散模式DMA传输可以申请一个链表式的描述符表用来存储各个物理地址不连续的和传输大小不固定的多块数据的描述寄存器值,PCI9054可以自动通过控制寄存器指针从PCI端或LOCAL端读取寄存器的值并配置寄存器,开始一次次的传输。通过集散模式DMA传输,可以一次传递更多的数据。但是集散模式DMA传输在传输完一块数据之后要重新配置寄存器的值,所以速度比连续模式稍慢。PCI9054与PCI总线上的设备仲裁使用总线占用请求信号REQ和占用允许信号GNT。在DMA传输过程中,REO信号有效,表明驱动它的设备要求使用PCI总线。GNT信号向PCI9054表示其请求己获得批准。这两个信号都是点到点,任何主设备都有该信号。PCI总线和局部总线的仲裁如图4.3所示。当本地总线向PCI总线传输数据时,PCI总线卸载f?IF0存储器,一旦FIFO存储器空,贝JJPCI9054向PCI总线发出中断,PCI9054释 放PC!总线,总线撤消请求应答信,弓-GNT,继而停止卸载数据。’,REQGNTLHOLDLHOLDA图4.3PCI总线和局部总线的仲裁(3)PCI9054寄存器PCI9054内部提供了5种寄存器:PCI配置寄存器、本地端配置寄存器、运行时间RUNTIME寄存器、DMA寄存器和120信息寄存器。下面对PCI配置寄存器和本地端配置寄存器的功能做简要介绍。PCI配置寄存器也就是我们常说的PCI配置空间,它提供了配置PCI的一些信息。其中VenderID,DevicelD,RevisionID,HeaderType,ClassCode用于PCI设备的识别。命令寄存器包含设备控制位,包括允许存储器读写响应等。状态寄存器用于记录PCI总线的相关事件。PCI配置寄存器提供了6个基地址寄存器,这些基地址都在系统中的物理地址范围内,其中BASEO和BASEl用来访问其他配置寄存器的基地址,BASEO是其他配置寄存器映射到PCI端内存的基地址,BASEl是其他寄存器映射到PCI端I/O的基地址。可以通过PCI端内存和PCI端I/O来访问LOCAL配置寄存器与其他3种寄存器。BASE2~5四个空间提供了访问本地端所接的4个芯片(当然可以少于4个),它们将本地端的芯片通过本地端地址(在LOCAL配置寄存器中设定)翻译成PCI的地址,也就是将本地的芯片映射到系统的内存或I/O口。这样使得用程序操作这一段内存(或I/O)实际上就是对本地的芯片操作。本地端配置寄存器提供了本地端的一些信息,其中包括三类重要的寄存器:本地范围寄存器:定义了本地总线使用的地址空间范围。本地基址寄存器:设置了本地总线地址空间的基址。该寄存器中的值被重映射到PCI地址空间,用来确定存储空间解码范围。本地总线范围描述寄存器:定义了本地总线的特征。4.1.3P019054的初始化和复位系统上电时,PCI9054由PCI总线的RST#信号复位,PCI9054同时在Local总线给出LRTSETo#信号用来复位本地处理器。另外还可以通过软件方式,即通过向寄存器CNTRL的第30Bit写1来复位PCI9054及本地处理器。采用这种方式复位以后,主发备 只能访问PCI9054的配置寄存器,而不能访问Local总线,直到由主发备将软件复位的位清除。Pcl9054的寄存器呵由E2PROM或本地处理器米进行钏始化。系统上电时首先检查E2PROM是否存在,如果安装了E2PROM且其前16位不为FFFFtl,则PC19054将读取E2PROM中的值来配置其内部寄存器,否则使用缺省值。4.1.4PCI9054的E2PROM配置在计算机的加电自检期间,PCI总线的RSTg信号复位,PCI9054内部寄存器的默认值作为回应。PCI9054输出本地LRESETo#信号并检测串行E2PROM。如果串行E2PROM中的前33个比特不全为l,那么PCI9054确定串行E2PROM非空,用户可通过向9054的寄存器CNTRL的29位写1来加载E2PROM的内容至UPCI9054的内部寄器;配置的信息(设备识别号、供应商代码号、Local总线三个空间的大小以及三个空间的基址等)事先要利用编程器写入配置存储器中,也可以在PlxSdk中的Plxmon下对E2PROM进行配置。本设计中PCI9054工作于C模式,并有两种数据传输操作:从模式单字节写操作和Local端至UPCI端的块DMA传输。下面简要介绍一下这两种方式的操作过程。在PCITarget操作过程中,PCI总线主控设备可以以可编程的等待状态、总线宽度和突发传输功能访问PCI9054的三个本地空间(空间0,空间1和扩充ROM空间)。图4.4为PCI9054从模式写操作过程,在PCI总线复位后,由软件设置PCI地址寄存器和本地地址寄存器将PCI存储空间映射到本地存储空间。本设计中,PCI采集卡以8位的总线宽度进行单字节写操作,将PCI空间映射.至JJFPGA的内部寄存器。主从主么1广要§i[=二=>f繇j、/D、1厂EVS—EL#,TR—DY、~”图4.4PCI9054从模式写操作过程26 {:l。’REQ#}~<=二二—=二J悟二j正。I碧广!“11L_j,n藿主tr——一—⋯’]DMASlarl从/1/+t,/一一LHOL.Dj一1——‘。'。————⋯一。。●-——一_二=一JL,AD5六Lw!R!当A5L一::_’LD/LAD,READY#-=二二二=]图4.5DMA传输过程图4.5为从Local总线到PCI总线的块DMA传输过程,PCI复位后,DMA块传输可以通过以下几个步骤实现:(1)设置方式寄存器:设置DMA通道的传输方式,寄存器DMAMODEO或者DMAMODEl的位9:0一表示块传输,卜表示分散/集中传输。(2)设置PCI地址寄存器:设置PCI总线侧的地址空间。(3)设置Local地址寄存器:设置Local总线侧的地址空间。(4)设置传输计数寄存器:以字节为单位设置传输数据量。(5)设置描述寄存器:设置DMA传输的方向:在分散/集中方式下,位0表示传输参数的加载地址,O-PCI地址,1-Local地址:位1表示传输链结束,0一未结束,卜结束:位2设置当前块传输结束后中断:位3指示DMA的传输方向,O一从PCI总线到Local总线,1一从Local总线到PCI总线:高28位[E31:4]表示传输参数表的地址指针。(6)设置命令/状态寄存器:启动或停止DMA操作,并读此寄存器返回DMA状态。本采集卡的DMA传输将使用Non-Burst和Burst-forever两种传输方式,传输方式的设定是通过设置DMAMODEO寄存器的Bit7(BTERM#EnableBit)和Bit8(Burst’EnableBit)来共同决定的。具体情况如表4-2所示:表4-2DMA方式选择27 4.2相机接口部分本系统采用J~IPERX公司的IPX-V(;A210相机,它是一款CameraLink接口的高速CCD相机,采用单色传感器,输出为亮度变化的灰度信号。可通过编程设定其工作模式。有效像素640*480,像素大小7.4um*7.4um。帧频最低120fps,最高1600fps。全像数输出方式下最高帧频为210fps。采用CameraLink接口方式,单向/双向输出方式,数据位宽8/IObit,时钟为40MHz。我们设定其工作方式为120fps@640.480,单向输出,数据位宽8bit。4.2.1CameraLink协议简介CameraLink是一种基于视频应用发展而来的通信接口。过去,工业数字视频市场在相机和图像采集卡之间已经锁定了一种通信标准方式,相机制造商和图像采集卡制造商使用不同的连接器发展他们的产品,这使得线缆很难整合生产,给用户也带来很多麻烦。同时,随着数据传输速率和复杂性的不断提高,对一种通用性标准的需求就变得非常重要了。在高数据率、综合数据交换的时代,手工制作的线缆已经不能可靠的满足需求。为保证在高数据率条件下通信的可靠性而特别设计的,通过指定一个标准的引脚分配和线缆装配方法一CameraLink标准来确保兼容设备能够轻而易举地连接在一起。CameraLink标准可以使用户通过大批量购买线缆来降低开发成本。并且,标准接口的存在也大大节约了用户为整合一套兼容的相机和图像采集卡而花费在获得技术支持上的时间㈨。当前,多数数字视频解决方案中使用被看作为RS一644的LVDS(低压差分信号)。虽然RS一644已经较RS-422有了改进,但是它仍然需要大容量的线缆,在传输速率方面也受限制。为了解决这个问题,NationalSemiconductor公司基于ChannelLink技术发展了CameraLink标准。ChannelLink是基于LVDS技术发展而来的,它是一种用来传输视频数据的新技术。ChannelLink使用一个并转串驱动器和一个串转并接收器传输数据,其最高速率可达2.38Gbps。如图4.6所示,ChannelLink驱动器将28位CMOS/TTL信号转换为四条LVDS数据流。一个锁相环传偷时钟通过第五条LVDS链路与其它LVDS数据流并行传输。在传输时钟的每个周期,28位输入数据被采样和传输。ChannelLink接收器将数据流转换回28位的CMOS/TTL并行数据。 8芝譬墨^,二’1.gGbps卜\八‘—*,n一一▲一DrbData(LDVS)§辜.寥尹l』r:-■一rp●卜r、\一or≥Data(LDVS)妻拶步·C翠:a】03o,一:密“E:,卜\Nl一or≥Data(LDVS)睾乎∞8少,o∞1-∥.口Q●-07I卜r、\'岛∞通>一-4Dr移Data(LDVS)’≥∥≯“幢Clock(LDVS)毫割lCIoc图4.6ChannelLink接口内部连接原理jCo互o(,’(1)CameraLink接口配置CameraLink接口包括初级配置、中级配置和高级配置等三种配置。在初级配置中,一对ChannelLink驱动器/接收器随同四对用来控制相机的RS一644LVDS线缆和两对用来进行相机和图像采集卡之间串行通信的RS-644LVDS线缆一起使用。既然一对ChannelLink驱动器/接收器仅局限于28位并行视频数据,那么初级配置就不能够满足所有的情况。中级配置包括两对ChannelLink驱动器/接收器和与之随同使用的用于相机控制和串行通信LVDS线对。中级配置最高可传输56位并行视频数据。高级配置包括3对ChannelLink驱动器/接收器和与之随同使用的相机控制和串行通信LVDS线对。高级配置最高可传输84位视频数据.如表4-3所示,初级配置需要使用一条标准电缆连接相机和图像采集卡,中级配置或高级配置则需要两条。表4-3端口配置(2)CameraLink信号①电源信号:捕捉器不提供能源,而是由相机从专用的电缆提供。②高速相机控制信号:四组低压差分信号(LVDS)一相机控制信号1(CCl)、相机控制信号2(CC2)、相机控制信号3(CC3)和相机控制信号4(CC4),它们分别是外部同步信号(EXSYNC),重置信号(PRIN)、向前信号(FORWARD)和保留信号(FutureUse)。③串行通信信号: 三种相机接【]配置中都有两对RS一64一ILVDS线缆用于相机和图像采集卡之间进行的异步串行通信。相机和图像采集卡在设计串行口配置时至少应该支持的波特率为9600。CameraLink标准指定串行信号如F:SerTFG:从相机串行输出端至采集卡串行输入端的差分线对。SerTC:从采集卡串行输出端至相机串行输入端的差分线对。其协议使用异步格式(CO执行RS-232标准),推荐使用最小波特率为9600(1位起始位、8位数据位、1位停止位、无握手和奇偶校验位)。当访问和使用异步串行口时,CameraLink标准为相机制造商和图像采集卡制造商提供了一个双方共同遵循的方针,即图像采集卡制造商必须提供一个API(应用程序接r1)。用户通过DLL(动态链接库)对串行通信进行管理。另外,CameraLink标准还推荐图像采集卡制造商提供一个用户接口。这个用户接口应该至少包含一个终端程序,通过这个程序用户可以发送和接收一个字符串或几个字节的文件。④视频数据:同步信号:FVAl,LVAl,DVAl和SP;它们分别是帧允许信号、行允许信号、数据允许信号和保留信号。数据信号:Port(AO..A7)一Port(HO..H7);CameraLink标准定义了从A到H8个端口。它们都是逻辑8位的字,用来说明图像数据位在驱动器/接收器上是如何分配的。4.2。2相机图像信号的采集CameraLink是基于LVDS信号的,下面先简单介绍LVDS信号。低压差分信号技术(LVDS)是使用非常低幅度信号(大约350mV)通过一对差分PCB走线或平衡电缆传输数据的。它允许单个信道传输率达到每秒数百兆比特(Mbps)。它特有的低振幅及恒流源模式驱动只产生极低的噪声,消耗非常小的功率。而同时差分数据传输方式比单线数据传输对共模输入噪声信号有更强的抵抗能力。在两条差分信号线上流经的电流及电压振幅相反,噪声信号同时藕合到两条线上,而接收端只关心两信号的差值,于是噪声被抵消。由于两条信号线周围的电磁场也是相互抵消,故差分信号传输比单线信号传输电磁辐射小得多。而恒流源模式不易产生尖峰,从而进一步减小了噪声。由于LVDS差分信号技术降低了对噪声的关注,所以可采用较低的信号电压幅度。这个特性非常重要,它使提高数据传输率和降低功耗成为可能。低驱动振幅意味着数据可更快地传输。由于驱动器是恒流源模式,功耗几乎不会随频率而变化。 图4.7LVDS驱动器原理LVDS器件的工作原理为:发送端是一个为3.5mA的电流源,产生的3.5mA的电流通过差分线的其中一路到接收端。接收端对于直流表现为高阻,电流通过接收端的100欧姆的匹配电阻产生350mV的电压,同时电流经过差分线的另一条流回发送端。当发送端进行状态变化时通过改变流经100欧姆电阻的电流方向产生有效的O和l状态∞¨。相机输入输出均为LVDS标准的信号,接口模块需要实现LVDS信号向单端I/O接口标准信号的转换。通过专用LVDS信号接收芯片,在本系统中由于摄像头端采用的是NI公司的LVDS信号发送芯片,所以在选择LVDS接收芯片时,应选用NI公司相对应的接收芯片设计CameraLink接收模块。相机的输出时钟频率为40MHz,所以此处选择DS90CR288A接收4路并行LVDS数据和1路LVDS的CameraLink时钟信号。并从相机得到LVAL,FVAL,DVAL等高速数据的同步信号。同时接口还要向相机传输控制信号CCI以及串行通信信号SerTFG,SerTC实现采集卡对相机的控制和通信。设计的CameraLink接口电路如图4.8。31 V墅旦旦122曼3。.、垫!P发0TJT:2VCC56VCC33Rx0UT2_‘R4。^^型!Rx0UT23lbc0UT2l55R5.^.33PJcOUr21RxOUT24R6...333,5;4RR。7曼翼融P,x00U叭T236ND“’●如0UT24Rx0UT20P,xOUT25R9.m蛩!0NDR)cOUTl952’’。GNDRxR.xOUT20UT267RR登囊}_手RxOUT2j6NDRxl卑...337l【x0UT26Rx0UTl85lR11...33Rx0UTl8Rx0UT27Rx0UTH50R15:::33P.x0UTl7GlqD’’1849R16’-’33RxOUTl6LVDS6NDll】【OUTl648⋯VCC33RxⅡT0一VCCRxⅡ-0+P.xOUTl547R17⋯33RxOUTl5IbcN卜Rx0UTl4{l;;窭嚣融P-,x。OuUT,。1;Rxml+I})c0UTl344GNDLVDSVCC6NDLVDS6NDRxOUTl2●3R20⋯33Rx0UTl2Rxn_2一RxOUTllnR21:::33RxOUTllRxn_2+RxOUTl041R22’-’33RxOUTl0RxCLKⅨ一VCC卑o⋯VCC33RxCL砌时+Rx0UT939R23...33RxOUT9RxIN3一l【x0UT838R24jI’.’33P,xOUT8Rx丑呵3+Rx0UT73"/R25:::强RxOUT'/LVDSGND36⋯GNDPLLGNDRxOUT635R26⋯33RxOUT6pLLVCCP.x0UT534R27:::33RxOUT5RIo..".0ILPWNDWN抖25pLLGNDR.x0UT433R28::’33RxOUT4。‘RxCLKOUTR30⋯3326PWl4'DWl4'Rx0UT3翼船9:33v。案叨Bl}【,x0UT0R31j03327R】cCLKOmVCC30R32⋯33Rx0UT2GND。忖——百Rx0UT0Rx0UT229‘R33:::弘KxOUTIONDRx0UTl图4.8CameraLink接口电路4.3高速缓存模块设计本设计采用专为支持视频存储而设计的FIFO芯片AL422B。其最短读写周期为15ns,容量为(393,216,8bit),SOP封装,5V/3.3V供电,本设计采用3.3V供电。由于其复杂的DRAM控制功能都由内部控制器实现,其外部接口非常友好,易于操作。盟F令D10o⋯/罨争主皂兰圣图4.9AL422B内部原理框图32D07一D。o幻E AL422B丰要由一个内部RAM阵列以及读写控制单元、读写指针单元、输入输出寄存器、标志信号以及复位单元组成。其内部RAM阵列采用先进先出设汁技术,外部数据首先存到输入数据寄存器,再传送纠RAM阵列,依次保存,数据进入的先后顺序通过修改写指针确认。RAM阵列始终检测输出数据寄存器的状态,一旦为空,RAM阵列的数据就送到输出数据寄存器,外部设备可以直接从输出数据寄存器读出数据,数据的读出顺序可以通过读指针来控制。另外,它还可以通过设置输出使能引脚为高状态来禁止数据的输出,以减小芯片的功耗。为方便数据的读写,AL422B还增加了一些数据读写的控制信号,包括读写使能、读写时钟等。RCK,RED07—0/0E=”L”WCK俐ED17—0图4.10AL422B读时序图2图4.1lAL422B写时序图33 FTFf)的读写控制信号及数据信号与FPGA相连,数据经CameraLink接口电路后进入FII?0缓存,FPGA控制读写。4.4基于FPGA的逻辑控制设计基十FPGA的逻辑控制单元是采集卡的核心,它实现与PCI接口芯片通信;FIFO的I/O逻辑、传输控制逻辑;与CameraLink接口通信。按其功能分为相机接口模块i数据缓存模块;PCI接口模块。在本系统中,FPGA采用的是Altera公司生产的CYLONEII系列的芯片EP2C8Q208C8。采集卡的时钟源采用40MHz的有源晶振,与图像时钟同步,作为FIFO的读写时钟。局部总线时钟作为PCI9054的本地时钟。我们是在QuartusII6.0环境下,采用原理图的方式描述顶层设计,用VerilogHDL语言实现具体功能。4.4.1相机接口模块:该模块实现的功能有相机控制和寄存器设定,数据采集。相机控制模块:相机控制模块内部实现一组参数控制寄存器,控制模块结合参数寄存器来控制摄像头的输入信号,实现对相机曝光和其他参数等控制。首先需要考虑相机的触发模式,相机有硬件和软件两种触发方式,为了便于软件控制我们采用软件触牡及。相机寄存器设置模块:该模块接收来自上位机的寄存器设置信息或向上位机发送寄存器内的数值,读取寄存器设置信息中的值,写入相对应的寄存器或者将寄存器值写入寄存器设置信息,向上位机传送。相机数据采集模块:相机的输出信号有CLK,FVAL、LVAL、DVAL;CLK为数据时钟,每个CLK上升沿图像数据有效;FVAL为帧有效信号,LVAL为行数据有效信号,DVAL为数据有效信号;DATA为图像数据信号。当其从CameraLink接口出来的时候数据格式是不规则的,需要将其整理成符合CameraLink信号格式的视频信号。4.4.2数据缓存模块:数据缓存模块完成对FIFO读写控制的实现及PCI接口数据缓存。FIFO可以实现一帧视频的缓存。由于FIFO并没有半满信号,我们采用软件计数的方式实现FIFO数据读写逻辑的控制。计数器对LVAL信号计数,当达到一帧图像行数的一半时触发读使能信号,读出数据。图像数据为8bit,PCI局部总线工作在32位宽度。如果传输过程中32bit数据仅仅8bit数据有效,一方面系统的性能将大大降低,数据传输将占用整个系统的绝大多数时间,另一方面系统的资源未得到充分利用。为了解决这一问题,利用CYLONEII内部M4K存储器结合内部LPMFIFO软核设计4个8bit,深度为1024,并行的FIFO实现4个8位数据合并为一个32位数据。控制逻辑实现依次写入FTF0,每个写时钟针对某一个FIFO写一个8位数据,每个读时钟读出32位数据,即所有的FIFO读出信号为同一个读出信号,每个读出时钟的上跳沿,每个FIFO均读出一个8位数据豳1。结合单个FIFO的控制逻辑:写使能wE,读使能RE,FIFO满,FIFO空,FIFO内部数拂J数目,实现整个PCI接[1数据缓存的逻辑控制。缓存的结构图如图4.12所 不oWE0WCLKD【7:o】WEID17:0JWE2D【7:oJWE3D【7:o】RERCLKD【7:o】D[15:81D[23:16]D[31:24】图4.12缓存的结构图(1)外部FIF0读使能经过一定的时延后使能FIF01的写使能信号,在相机输出时钟上跳沿对FIF01写入一个8位数据,然后关闭FIF01的写使能,FIF02的写使能信号有效,在下一个时钟上跳沿对FIF02写入下一个8位的图像数据,关闭FIF02的写使能,FIF03的写使能有效。依次类推,直到对FIF04写入第4个数据。在对FIF04写入数据后,FIF04的写使能无效,FIF01的写使能有效。(2)读出逻辑产生,通过判断FIF01内部数据数目判断FIF0内部数据是否将满,设定一个上限值和一个下限值,首先将FIF01内部的数据数目与上限值比较,当数据数目大于或者等于上限值时,开始读出数据,读出过程中,将内部数据数目与预设定的下限值比较,若数据数目小于或等于下限值时,停止读出。逻辑控制4个FIF0的半满信号同步申请外部写。4。4.3PCI接口模块:PCI接口模块主要实现与PCI接口读写状态控制和数据传输等传输控制逻辑。PCI接口读写数据有两种方式:突发方式和单周期方式。在FPGA采用状态机的方法实现读写状态的转换。其状态转换图如图4.13所示。其中:S0表示PCI处于空闲状态;S1表示单周期写开始状态;S2表示单周期写等待状态;S3表示突发读开始状态;S4表示突发读等待状态。只有当系统的时钟上升沿到来时,才会触发这个状态机改变一次当前状态。刚开35 始时,初始状态为空闲状态,当有晴求来时才判断是何种操作,如果没有淆求就一商保持空闲状态。?(≥。ADS:O:ADS=o,,,,BLAST=l图4.1.3PCI接口读状态转换图在FPGA的控制下,’PEI接口可以很好的进行数据读写状态的转换,这就为以后PCI接口顺利读写数据打下了基础。本设计中PCI接口采用的是突发模式进行数据传输,从FPGA中读取数据。FPGA检测到内部FIF0半满时就向PCI9054发出一个中断请求信号LINT#,CPU响应中断,在中断响应函数内,发出读命令、要读取的字节数、地址信号等。PCI9054先通过LHOLD申请本地总线的控制权,FPGA通过LHOLDA响应,使PCI9054得到本地总线的控制权。PCI9054将PCI地址空间映射到本地地址空间,接着启动本地总线的DMA周期。FPGA收到LW/R#读信号和地址选通信号ADS#后,使能内部FIFO的读使能信号,使内部FIFO数据线上的DO--D32有效,开始数据传送。在最后一个数据传送之前,BLAST#信号有效,FPGA在一个时钟周期后使内部FIFO的读使能无效,完成一次数据传送过程。下面给出了部分VerylogHDL设计及仿真图4.14相机接口模块36万Sq嘴H,舡汀④ Ⅲ!剧n,国~图415LPMFIFO软核设计的FIFO擘竽二业生。”"黜竺_黜!掣!踟”璺池㈣兰掣“。坦!P!‘uul凡几八几m凡八几门』_几_几,旷UULn八几』]』叮UUlJl—几_叭n九九—nn,JULr—uLnnn几nⅧnn—LrLnrLnn几叭叭nⅢ一__一uUUUL几mn几_uUuU眦n』』nnnnnnnnnnnnmunn儿图416DMA传输的时序拄制仿真图4.5PCB设计451电源、地层设计由于电源、地线的考虑不周到而引起的干扰,会使产品的性能F降.有时甚至影响到产品的成功率。所咀对电源、地层的设计要认真对待,把电、地所产生的噪声干扰降到最低限度.以保自E产品的质量。在我们的设计中,遵循PCI规范要求,设计了四层板。印制板的中间两层分别为地层和电源层。由丁.所选用的接门芯片PCI9054内核供电电压为33v,它本身就具有双重缓冲,I/0接【】兼容+5v和+33V两种电压。因此,本图像采集卡被设计成能适应两种信号环境的通用板。在板卡上PCI接口芯片到PCI连接器之间不需要加专用的电压缓冲芯片,也不需要从标有“V”⋯的电源引脚供电,就可以插入5v或3.3v任意的PCI扩展板连接器。452电路板的布局设计CameraLink接口部分在系统中作为信号的输入环节,考虑到PCI板乍需要与 CameraLink线缆连接的问题,接口电路放在板卡的最左侧。同时接口电路属于板卡上的模拟部分,也就把模拟和数字部分分开了。为了避免数据的传输线过长,FIF0放在离FPBA较近的地方。因为PCI金手指的位置是确定的,PCI9054应相对金手指较近,而且由于PCI9054与金手指相连的引脚集中在芯片一侧,则可基本上确定PCI9054的位置。根据芯片管脚的连接,调整各芯片的位置和方向,确定FPGA的合适位置。此外,在PCB板的设计中,在兼顾内在质量的同时,还考虑了整体的美观,做到布局疏密有序,避免重量向一个方向上倾斜的情况发生。4.5.3电路板的布线设计因为要实现的采集频率比较高,并且板上同时走数字电路和模拟电路,所以在绘制PCB板图的时候,应注意避免信号之间的串扰。在布线方面,信号输入端与输出端的边线应避免相邻平行,以免产生反射干扰。必要时应加地线隔离,两相邻层的布线要互相垂直,平行容易产生寄生耦合。考虑到电路的抗干扰问题,所以在PCB设计阶段要在电源输入处安放去藕电容,一般来说,安放去藕电容有以下几点需要考虑:(1)在电路板的电源输入处跨接100∥F左右的电解电容,如果空间允许,电容量大些则更好。(2)原则上每个电源输入端(较为复杂的芯片有多个电源输入点)的旁边都需放置大小在O.01∥F左右的瓷片电容,如果空间不允许,可每十处左右放置一个1’--10∥F的钽电容。(3)去藕电容应尽量靠近电源输入端,过长的引线会产生电感效应,在高频信号影响下会产生自激振荡。另外,地线的布局是否合理,对电路板的抗干扰能力也有较大影响,在地线布局和走线时应尽量满足以下条件:(1)模拟地和数字地要分开布线,不能合用,将它们分别与PCI连接器上不同的接地点相连。(2)地线应尽可能的加粗。(3)布线时最好使电源线、地线的走线方向和数据线的走线方向一致。在电路板上布上屏蔽层对抗干扰很有帮助。(4)对于高频电路,应尽量减少过孔的数量,必须过孔时,尽量增大过孔的孔径比引。并且,为了保持系统的稳定性,还有如下对走线长度的限定:(1)从引脚根到电容的焊盘的走线长度不大于0.25英寸,线宽至少为0.02英寸。(2)在32位和64位板上,所有32位接口信号的最大走线长度为1.5英寸(约3.8em)。(3)无论是32位板还是64位板,其上的时钟CLK信号走线长度为.2.5士O.1英寸(约6.3cm),而且只能连到一个负载上。 第五章驱动程序设计5.1驱动程序驱动程序是一种让你的PC与各种外设、各构成部件与其它硬件通信的程序。它把标准的操作系统命令转化成特殊的外设专用命令。也有驱动程序被内置于操作系统来控制内存、缓存与其它PC基础设备。驱动程序为特定的硬件所写,它知道该设备的性能,通过它来完成对特定硬件的操作。该设计开发的图像采集卡是基于PCI总线的即插即用设备(PnPDevice),开发PCI接口卡关键的一部分是驱动程序的开发。应用程序必须在驱动程序的支持下才能工作。驱动程序的基本任务是要完成电源管理、设备识别、获取内存线形地址和I/0地址以及中断处理。Windows操作系统下PCI.总线设备的软件开发与DOS操作系统下ISA总线的开发有着根本的不同。图5.1为WindowsXP操作系统的系统结构,在Windows操作系统(包括Win9x,WindowsNT,Windows2000,WindowsXP等)下,为了保证系统的安全性、稳定性和可移植性,执行于用户态的应用程序不能直接访问硬件,而要通过调用执行于核心态的设备驱动程序提供的各种服务间接地对硬件资源进行访问。设备驱动程序是提供给硬件设备连接到计算机系统的软件接口,它使用户应用程序可以用一种规范的方式访问硬件,而不必考虑如何具体控制硬件。图5.1windowsXP操作系统的系统结构39 目前WINDOWS环境下常见的驱动程序有三类:VxD、KMD和WDM。VxD(VirtualDeviceDrivet),它运行在系统保护层(ringO)下,可以完成各种各样系统物理层的访问,在WINDOWS95/98/ME操作系统qJ起主导作用;KMD(KernelModeDriver)是在WINDOWSNT下提出的管理、维护硬件运作的驱动程序模式;WDM(Win32DriverMode)是全新的驱动程序口引,它的运行平台是WINDOWS95/98/ME/NT/2000/XP操作系统。本'发计的驱动程序方式是WDM。5.2WDM概述WDM运行在WINDOWS98/WINDOWS2000/WIND0wSXP操作系统中,是微软公司全新的驱动程序模式,支持即插即用、电源管理和wMI技术,WDM驱动程序全都用C语言编写,其源代码可以在Windows98/2000/XP各系统平台间相互移植。为了实现可配置性,WDM避免了直接操作硬件,而是通过调用HAL(HardwareAbstractionLayer)或底层总线驱动程序来实现对硬件的操作。5.2.1WDM驱动程序模型在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个称为功能(Function)驱动程序,就是我们通常所说的硬件设备驱动程序。它负责初始化I/O操作,处理I/O操作完成时所带来的中断事件,为用户提供一种设备适合的控制方式。另一个驱动程序称为总线(Bus)驱动程序。他负责管理硬件与计算机的连接。如PCI总线驱动程序,它检测插入到PCI槽上的设备并确定设备的资源使用情况。WDM功能驱动程序通常由两个分离的执行文件组成。一个文件是类驱动程序,它了解如何处理操作系统使用的WDM协议,以及如何管理整个设备类的基本特征。另一个文件称为微小驱动程序。类驱动程序和微小驱动程序合在一起才成为一个完整的功能驱动程序。5.2.2WDM设备和驱动程序层次结构IRPFiDo上层过滤设备驱动程序广一一·F习FiDO’●■f下层过滤设备驱动程序L+●。r、,、一一l。。。。,。,。。。.t图5.2WDM结构模型 WDM驱动程序采用分层的结构模型,如图5.2所示。图中左边是一个设备对象堆栈,设备对象是操作系统为帮助软件管理硬件而创建的数据结构。处于堆栈最底层的是物理设备对象PDO(PhysicalDeviceObject),设备堆栈的中I’日J自+一个功能设备对象FDO(FunctionalDeviceObject),在FDO的上面和下面可能还会有一些过滤器没备对象FiDO(FilterDeviceObject),位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面的过滤器设备对象称为下层过滤器。操作系统的PnP管理器按照设备驱动程序的要求构造设备对象堆栈n引。总线驱动程序的一项任务就是枚举总线上的设备,并为每个设备创建一个PDO,一旦总线驱动程序检查到新硬件的存在,PnP管理器就创建一个PDO,之后便开始描述如图5.2所示的结构。创建完PDO后,PnP管理器参照注册表中的信息查找与这个PDO相关的过滤器和功能驱动程序,它们出现在图5.2的中部。系统安装程序负责添加这些注册表项,而驱动程序包中控制硬件安装的INF文件负责添加其它表项。这些表项定义了过滤器和功能驱动程序在堆栈中的次序。PnP管理器先装入最下层的过滤驱动程序并调用其AddDevice函数。该函数创建一个FiDO,这样就在过滤器驱动程序和FiDO之间建立了水平连接。然后AddDevice把PDO连接到FiDO上,这就是驱动程序对象之间连线的由来。PnP管理器继续向上执行,装入并调用每个下层过滤器、功能驱动程序、上层过滤器,直到完成整个堆栈。层次结构可以使I/O请求过程更加明了,见图5.2。影响设备的每个操作都使用I/O请求包。通常IRP先被送到设备堆栈的最上层驱动程序,然后逐渐过滤到下面的驱动程序,每一层驱动程序都可以决定如何处理IRP。不同位置的驱动程序完成不同的功能。总线驱动程序管理计算机与PDO所代表的设备的连接,功能驱动程序管理FDO所代表的设备,过滤器驱动程序用于监视和修改IRP流。5.2.3设备接口用旧的命名方法命名设备对象,并创建一个应用程序能够使用的符号连接,存在两个主要问题。一是命名设备对象会带来潜在的安全问题。此外,访问设备的应用程序需要先知道设备采用的命名方案。为了解决这些问题,WDM引入了一个新的设备命名方案,该方案是语言中立、易于扩展的,可用于许多硬件和软件厂商,并且易于文档化。该方案依靠一个设备接口(DeviceInterface)的概念,它是软件如何访问硬件的一个说明。一个设备接口被一个128位的GUID唯一标识。如果要使设备接口Win32应用程序可见,WDM驱动程序必须在AddDevice例程中注册一个或多个设备接口。之后,在启动例程中激活设备接口,在停止例程中禁止设备接口。5.2.4开发工具的选择开发WDM没备驱动程序有很多种开发:[具可以选择,常用的主要包括三种。41 (1)微软的软件包DeviceDriverKit(DDK)。微软公司提供了Windows98DDK,Windows2000DDK,WindowsXPDI)K等多个版本用来开发不同系统下的设备驱动程序。各个版奉的驱动程序虽然没有提供二进制兼容性,但是基本上提供了源代码的兼容性,也就是说对于不同的操作系统,同一个WDM源代码可以不用修改或经过少量修改,再经过相应平台DDK的重新编泽后就可使用。该软件中包括了有关设备驱动开发的文档、编译需要的头文件和库文件、调试工具和程序范例,另外在DDK中还定义了一些设备驱动程序可以调用的系统底层服务。但是由于DDK主要是使用汇编语言进行描述的,开发起来比较困难。(2)NuMega公司的DriverStudio是用来简化微软Windows平台下设备驱动程序开发,调试和测试的开发工具包,其中包括VtoolsO,DriverWorks、和SoftICE等开发工具。该软件包是基于C/C++的,支持BorlandC++和VisualC抖,使用和维护都比较方便。VtoolsD用于Windows9x操作系统VxD驱动程序的开发,DriverWorks用于开发WDM驱动程序、SoftlCE为调试工具。DriverWorks的类库对于DDK进行了封装,它可以集成到VisualC++环境中,针对特定的应用生成相应的驱动程序框架,在编程中采用面向对象的编程方法,极大的提高了编程效率。(3)Jungo公司的WinDriver。它的目的就是方便WINDOWS程序员快速开发出PCI/ISA设备的WINDOWS驱动程序。利用WINDRIVER开发驱动程序不需要熟悉操作系统的内核知识,整个驱动程序中的所有函数都是工作在用户态下进行的,通过与WINDRIVER的.VXD和.SYS文件交互,来达到驱动硬件的目的。WINDRIVER的特点是只支持针对硬件设备的驱动程序的开发,如果是针对硬件PCI/ISA/PCMCIA/USB开发驱动程序,用它比较方便,如果是编写其它功能的驱动程序它就无能为力了。WINDRIVER无需DDK以及内核程序开发的经验,较易于硬件设计人员直接进行驱动程序的开发,节省开发费用和开发周期。以上介绍的三种方法都需要VisualC++作为辅助开发环境,前两种还都需要DDK的支持。综上所述,在开发时间上,第一种难度最大,需要的时间最长,效率也最高,第三种方法难度较小,时间最短,第二种则是一种折中方案。方便又不失去灵活性,减小产品的开发周期,本设计选用DriverStudio来开发采集卡的设备驱动程序。5.3设备驱动程序的开发5.3.1设备驱动程序编译环境的建立首先要选择的是设备驱动程序开发的基础环境。微软的综合开发环境VisualStudio中的VisualC++以其友好的用户界面和简易的使用性成为我们的首选。VisualC++综合开发环境下的驱动程序开发平台将提供给开发者诸多方便:(1)VisualC++开发环境为广大的Windows程序员所熟悉和喜爱,在开发驱动程序时,可以很好的应用以往的经验和技巧,提高了开发效率。(2)VisualC++提供了一个综合的开发平台,免去了DDK开发中编程和编译、连接分开进行的繁琐步骤。42 (3)可以使用vIsil8lc++的其他附加功能。(4)更加方便帮助功能来自于Visualc十十与MSDN(MicrosoftDeveloperNetwork)的完美结合,为开发者提供更多、更全面的各种帮助信息。但是仅仅使_c=}jVJsualc++是远远=_f==够的,还需要安装WINDOWS2000DDK(DeviceDriverKit)和DriverWorks。DDK是微软公司为开发设各驱动程序提供的专用开发包,它为设备驱动程序开发提供必要的函数库,可以使设备驱动程序与操作系统进行无缝结合,提高驱动程序的执行效率。OriverWorks是NuMega公司推出的驱动程序开发组件中的一个。DriverWorks对底层驱动进行了适当的封装.它类似于Visumc++编程中的MFC,使复杂的底层驱动函数变得容易理解与使用。本设计的开发环境就是建立在上述三个软件的综合开发环境基础上的,但是值得一提的是这三个软件的安装顺序很重要,必须先安装Visumc++,然后安装WINDOWS2000DDK,最后安装DriverWorks。如果不按此顺序安装,将不能正确生成设各驱动程序㈣。532驱动程序实现(1)生成驱动程序框架首先通过DriverWorks的DriverWizard生成PCI设备驱动程序框架.一共需要11个步骤,下面给出几个需要注意的步骤的图。图53添加基本信息 悄爱型塑堡箜S⋯Im⋯cesIInterheeB⋯ff『eIP⋯rJIⅡh⋯e⋯ces(Ⅱ一elicktoBdd⋯o⋯!塑!!!!!!!虫=I塑!!竺!:!!竺!!:.}AddmIkdd"^|!!:!!l!!:!:J—叫—!竺一—!叫图54蠕加资源!!!!!『!!!:}!!!:空I!竺!!I些!I图55添加控制代码如图5.3所示,表不当开始驱动程序的时候,添加基本信息,如公司供货号,设 备号。如图5.4所示,表示添加资源,通过此过程可以添加硬件资料、缓存、接口和电源管理。其中硬件资料中包括I/0端口、寄存器、中断请求(1KQ)和直接存储器存墩(MDA)。如图5.5所示,表示添加控制代码,通过输入输出端口可以和其它应用程序通信o.DriverWizard生成了两个类:设备驱动程序类和设备应用对象类。前者主要完成WDM的DriverEntry和AddDevice例程;后者主要完成与硬件交互的例程。(2)编写驱动程序一个完整的驱动程序包含许多例程,当操作系统遇到一个IRP时,它调用驱动程序中的相关例程来执行该IRP的各种操作。有些例程是必需的,如DriverEntry、AddDevice,还有DispatchPNP,DispatchPOWER和Dispatchl】l『MI等派遣函数。有些例程与要实现的功能有关,如需要对IRP排队的驱动程序一般都有一个Startlo例程,DMA传输的驱动程序应有一个AdapterControl例程。在驱动程序中主要完成了下列相关的例程。DriverEntry:NTSTATUSDriverEntry(INOUTPDRIVER_OBJECTDriverObject,INPUNICODE——STRINGRegistryPath)驱动程序的入口,负责程序的初始化。入口参数RegistryPath指向一个被枚举的Unicode信息串,此Unicode信息串指定了驱动程序注册表键的路径。DriverEntry中同时实现了设备的枚举功能,完成设备的添加及资源的分配。PCIDPDeviceControl:NTSTATUSPCIDPDeviceControl(INPDEVICE_OBJECTDeviceobject,INPIRPIrp)供I/O系统调用,完成相应的I/O控制功能。在驱动程序框架的基础上,完成驱动程序编写,其流程图如下。45

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

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

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