高速大容量存儲系統設計
根據圖2的時(shí)序可以估算出單片K9K8G08UOI的數據存儲速率,其中tWC最小為25 ns,tADL為75ns,tWB為100 ns,tPROG為200μs。因此,寫(xiě)入一頁(yè)所需時(shí)間大約為:200μs+100 ns+(2048+64) ×25ns+75 ns=252.975μs,由于一頁(yè)數據為(2K+64)B,所以單片K9K8G08UOI每Byte的數據存儲速率為:1/(252.975μs/(2048+64)B)=8.4152 MHz??梢?jiàn)單片K9K8G08UOI的寫(xiě)入速度不能滿(mǎn)足Camera,Link的接口要求,故需用多片進(jìn)行數據位擴展。為了解決NAND Hash存取數據速度較慢向題,可將相鄰10個(gè)8 bit視頻數據在FPGA內展寬為80 bit進(jìn)行存取。而NAND Flash每Byte的存儲速率要求可降為6.6 MHz,故可滿(mǎn)足單片K9K8G08UOI的存儲速度要求。系統中每10片K9K8G08UOI組成一個(gè)1 G×80 bit的Flash模塊,共10個(gè)Flash模塊。每個(gè)Hash模塊共用一套控制線(xiàn),數據線(xiàn)分別與FPGA相連。單Flash模塊的組成原理如圖3所示。
電路中Flash1~10的連接一致,即數據總線(xiàn)獨立連接到FPGA共用控制總線(xiàn)(帶驅動(dòng))。由圖3可見(jiàn),若需要進(jìn)一步降低單片Flash存儲速率,可進(jìn)一步擴展Flash存儲器芯片數量。由于單片FPGA的I/O數有限,可將10個(gè)Flash模塊安排到5塊擴展存儲器板上,分別對應Camera Link串并轉換得到的一路數據(66 MHz×8 bit)。每個(gè)存儲器板與1片FPGA和2個(gè)Flash模塊相連后再分別與控制電路板上的FPGA相連來(lái)進(jìn)行數據傳輸。其中的5塊擴展存儲器板采用相同結構。
4 FPGA邏輯設計
FLASH的基本操作分為兩個(gè)階段:加載時(shí)間和編程時(shí)間,寫(xiě)入的時(shí)間瓶頸并不在加載時(shí)間,而是FLASH的編程時(shí)間。為了解決高速數據與低速FLASH之間的矛盾,可采用數據流串并轉換、多個(gè)模塊并行處理的方法??稍贔PGA內部構建10個(gè)雙口RAM用來(lái)緩存數據,每個(gè)雙口RAM對應一個(gè)FLASH,相機過(guò)來(lái)的數據先緩存到RAM里,然后再寫(xiě)到FLASH。數據寫(xiě)到RAM可采用流水操作,數據寫(xiě)滿(mǎn)第一個(gè)雙口RAM,接著(zhù)寫(xiě)第二個(gè)RAM,依次進(jìn)行,當寫(xiě)滿(mǎn)第十個(gè)RAM時(shí),將十個(gè)RAM緩存的數據寫(xiě)到對應的FLASH里。FLASH操作按最高速度40MB進(jìn)行,加載時(shí)間為51.2μs,之后進(jìn)入編程時(shí)間,再來(lái)的數據繼續緩存在第一個(gè)RAM里。相機的時(shí)鐘是66 MHz,每個(gè)RAM的深度為2048 Bytes,那么寫(xiě)10個(gè)RAM的時(shí)間是310μs,即FALSH編程時(shí)間可以達到310-51.2=258.8μs,可以滿(mǎn)足FLASH的典型編程時(shí)間200μs。其FLASH流水操作見(jiàn)圖4。
5 FLASH壞區管理
對FLASH的壞區實(shí)行動(dòng)態(tài)管理,在每個(gè)存儲電路板的FPGA內開(kāi)辟1 K×8 bit的壞區地址存儲。所有存儲電路板的壞區地址一致。在FLASH進(jìn)行寫(xiě)操作前比對當前區是否為壞區,如果是壞區則跳過(guò)此區進(jìn)入下一區。
可采用寫(xiě)入特定數后讀出校驗的方式來(lái)檢測壞區。存儲電路板根據命令全區寫(xiě)入8 bit數據。寫(xiě)入時(shí)序按系統設計的最高速率進(jìn)行。然后將它們順序讀出并進(jìn)行校驗,如果出現數據錯誤則登記該壓為壞區。圖5為壞區檢測管理的工作流程。
6 結束語(yǔ)
本文采用多級流水線(xiàn)與并行處理相結合的方式,同時(shí)利用FPGA內部的緩存來(lái)使多個(gè)FLASH存儲器并行工作,從而極大地提高了存儲速率。100片FLASH存儲器同時(shí)工作可滿(mǎn)足660 MB/S的速度要求。經(jīng)過(guò)測試,本系統可以可靠地存儲數字圖像,并可屏蔽壞區。
評論