新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于多CF接口系统的总线设计与实现

基于多CF接口系统的总线设计与实现

作者:时间:2011-06-28来源:网络收藏

1.引言   

CF卡 (Compactflash:压缩闪存)是目前世界上外形最小的大容量存储设备,1994年由SanDisk最先推出。它与PCMCIA完全兼容,是一种固态产品,工作时没有运动部件。它极少出现机械故障,存储的数据非常安全,是应用最为广泛的存储卡。而且耗电量小,只有普通硬盘的5%。与其它存储卡相比,容量大是CF卡的一个比较明显的优势,目前主流产品已经达到512Mb和1Gb标准。另外它还具备速度快、价格便宜等优点。CF卡采用闪存(flash)技术,是一种稳定的存储解决方案,不需要电池来维持其中存储的数据。对所保存的数据来说,CF卡比传统的磁盘驱动器,更具安全性和保护性。

CF卡的应用特别广泛。CF卡协会(CompactFlash Association:CFA)成立的初衷是希望CF技术能广泛用于便携式计算机、台式机、数码相机、手持条码扫描器、高级双向寻呼机、录音机、监视器、机顶盒等产品中。采用CF技术可以使得这些产品的功能得到扩展、体积变小、质量变轻。虽然以上目标还远远没有完全实现,但它已经广泛地用于很多领域,其中CF IO卡已经在调制解调器、网卡、数字电话卡、激光扫描仪及蓝牙技术中得到了普遍的应用。随着人们对设备的小型化和自动化的要求越来越高,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卡总线仲裁机制   

总线仲裁机制包括总线仲裁策略和总线仲裁方式两方面。我们要求仲裁机制公平、有效、全理,而且要结构简单,容易实现。这时我们主要讨论仲裁方式,常见的仲裁方式有集中式和分布式两种。所谓集中式仲裁中每个功能模块有两条线连到中央仲裁器:一条是送往仲裁器的总线请求信号线,一条是仲裁器送出的总线授权信号线。示意图如下:

  集中式仲裁方式的电路简单,速度快;但它的容错能力差,鲁棒性不够好。

分布式仲裁不需要中央仲裁器,每个潜在的功能模块都有自己的仲裁号和仲裁器。共享的仲裁总线上总是保留着当前占用总线模块的仲裁号,当其它模块有总线请求时,各仲裁器将从仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。示意图如下:   分布式仲裁方法虽然电路复杂一点,但容错能力强,可扩展性好,当其中一部分出现故障时,不会影响其它的部分的工作。

3.3 本系统仲裁策略的解决方案   

本系统采用计数器定时查询的仲裁策略,这是集中式仲裁方式的一种,其基本思想是,总线上的任一设备要求使用总线时,通过共同的请求线向中央仲裁器发出总线请求。仲裁器接到请求信号以后,在总线不忙的情况下,让仲裁地址计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备把总线状态设为占用,获得了总线使用权,同时中止计数查询。该方式的特点是计数灵活,既保证了仲裁的公平,也突出了重点。

这种方式很好决了总线冲突和“死锁”的问题。对于紧急占用的问题,可以通过中断广播的方法来实现。即当有一个CF卡需要紧急服务时,它向所有的设备发出占用总线的中断请求,其它设备检查自己是否占用总线,如果占用,就马上释放;没有占用,就继续执行自己的操作。当紧急任务完成后,该CF卡再把总线控制权交给原来控制总线的设备。这样就可以使各设备的优先权得到保证。

4.具体的设计实现   

本系统中的多CF卡采用INTEL公司的PD6722作为主控。它是一个专门的从ISA总线扩展出两个符合PCMCIA标准的芯片,不需要其它任何控制电路。它能直接管理地址在64K到16M之间,通过一个地址偏移量寄存器(存有所管理的地址的起始位置)把它映射到一个64M的地址上。通过扩展,可以方便地控制四个CF接口。而且它自身包含了仲裁逻辑电路,所以基本不需要另外的仲裁电路,这为设计带来了很大的方便。

设计本系统的主要工作是对如何更加有效地种用总线。要使多个CF接口能够协同工作,我们不但要做好硬件的设计,还要选择良好的总线仲裁策略。设计示意图如下:   这个系统直接连到系统的总线上,在加电的同时,总线首先由主控占用,并由主控对各个接口进行初始化的配置,把相应的工作模式配置到各个端口,并为它们分发时间片和优先级,然后用计数器定时查询方式进行工作。

由于本系统用了集中仲裁方式来控制总线,解决了总线冲突、“死锁”和紧急服务的问题,能够保证系统的正常工作,达到了设计的要求。当然本系统也有脆弱的一面,主要体现在对主控的存赖度较高,如果主控芯片出了问题,对本系统的打击是致命的,这一点我们会在以后的工作中加以改进。



评论


技术专区

关闭