基于多CF接口系统的总线设计与实现
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 本系统仲裁策略的解决方案
本系统采用计数器定时查询的仲裁策略,这是集中式仲裁方式的一种,其基本思想是,总线上的任一设备要求使用总线时,通过共同的请求线向中央仲裁器发出总线请求。仲裁器接到请求信号以后,在总线不忙的情况下,让仲裁地址计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地
- 高带宽嵌入式应用中SoC微控制器的总线设计(02-15)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)