使用VHDL程序启用pci总线仲裁核

文章作者:Antonio Di Rocco

在本文中,我们提出一个简单的VHDL程序,使微处理器或dsp作为pci总线主程序。

这个设计思想处理了一个PCI 2.2总线仲裁器的VHDL实现。

任何PCI系统都可能有一个或多个PCI-master设备。大多数设备可以作为目标主机运行,但是必须有一个是pci总线启动器,或者主机。通常,只有微处理器或高级dsp同时执行PCI主模式和目标模式,而且它们可能包括一个PCI仲裁器。清单是一个简单的VHDL程序。它根据每个PCI设备的预先确定的优先级,通过使能存取到PCI总线来执行一个仲裁功能。PCI-仲裁核心接口与33和66MHz的PCI系统,支持多达6个PCI总线主机,支持“总线停车”,支持纯粹的旋转仲裁方案,支持总线延迟和破碎的主机,是一个没有FGPA或pld库知识产权的综合VHDL源。

(pci总线仲裁者)
*这个基于PLD/ fpga的pci总线仲裁器基于一个简单的旋转优先级方案授予总线请求

PCI总线支持一个以上的主设备。如果只有一个主服务器请求总线,该主服务器立即获得授权。如果几个设备同时要求使用PCI总线来执行数据传输,它们断言它们的请求信号,REQ_N,它们断言它们的请求信号,REQ_N,到仲裁器。具有最高优先级的将获得GNT_N授权。在此之后,优先级第二高的那个拥有最高的优先级,以此类推。PCI_RST断言将仲裁器的优先移位寄存器重置到设备0。

PCI总线在AD总线和C/BE线路上没有上拉。为了避免这些信号长时间浮动,PCI设计必须实现总线停车,这意味着在总线空闲状态下,一个主设备驱动AD总线和C/BE线路万博投注网址。仲裁人选择哪位主人将成为公园主人。仲裁程序断言公园管理员的GNT_N,即使公园管理员没有断言REQ_N。VHDL代码中的常量“Bus_parker”定义了公园主节点。当一个设备能够访问PCI总线后,这个设备必须在16个PCI时钟周期内启动总线访问。如果这个启动没有发生,设备失去总线授权,下一个最高优先级的设备得到总线。为了检查总线延迟,仲裁必须检查信号帧和IRDY_N。pci -仲裁核心适合任何PLD或FPGA,并消耗很少的资源。
本文是编辑们选择再版的设计思路。

关于作者:Antonio Di Rocco贡献了这篇文章。
它于2007年9月13日首次在EDN.com上发表。

留下你的评论