基于多CF接口系統的總線(xiàn)設計與實(shí)現
1.引言
CF卡 (Compactflash:壓縮閃存)是目前世界上外形最小的大容量存儲設備,1994年由SanDisk最先推出。它與PCMCIA完全兼容,是一種固態(tài)產(chǎn)品,工作時(shí)沒(méi)有運動(dòng)部件。它極少出現機械故障,存儲的數據非常安全,是應用最為廣泛的存儲卡。而且耗電量小,只有普通硬盤(pán)的5%。與其它存儲卡相比,容量大是CF卡的一個(gè)比較明顯的優(yōu)勢,目前主流產(chǎn)品已經(jīng)達到512Mb和1Gb標準。另外它還具備速度快、價(jià)格便宜等優(yōu)點(diǎn)。CF卡采用閃存(flash)技術(shù),是一種穩定的存儲解決方案,不需要電池來(lái)維持其中存儲的數據。對所保存的數據來(lái)說(shuō),CF卡比傳統的磁盤(pán)驅動(dòng)器,更具安全性和保護性。
CF卡的應用特別廣泛。CF卡協(xié)會(huì )(CompactFlash Association:CFA)成立的初衷是希望CF技術(shù)能廣泛用于便攜式計算機、臺式機、數碼相機、手持條碼掃描器、高級雙向尋呼機、錄音機、監視器、機頂盒等產(chǎn)品中。采用CF技術(shù)可以使得這些產(chǎn)品的功能得到擴展、體積變小、質(zhì)量變輕。雖然以上目標還遠遠沒(méi)有完全實(shí)現,但它已經(jīng)廣泛地用于很多領(lǐng)域,其中CF IO卡已經(jīng)在調制解調器、網(wǎng)卡、數字電話(huà)卡、激光掃描儀及藍牙技術(shù)中得到了普遍的應用。隨著(zhù)人們對設備的小型化和自動(dòng)化的要求越來(lái)越高,CF卡的應用將會(huì )更加廣泛。
2.CF卡的應用現狀
CF卡是由一個(gè)控制芯片和一個(gè)閃存組成,接口有50個(gè)腳(兩排),它能夠很容易地插入68針I(yè)I型適配器卡(符合PCMCIA的技術(shù)要求)中使用。CF卡可以使用3.3V和5V兩種電壓工作,但對一個(gè)確定的卡,只能工作于一種電壓。
現在一般的PC機上并沒(méi)有直接提供CF接口,對它的應用都是通過(guò)專(zhuān)門(mén)的讀卡器或是轉接設備來(lái)完成的?,F在有很多從USB接口到CF接口的轉接設備,例如朗科公司剛推出基于閃存技術(shù)的第一款數碼移動(dòng)存儲產(chǎn)品――優(yōu)卡,就是其中的一個(gè)。它采用內置USB和CF雙接口,用戶(hù)將優(yōu)卡中的圖片、音樂(lè )或其它數據上傳至電腦時(shí),簡(jiǎn)化了對CF卡的操作過(guò)程,但它僅能支持一個(gè)CF卡,目前還沒(méi)有擴展出多個(gè)CF接口的設備,而且,它只是一種簡(jiǎn)化的讀卡器,需要專(zhuān)門(mén)的設備,沒(méi)有充分發(fā)揮出CF卡的優(yōu)勢,限制了對CF卡的更加有效的利用。
3.總線(xiàn)操作問(wèn)題及解決思路
總線(xiàn)是構成系統的互連機構,是多個(gè)系統功能部件之間進(jìn)行數據傳送的公共通路。借助于總線(xiàn)連接,各系統功能部件之間實(shí)現地址、數據和控制信息的交換,并在爭用資源的基礎上進(jìn)行工作。
3.1 系統中的總線(xiàn)問(wèn)題
在這個(gè)系統中,當多個(gè)CF卡同時(shí)工作時(shí),需要進(jìn)行很多操作,處理器間要進(jìn)行數據和狀態(tài)字的相互交換,要向共享存儲器存取數據,還要對輸入輸出設備進(jìn)行讀寫(xiě),所有這些操作都要用到總線(xiàn)。特別是當對實(shí)時(shí)性要求較高時(shí),總線(xiàn)的操作會(huì )遇到很多的問(wèn)題:
(1)多個(gè)CF卡同時(shí)占用總線(xiàn)時(shí),如何避免總線(xiàn)的沖突。
(2)當一個(gè)操作占用總線(xiàn)時(shí)間過(guò)長(cháng)時(shí),且其請求得不到滿(mǎn)足時(shí),如何避免“死鎖“問(wèn)題。
(3)在緊急情況下,有一個(gè)操作要立即占用總線(xiàn),此時(shí),如何使它在最短的時(shí)間內獲得總線(xiàn)的控制權。
以上問(wèn)題在系統上表現為性能不穩定,經(jīng)常性死機,要解決這些問(wèn)題,必須選擇合適的總線(xiàn)仲裁機制,使其靈活、可靠地完成各種工作。
3.2 多CF卡總線(xiàn)仲裁機制
總線(xiàn)仲裁機制包括總線(xiàn)仲裁策略和總線(xiàn)仲裁方式兩方面。我們要求仲裁機制公平、有效、全理,而且要結構簡(jiǎn)單,容易實(shí)現。這時(shí)我們主要討論仲裁方式,常見(jiàn)的仲裁方式有集中式和分布式兩種。所謂集中式仲裁中每個(gè)功能模塊有兩條線(xiàn)連到中央仲裁器:一條是送往仲裁器的總線(xiàn)請求信號線(xiàn),一條是仲裁器送出的總線(xiàn)授權信號線(xiàn)。示意圖如下:
集中式仲裁方式的電路簡(jiǎn)單,速度快;但它的容錯能力差,魯棒性不夠好。
分布式仲裁不需要中央仲裁器,每個(gè)潛在的功能模塊都有自己的仲裁號和仲裁器。共享的仲裁總線(xiàn)上總是保留著(zhù)當前占用總線(xiàn)模塊的仲裁號,當其它模塊有總線(xiàn)請求時(shí),各仲裁器將從仲裁總線(xiàn)上得到的號與自己的號進(jìn)行比較。如果仲裁總線(xiàn)上的號大,則它的總線(xiàn)請求不予響應,并撤消它的仲裁號。最后,獲勝者的仲裁號保留在仲裁總線(xiàn)上。示意圖如下: 分布式仲裁方法雖然電路復雜一點(diǎn),但容錯能力強,可擴展性好,當其中一部分出現故障時(shí),不會(huì )影響其它的部分的工作。
3.3 本系統仲裁策略的解決方案
本系統采用計數器定時(shí)查詢(xún)的仲裁策略,這是集中式仲裁方式的一種,其基本思想是,總線(xiàn)上的任一設備要求使用總線(xiàn)時(shí),通過(guò)共同的請求線(xiàn)向中央仲裁器發(fā)出總線(xiàn)請求。仲裁器接到請求信號以后,在總線(xiàn)不忙的情況下,讓仲裁地址計數器開(kāi)始計數,計數值通過(guò)一組地址線(xiàn)發(fā)向各設備。每個(gè)設備接口都有一個(gè)設備地址判別電路,當地址線(xiàn)上的計數值與請求總線(xiàn)的設備地址相一致時(shí),該設備把總線(xiàn)狀態(tài)設為占用,獲得了總線(xiàn)使用權,同時(shí)中止計數查詢(xún)。該方式的特點(diǎn)是計數靈活,既保證了仲裁的公平,也突出了重點(diǎn)。
這種方式很好決了總線(xiàn)沖突和“死鎖”的問(wèn)題。對于緊急占用的問(wèn)題,可以通過(guò)中斷廣播的方法來(lái)實(shí)現。即當有一個(gè)CF卡需要緊急服務(wù)時(shí),它向所有的設備發(fā)出占用總線(xiàn)的中斷請求,其它設備檢查自己是否占用總線(xiàn),如果占用,就馬上釋放;沒(méi)有占用,就繼續執行自己的操作。當緊急任務(wù)完成后,該CF卡再把總線(xiàn)控制權交給原來(lái)控制總線(xiàn)的設備。這樣就可以使各設備的優(yōu)先權得到保證。
4.具體的設計實(shí)現
本系統中的多CF卡采用INTEL公司的PD6722作為主控。它是一個(gè)專(zhuān)門(mén)的從ISA總線(xiàn)擴展出兩個(gè)符合PCMCIA標準的芯片,不需要其它任何控制電路。它能直接管理地址在64K到16M之間,通過(guò)一個(gè)地址偏移量寄存器(存有所管理的地址的起始位置)把它映射到一個(gè)64M的地址上。通過(guò)擴展,可以方便地控制四個(gè)CF接口。而且它自身包含了仲裁邏輯電路,所以基本不需要另外的仲裁電路,這為設計帶來(lái)了很大的方便。
設計本系統的主要工作是對如何更加有效地種用總線(xiàn)。要使多個(gè)CF接口能夠協(xié)同工作,我們不但要做好硬件的設計,還要選擇良好的總線(xiàn)仲裁策略。設計示意圖如下: 這個(gè)系統直接連到系統的總線(xiàn)上,在加電的同時(shí),總線(xiàn)首先由主控占用,并由主控對各個(gè)接口進(jìn)行初始化的配置,把相應的工作模式配置到各個(gè)端口,并為它們分發(fā)時(shí)間片和優(yōu)先級,然后用計數器定時(shí)查詢(xún)方式進(jìn)行工作。
由于本系統用了集中仲裁方式來(lái)控制總線(xiàn),解決了總線(xiàn)沖突、“死鎖”和緊急服務(wù)的問(wèn)題,能夠保證系統的正常工作,達到了設計的要求。當然本系統也有脆弱的一面,主要體現在對主控的存賴(lài)度較高,如果主控芯片出了問(wèn)題,對本系統的打擊是致命的,這一點(diǎn)我們會(huì )在以后的工作中加以改進(jìn)。
評論