当前位置:首页 > 作文大全 > 【混合优先级PCI设备的总线仲裁算法及其Stateflow建模】 can总线优先级
 

【混合优先级PCI设备的总线仲裁算法及其Stateflow建模】 can总线优先级

发布时间:2019-02-21 03:52:33 影响了:

  摘要:提出了一种PCI总线的混合优先级仲裁算法,并将该算法应用于某视频监控主机的PCI总线系统,建立了其基于Stateflow的模型。该算法是固定和循环优先策略的有机结合,因而它既继承了前者的设备优先级属性的存在差异化的事实也体现了后者的设备优先级属性获取上公平性。仿真试验表明了该PCI总线策略的可行性和模型的正确性。
  关键词:PCI 总线仲裁器 仲裁算法 Stateflow建模
  
  引言
  PCI (Peripheral Component Interconnect:外围设备互联)总线是一种将系统中外部设备以结构化和可控制方式连接起来的总线标准,包括系统部件连接的电气特性及行为;它广泛地应用在计算机和嵌入式设备中,是迄今最为流行的工业控制总线之一。多设备的PCI系统中, 必须为这些设备提供仲裁授权信号以保障系统的正常有序运行。为此,很多厂家有针对性地发布了PCI仲裁逻辑的专用芯片或者集成了PCI 仲裁逻辑的专用芯片, 但使用上一般欠灵活[1];基于可编程逻辑器件CPLD/EPLD/FPGA的PCI总线仲裁器[1~8]就成为必然的选择,它可以使用户根据具体应用的需求设计合适的总线策略。根据文献,现有的总线策略包括循环优先级算法[1]、循环优先级与FIFO 队列的混合仲裁算法[4]、分组循环优先仲裁算法[8]、总线加权优先循环仲裁算法[9]等。本文针对某视频监控主机系统中PCI设备对总线的需求,提出了一种基于固定优先级和循环优先级的混合优先级仲裁算法,并通过Stateflow对该算法进行建模实现。
  混合优先级PCI主设备的总线仲裁算法
  为了充分利用PCI总线效率,PCI仲裁器必须采用特定的优先级仲裁算法,以便在多个设备同时提出总线请求时能根据仲裁算法判断出哪个设备应得到总线控制权。在选择仲裁算法时,应遵循公平性、延时限制、总线的最高利用率和易于扩展性等原则[8]。本文从某视频监控主机的PCI总线设备对总线需求的实际出发,提出了一种混合优先级仲裁算法。
  2.1 某视频监控主机的PCI 总线系统的描述
  某视频监控主机PCI总线上共有7 个PCI 设备(如图1所示),分别是2个视音频拾取及压缩模块(Dev1~2)、1个视音频监控及回放模块(Dev3)和4个SATA硬盘控制器模块(Dev4~7)。Dev1~2的视音频数据需要通过PCI总线传输至本地硬盘存储或者供本地/远程用户实时监控,Dev3需要申请总线以传输实时监控视音频数据,Dev4~7记录的视音频文件需要通过PCI总线传输给本地或远程用户回放浏览。该PCI总线的逻辑仲裁用CPLD来实现:PCI总线设备需要使用总线时,向总线仲裁器发出中断请求信号Req#,总线仲裁器通过判断各个PCI中断请求状态位和各PCI 设备的中断优先级决定哪个设备获得总线使用权, 并向该设备发出允许占用总线的信号Gnt#。
  2.2 PCI总线设备优先级的混合仲裁算法
  目前,应用于PCI总线总裁的基本算法主要有固定优先级算法和动态优先级算法两种。在固定优先级算法中,各个设备的优先级是事先确定好的;而动态优先级算法是在每次仲裁授权后动态改变各个设备的优先级。这两种算法的优缺点在其它文献[9]已有充分论述。考虑到视频监控主机PCI总线上7 个PCI 设备对总线需求上的异同,混合使用固定和动态两种优先级策略是合理的。总体上,它们对实时性的要求是不一样的,据此我们把所有设备分成优先级不同的组:Dev1~3负责实时视频监控和存盘,为保障监控视频的流畅和存盘视频数据的不丢失,优先级较高;Dev4~7与视频回放有关,流畅的视频回放不受时间局限,优先级可低。第一组的设备Dev1~3和比第二组的设备Dev4~7访问总线的机会多。为体现公平性,同一固定优先级的几个设备具有循环优先级。
  3. 混合优先级设备总线仲裁算法的Stateflow建模
  PCI总线的仲裁除了需要考虑总线请求设备的优先级以外,还需要考虑PCI总线仲裁的有关规范。本节以Stateflow为平台,建立符合PCI总线规范的总线仲裁模型。
  3.1PCI总线仲裁的原理与基本规则
   (1) 仲裁器的仲裁算法必须保证所有的设备都能得到授权的机会,否则将会出现某个优先级低的设备永远不能占有总线进行事务操作的情况。
   (2) PCI主设备把REQ#电平拉低,表示向仲裁器请求占用总线。如果一个主设备只希望做一次总线传输,则它应当在经仲裁获准后发出FRAME(拉低FRAME#电平开始总线操作)的同一时钟周期撤消REQ(REQ#信号变为高电平号);如果该主设备需要多次总线访问,它可以保持REQ信号一直有效,仲裁器会按照特定的仲裁算法来决定是否仍判给该主设备。当它不再使用总线时,拉高REQ#信号电平撤消REQ;REQ信号一旦撤消,仲裁器将认为该设备不再请求使用总线,将不再给它分配总线资源,因而撤消其GNT信号。
   (3) 经仲裁获准后,仲裁器把这个设备的GNT#电平拉低(发出GNT#信号),表示请求获准,该设备就可以使用总线了。GNT#信号的每次发出,只意味着相应的PCI主设备可以使用总线进行一次总线操作(一个FRAME发出到撤销)。如果当前的主设备在它的GNT#信号发出后,持续16个空闲周期还没有开始总线操作,则仲裁器视其为超时,此时,FRAME实际上一直保持无效(FRAME#为高电平),仲裁器可以在此之后的任意时刻撤消GNT#信号(仲裁器把这个设备的GNT#电平拉高),以便服务嵌入式系统中PCI总线仲裁器的设计与实现。
   (4) 如果GNT#信号被撤消时FRAME处于有效状态,表示当前的总线正在传输数据,且根据规则该传输数据的操作合法。
  (5) 如果总线不处于空闲状态,则允许一个GNT#的撤消和另一个GNT#的发生在同一个周期。如果处在空闲状态,则要求一个GNT#撤消到下一个GNT#的发出之间必须有一个时钟周期间隔,否则可能会在AD线和PAR线上出现冲突。
   (6) 当PCI总线空闲时,一个设备从申请总线到被授权使用,最少也需要2个时钟周期,这对于PCI总线是一种浪费。因此仲裁器通常选中一个最经常占用总线的设备,在PCI总线空闲时将GNT#赋予它,这叫做总线停靠。当总线空闲时,该设备需要占用总线时可马上得到批准。
  3.2视频监控主机的PCI总线系统模型分析以及总线仲裁算法的Stateflow建模
   PCI总线仲裁的有关规范可由表1的仲裁器接口信号表达,接口信号之间的关系构成了如图2所示的PCI总线仲裁器系统模型。该模型包括三个模块:总线状态查询、总线设备状态查询、总线请求仲裁等。总线状态查询主要对PCI的数据线的当前状态进行查询并标志;总线设备状态查询主要对当前获得总线使用权的设备的总线使用进程进行查询,该进程受总线状态的控制;总线请求仲裁则根据当前授权设备的状态、当前总线请求设备的状态及其动态变化的优先级等决定下一个获取总线使用权的设备。这三个模块在总线仲裁器系统的Stateflow模型中则对应三个并行的线程。
  3.2.1 总线状态查询及标识
   总线状态查询及标志线程用于记录总线事务的状态,需要标识的总线状态包括Idle,Busy,TransferLastData,Finish等四个,分别表示总线空闲、忙、最后一个数据传输期以及传输完成,在模型中它们用布尔量BusBusy进行标识。总线状态之间的转移由Frame_n和Irdy_n等两个信号驱动。该线程各状态及其转移的方式和条件如图3所示。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   3.2.2 总线设备状态查询
   总线设备状态查询(如图4)用来标识授权设备的总线服务进程以及决定当前是否需要重新指定一个授权设备。总线设备状态包括NoGnt、Gnt_to_Be_Activated、Gnt_in_Bus、和WaitNewGntGranted等四个,分别标识无总线授权设备、总线服务待启动、总线服务、等待新授权等。该线程状态之间的转移由总线状态的状态标识量BusBusy、授权命令字Gnt_n、授权撤销信号Req_n、时钟计数器Count等驱动,并提供进程标识SearchMasterDevEn控制总线请求仲裁和授权线程。命令字Gnt_n、Req_n均为8位,其中低七位分别表示对设备Dev1~7的总线授权或者来自设备Dev1~7的总线请求(均以位电平低有效),第八位始终为1。
   重新指定一个设备的条件是:(1)当前被授权的设备已开始传输(由条件BusBusy==1标识);(2)当前被授权的设备没有开始传输但是等待超时,即当总线上某个设备被授权,但16个周期仍然没有开始操作则被视为超时(由函数Time_Counter实现),仲裁器可以撤销其仲裁授权,并转授其它设备。
   该线程的模型中,嵌入式函数CompuDevNum(Gnt_nt)根据新周期的命令字Gnt_n计算被授权获取总线的设备编号;块函数CompuLastDev(currentDevNum)则用来记录上一次使用总线的设备,系统据此进行局部设备优先级的循环。
  3.2.3总线请求的仲裁以及授权
   总线请求仲裁及授权线程(如图5)标识总线仲裁器的状态以及状态之间的转移条件和方式。仲裁器的状态包括Idle、Park、ReqfromDevLevel1和ReqfromDevLevel2等,分别标识空授权、停靠、固定优先级1的设备授权和固定优先级2的设备授权。该线程状态之间的转移主要由设备请求状态字Req_n、总线设备状态查询进程标识SearchMasterDevEn等驱动,并标识设备授权字Gnt_n以为总线设备状态查询进程提供驱动。在状态ReqfromDevLevel1(如图6)和ReqfromDevLevel2内部分别完成组内设备优先级的循环。
  4. 仿真结果及其结论
   为了所建立的PCI总线仲裁模型的有效性,这一节设计了一个总线请求的任务进程,该任务基本覆盖了各种可能的请求状态,因而结果具有代表性。设备的总线申请以及仲裁结果(总线仲裁仿真波形如图7所示)如下:
   ⑴ 系统启动后,总线处于停靠状态,由于设置的是设备1为停靠设备,3个时钟周期后,该设备申请总线,Gnt_1立即有效, 经过5个时钟周期, 设备申请撤销Req_1, Gnt_1无效。
   ⑵ 再经过7个时钟周期,分属两个固定优先级的设备3、4同时申请总线,即Req_3、Req_4有效,PCI_clk上升沿采样。
   ⑶ 经过2个时钟, 仲裁器已经判定设备3可以拥有总线, 故使Gnt_1、Gnt_4无效,使Gnt_3 有效。
   ⑷ 设备3检测到Gnt_3有效,总线空闲,使Frame_n有效,传输开始。
   ⑸ Req_4在Req_3传输过程中保持有效,15个时钟周期后,设备3传输完成,Irdy_n变为无效,总线的拥有者为设备4,即Gnt_4有效, 7个时钟周期后,设备4传输完成。
   ⑹ 设备4和5在又7个时钟周期后开始同时总线申请,即Req_4、Req_5有效,由于优先级的循环效应,此时设备5的优先级较高,仲裁器判定下个总线的拥有者为设备5。
   ⑺ 设备5获得总线使用权后,使Frame_n有效,传输开始。45个时钟周期后,设备5传输完成。
   ⑻ 10个时钟周期后,属于同一固定优先级的设备4、5再次同时申请总线,即Req_4、Req_5有效,由于此时设备4的优先级因优先级的循环效应比设备5的高,仲裁器判定下个总线的拥有者为设备4。
   ⑼ 设备4获得总线使用权后,7个时钟周期后,设备4传输完成。
  根据以上分析,所建立的总线仲裁器模型遵循PCI总线仲裁器的规范,仿真实验证明了设计可行性。
  
  参考文献:
  [1] 李德升,罗玉平,“嵌入式系统中PCI总线仲裁器的设计与实现”,电子技术应用,2006年第6期,P.57~60;
  [2] 宋杨,刘振宇,汪东升,“基于两优先级轮转法的PCI仲裁器的设计与实现”,微电子学,2004 年第12期,P.663~666;
  [3] 聂鑫, 田建生, 梁远灯,“基于FPGA 的PCI 总线仲裁器设计”,计算机测量与控制,2005,13 ( 8),P.817~820;
  [4] 周先谱,仝晓梅,“基于FIFO 队列的PCI 总线仲裁器的设计与FPGA 实现”,现代电子技术,2007 年第22 期总第261 期,P.157~160;
  [5] 史美萍,窦文华,“基于EPLD的总线仲裁器的设计与实现”,电子技术应用,2000年第3期,P.52~54;
  [6] 孙方,代作晓,华建文,窦秀明,“基于CPLD/FPGA的PCI仲裁器实现”,科学技术与工程,2006年第11期,P.3634~3636;
  [7] 于万瑞,“PCI总线仲裁逻辑及其在嵌入式设备中的应用”,测控技术,2004 年第23 卷第8 期,P.47~50;
  [8] 王良清,沈绪榜,“PCI总线分组循环仲裁算法的实现”,微电子学与计算机,2001年第1期,P.1~4;
  [9] 刘海华,陈心浩,“PCI总线加权优先循环仲裁算法”,计算机工程与应用,2003年第36期,P.45~47。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3