基于EPLD的PCI总线仲裁器的设计与实现
[11-20 16:14:20] 来源:http://www.88dzw.com FPGA 阅读:8201次
文章摘要:· 若总线不是处于空闲状态,有可能一个_GNT的撤消碰巧是另一个_GNT发出的同时,但如果是在空闲状态,则要求一个_GNT撤消到下一个_GNT的发出之间必须有一个时钟周期。否则可能会在AD线和PAR线上出现冲突;· 当_FRAME无信号时,_GNT可以在任意时间撤消,以便服务于另一个主设备,或者作为对相应的_REQ撤消的响应;· _GNT信号的每次发出,只限于相应的总线主控器可以使用总线进行一次总线操作。若该主控器还想做多次总线访问时,可以保持它的_REQ信号一直有效。此时,如果没有其它请求,或者当前的主控器具有最高优先权,仲裁器就会继续批准总线给当前主控器;·一个主控器可以在任意时刻撤消其_
基于EPLD的PCI总线仲裁器的设计与实现,标签:fpga是什么,fpga教程,http://www.88dzw.com· 若总线不是处于空闲状态,有可能一个_GNT的撤消碰巧是另一个_GNT发出的同时,但如果是在空闲状态,则要求一个_GNT撤消到下一个_GNT的发出之间必须有一个时钟周期。否则可能会在AD线和PAR线上出现冲突;
· 当_FRAME无信号时,_GNT可以在任意时间撤消,以便服务于另一个主设备,或者作为对相应的_REQ撤消的响应;
· _GNT信号的每次发出,只限于相应的总线主控器可以使用总线进行一次总线操作。若该主控器还想做多次总线访问时,可以保持它的_REQ信号一直有效。此时,如果没有其它请求,或者当前的主控器具有最高优先权,仲裁器就会继续批准总线给当前主控器;
·一个主控器可以在任意时刻撤消其_REQ信号,但要注意,_REQ信号一旦撤消,仲裁器将认为该设备不再请求使用总线,因而撤消其_GNT信号。若一个主控器只希望做一次总线传输,它应当在发出_FRAME的同一时钟周期撤消_REQ;
·如果当前的主控器在它的_GNT信号发出之后(_REQ也一直有效),持续16个空闲周期还没有开始总线操作,仲裁器就可以认为当前的主控器“已坏”。因而,仲裁器可以在任意时刻撤消_GNT信号,以便服务于一个优先级更高的设备。
4 优先级仲裁算法
为了合理地控制和管理系统中需要占用总线的数据源,PCI仲裁器必须实现一个特别的优先级仲裁算法,以便在多个设备同时提出总线占用请求时,能依据该仲裁算法判决出哪个设备应获得对总线的控制权。总线仲裁可以确保任何时刻总线上最多只有一个设备发送信息,而决不会出现多个主控器同时占用总线的情况。
由于总线仲裁算法从根本上说与PCI总线技术规范无关,所以设计者可以根据实际需要自由地进行选择和修改。但要注意,设计时必须为所选用的I/O控制器及接插卡提供所要求的访问延迟保证。
总线优先级仲裁算法通常有两种,一种是固定优先级算法,一种是循环优先级算法。但不管是哪一种仲裁算法,都必须满足以下三个基本要求:
· 每一时刻只能有一个设备作为总线主控器;
· 先请求者先响应,且在一个总线操作周期之内不被打断;
· 同一时刻有几个设备发出请求时,按优先级排序响应。
所谓固定优先级算法,就是指PCI总线中各主控器的优先级是事先确定好的,在仲裁器仲裁过程中固定不变;而循环优先级算法则不同,各主控器的优先级在仲裁器的仲裁过程中不是一成不变,而是根据一定规律发生变化的。
表1给出了采用循环优先级算法或固定优先级算法时,PCI总线仲裁器中N个主控器的优先级变化规律。
采用固定优先级算法,可以对那些有重要数据传输、或有大量实时数据传输以及经常需要占用总线的主设备赋予较高的优先权,以便有效地利用PCI总线周期。固定优先级算法的缺点是,它将规定每个PCI插槽的优先级,这也就规定了接插卡的插放次序,从而造成了使用上的不便。另外,固定优先级算法有时还会出现总线设备“撑死”和“饿死”的现象。相反,采用循环优先级算法则可以克服这种“饱饿”不均的弊端。在循环优先级算法中,由于其优先级随着每个总线周期动态地改变,各个设备在总线上的身份平等,获得总线占用权的机会均等。所以,在一定意义上来说,优先级循环是最公平的算法。循环优先级的缺点是当处理某些设备的大批量实时数据时会造成效率的降低。正因如此,在实际中,常常将这两种算法结合起来使用,以便构成更为灵活的仲裁机构。
《基于EPLD的PCI总线仲裁器的设计与实现》相关文章
- › 基于EPM7128设计的数据合并转换器
- › 基于EPLD的PCI总线仲裁器的设计与实现
- 在百度中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在谷歌中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在soso中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现
- 在搜狗中搜索相关文章:基于EPLD的PCI总线仲裁器的设计与实现