FPGA與CF卡的接口設(shè)計(jì)
1 前言
CF卡是目前應(yīng)用最為廣泛的存儲(chǔ)卡,由于它不帶驅(qū)動(dòng)器,也沒(méi)有其它的移動(dòng)部件,因此,極少出現(xiàn)機(jī)械故障,使存儲(chǔ)的圖像數(shù)據(jù)更加安全。CF卡的使用壽命也非常長(zhǎng),即使用上 100多年也可以保證數(shù)據(jù)完好無(wú)損。而且 CF卡耗電量小,只有普通硬盤的 5%。與其它存儲(chǔ)卡相比,容量大是 CF卡的另一個(gè)優(yōu)勢(shì),目前主流產(chǎn)品已經(jīng)達(dá)到 512Mb和 1Gb標(biāo)準(zhǔn)。另外它還具備速度快、價(jià)格便宜等優(yōu)點(diǎn)。
最近幾年,FPGA[1]以其應(yīng)用的靈活方便蓬勃發(fā)展,在通信、航空航天、醫(yī)療設(shè)備、消費(fèi)類電子產(chǎn)品等領(lǐng)域一展身手。使用 FPGA控制 CF的技術(shù)到目前為止還沒(méi)有成熟,本文從硬件和軟件角度出發(fā),介紹了 FPGA與 CF卡的接口設(shè)計(jì)、給出了用 Verilog HDL語(yǔ)言編寫的讀取 CF卡中數(shù)據(jù)的源程序并給出了用雙 RAM訪問(wèn) CF卡的編程技巧。
2 系統(tǒng)設(shè)計(jì)
系統(tǒng)采用 EP1C6Q240C8[2]為主控制芯片,它是 Altera公司開發(fā)的一款 Cyclone系列的FPGA芯片。它有豐富的 I/O接口、PLL和內(nèi)部存儲(chǔ)資源,無(wú)需外接 SRAM,既節(jié)約成本又簡(jiǎn)化了設(shè)計(jì)過(guò)程。
系統(tǒng)采用 Kingston公司生產(chǎn)的 CF卡,容量為 1Gb。
2.1 系統(tǒng)硬件設(shè)計(jì) [3][4]
CF卡的訪問(wèn)方式有三種,分別為 I/O模式、 Memory模式和 TrueIDE模式。本系統(tǒng)采用 TrueIDE模式訪問(wèn) CF卡。需要注意的是當(dāng)主機(jī)電源一直接通時(shí),拔插 CF卡將會(huì)使其從原來(lái)的 TrueIDE方式重新配置成 Memory方式。所以要讓 CF卡一直工作在 TrueIDE模式,需要在電源加電啟動(dòng)時(shí)將 OE輸人信號(hào)接地。此方式也支持 8位存取方式。
當(dāng) CSEL輸入信號(hào)接地時(shí), CF卡工作方式為主模式;CSEL輸入信號(hào)接高電平時(shí),CF卡工作方式為從模式。本系統(tǒng)中將 CF卡配置成從模式工作方式。當(dāng)采用 TrueIDE訪問(wèn)模式工作時(shí),第 3位到第 10位地址線需要接地, WE信號(hào)需要接高電平。
2.2 系統(tǒng)軟件設(shè)計(jì)
CF卡的數(shù)據(jù)存儲(chǔ)以扇區(qū)為基本單位。系統(tǒng)讀寫 CF卡時(shí)都是以扇區(qū)為單位進(jìn)行的。為了滿足系統(tǒng)對(duì)速度和控制連續(xù)性的要求,系統(tǒng)的程序設(shè)計(jì)中,利用 FPGA的內(nèi)部資源開辟了兩塊 RAM,用于存儲(chǔ)一個(gè)扇區(qū)的數(shù)據(jù),這樣從 CF卡讀數(shù)據(jù)到 RAM和將 RAM中的數(shù)據(jù)讀到被控系統(tǒng)中就成了兩個(gè)相對(duì)獨(dú)立的工作過(guò)程,這樣既利用了 CF卡大容量的存儲(chǔ)特性又利用了 EP1C6Q240C8的工作速度快和內(nèi)部資源豐富的優(yōu)點(diǎn)。圖 2是利用雙 RAM的具體程序設(shè)計(jì)的流程圖。
評(píng)論