ImageVerifierCode 换一换
格式:DOCX , 页数:4 ,大小:17.09KB ,
资源ID:4000828      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4000828.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PCI总线仲裁器的设计与实现.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、PCI总线仲裁器的设计与实现PCI总线仲裁器的设计与实现摘要:基于Altera的CPLD器件的PCI总线仲裁器设计,实现仲裁器的AHDL编程,并结合仿真结果对PCI总线的仲裁进行了论述。 关键词:PCI仲裁器,CPLD,仿真 PCI总线仲裁器通常是集成在PCI芯片组中。随着计算机应用的深入,尤其是嵌入式系统的不断发展,集成的仲裁器难以满足某些场合的应用。而采用CPLD技术实现的独立的PCI总线仲裁器,则较好的适应了这方面的需求。 一PCI总线仲裁机制 PCI的仲裁是基于设备访问,而不是基于时间分配的。在任一时刻,总线上的一个主设备要想获得对总线的控制权,就必须发出它的请求信号,如果此刻该设备有

2、权控制总线,总线仲裁器就使该设备的总线占用允许信号有效,进而获得总线的使用权。当有多个主设备同时发出总线控制请求时,就必须由仲裁器根据一定的算法判定,当前应该由哪个主设备获得控制权。 二、仲裁算法 常用的仲裁算法有:公平算法、循环算法等。 本仲裁器设计采用的是循环算法,设备的优先级预先设定。目前的设计实现对四个PCI设备请求的仲裁,各设备优先级由高到低安排为:设备0 设备1设备2设备3。 系统启动伊始,没有设备使用PCI总线,也没有设备请求使用PCI总线,仲裁器总是设定设备0拥有总线控制权,即将总线停靠于设备0。此时设备0的PCIgntN是有效的。而在此之后,仲裁器总是指定PCI总线的最后一个

3、使用者为总线的停靠设备。 当有一个或多个设备提出拥有总线使用权的请求时,仲裁器将按照事先安排的设备优先级顺序逐一查询。对于只有一个设备请求的情况,该设备的请求将会马上得到响应;如果多个设备同时发出请求时,仲裁器裁定首先响应优先等级高的设备的请求,当此设备完成数据传输交出总线使用权后,再由优先等级低的设备使用总线。示意框图见图2。 如果一个设备已获得总线使用权并且正在进行地址、数据传输时,比它优先级别高的设备也发出了占用请求,仲裁器将会撤销优先级别低的设备的总线占用信号,并把总线使用权交给优先级别高的设备,同时还要确保在任一时刻不会出现多个设备同时占用总线的情况。具体见仿真分析。 三、编程设计与

4、实现 本设计使用AHDL语言,在MaxplusII 上编译通过,并进行了仿真。 1.仲裁器信号定义 SUBDESIGN PCI_arb( - 输入PCIclk :INPUT - PCI时钟 Arbiter_rstN :INPUT - 复位信号 PCIreqN3.0 :INPUT - 总线占用请求信号 frameN :INPUT - 数据交易的启动或开始,主设备发出 irdyN :INPUT -交易数据准备好,主设备发出 - 输出 PCIgntN3.0 :OUTPUT - 总线占用允许信号 ) frameN和irdyN决定了总线的状态,只要两个信号中的一个有效,就表明总线上有数据通过,总线处于忙

5、状态;当两个信号都无效时,则总线处于空闲状态。 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.仲裁的实现

6、由于采用循环算法,对每一个设备而言状态的变换都是相同的,下面仅以设备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; p

7、arb_sm = PARB_SLT3D; ELSE PCIgntN0 = GND; parb_sm = PARB_SLT0D; ELSE PCIgntN0 = GND; parb_sm = PARB_SLT0D; END IF; WHEN PARB_SLT0D = PCIgntN0 = GND; IF ( frameN & irdyN ) THEN parb_sm = PARB_SLT0; ELSE Parb_sm = PARB_SLT0D; END IF; 为了避免AD线上和PAR线上出现时序竞争,一个设备的PCIgntN信号有效和另一个设备的PCIgntN的撤销,如果不是在总线空闲状态,则

