集中式仲裁方式的电路简单,速度快;但它的容错能力差,鲁棒性不够好。
分布式仲裁不需要中心仲裁器,每个潜伏的功能模块都有自己的仲裁号和仲裁器。共享的仲裁总线上总是保存着当前占用总线模块的仲裁号,当其它模块有总线请求时,各仲裁器将从仲裁总线上得到的号与自己的号进行比较。假如仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保存在仲裁总线上。
分布式仲裁方法固然电路复杂一点,但容错能力强,可扩展性好,当其中一部分出现故障时,不会影响其它的部分的工作。
3.3 本系统仲裁策略的解决方案
本系统采用计数器定时查询的仲裁策略,这是集中式仲裁方式的一种,其基本思想是,总线上的任一设备要求使用总线时,通过共同的请求线向中心仲裁器发出总线请求。仲裁器接到请求信号以后,在总线不忙的情况下,让仲裁地址计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备把总线状态设为占用,获得了总线使用权,同时中止计数查询。该方式的特点是计数灵活,既保证了仲裁的公平,也突出了重点。
这种方式很好决了总线冲突和“死锁”的题目。对于紧急占用的题目,可以通过中断广播的方法来实现。即当有一个CF卡需要紧急服务时,它向所有的设备发出占用总线的中断请求,其它设备检查自己是否占用总线,假如占用,就马上开释;没有占用,就继续执行自己的操纵。当紧急任务完成后,该CF卡再把总线控制权交给原来控制总线的设备。这样就可以使各设备的优先权得到保证。
4. 具体的设计实现
本系统中的多CF卡采用INTEL公司的PD6722作为主控。它是一个专门的从ISA总线扩展出两个符合PCMCIA标准的芯片,不需要其它任何控制电路。它能直接治理地址在64K到16M之间,通过一个地址偏移量寄存器(存有所治理的地址的起始位置)把它映射到一个64M的地址上。通过扩展,可以方便地控制四个CF接口。而且它自身包含了仲裁逻辑电路,所以基本不需要另外的仲裁电路,这为设计带来了很大的方便。
设计本系统的主要工作是对如何更加有效地种用总线。要使多个CF接口能够协同工作,我们不但要做好硬件的设计,还要选择良好的总线仲裁策略。这个系统直接连到系统的总线上,在加电的同时,总线首先由主控占用,并由主控对各个接口进行初始化的配置,把相应的工作模式配置到各个端口,并为它们分发时间片和优先级,然后用计数器定时查询方式进行工作。
本系统也有脆弱的一面,主要体现在对主控的存赖度较高,假如主控芯片出了题目,对本系统的打击是致命的,这一点我们会在以后的工作中加以改进。