摘 要:介紹所設(shè)計(jì)的高速數(shù)據(jù)采集高速、大容量存儲(chǔ)卡和系統(tǒng)實(shí)現(xiàn)方案。A/D采集采用8位的1 GHz A/D轉(zhuǎn)換芯片,高速大容量存儲(chǔ)采用固態(tài)存儲(chǔ)芯片F(xiàn)LASH(閃存)為存儲(chǔ)介質(zhì),F(xiàn)PGA(現(xiàn)場(chǎng)可編程門陣列)為存儲(chǔ)陣列的控制核心,針對(duì)來自A/D的高速數(shù)據(jù),引入多級(jí)流水和冗余校驗(yàn)技術(shù),能夠屏蔽FLASH的壞塊。實(shí)現(xiàn)了用高密度、相對(duì)低速的FLASH存儲(chǔ)器對(duì)高速實(shí)時(shí)數(shù)據(jù)的可靠存儲(chǔ)。另外,通過橋接芯片PCI9656,可以很方便地實(shí)現(xiàn)同主機(jī)的高速的數(shù)據(jù)通信。
關(guān)鍵詞:FPGA;A/D;FLASH;PCI;高速
中圖分類號(hào):TP368.1 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)10-003-04
Design on High Speed Data Acqucisition Storage Board
LIU Jiakui,WANG Hongxian,XING Mengdao
(National Key Lab of Radar Signal Processing,Xidian University,Xi′an,710071,China)
Abstract: The mechanism and scheme of system in the designed storage board for high speed and large capacity are introduced.It uses a dual 8-bit analog-to-digital converter with a sample rate up to 1 GS/s,uses FLASH as storage medium and FPGA as the processor of the storage array.For high speed data input from A/D,the pipeline technique and the redundancy check method are used.Moreover,the invalid blocks of FLASH chips have been masked out too.It successfully accomplish the high speed data storage with the high density and relatively low speed FLASH chips.Besides,it can also communicate data with the computer host through the bridge chip PCI9656.
Keywords:FPGA;A/D;FLASH;PCI;high speed
高速采集存儲(chǔ)系統(tǒng)目前在雷達(dá)、圖像處理、語音識(shí)別、聲納、通信等領(lǐng)域有著廣泛地應(yīng)用。為了滿足雷達(dá)高速數(shù)據(jù)采集的需要,要求設(shè)計(jì)高速大容量的數(shù)據(jù)存儲(chǔ)器,可以在現(xiàn)場(chǎng)采集數(shù)據(jù)、保存后進(jìn)行回放和后期處理。特別是隨著雷達(dá)成像技術(shù)逐漸成熟,分辨率和采樣率都大幅提升,需要實(shí)時(shí)保存海量數(shù)據(jù)。Atmel公司的1 GS/s速率的A/D變換器件,可以工作1 GHz上進(jìn)行采樣。NAND型FLASH芯片,以半導(dǎo)體作為記憶載體,比傳統(tǒng)的存儲(chǔ)設(shè)備可靠性更高,體積及重量更小,日趨成為存儲(chǔ)器的主流。
在某機(jī)載合成孔徑雷達(dá)的試驗(yàn)中,雷達(dá)以正側(cè)視條帶式工作在X波段,空間分辨率達(dá)到0.5 m×0.5 m(0.3 m×0.3 m)的高分辨率,I,Q雙通道采樣,采樣頻率640 MHz,采樣位寬為8 b,場(chǎng)景距離向45 120 (22 560)點(diǎn),方位向重復(fù)頻率為2 k/s,要求最小存儲(chǔ)速度2×8 b×45120×2 k/s=180.480 Mb/s。本文將詳細(xì)介紹所設(shè)計(jì)的A/D_FLASH系統(tǒng)是如何構(gòu)建來滿足數(shù)據(jù)采集和存儲(chǔ)要求的。
1 核心芯片選擇
存儲(chǔ)介質(zhì)采用Samsung公司的NAND FLASH芯片K9WAG08U1A-PIB0,他的外部接口速度為40 MHz,接口寬度8 b。每個(gè)芯片含8 192×2個(gè)數(shù)據(jù)塊,1個(gè)塊分64頁,每頁大小為(2 k+64)B,其中64 B為空閑區(qū),存儲(chǔ)總?cè)萘繛?6 Gb。
數(shù)據(jù)采集芯片采用Atmel公司的AT84A/D001B,他是雙通道8位AD,采樣速率可達(dá)2 Gs/s(此時(shí)是2個(gè)通道),輸入接口是SMA,觸發(fā)選用外接觸發(fā),觸發(fā)信號(hào)為3.3 V的TTL或者CMOS電平。輸入信號(hào)帶寬可為1~1 500 MHz,輸入信號(hào)幅度為-2 dBm(Vpp=500 mV),輸入阻抗50 Ω,信號(hào)通過SMA接頭接入。
FPGA是控制核心,他非常適合復(fù)雜時(shí)序邏輯的設(shè)計(jì),這里選用Altera公司的STRATIXⅡ系列的EP2S60F1020C5芯片。他的內(nèi)置存儲(chǔ)RAM,可以緩存一定量的數(shù)據(jù),支持3.3 V,64 b,66 MHz PCI,可以作CPCI的功能控制。
PCI橋接芯片采用了PIX公司的PCI9656BA芯片,以簡(jiǎn)化與主機(jī)進(jìn)行通信時(shí)PCI部分的設(shè)計(jì)。借助PCI9656,可實(shí)現(xiàn)與主機(jī)間進(jìn)行64 b,66 MHz的PCI總線,與FPGA間實(shí)現(xiàn)32 b,66 MHz的局部總線協(xié)議,并可實(shí)現(xiàn)板卡的熱插拔。該芯片應(yīng)用靈活,性價(jià)比較高,是進(jìn)行CPCI接口開發(fā)的一塊性能優(yōu)良的芯片。
2 A/D芯片部分的操作
AT84A/D001B有2路(I,Q)模擬輸入,變換的結(jié)果可以最多有4路的差分輸出,這4路都連到FPGA的差分IObank上,A/D的時(shí)鐘輸入也是差分的,最高可以達(dá)1 GHz,如果設(shè)定成將這個(gè)時(shí)鐘反相后作為另一路的時(shí)鐘輸入,那么采樣速率實(shí)際可達(dá)2 GS/s,工作模式的設(shè)定都是通過FPAG輸出時(shí)序給A/D,其中要注[GK!5]意的FPGA輸出的信號(hào)經(jīng)過一個(gè)電平轉(zhuǎn)換芯片后再連到A/D的配置接口上,因?yàn)锳/D支持電平是2.2 V,可以用FPGA的3.3 VBANK的I/O接口轉(zhuǎn)換。
3 FLASH芯片接口操作
K9WAG08U1A可以看作由2片存儲(chǔ)容量為8 Gb的小芯片組成,對(duì)此,芯片有2個(gè)片選信號(hào)ce1和ce2,對(duì)應(yīng)還有2個(gè)rdy信號(hào)。芯片的各種操作必須寫入相應(yīng)的命令才能順利執(zhí)行,由于命令、地址、數(shù)據(jù)共用I/O,所以要通過命令鎖存信號(hào)和地址鎖存信號(hào)共同[HK]控制而分時(shí)復(fù)用。FLASH存儲(chǔ)中主要使用的操作簡(jiǎn)介如下:
(1) 頁編程(PAGE PROGRAME)
器件的編程以頁為單位,但在一個(gè)頁編程周期中允許對(duì)部分頁(一個(gè)或連續(xù)的多個(gè)字節(jié),最多不超過頁容量)編程。一個(gè)頁編程周期由串行數(shù)據(jù)加載階段和緊隨的編程階段組成。在數(shù)據(jù)加載階段,數(shù)據(jù)被加載到數(shù)據(jù)寄存器中;在編程階段,已加載的數(shù)據(jù)寫入實(shí)際的存儲(chǔ)單元,編程典型時(shí)間為200 μs。
(2) 頁讀(PAGE REA/D)
器件在上電時(shí),就被初始化為讀模式,此時(shí)可以不寫00h命令,直接寫入地址和30h命令即可。有2種類型的讀,分別是隨機(jī)讀和順序頁讀。命令打入后經(jīng)過最多20 μs的時(shí)間,數(shù)據(jù)會(huì)從選擇的頁傳到數(shù)據(jù)寄存器中。
(3) 塊擦除(BLOCK ERASE)
器件的擦除操作是以塊為單位的。塊地址加載由擦除建立命令60h啟動(dòng),然后輸入確認(rèn)命令D0h,執(zhí)行內(nèi)部擦除過程。這一先建立再執(zhí)行的兩步命令時(shí)序,確保了存儲(chǔ)內(nèi)容不會(huì)由外部的干擾而意外擦除。
4 板卡大致布局
板卡有一個(gè)高速CPCI接口,方便與CPCI工控機(jī)之間的數(shù)據(jù)交換。此外采用自定義的兩個(gè)高速數(shù)據(jù)接口(SCSI)。64片F(xiàn)LASH芯片并行操作,另外8片F(xiàn)LASH芯片專門用于冗余校驗(yàn), FPGA為整個(gè)板卡的控制核心,其硬件結(jié)構(gòu)如圖1所示。
由于CPCI的插槽J3,J4和J5用戶自定義應(yīng)用,在這里把J3設(shè)計(jì)成自定義I/O,總共有80根線連到FPGA的引腳上,這樣只要跟這塊板卡插在同一塊CPCI工控機(jī)的底板上,就可以很自由地實(shí)現(xiàn)板間通信而不需要主機(jī)的太多干預(yù)。J4沒有連接,而J5則按照TigerShark公司的TS201的鏈路口協(xié)議進(jìn)行鏈接,這樣以來,這塊板卡就可以實(shí)現(xiàn)與以TS201為核心的雷達(dá)信號(hào)處理板卡之間的通信。
布局時(shí)要把數(shù)字部分和模擬部分盡量徹底分開,模擬部分主要是指A/D上的模擬電源,模擬地,模擬信號(hào)等。這塊板卡的布局如圖1所示:

