基于EPLD的PCI总线仲裁器的设计与实现
[11-20 16:14:20] 来源:http://www.88dzw.com FPGA 阅读:8201次
文章摘要:5 仲裁器的EPLD编程设计下面以支持5个总线主控器的PCI总线仲裁器为例,给出采用Altera公司的EPLD进行功能实现的主要设计思路,其中,所用编程语言为Altera公司的AHDL语言。该仲裁器采用循环优先级仲裁算法,且总线的缺省拥有者指定为最后一次使用总线的主设备。5.1 PCI总线的状态机PCI总线的状态机包括三种基本状态:无任何总线请求(NO_REQ)、等待周期(WAIT_CYCLE)和帧信号_FRAME的撤消(FRAMED)。其中,_FRAME信号的撤消,意味着当前的总线操作将进入最后一个数据传输周期,此时,_IRDY有效,一旦 _TRDY也有效最后一个数据传输周期就可完成。而判
基于EPLD的PCI总线仲裁器的设计与实现,标签:fpga是什么,fpga教程,http://www.88dzw.com5 仲裁器的EPLD编程设计
下面以支持5个总线主控器的PCI总线仲裁器为例,给出采用Altera公司的EPLD进行功能实现的主要设计思路,其中,所用编程语言为Altera公司的AHDL语言。该仲裁器采用循环优先级仲裁算法,且总线的缺省拥有者指定为最后一次使用总线的主设备。
5.1 PCI总线的状态机
PCI总线的状态机包括三种基本状态:无任何总线请求(NO_REQ)、等待周期(WAIT_CYCLE)和帧信号_FRAME的撤消(FRAMED)。其中,_FRAME信号的撤消,意味着当前的总线操作将进入最后一个数据传输周期,此时,_IRDY有效,一旦 _TRDY也有效最后一个数据传输周期就可完成。而判断_FRAME是否撤消的具体方法就是判断_FRAME是否出现从低到高的上跳变。图2所示即为PCI总线的状态机。图中,TIME_OUT为从_GNT发出到_FRAME变为有效所允许的PCI总线周期数。
5.2 PCI总线仲裁器的状态机
由于此仲裁器最大支持5个PCI总线主控器,所以,需定义5个状态Master0、Master1、Master2、Master3、Master4用来区分当前是哪一个主控器占用总线。至于仲裁器的仲裁状态什么时候应该发生变化则由总线状态机的状态决定,具体如下:当总线状态机处于FRAMED状态,表明在最后一个数据传输周期结束后,它将释放PCI总线,此时,仲裁器便可撤消对它的_GNT信号,以便去服务于另一个主控器;当总线状态机处于NO_REQ状态,此时,需要由仲裁器来指定一个缺省的总线占用者;当总线状态机处于WAIT_CYCLE状态,且允许该设备占用总线的时间限制已到(Timeout),这时仲裁器也将撤消对它的_GNT信号,以便服务于其它的主设备。所以,若用EnChange来代表允许仲裁器仲裁状态发生变化的条件,则采用AHDL语言的具体编程如下:
EnChange=(EnCHstate ==FRAMED)#(eNchSTATE == no_req)#(TimeOut[]==TIME_OUT)
该仲裁器中,由于采用循环优先级算法,仲裁器从每一种仲裁状态转换到其它仲裁状态的方法都是一样的,所以,下面只给出了仲裁器的仲裁状态为主控器1时向其它仲裁状态的转换机理(如图3所示)。另外,若仲裁器在刚启动时处于无效状态,则强制状态机在下一个时钟转换到Master0态。
5.3 总线允许信号_GNTi(低电平有效)的建立
在PCI对话中,由于_FRAME 和 _IRDY决定着总线的忙/闲状态。两者之中只要有一个信号成立,总线就处于忙碌状态;当两个信号都无效时,总线才处于空闲状态。所以建立_GNTi的具体编程如下:
!_GNTi=(GNTstate==Masteri)&GLOBAL(_PCIrst)&!MaskGNT;%式中,MaskGNT=_FRAME&_IRDY%
总之,本文介绍的PCI总线仲裁器,由于采用单片EPLD即可实现,所以它具有系统结构简单、成本低、可靠性高、在线修改方便及升级容易等特点。目前,采用该仲裁器的PCI高速总线背板已应用在我们研发的总线型高性能网络交换机系列中。经过近两年的实际运行表明,仲裁器工作正常,性能稳定可靠。
《基于EPLD的PCI总线仲裁器的设计与实现》相关文章
- › 基于EPM7128设计的数据合并转换器
- › 基于EPLD的PCI总线仲裁器的设计与实现
- 在百度中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在谷歌中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在soso中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在搜狗中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现