总线的组成突发传送?

  在现代数据采集及处理系统ΦISAEISA、MCA 等扩展总线的组成已无法适应高速数据传输的要求,而PCI 局部总线的组成以其优异的性价比和适应性成为大多数系统的主流总线的组荿目前开发PCI 接口大体有两种方式,一是使用专用的PCI 接口芯片可以实现完整的PC1主控模块和目标模块接口功能,将复杂的PCI 总线的组成接口轉换为相对简单的用户接口用户只要设计转换后的总线的组成接口即可。虽然缩短了开发周期但缺点是可能只用到部分PCl接口功能,这樣就造成了一定的逻辑资源浪费而且也缺乏灵活性,还可能增加板上的组件导致产品成本的增加和可靠性的降低。二是使用可编程器件FPGA

  采用FPGA 的优点在于其灵活的可编程性。

  首先PCI 接口可以依据插卡功能进行最优化而不必实现所有的PCI 功能,这样可以节约系统的邏辑资源并且用户可以将PCI 插卡上的其他用户逻辑与PCI 接口逻辑集成在一个芯片上,实现紧凑的系统设计当系统升级时,只需对可编程器件重新进行逻辑设计而无需更新PCB 电路板。

  现在已经有越采越多的用户使用可编程器件如FPGA、CPLD等进行PCI设备的开发本文所论述的PCI 从设备接口控制器是作为一个转换接口工作干PCI 总线的组成与用户设备之间,其主要功能是完成用户设备与PC1总线的组成间的信息传送

  PCI 总线的組成接口信号如图1 所示。

  其中CLK_p 是系统时钟时钟频率有33 MHz和66 MHz 两种。RSTn_p 是系统复位信号AD_p(31:0)是地址、数据复用总线的组成。PCI 总线的组成传輸采用命令驱动的方式总线的组成命令的作用是用来规定主、从设备之间的传输类型,出现在地址期的CBE_p(3:0)上在这个时期,主设备通過驱动PCI 地址/数据总线的组成上分配范围的起始地址来识别从设备同时主设备通过驱动传输类型给4 位宽PCI 命令/字节使能信号线而识别传输类型。由于主设备仅在PCI 一个时钟周期内发出起始地址和传输类型所以每个PCI 从设备都有责任在时钟的下一个上升沿锁存地址线上的地址和命囹/字节信号以便顺序译码,通过对已被锁存的地址和命令/字节使能信号进行译码目标设备能够确定自己是否是主设备所要进行传输的设備。假如某个从设备发现自己正是主设备所要求的进行数据传输的那个从设备就必须通过有效DEVSELn_p 设备选择信号线进行数据传输。假如主设備在一个规定的时间段没有采样到有效的DEVSELn_p那么这次的传输请求失败。假使主设备采样到有效的DEVSELn_p在地址期结束后进入数据期,即地址/数據总线的组成成为数据总线的组成用于在每个数据期传送数据,则从设备负责锁存起始地址并在每个后继数据传送中自动递增

  PCI 总線的组成的突发传输方式是PCI 总线的组成的基本传输方式,也是其特点之一突发传输周期由一个地址期和一个或多个数据期组成,PCI 支持存儲器空间和I/O 空间的突发传输方式突发传输方式由PCI 桥来实现,在不产生副作用的前提下它可以把对存储器的多次访问合并为一次访问PCI桥鈳利用初始化软件配置时所提供的地址范围来区别能不能合并。一个PCI 设备可以将自己的基址寄存器预取为1表明允许PCI桥进行预读和合并写數据。对于PCI 桥来说当遇到要写的数据是不可预取的时则在PCI 桥缓冲器的数据合并操作必须停止,并将以前的合并结果清除进行正常的非突发传输方式。实际上只要处理器发出的一系列写数据所隐含的地址顺序相同主桥总是可以将它们组合成为突发数据传输方式。其他具體要求可参考PCI2.2版本的协议

  本文所实现的PCI 主要控制有I/O 的读/写、内存的读/写、配置读/写、突发传输模式等16项操作,模块设计框图如图2 所礻

  利用Aldec 的Active-HDL8.1 软件,采用框图设计顶层文件实现结果如图3 所示。

  其中极性产生器包含在接口模块里,关于PCI 寄存器的配置参数利鼡PACKAGE 进行统一设置

  依据设计图,对其中的部分设计进行仿真关于命令寄存器与地址计数器模块,根据CBE_p(3:0)来设定工作模式其中突發工作模式主要由Din(1:0)来确定,各种工作模式的设定时刻由FRAMEnd来确定工作时,FRAMEnd由高向低变化产生命令判断信号然后根据CBE_p 的值译码出工作模式,送给相应的信号本次仿真是由内存读命令到内存写命令,然后是配置写命令的仿真过程在FRAMEnd 变低的下一个时钟上升沿进行判断,並把命令字付给Command 信号仿真结果如图4 所示。

  极性产生器主要是根据ADo 和CBEi 产生极性标志信号NEW_PARo其中RESET 是复位信号,CE_Ado是使能信号仿真波形如圖5 所示。

  极性校验器主要用来做接口配置、配置寄存器设置信号逻辑相对复杂。极性校验器仿真波形如图6所示其中DET_PERR、SIG_SERR送给配置寄存器模块,NEW_OTPERR、NEW_PERRno、NEW_SERRno送给I/O接口模块

  基于FPGA的PCI接口设计经验证是可行的,同时可以充分利用原系统中FPGA 的资源这对减少系统的组件,提高系統可靠性有很大益处通过这次尝试,对PCI 接口协议有了深入的认识为了使基于FPGA 的PCI 接口设计实用化,后续还需要进行用户逻辑与接口的封裝等工作以及驱动程序等应用软件的编写。

参考资料

 

随机推荐