5 重要模塊設(shè)計(jì)
程序的大致結(jié)構(gòu)流程如圖2所示:

FPGA是整個(gè)存儲(chǔ)卡的控制核心,EP2S60F1020I4實(shí)現(xiàn)的內(nèi)部功能模塊如圖3所示:

6 A/D的配置及與FPGA數(shù)據(jù)傳輸
Atmel的這款A(yù)/D變換芯片采用3線式配置其工作方式,通過這個(gè)接口配置他的時(shí)鐘源,單路或是雙路模擬輸入,以及變換結(jié)果的輸出通道數(shù),并可以配置2路的增益和補(bǔ)償。這種配置方式只需往芯片的內(nèi)部8個(gè)寄存器寫入相應(yīng)的配置值即可,并可以根據(jù)應(yīng)用場(chǎng)合及時(shí)修改配置參數(shù),適應(yīng)各種要求的數(shù)據(jù)采集要求。A/D的3線配置時(shí)序如圖4所示:

A/D變換工作的頻率比較高,F(xiàn)PGA要接收這個(gè)數(shù)據(jù)需采用一個(gè)LVDS接收器,這樣就可以把接收器的輸出直接連到FPGA中的FIFO去,接下來通過FIFO接口把數(shù)據(jù)傳給FLASH模塊去存儲(chǔ)。A/D變換的結(jié)果進(jìn)入FPGA后,再經(jīng)過一個(gè)解串器,把速度降下來,就可以分到把數(shù)據(jù)送給FLASH去存儲(chǔ)。
6.1 FLASH流水工作
考慮存儲(chǔ)速度要求和接口的最高速度,我們以接口速度320 MB/s進(jìn)行設(shè)計(jì),由于每組17片F(xiàn)LASH并行操作,分配到每個(gè)FLASH芯片的速度為320/16=20 MB/s。K9K8G08U0M芯片接口的寫入速度最高可達(dá)40 MB/s,所以工作在20~40 MB之間就可滿足所需要求。
考慮FLASH的結(jié)構(gòu)特點(diǎn),設(shè)計(jì)過程中基于整個(gè)頁進(jìn)行讀寫操作。數(shù)據(jù)加載時(shí)間,即1頁數(shù)據(jù)寫入FLASH寄存器的時(shí)間為:頁容量/接口速度=102.4 μs。數(shù)據(jù)加載結(jié)束后,進(jìn)入編程階段。K9K8G08U0M芯片編程時(shí)間的典型值為200 μs,最大值為700 μs。為了系統(tǒng)達(dá)到最大穩(wěn)定,以最大時(shí)間700 μs進(jìn)行設(shè)計(jì),編程時(shí)間/數(shù)據(jù)寫滿每組FLASH一頁的時(shí)間為:700 μs/102.4 μs=6.8,說明經(jīng)過7組FLASH的寫入加載操作后,第一組FLASH編程結(jié)束,又可進(jìn)行再次加載。由此可見,在一次循環(huán)操作中,用8組FLASH是比較合適的,也就是如圖5所示的樣子。