8、两者之间至少要有一个时钟的延迟。设计中,将每个设备占用总线的状态分为两部分,PARB_SLTx(总线空闲)和PARB_SLTxD(总线忙);状态机不能从一个设备的PARB_SLTxD状态直接转到另一个设备的PARB_SLTyD状态,中间必须经过至少一个时钟的PARB_SLTx状态的衔接,这样就避免了总线上竞争的出现。 代码中,PARBtout为一5位计数器,对PCI时钟个数进行计数,用来判别设备发出请求信号后是否在规定时间内占据了总线,启动了数据的传输;如果超时,则撤销该设备的请求信号,并按预设的优先级顺序,对其余设备总线使用权进行新一轮的裁定。计数器的编程实现 IF ( PARBtout4

9、# PCIreqN0 & PCIreqN1 & PCIreqN2 & PCIreqN3 ) THENPARBtout = 0; ELSIF ( frameN & irdyN ) THEN PARBtout = PARBtout + 1; ELSE PARBtout = 0; END IF; 四、仿真分析 1.单一设备总线请求情况 系统初始化后自动将总线停靠于设备0上,总线处于空闲状态,frameN、irdyN均为高电平。需要强调的一点是,仲裁所用的PCI控制信号均在PCI时钟信号的上升沿采样而得。如图3所示,设备2发出总线占用信号,仲裁器在时钟上升沿A处采样到该信号,并开始启动PARBtout

10、计数,此时的frameN、irdyN为高电平,设备0仍然拥有总线使用权;随后设备2驱动使得frameN和irdyN有效,在时钟上升沿B处,仲裁器采样到frameN和irdyN,计数器清零,使设备2的PCIgntN2信号有效,从而占用总线,设备把地址、数据驱动到总线上,总线处于忙状态。 之后,设备2撤销其PCIreqN2信号,放弃对总线的占用;接着frameN、irdyN信号相继无效,表明数据传输的完成,总线变为空闲,仲裁器在C处采样后,将总线停靠在设备2上。 2.多个设备同时请求总线使用权 设备3首先发出请求信号,仲裁器在时钟A处采样后,计数器开始计数,此时总线仍然为设备0占用着;在时钟B处的

11、采样,检测到frameN有效,表明数据传输的开始,仲裁器使得PCIgntN3信号有效,设备3获得总线所有权; 在随后的一个时钟上升沿,仲裁器采样到设备2的总线请求信号,此时由于frameN、irdyN依然有效,表明数据传输正在进行中,必须等当前数据传输完成后,设备2才能占用总线进行自己的数据传输,此时仲裁器隐含设定设备2拥有总线使用权。设备3在时钟C之前使得frameN、irdyN无效,总线进入空闲状态,停靠在设备3上。设备2检测到总线空闲,驱动自己的frameN、irdyN信号,仲裁器在时钟D处采样到有效的frameN、irdyN信号后,使PCIgntN2有效,设备2占据总线,开始数据的传输

12、。设备2使用完总线后,使总线回到空闲状态,停靠在设备2上;设备3检测到总线空闲,再次驱动frameN、irdyN有效,从而再次获得总线使用权(时钟上升沿F处)。所有传输完成后,总线将停靠在设备3上。 值得一提的是,如果设备3在被迫交出总线前不能完成所有数据的传输,它必须使自己的PCIreqN3信号持续有效,这样在设备2用完总线后,仲裁器能将使用权交回,从而完成剩余数据的传输。 图5为设备获得总线使用权,在设定的16个时钟周期内没有启动传输,仲裁器状态的变换。仍以两个设备为例。 五、应用CPLD进行PCI总线仲裁器的设计,系统结构简单;配置灵活,可以根据系统的需要,对有关信号进行裁减或者扩展;在线修改方便。本设计采用Altera的EPM3064实现,并应用于所设计的系统板中。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1