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