6.2 用于FLASH存儲(chǔ)的壞塊列表
NAND FLASH內(nèi)部有隨機(jī)分布的壞塊,需要建立壞塊信息列表,對(duì)FLASH的操作都要基于此列表。芯片在出廠的時(shí)候,在每塊第一頁和第二頁的空閑區(qū)的首字節(jié)(第2 048個(gè)字節(jié))處留有標(biāo)記,如果不是FFH則為壞塊。建立壞塊信息列表如圖6所示。
在實(shí)際操作中發(fā)現(xiàn),每組17片F(xiàn)LASH總的壞塊從80到130不等,但相對(duì)于總塊數(shù)8 192而言仍算少數(shù)。所以把每組17片F(xiàn)LASH各自的壞塊信息相與,建立一個(gè)新的組壞塊信息列表,一共8組FLASH所有的壞塊信息是8 192個(gè)字節(jié),總的大小很小。由于每組FLASH共同控制,那么基于同一個(gè)壞塊列表操作就顯得非常的方便。

存儲(chǔ)操作及壞塊列表的更新,如圖7所示。FLASH在長(zhǎng)期使用中,會(huì)產(chǎn)生新的壞塊,要及時(shí)對(duì)壞塊信息進(jìn)行更新。更新時(shí),把新的壞塊內(nèi)容寫入第一塊中去,但不重新寫入原來的地址。這樣確保原始?jí)膲K信息的安全。

