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