基于多CF接口系统的总线设计
扫描二维码
随时随地手机看文章
摘要:针对目前CF产品的应用日益广泛,而其转接设备单一的现状,本文从总线方面阐述了扩展出多个CF接口的方法,并讨论了其总线仲裁策略,该方法简单实用,完全符合设计要求。
1 引言
CF卡(CompactFlash:压缩闪存)是目前世界上外形最小的大容量存储设备。它与PCMCIA完全兼容,是一种固态产品,工作时没有运动部件。目前主流产品已经达到512Mb和1Gb标准。另外它还具备速度快、价格便宜等优点。CF卡采用闪存(flash)技术,是一种稳定的存储解决方案,不需要电池来维持其中存储的数据。对所保存的数据来说,CF卡比传统的磁盘驱动器,更具安全性和保护性。
2 CF卡的应用现状
CF卡是由一个控制芯片和一个闪存组成,接口有50个脚(两排),它能够很轻易地插进68针II型适配器卡(符合PCMCIA的技术要求)中使用。CF卡可以使用3.3V和5V两种电压工作,但对一个确定的卡,只能工作于一种电压。
现在一般的PC机上并没有直接提供CF接口,对它的应用都是通过专门的读卡器或是转接设备来完成的。现在有很多从USB接口到CF接口的转接设备,例如朗科公司刚推出基于闪存技术的第一款数码移动存储产品――优卡,就是其中的一个。它采用内置USB和CF双接口,用户将优卡中的图片、音乐或其它数据上传至电脑时,简化了对CF卡的操纵过程,但它仅能支持一个CF卡,目前还没有扩展出多个CF接口的设备,而且,它只是一种简化的读卡器,需要专门的设备,没有充分发挥出CF卡的上风,限制了对CF卡的更加有效的利用。
3 总线操纵题目及解决思路
总线是构成系统的互连机构,是多个系统功能部件之间进行数据传送的公共通路。借助于总线连接,各系统功能部件之间实现地址、数据和控制信息的交换,并在争用资源的基础上进行工作。
3.1 系统中的总线题目
在这个系统中,当多个CF卡同时工作时,需要进行很多操纵,处理器间要进行数据和状态字的相互交换,要向共享存储器存取数据,还要对输进输出设备进行读写,所有这些操纵都要用到总线。特别是当对实时性要求较高时,总线的操纵会碰到很多的题目:
(1)多个CF卡同时占用总线时,如何避免总线的冲突。
(2)当一个操纵占用总线时间过长时,且其请求得不到满足时,如何避免“死锁”题目。
(3)在紧急情况下,有一个操纵要立即占用总线,此时,如何使它在最短的时间内获得总线的控制权。
以上题目在系统上表现为性能不稳定,经常性死机,要解决这些题目,必须选择合适的总线仲裁机制,使其灵活、可靠地完成各种工作。
3.2 多CF卡总线仲裁机制
总线仲裁机制包括总线仲裁策略和总线仲裁方式两方面。我们要求仲裁机制公平、有效、全理,而且要结构简单,轻易实现。这时我们主要讨论仲裁方式,常见的仲裁方式有集中式和分布式两种。所谓集中式仲裁中每个功能模块有两条线连到中心仲裁器:一条是送往仲裁器的总线请求信号线,一条是仲裁器送出的总线授权信号线。示意图如下:
[!--empirenews.page--]
集中式仲裁方式的电路简单,速度快;但它的容错能力差,鲁棒性不够好。
分布式仲裁不需要中心仲裁器,每个潜伏的功能模块都有自己的仲裁号和仲裁器。共享的仲裁总线上总是保存着当前占用总线模块的仲裁号,当其它模块有总线请求时,各仲裁器将从仲裁总线上得到的号与自己的号进行比较。假如仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保存在仲裁总线上。
分布式仲裁方法固然电路复杂一点,但容错能力强,可扩展性好,当其中一部分出现故障时,不会影响其它的部分的工作。
3.3 本系统仲裁策略的解决方案
本系统采用计数器定时查询的仲裁策略,这是集中式仲裁方式的一种,其基本思想是,总线上的任一设备要求使用总线时,通过共同的请求线向中心仲裁器发出总线请求。仲裁器接到请求信号以后,在总线不忙的情况下,让仲裁地址计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备把总线状态设为占用,获得了总线使用权,同时中止计数查询。该方式的特点是计数灵活,既保证了仲裁的公平,也突出了重点。
这种方式很好决了总线冲突和“死锁”的题目。对于紧急占用的题目,可以通过中断广播的方法来实现。即当有一个CF卡需要紧急服务时,它向所有的设备发出占用总线的中断请求,其它设备检查自己是否占用总线,假如占用,就马上开释;没有占用,就继续执行自己的操纵。当紧急任务完成后,该CF卡再把总线控制权交给原来控制总线的设备。这样就可以使各设备的优先权得到保证。
4. 具体的设计实现
本系统中的多CF卡采用INTEL公司的PD6722作为主控。它是一个专门的从ISA总线扩展出两个符合PCMCIA标准的芯片,不需要其它任何控制电路。它能直接治理地址在64K到16M之间,通过一个地址偏移量寄存器(存有所治理的地址的起始位置)把它映射到一个64M的地址上。通过扩展,可以方便地控制四个CF接口。而且它自身包含了仲裁逻辑电路,所以基本不需要另外的仲裁电路,这为设计带来了很大的方便。
设计本系统的主要工作是对如何更加有效地种用总线。要使多个CF接口能够协同工作,我们不但要做好硬件的设计,还要选择良好的总线仲裁策略。
这个系统直接连到系统的总线上,在加电的同时,总线首先由主控占用,并由主控对各个接口进行初始化的配置,把相应的工作模式配置到各个端口,并为它们分发时间片和优先级,然后用计数器定时查询方式进行工作。
本系统也有脆弱的一面,主要体现在对主控的存赖度较高,假如主控芯片出了题目,对本系统的打击是致命的,这一点我们会在以后的工作中加以改进。