基于K9K8G08UOI的高速大容量存儲系統(tǒng)設計
在測量技術中,,高速數(shù)字攝像機所拍攝到的大量數(shù)字圖像需要高速、大容量的圖像存儲設備來實時快速地存儲,。用傳統(tǒng)的磁帶方式來記錄數(shù)據(jù),,其效率和安全性不高,;靜態(tài)存儲器讀寫方便,但是存儲的數(shù)據(jù)會因斷電而丟失,,所以不利于數(shù)據(jù)的長時間保存,。而近幾年問世的閃存以其存儲容量大、體積小,、可靠性高等優(yōu)點,,逐步向存儲系統(tǒng)進軍,。
1 設計原理
設計中相機輸出LVDS串行數(shù)據(jù)通過接收電平轉(zhuǎn)換和串并轉(zhuǎn)換" title="串并轉(zhuǎn)換">串并轉(zhuǎn)換后得到10路×8 bit的并行數(shù)據(jù)流,其數(shù)據(jù)流速率最大為66 MHz,。之后根據(jù)相機MC1311的性能指標可計算出Camera Link高速接口與數(shù)據(jù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲系統(tǒng)的存儲容量要求與存儲速度要求,,即:單幀數(shù)據(jù)量為1280×1024×8 bit;每秒最大數(shù)據(jù)量為500×1280×1024×8 bit,;Camera Link高速接口單路數(shù)據(jù)速率為65.536 MByte,,如果需要連續(xù)存儲60秒的視頻數(shù)據(jù)" title="視頻數(shù)據(jù)">視頻數(shù)據(jù),則需要40 G Byte存儲器容量,。100 GByte的存儲容量最多大約可存儲2.5分鐘視頻數(shù)據(jù),。圖1為系統(tǒng)結構圖。
2 核心器件選擇
設計中的存儲芯片采用SAMSUNG公司的NAND FLASH芯片K9 K8G08UOI,,它的外部接口最高速度為40 MHz,,接口寬度8位。每個芯片有8192塊,,每塊有64頁,,每頁大小為(2K+64)Bytes,其中64 Bytes為空閑區(qū),,存儲容量為8Gbit,。它以頁為單位進行讀寫,以塊為單位進行擦除,??刂坪诵腇PGA采用ALTERA公司STRATIXⅡ系列的EP2S30F672I4,它有著豐富的觸發(fā)器和LUT,,非常適合復雜時序邏輯的設計,,具有1.3Mbit的內(nèi)置存儲RAM,可以緩存一定量的數(shù)據(jù),。
3 系統(tǒng)設計
NAND Flash的數(shù)據(jù)存儲采用頁編程方式寫入,,K9K8G08UOI的頁寫入時序如圖2所示。
根據(jù)圖2的時序可以估算出單片K9K8G08UOI的數(shù)據(jù)存儲速率,,其中tWC最小為25 ns,tADL為75ns,,tWB為100 ns,,tPROG為200μs。因此,,寫入一頁所需時間大約為:200μs+100 ns+(2048+64) ×25ns+75 ns=252.975μs,,由于一頁數(shù)據(jù)為(2K+64)B,所以單片K9K8G08UOI每Byte的數(shù)據(jù)存儲速率為:1/(252.975μs/(2048+64)B)=8.4152 MHz,??梢妴纹琄9K8G08UOI的寫入速度不能滿足Camera,,Link的接口要求,故需用多片進行數(shù)據(jù)位擴展,。為了解決NAND Hash存取數(shù)據(jù)速度較慢向題,,可將相鄰10個8 bit視頻數(shù)據(jù)在FPGA內(nèi)展寬為80 bit進行存取。而NAND Flash每Byte的存儲速率要求可降為6.6 MHz,,故可滿足單片K9K8G08UOI的存儲速度要求,。系統(tǒng)中每10片K9K8G08UOI組成一個1 G×80 bit的Flash模塊,共10個Flash模塊,。每個Hash模塊共用一套控制線,,數(shù)據(jù)線分別與FPGA相連。單Flash模塊的組成原理如圖3所示,。
電路中Flash1~10的連接一致,,即數(shù)據(jù)總線獨立連接到FPGA共用控制總線(帶驅(qū)動)。由圖3可見,,若需要進一步降低單片F(xiàn)lash存儲速率,,可進一步擴展Flash存儲器芯片數(shù)量。由于單片F(xiàn)PGA的I/O數(shù)有限,,可將10個Flash模塊安排到5塊擴展存儲器板上,,分別對應Camera Link串并轉(zhuǎn)換得到的一路數(shù)據(jù)(66 MHz×8 bit)。每個存儲器板與1片F(xiàn)PGA和2個Flash模塊相連后再分別與控制電路板上的FPGA相連來進行數(shù)據(jù)傳輸,。其中的5塊擴展存儲器板采用相同結構,。
4 FPGA邏輯設計
FLASH的基本操作分為兩個階段:加載" title="加載">加載時間和編程時間,寫入的時間瓶頸并不在加載時間,,而是FLASH的編程時間,。為了解決高速數(shù)據(jù)與低速FLASH之間的矛盾,可采用數(shù)據(jù)流串并轉(zhuǎn)換,、多個模塊并行處理的方法,。可在FPGA內(nèi)部構建10個雙口" title="雙口">雙口RAM用來緩存數(shù)據(jù),,每個雙口RAM對應一個FLASH,,相機過來的數(shù)據(jù)先緩存到RAM里,然后再寫到FLASH,。數(shù)據(jù)寫到RAM可采用流水操作,,數(shù)據(jù)寫滿第一個雙口RAM,接著寫第二個RAM,,依次進行,,當寫滿第十個RAM時,將十個RAM緩存的數(shù)據(jù)寫到對應的FLASH里,。FLASH操作按最高速度40MB進行,,加載時間為51.2μs,,之后進入編程時間,再來的數(shù)據(jù)繼續(xù)緩存在第一個RAM里,。相機的時鐘是66 MHz,,每個RAM的深度為2048 Bytes,那么寫10個RAM的時間是310μs,,即FALSH編程時間可以達到310-51.2=258.8μs,,可以滿足FLASH的典型編程時間200μs。其FLASH流水操作見圖4,。
5 FLASH壞區(qū)管理
對FLASH的壞區(qū)實行動態(tài)管理,,在每個存儲電路板的FPGA內(nèi)開辟1 K×8 bit的壞區(qū)地址存儲。所有存儲電路板的壞區(qū)地址一致,。在FLASH進行寫操作前比對當前區(qū)是否為壞區(qū),,如果是壞區(qū)則跳過此區(qū)進入下一區(qū)。
可采用寫入特定數(shù)后讀出校驗的方式來檢測壞區(qū),。存儲電路板根據(jù)命令全區(qū)寫入8 bit數(shù)據(jù),。寫入時序按系統(tǒng)設計的最高速率進行。然后將它們順序讀出并進行校驗,,如果出現(xiàn)數(shù)據(jù)錯誤則登記該壓為壞區(qū),。圖5為壞區(qū)檢測管理的工作流程。
6 結束語
本文采用多級流水線與并行處理相結合的方式,,同時利用FPGA內(nèi)部的緩存來使多個FLASH存儲器并行工作,,從而極大地提高了存儲速率。100片F(xiàn)LASH存儲器同時工作可滿足660 MB/S的速度要求,。經(jīng)過測試,,本系統(tǒng)可以可靠地存儲數(shù)字圖像,并可屏蔽壞區(qū),。
基于K9K8G08UOI的高速大容量存儲系統(tǒng)設計
在測量技術中,,高速數(shù)字攝像機所拍攝到的大量數(shù)字圖像需要高速、大容量的圖像存儲設備來實時快速地存儲,。用傳統(tǒng)的磁帶方式來記錄數(shù)據(jù),,其效率和安全性不高;靜態(tài)存儲器讀寫方便,,但是存儲的數(shù)據(jù)會因斷電而丟失,,所以不利于數(shù)據(jù)的長時間保存。而近幾年問世的閃存以其存儲容量大,、體積小、可靠性高等優(yōu)點,,逐步向存儲系統(tǒng)進軍,。
1 設計原理
設計中相機輸出LVDS串行數(shù)據(jù)通過接收電平轉(zhuǎn)換和串并轉(zhuǎn)換后得到10路×8 bit的并行數(shù)據(jù)流,,其數(shù)據(jù)流速率最大為66 MHz。之后根據(jù)相機MC1311的性能指標可計算出Camera Link高速接口與數(shù)據(jù)存儲系統(tǒng)的存儲容量要求與存儲速度要求,,即:單幀數(shù)據(jù)量為1280×1024×8 bit,;每秒最大數(shù)據(jù)量為500×1280×1024×8 bit;Camera Link高速接口單路數(shù)據(jù)速率為65.536 MByte,,如果需要連續(xù)存儲60秒的視頻數(shù)據(jù),,則需要40 G Byte存儲器容量。100 GByte的存儲容量最多大約可存儲2.5分鐘視頻數(shù)據(jù),。圖1為系統(tǒng)結構圖,。
2 核心器件選擇
設計中的存儲芯片采用SAMSUNG公司的NAND FLASH芯片K9 K8G08UOI,它的外部接口最高速度為40 MHz,,接口寬度8位,。每個芯片有8192塊,每塊有64頁,,每頁大小為(2K+64)Bytes,,其中64 Bytes為空閑區(qū),存儲容量為8Gbit,。它以頁為單位進行讀寫,,以塊為單位進行擦除??刂坪诵腇PGA采用ALTERA公司STRATIXⅡ系列的EP2S30F672I4,,它有著豐富的觸發(fā)器和LUT,非常適合復雜時序邏輯的設計,,具有1.3Mbit的內(nèi)置存儲RAM,,可以緩存一定量的數(shù)據(jù)。
3 系統(tǒng)設計
NAND Flash的數(shù)據(jù)存儲采用頁編程方式寫入,,K9K8G08UOI的頁寫入時序如圖2所示,。
根據(jù)圖2的時序可以估算出單片K9K8G08UOI的數(shù)據(jù)存儲速率,其中tWC最小為25 ns,,tADL為75ns,,tWB為100 ns,tPROG為200μs,。因此,,寫入一頁所需時間大約為:200μs+100 ns+(2048+64) ×25ns+75 ns=252.975μs,由于一頁數(shù)據(jù)為(2K+64)B,,所以單片K9K8G08UOI每Byte的數(shù)據(jù)存儲速率為:1/(252.975μs/(2048+64)B)=8.4152 MHz,。可見單片K9K8G08UOI的寫入速度不能滿足Camera,Link的接口要求,,故需用多片進行數(shù)據(jù)位擴展,。為了解決NAND Hash存取數(shù)據(jù)速度較慢向題,可將相鄰10個8 bit視頻數(shù)據(jù)在FPGA內(nèi)展寬為80 bit進行存取,。而NAND Flash每Byte的存儲速率要求可降為6.6 MHz,,故可滿足單片K9K8G08UOI的存儲速度要求。系統(tǒng)中每10片K9K8G08UOI組成一個1 G×80 bit的Flash模塊,,共10個Flash模塊,。每個Hash模塊共用一套控制線,數(shù)據(jù)線分別與FPGA相連,。單Flash模塊的組成原理如圖3所示,。
電路中Flash1~10的連接一致,即數(shù)據(jù)總線獨立連接到FPGA共用控制總線(帶驅(qū)動),。由圖3可見,,若需要進一步降低單片F(xiàn)lash存儲速率,可進一步擴展Flash存儲器芯片數(shù)量,。由于單片F(xiàn)PGA的I/O數(shù)有限,,可將10個Flash模塊安排到5塊擴展存儲器板上,分別對應Camera Link串并轉(zhuǎn)換得到的一路數(shù)據(jù)(66 MHz×8 bit),。每個存儲器板與1片F(xiàn)PGA和2個Flash模塊相連后再分別與控制電路板上的FPGA相連來進行數(shù)據(jù)傳輸,。其中的5塊擴展存儲器板采用相同結構。
4 FPGA邏輯設計
FLASH的基本操作分為兩個階段:加載時間和編程時間,,寫入的時間瓶頸并不在加載時間,,而是FLASH的編程時間。為了解決高速數(shù)據(jù)與低速FLASH之間的矛盾,,可采用數(shù)據(jù)流串并轉(zhuǎn)換,、多個模塊并行處理的方法??稍贔PGA內(nèi)部構建10個雙口RAM用來緩存數(shù)據(jù),,每個雙口RAM對應一個FLASH,相機過來的數(shù)據(jù)先緩存到RAM里,,然后再寫到FLASH,。數(shù)據(jù)寫到RAM可采用流水操作,數(shù)據(jù)寫滿第一個雙口RAM,,接著寫第二個RAM,,依次進行,當寫滿第十個RAM時,,將十個RAM緩存的數(shù)據(jù)寫到對應的FLASH里,。FLASH操作按最高速度40MB進行,,加載時間為51.2μs,之后進入編程時間,,再來的數(shù)據(jù)繼續(xù)緩存在第一個RAM里,。相機的時鐘是66 MHz,每個RAM的深度為2048 Bytes,,那么寫10個RAM的時間是310μs,即FALSH編程時間可以達到310-51.2=258.8μs,,可以滿足FLASH的典型編程時間200μs,。其FLASH流水操作見圖4。
5 FLASH壞區(qū)管理
對FLASH的壞區(qū)實行動態(tài)管理,,在每個存儲電路板的FPGA內(nèi)開辟1 K×8 bit的壞區(qū)地址存儲,。所有存儲電路板的壞區(qū)地址一致。在FLASH進行寫操作前比對當前區(qū)是否為壞區(qū),,如果是壞區(qū)則跳過此區(qū)進入下一區(qū),。
可采用寫入特定數(shù)后讀出校驗的方式來檢測壞區(qū)。存儲電路板根據(jù)命令全區(qū)寫入8 bit數(shù)據(jù),。寫入時序按系統(tǒng)設計的最高速率進行,。然后將它們順序讀出并進行校驗,如果出現(xiàn)數(shù)據(jù)錯誤則登記該壓為壞區(qū),。圖5為壞區(qū)檢測管理的工作流程,。
6 結束語
本文采用多級流水線與并行處理相結合的方式,同時利用FPGA內(nèi)部的緩存來使多個FLASH存儲器并行工作,,從而極大地提高了存儲速率,。100片F(xiàn)LASH存儲器同時工作可滿足660 MB/S的速度要求。經(jīng)過測試,,本系統(tǒng)可以可靠地存儲數(shù)字圖像,,并可屏蔽壞區(qū)。