PCI总线仲裁器设计.doc

PCI总线仲裁器设计.doc

ID:61765579

大小:28.50 KB

页数:5页

时间:2021-03-19

PCI总线仲裁器设计.doc_第1页
PCI总线仲裁器设计.doc_第2页
PCI总线仲裁器设计.doc_第3页
PCI总线仲裁器设计.doc_第4页
PCI总线仲裁器设计.doc_第5页
资源描述:

《PCI总线仲裁器设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、PCI总线仲裁器设计一﹑PCI总线仲裁机制PCI的仲裁是基于设备访问,而不是基于时间分配的。在任一时刻,总线上的一个主设备要想获得对总线的控制权,就必须发出它的请求信号(PCIreqN),如果此刻该设备有权控制总线,总线仲裁器就使该设备的总线占用允许信号(PCIgntN)有效,进而获得总线的使用权。当有多个主设备同时发出总线控制请求时,就必须由仲裁器根据一定的算法判定,当前应该由哪个主设备获得控制权。二、仲裁算法常用的仲裁算法有:公平算法、循环算法等。本仲裁器设计采用的是循环算法,设备的优先级预先设定。目前的设计实现对四个PCI设

2、备请求的仲裁,各设备优先级由高到低安排为:设备0>设备1>设备2>设备3。系统启动伊始,没有设备使用PCI总线,也没有设备请求使用PCI总线,仲裁器总是设定设备0拥有总线控制权,即将总线停靠于设备0。此时设备0的PCIgntN是有效的。而在此之后,仲裁器总是指定PCI总线的最后一个使用者为总线的停靠设备。当有一个或多个设备提出拥有总线使用权的请求时,仲裁器将按照事先安排的设备优先级顺序逐一查询。对于只有一个设备请求的情况,该设备的请求将会马上得到响应;如果多个设备同时发出请求时,仲裁器裁定首先响应优先等级高的设备的请求,当此设备完

3、成数据传输交出总线使用权后,再由优先等级低的设备使用总线。示意框图见图2。如果一个设备已获得总线使用权并且正在进行地址、数据传输时,比它优先级别高的设备也发出了占用请求,仲裁器将会撤销优先级别低的设备的总线占用信号,并把总线使用权交给优先级别高的设备,同时还要确保在任一时刻不会出现多个设备同时占用总线的情况。具体见仿真分析。三、编程设计与实现5学海无涯本设计使用AHDL语言,在MaxplusII10.0上编译通过,并进行了仿真。1.仲裁器信号定义SUBDESIGNPCI_arb(--输入PCIclk:INPUT--PCI时钟Arb

4、iter_rstN:INPUT--复位信号PCIreqN[3..0]:INPUT--总线占用请求信号frameN:INPUT--数据交易的启动或开始,主设备发出irdyN:INPUT--交易数据准备好,主设备发出--输出PCIgntN[3..0]:OUTPUT--总线占用允许信号)frameN和irdyN决定了总线的状态,只要两个信号中的一个有效,就表明总线上有数据通过,总线处于忙状态;当两个信号都无效时,则总线处于空闲状态。2.仲裁器状态机定义parb_sm:MACHINEOFBITS(PARB2,PARB1,PARB0)WIT

5、HSTATES(PARB_SLT0=0,--PCIgnt0#有效,设备0拥有总线使用权,总线空闲PARB_SLT0D=1,--PCIgnt0#有效,数据在总线上传输,总线处于忙状态PARB_SLT1=2,--以下类同PARB_SLT1D=3,PARB_SLT2=4,PARB_SLT2D=5,PARB_SLT3=6,PARB_SLT3D=7);3.仲裁的实现5学海无涯由于采用循环算法,对每一个设备而言状态的变换都是相同的,下面仅以设备0的状态转换为例:CASEparb_smISWHENPARB_SLT0=>IF(!frameN#!i

6、rdyN#frameN&irdyN&PARBtout4)THENIF(!PCIreqN1)THENPCIgntN1=GND;parb_sm=PARB_SLT1D;ELSIF(!PCIreqN2)THENPCIgntN2=GND;parb_sm=PARB_SLT2D;ELSIF(!PCIreqN3)THENPCIgntN3=GND;parb_sm=PARB_SLT3D;ELSEPCIgntN0=GND;parb_sm=PARB_SLT0D;ELSEPCIgntN0=GND;parb_sm=PARB_SLT0D;ENDIF;WHENP

7、ARB_SLT0D=>PCIgntN0=GND;IF(frameN&irdyN)THENparb_sm=PARB_SLT0;ELSEParb_sm=PARB_SLT0D;ENDIF;5学海无涯为了避免AD线上和PAR线上出现时序竞争,一个设备的PCIgntN信号有效和另一个设备的PCIgntN的撤销,如果不是在总线空闲状态,则两者之间至少要有一个时钟的延迟。设计中,将每个设备占用总线的状态分为两部分,PARB_SLTx(总线空闲)和PARB_SLTxD(总线忙);状态机不能从一个设备的PARB_SLTxD状态直接转到另一个设备的P

8、ARB_SLTyD状态,中间必须经过至少一个时钟的PARB_SLTx状态的衔接,这样就避免了总线上竞争的出现。代码中,PARBtout为一5位计数器,对PCI时钟个数进行计数,用来判别设备发出请求信号后是否在规定时间内(16个时钟,即PARBtou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。