为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

PCI总线仲裁器的设计与实现

2017-10-31 3页 doc 14KB 10阅读

用户头像

is_594886

暂无简介

举报
PCI总线仲裁器的设计与实现PCI总线仲裁器的设计与实现 PCI总线仲裁器的设计与实现 摘要: 基于Altera的CPLD器件的PCI总线仲裁器设计,实现仲裁器的AHDL编程,并结合仿真结果对PCI总线的仲裁进行了论述。 关键词: PCI仲裁器,CPLD,仿真 PCI总线仲裁器通常是集成在PCI芯片组中。随着计算机应用的深入,尤其是嵌入式系统的不断发展,集成的仲裁器难以满足某些场合的应用。而采用CPLD技术实现的独立的PCI总线仲裁器,则较好的适应了这方面的需求。 一)PCI总线仲裁机制 PCI的仲裁是基于设备访问,而不是基于时间...
PCI总线仲裁器的设计与实现
PCI总线仲裁器的与实现 PCI总线仲裁器的设计与实现 摘要: 基于Altera的CPLD器件的PCI总线仲裁器设计,实现仲裁器的AHDL编程,并结合仿真结果对PCI总线的仲裁进行了论述。 关键词: PCI仲裁器,CPLD,仿真 PCI总线仲裁器通常是集成在PCI芯片组中。随着计算机应用的深入,尤其是嵌入式系统的不断发展,集成的仲裁器难以满足某些场合的应用。而采用CPLD技术实现的独立的PCI总线仲裁器,则较好的适应了这方面的需求。 一)PCI总线仲裁机制 PCI的仲裁是基于设备访问,而不是基于时间分配的。在任一时刻,总线上的一个主设备要想获得对总线的控制权,就必须发出它的请求信号(PCIreqN),如果此刻该设备有权控制总线,总线仲裁器就使该设备的总线占用允许信号(PCIgntN)有效,进而获得总线的使用权。当有多个主设备同时发出总线控制请求时,就必须由仲裁器根据一定的算法判定,当前应该由哪个主设备获得控制权。 二、仲裁算法 常用的仲裁算法有: 公平算法、循环算法等。 本仲裁器设计采用的是循环算法,设备的优先级预先设定。目前的设计实现对四 设备请求的仲裁,各设备优先级由高到低安排为: 个PCI 设备0 设备1 设备2 设备3。 系统启动伊始,没有设备使用PCI总线,也没有设备请求使用PCI总线,仲裁器总是设定设备0拥有总线控制权,即将总线停靠于设备0。此时设备0的PCIgntN是有效的。而在此之后,仲裁器总是指定PCI总线的最后一个使用者为总线的停靠设备。 当有一个或多个设备提出拥有总线使用权的请求时,仲裁器将按照事先安排的设备优先级顺序逐一查询。对于只有一个设备请求的情况,该设备的请求将会马上得到响应;如果多个设备同时发出请求时,仲裁器裁定首先响应优先等级高的设备的请求,当此设备完成数据传输交出总线使用权后,再由优先等级低的设备使用总线。示意框图见图2。 如果一个设备已获得总线使用权并且正在进行地址、数据传输时,比它优先级别高的设备也发出了占用请求,仲裁器将会撤销优先级别低的设备的总线占用信号,并把总线使用权交给优先级别高的设备,同时还要确保在任一时刻不会出现多个设备同时占用总线的情况。具体见仿真。 三、编程设计与实现 本设计使用AHDL语言,在MaxplusII 10.0上编译通过,并进行了仿真。 1.仲裁器信号定义SUBDESIGN PCI_arb( -- 输入PCIclk : INPUT -- PCI时钟 Arbiter_rstN : INPUT -- 复位信号 PCIreqN[3..0] : INPUT -- 总线占用请求信号 frameN : INPUT -- 数据交易的启动或开始,主设备发出 irdyN : INPUT --交易数据准备好,主设备发出 -- 输出 PCIgntN[3..0] : OUTPUT -- 总线占用允许信号 ) frameN和irdyN决定了总线的状态,只要两个信号中的一个有效,就表明总线上有数据通过,总线处于忙状态;当两个信号都无效时,则总线处于空闲状态。2.仲裁器状态机定义parb_sm : MACHINE OF BITS ( PARB2 , PARB1 , PARB0 ) WITH STATES ( 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.仲裁的实现 由于采用循环算法,对每一个设备而言状态的变换都是相同的,下面仅以设备0的状态转换为例: CASE parb_sm IS WHEN PARB_SLT0 = IF ( !frameN # !irdyN # frameN irdyN PARBtout4 ) THEN IF ( !PCIreqN1 ) THEN PCIgntN1 = GND; parb_sm = PARB_SLT1D; ELSIF ( !PCIreqN2 ) THEN PCIgntN2 = GND; parb_sm = PARB_SLT2D; ELSIF ( !PCIreqN3 ) THEN PCIgntN3 = GND; parb_sm = PARB_SLT3D; ELSE PCIgntN0 = GND; parb_sm = PARB_SLT0D; ELSE PCIgntN0 = GND; 。
/
本文档为【PCI总线仲裁器的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索