6.3 數(shù)據(jù)的冗余校驗(yàn)
在實(shí)際信道傳輸數(shù)據(jù)時(shí),如果由于信道傳輸特性不理想,并且受到噪聲和干擾的影響,就會(huì)造成接收端誤判而發(fā)生差錯(cuò),或者由于個(gè)別芯片出現(xiàn)讀寫失敗時(shí),也會(huì)造成數(shù)據(jù)的丟失。為了盡可能的降低通信的誤碼率,提高數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)使用循環(huán)冗余校驗(yàn)碼CRC(Cyclic Redundancy Check)與奇偶校驗(yàn)碼來檢查和恢復(fù)錯(cuò)誤數(shù)據(jù),保障存儲(chǔ)系統(tǒng)數(shù)據(jù)的可靠性。
循環(huán)冗余碼采用CRC-CCITT國(guó)際標(biāo)準(zhǔn),其生成多項(xiàng)式為:G(X)=X16+X12+X5+1。為了提高運(yùn)算速度,使用并行計(jì)算方法。奇偶校驗(yàn)的法則為,數(shù)據(jù)有奇數(shù)個(gè)1時(shí),校驗(yàn)碼為1,否則為0,在FPGA內(nèi)部使用異或組合邏輯就可輕松實(shí)現(xiàn)所需算法。

8 FPGA內(nèi)部實(shí)現(xiàn)的功能結(jié)構(gòu)
FPGA內(nèi)部主要完成的工作主要有,接收從CPCI工控機(jī)來的的命令,判斷執(zhí)行的命令的類型(存儲(chǔ)、回放、擦除數(shù)據(jù)等),實(shí)現(xiàn)FPGA與PCI9656的通信,對(duì)A/D的工作模式進(jìn)行配置,把A/D變換的結(jié)果傳給FLASH,建立壞塊列表,以及對(duì)數(shù)據(jù)的冗余校驗(yàn)。低速模塊對(duì)高速輸入的處理,是個(gè)通過數(shù)據(jù)流的串并轉(zhuǎn)換,面積換速度的方法達(dá)到。
9 結(jié) 語
本文對(duì)FLASH的固存技術(shù)進(jìn)行研究,所設(shè)計(jì)的基于FPGA的存儲(chǔ)卡,在存儲(chǔ)速度、容量、糾錯(cuò)性能上都滿足了機(jī)載合成孔徑雷達(dá)成像試驗(yàn)所需的要求。在速度要求愈高的發(fā)展趨勢(shì)下,高速大容量的存儲(chǔ)器將在各個(gè)領(lǐng)域都會(huì)有廣泛的應(yīng)用前景。
參 考 文 獻(xiàn)
[1]K9WAG08U1A A/Dvanced FLASH Memory Data Sheet SAMSUNG Electronics,2005.
[2]PCI 9656BA Data Book,Version 1.12003 PLX Technology,Inc.
[3]Stratix II Device Handbook Altera Corporation.
[4]李貴山,戚德虎.PCI局部總線開發(fā)者指南\\[M\\].西安:西安電子科技大學(xué)出版社,1997.
[5]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.
作者簡(jiǎn)介 劉加奎 男,1982年出生,山東臨沂人,西安電子科技大學(xué)信號(hào)與信息處理專業(yè)碩士研究生。主要研究方向?yàn)槔走_(dá)成像信號(hào)處理。
王虹現(xiàn) 男,1979年出生,河南商丘人,西安電子科技大學(xué)信號(hào)與信息處理專業(yè)博士研究生。主要研究方向?yàn)槔走_(dá)成像與高速實(shí)時(shí)信號(hào)處理。
邢孟道 男,1975年出生,浙江嵊州人,西安電子科技大學(xué)教授,博士生導(dǎo)師。主要研究方向?yàn)槔走_(dá)成像、目標(biāo)識(shí)別和天波超視距雷達(dá)信號(hào)處理。