《嵌入式系统中PCI总线仲裁器的设计与实现.docx》由会员分享,可在线阅读,更多相关《嵌入式系统中PCI总线仲裁器的设计与实现.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统中PCI总线仲裁器的设计与实现ronggang导语:描绘了PCI总线仲裁的原理和仲裁算法,阐述了用可编程器件实现总线仲裁的详细方法,并实现了一个双主设备仲裁器PCIPeripheralComponentInterconnect总线是现今最为流行的工业控制总线之一。它广泛地应用在计算机中,并且由于诸多厂商对PC的良好支持,使得目前嵌入式设备中的很多解决方案都包含了PCI总线。在多主设备的PCI系统应用中,必须为各个主设备提供仲裁受权信号。很多厂家有针对性地发布了PCI仲裁逻辑的专用芯片或集成了PCI仲裁逻辑的专用芯片,但使用不够灵敏。为了使PCI设备可以更方便地应用在嵌入式系统中,本文
2、介绍了一种基于CPLD复杂可编程逻辑器件的PCI总线仲裁器的设计方法。此方法可以为系统量身定制合适于系统本身的PCI总线仲裁器,而不必局限于特定芯片的要求,在体积、功能、本钱等众多方面都有很好的应用前景。1PCI总线仲裁简介1.1PCI总线的仲裁原理PCI总线是一种分享式的总线,可以连接多个主设备,但由于数据传输的独占性,每一时刻只能由一个主设备占用总线。因此,为了有效地利用PCI总线带宽,必须设置一个总线仲裁器,按照一定的算法协调系统中各个主设备的操纵。每个具备主设备功能的PCI设备必须提供两个与仲裁有关的信号:REQ#和GNT#。其中REQ为恳求总线信号,由需要提议PCI传输事务的设备发出
3、;GNT#为总线受权信号,由PCI总线仲裁器裁决后给出。接到GNT#信号的PCI设备将在下一次总线空闲后开场操纵。PCI总线仲裁的裁决经过可以在PCI传输期间完成,并不占用PCI总线的带宽,这称为隐式仲裁。即需要提议PCI操纵的设备可以随时发出恳求REO,PCI仲裁器立即批准该恳求并给出GNT。但是真正的传输操纵一定要等到当前传输完成,即总线空闲后才可以开场。图l描绘了PCI总线设备与仲裁器的关系。1.2PCI总线仲裁规那么约定1仲裁器的仲裁算法必须保证所有的设备都能得到受权的时机,否那么将会出现某个优先级低的设备永远不能占有总线进展事务操纵的情况。2假如FRAME无效,GNT可以在任意时间撤
4、消,以便效劳于另一个主设备或作为对主设备撤销REQ的响应。3假如GNT信号被撤消但FRAME有信号,当前的总线正在传输数据,那么操纵正当。4假如总线不处于空闲状态,那么允许一个GNT的撤消和另一个GNT的发生在同一个周期。假如处在空闲状态,那么要求一个GNT撤消到下一个GNT的发出之间必须有一个时钟周期间隔,否那么可能会在AD线和PAR线上出现冲突。5GNT信号的每次发出,只限于相应的总线主控器可以使用总线进展一次总线操纵一个FRAME发出到撤销。假如该主控器需要屡次总线访问,它可以保持REQ信号一直有效。仲裁器会按照特定的仲裁算法来决定是否仍判给该主设备。6一个主控器可以在任意时刻撤消其RE
5、Q信号。REQ信号一旦撤消,仲裁器将以为该设备不再恳求使用总线,因此撤消其GNT信号参考上文1。假如一个主控器只希望做一次总线传输,那么它应当在发出FRAME的同一时钟周期撤消REQ。7假如当前的主控器在它的GNT信号发出后,持续16个空闲周期还没有开场总线操纵,那么仲裁器视其为超时,仲裁器可以在任意时刻撤消GNT信号,以便效劳于另一个设备。1.3PCI总线仲裁的算法目前,应用于PCI总线总裁的算法主要有固定优先级算法和动态优先级算法两种。在固定优先级算法中,各个设备的优先级是事先确定好的,仲裁器针对事先设定好的优先级为每个设备分配使用权。这种算法的缺点是:一旦PCI总线事务非常繁忙,优先级高
6、的设备会占有总线不放,将导致优先级低的设备无法申请到总线。可见这是一种并不公平的算法,只适用于总线利用率非常低的情况。动态优先级算法是在每次仲裁受权后动态改变各个设备的优先级。在保证每个设备都有时机获得总线的情况下,优先级改变的算法可以是各种各样的。最常用的是循环优先级算法,即每次仲裁受权后将排队中的设备优先级加l。因其算法简单,且对大局部应用都特别有效,本设计采用循环优先级算法。1.4总线停靠当PCI总线空闲时,一个设备从申请总线到被受权使用,最少也需要2个时钟周期,这对于PCI总线是一种浪费。因此仲裁器通常选中一个最经常占用总线的设备,在PCI总线空闲时将GNT#赋予它,这叫做总线停靠。当
7、总线空闲时,该设备需要占用总线时可马上得到批准。2双主设备PCI总线仲裁器的实现下面描绘了一个具有两个设备的总线仲裁器的硬件实现,其一为TriMedia嵌入式DSPCPUPNXl300,其二为Inteli82559网络控制器。系统构造如图2所示。为设计方便起见,在程序中设计三类状态机:总线状态状态机、总线主设备查询状态机、仲裁状态机。2.1总线状态状态机总线状态状态机用于记录总线事务的状态.定义如下:typebus_stateisIDLE,BUSY,LAST_DATA,FINISH四种状态分别表示总线空闲、忙、最后一个数据传输期以及传输完成。状态图如图3。下面是以VHDL代码形式实现的该状态机
8、的状态转换关系。2.2总线主设备查询状态机总线主设备查询状态机用来决定当前是否需要重新指定一个主设备。重新指定一个主设备的条件是:1当前被受权的设备已开场传输;2当前被受权的设备没有开场传输并且超时。将主设备查询状态分为IDLE、GNTl、GNT2、WAIT_NOBUSY和WAIT_BUSY2五个状态,并设置计数器count。当总线上某个设备被受权,但16个周期仍然没有开场操纵,count超过16,被视为超时,仲裁器可以撤销其仲裁受权,并转授其他设备。程序根据这个状态机的输出结果断定仲裁状态机是否改变。状态转换如图4所示,状态机描绘的VHDL代码略。该状态机的驱动条件是由总线状态状态机的输出结
9、果busbusy、仲裁状态机的状态idie,park和计数器产生的超时信号timeout组成。设置WAIT_BUSY2的目的是为了防止可能会在AD线和PAR线上出现的冲突。该状态机的输出search_master作为仲裁状态机状态转换使能信号,只有该信号有效时,仲裁状态机才进展当前状态的改变。2.3仲裁状态机仲裁状态机表示总线仲裁器的状态,定义如下:typearbiter_stateisIDLE,DEVl,DEV2,PARK;当主设备查询状态机输出使能信号search_master时,导致仲裁状态机的状态改变。状态转变经过如图5所示,状态机描绘的VHDL代码略。仲裁器根据仲裁状态机当前状态控制
10、仲裁受权信号GNT的给出。注:PARKMASTER是事先设置的停靠状态。2.4仿真波形图由图6可以看出,测试文件模拟了一个设备申请和两个设备同时申请的情况,并给出了总线受权信号GNT,验证了仲裁器逻辑的正确性。2.5资源占用情况分析可编程逻辑器件使用Lattice公司的ispLSI2064E-135LTl00,在ispLever中综合本例程序,结果如表2。综合后的延迟分析显示,该逻辑的时钟周期最小为7.5ns,即该逻辑可以运行在133MHz以下的系统中,完全可以胜任33MHzPCI总线的仲裁工作。本PCI总线仲裁器已成功地应用在基于PNXl300的IP会议电视终端系统中,用于处理嵌入式CPUPNXl300和网络控制器182559的总线占用仲裁。该会议电视终端已于2005年1月在国家泰尔实验室通过测试并获得入网答应证。