现代雷达信号处理具有数据量大、实时性高级特色,而总线传输的功率决议了体系的功用,现在遍及运用规范化的PCI总线技能,以便晋级更新。为加速产品开发和下降规划难度,一般有两种解决方法:选用通用的PCI芯片或IP核。现在常用的PCI芯片如PCD054、PCD052等尽管功用安稳、运用方便,但它们只适用33 MHz、32位总线接口,受时序规划和应用程序功率等影响,总线传输速度约安稳在70 MB·s-1;运用IP核虽能够兼容66 Hz、64位总线且节约板卡面积,但其价格昂贵不利于高校及中小企业推行运用。而PCI9656适用于66 MHz、64位的PCI总线,因而逐步成为总线开发的干流元器件,使得总线传输速度到达了150 MB·s-1乃至更高。
本文运用高效PCI芯片和FPGA规划了一款64位总线传输接口电路,传输速度到达212 MB·s-1,较以往总线传输速度有了较大地进步,满意了现在高速数据传输体系的要求。
1 PCI总线接口架构
本体系首要由PCI9656和FPGA构成,体系框图如图1所示。当主机建议读写操作时PCI9656需求呼应其操作,并将相应指令发送到FPGA进行处理,FPGA进行处理后将数据和指令经过PCI9656回传给主机。PCI9656与主机之间的通讯需求相应的设备驱动程序支撑,而FPGA呼应主机指令则需求装备相应的部分时序。因而,本规划首要的作业为设备驱动程序的开发和FPGA部分时序的规划。
2 PCI9656功用概述
PCI9656是PLX公司推出的一款兼容32位和64位PCI总线规范的桥接芯片,选用PLX数据流水线结构(Data Pipe Architecture),内部配有DMA操控器、可编程主形式传输及从形式传输;内部有PCI优先判定器,能够支撑外部7个外部主控器;可由本地间断信号LINTi和LINTo生成一个PCI间断信号INTA;本地时钟独立于PCI时钟作业;支撑位宽为8位、16位和32位的66,MHz本地总线。PCI9656寄存器与PCI9054寄存器兼容,可容易地进行依据32位PCI总线与依据64位PCI总线的软件移植。
PCI 9656具有6条独立的数据通道,别离支撑Direct Master、Direct Slave以及DMA功用形式下的数据传输。
(1)Direct Master形式。用于部分总线到PCI(CompactPCI)的数据传输,主控设备在部分总线端。16 QWord(128 Byte)和32 QWords(256Byte)的FIFO各应用于数据的读、写通道。
(2)Direct Slave形式。用于PCI(CompactPCI)到部分总线的数据传输,主控设备在PCI端。16QWords(128 Byte)和32 QWords(256 Byte)的FIFO各应用于数据的读、写通道。
(3)DMA形式。DMA传输时PCI9656一起是PCI和部分总线的主控设备,PCI 9656有两条DMA通道(Channel 0、Channel 1),每条通道都由一DMA操控器和32 QWords(256 Byte)双向FIFO组成。其DMA方法有惯例的块形式(Block Mode)、集散形式(Scatter/Gather Mode)和指令形式(Demand Mode)。
在部分总线端,依据不同的处理器PCI9656有3种作业形式。
(1)M形式。支撑Motorola 32 bit的处理器,供给了可与MPC850/860 PowerQUICC直接相连的接口。
(2)C形式。合适大多数处理器的通用形式,比方常用的FPGA,在本规划中选用此形式。
(3)J形式。与C形式类似,但其地址线与数据线复用。
3 总线设备驱动开发
在Windows环境下开发PCI设备驱动程序首要有两种模型,即WinDriver和WDM。本规划运用了WDM驱动模型。开发PCI设备驱动程序WDM需求处理:硬件拜访、间断处理和DMA传输3方面问题。
3.1 硬件拜访
X86处理器有两种独立的映射空间:I/O空间和内存空间,I/O空间只能经过I/O指令来拜访,KIoRange类封装了对I/O空间的操作指令。关于规划的PCI设备,能够经过实例化KIoRange类来对I/O空间进行相应的操作。
关于PCI设备能够运用KMemoryRange类对内存进行相应操作,详细操作与KIoRange类对I/O空间的操作类似。
3.2 间断处理
驱动程序运用KInterrupt类来完结对间断操作的处理,其间包含间断的初始化、将一个间断服务例程衔接到一个间断和免除其衔接等。
间断服务例程不是KInterrupt类的成员函数,这是为了削减间断推迟时间。间断处理需求间断服务例程和推迟进程调用例程,在间断服务例程中,首要判别该间断是否是自己设备发生的,若不是,则回来False;若是,则恳求一个推迟进程调用例程(DPC)。
3.3 DMA传输
PCI9656运用DMA方法进行数据传输。完结DMA传输需求3个类:KDmaAdapter,KDmaTransfer和KCommonDmaBuffer。其间,KDmaAdapter类用于树立一个DMA适配器,它说明晰DMA通道的特性,如总线宽度,单次传输最大个数等,需求留意的是本设备运用的是64位总线宽度,因而需求特别指出;KDmaTransfer类用于DMA传输操控,如传输开端、传输字节数等;KCommonDmaBuffer类用于请求体系供给的公共缓冲区。详细DMA传输设置如下
OnDmaReady例程中获取传输的物理内存的地址和字节数,然后设置相应的DMA寄存器值开端DMA传输。DMA传输完毕后,应使m_CmxentTm-nsfer无效并删去。详细流程如图2所示。
4 部分总线端规划
本规划中,部分总线端选用了C形式。C形式下可装备3种数据传输方法:单周期方法(Single Cycle Mode)、4字方法(Brust-4 Mode)和接连突发传输方法(Continuous Mode),在本规划中选用了接连突发方法,能够有用地进步输出功率。
PCI9656在部分总线为为主设备,一直占用部分总线,部分总线端的FPGA一直呼应PCI9656的操作。计划中运用PCI9656的DMA传输形式,在本地端不需求进行地址译码,因而能够对PCI9656的操控信号进行简化处理,PCI9656的部分端首要操控信号如下
ADS#:一次总线拜访开端;
Blast#:总线拜访完毕;
LW/R#:读写操控信号;
Ready#:从设备准备好信号,有用时表明总线拜访进行中;
LHOLD:PCI9656占用本地总线请求信号;
LHOLDA:占用本地总线应对信号;
Wait#:主设备传输暂停信号;
EOT#:数据传输反常间断信号,用于FIFO溢出或空时间断数据传输;
Lint#:用于引起CompaetPCI总线端的间断信号;
LRST#:本地总线复位信号;
CCS#:装备寄存器挑选信号。
在DMA传输进程中首要关怀的信号可简化为:ADS#、Blast#、LW/R#、Ready#、LHOLD、LHOLDA,如图3所示。
图3中,lclk为本地总线时钟,当PCI9656要建议一次DMA操作时,先发送lhold信号请求本地总线,若本地总线闲暇则FPGA宣布lholda信号呼应PCI9656,然后PCI有用ads_n信号以示总线传输开端,FPGA使ready_n有用以示总线传输正在进行中,此刻本地数据经过部分数据线传送到PCI总线,或着数据由PCI总线传送到部分逻辑。一次传输完毕时PCI使blast_n信号有用并使lhold信号无效,然后FPGA使lholda信号和ready_n信号无效,一次DMA传输完结。传输中若是DMA读操作则lwr信号拉低,若为写操作则拉高。
本地总线位宽为32位,因而本地总线理论速度为264MB·s-1,因为应用程序的功率问题和传输中一些无效状况的存在,现在PCI总线均匀速率到达212 MB·s-1,能够满意现在高速数据收集、传输对总线传输速度的要求。
PCI9656本地总线时序规划中需求留意blast_n信号有用说明为突发传输最终一个时钟周期,此刻ready_n信号依然为有用,不然会形成总线等候;在正常读写拜访中CCS#信号应置高,不然总线拜访将指向装备空间而非内存或I/O空间。
5 完毕语
运用PCI9656和FPGA完结了一种高速PCI总线接口,较全面地论说了总线驱动开发和部分时序规划的进程。这种规划进步了总线传输速度,为高速数据收集体系的完结发明了条件。