高速數據采集系統中高速緩存與海量緩存的實(shí)現
關(guān)鍵詞:高速數據采集;高速緩存;海量緩存;DSP;FPGA
1 引言
高速數據采集系統目前已在雷達、聲納、軟件無(wú)線(xiàn)電、瞬態(tài)信號測試等領(lǐng)域得到廣泛應用。它的關(guān)鍵技術(shù)是高速ADC技術(shù)、數據存儲與傳輸技術(shù)和抗干擾技術(shù)。本文在分析了高速多通道數據采集系統中存儲子系統的性能要求和設計方案的基礎上,提出了高速緩存和海量緩存方案,并將該方案成功地應用于DSP多通道超聲信號采集與處理系統中。
對高速多通道采樣數據存儲的性能要求:一是高速性,現在高速數據采集中所用的ADC已達到幾十甚至幾百MSPS的水平,這就要求采樣數據存儲器的速度也要與之匹配,也就是采用高速緩存;二是大容量,其原因是多通道高速數據采集會(huì )產(chǎn)生巨大的數據流。一個(gè)4通道40MHz采樣率16位精度數據采集板并行采樣0.1s將產(chǎn)生32MB的數據量,所以,通常需要海量緩存來(lái)存儲采樣數據。
2 高速緩存的實(shí)現
通常構成高速緩存的方案有三種:
第一種是FIFO(先進(jìn)先出)方式。FIFO存儲器就象數據管道一樣,數據從管道的一頭流入、從另一頭流出,先進(jìn)入的數據先流出。FIFO具有兩套數據線(xiàn)而無(wú)地址線(xiàn),可在其一端寫(xiě)操作而在另一端讀操作,數據在其中順序移動(dòng),因而能夠達到很高的傳輸速度和效率,且由于省去了地址線(xiàn)而有利于PCB板布線(xiàn)。缺點(diǎn)是只能順序讀寫(xiě)數據,因而顯得比較呆板,而且大容量的高速FIFO非常昂貴;
第二種是雙口RAM方式。雙口RAM具有兩套獨立的數據、地址和控制總線(xiàn),因而可從兩個(gè)端口同時(shí)讀寫(xiě)而互不干擾,并可將采樣數據從一個(gè)端口寫(xiě)入而由DSP從另一個(gè)端口讀出。雙口RAM也能達到很高的傳輸速度,并且具有隨機存取的優(yōu)點(diǎn),缺點(diǎn)是大容量的高速雙口RAM很難得且價(jià)格昂貴;
第三種是高速SRAM切換方式。高速SRAM只有一套數據、地址和控制總線(xiàn),可通過(guò)三態(tài)緩沖門(mén)分別接到A/D轉換器和DSP上。當A/D采樣時(shí),SRAM由三態(tài)門(mén)切換到A/D轉換器一側,以使采樣數據寫(xiě)入其中。當A/D采樣結束后,SRAM再由三態(tài)門(mén)切換到DSP一側以便DSP進(jìn)行讀寫(xiě)。這種方式的優(yōu)點(diǎn)是SRAM可隨機存取,同時(shí)較大容量的高速SRAM容易得到且價(jià)格適中,缺點(diǎn)是切換控制電路比較復雜,且只能由A/D轉換器和DSP分時(shí)讀寫(xiě)。
綜合考慮以上三種高速緩存方案的性能、價(jià)格和實(shí)現方便性后,筆者選用第三種方案(即高速SRAM切換方式)來(lái)構成A/D采樣高速緩存。系統的采樣與存儲部分的原理框圖如圖1所示。
圖1中,SRAM選用IS61LV25616-10T,容量為256k16bit,訪(fǎng)問(wèn)速度為10ns,使用兩片即可構成256k32bit的高速緩存。當一輪采樣開(kāi)始時(shí),DSP發(fā)出觸發(fā)信號給CPLD,后者對50MHz晶振時(shí)鐘二分頻后得到25MHz采樣時(shí)鐘提供給4路A/D轉換器AD9225,同時(shí)對4路超聲信號進(jìn)行25MHz、12bit的A/D轉換。轉換結果分成兩個(gè)完全一樣的數據通道進(jìn)行處理,每個(gè)數據通道處理兩路A/D轉換結果,每個(gè)數據通道包含一片FPGA(現場(chǎng)可編程門(mén)陣列)、一片SRAM及其后的數據三態(tài)門(mén)等電路。FPGA可接收兩路A/D轉換結果并在其內部進(jìn)行復用,以將其變成一路50MHz、12bit的數據流送入IS61LV25616緩存。FPGA完成數據通道復用的原理如圖2所示。
FPGA選用EP1K50,它的邏輯門(mén)數為5萬(wàn)門(mén),內含10個(gè)EAB(嵌入陣列塊)。每個(gè)EAB實(shí)際上是4kbit的RAM,可以用來(lái)構造FIFO、雙口RAM等。本系統應用兩塊EAB構成了兩個(gè)25616bit的FIFO,因而可將兩路A/D轉換結果分別送入兩個(gè)FIFO,然后在FPGA的輸出端將兩個(gè)FIFO中的數據交替地讀出寫(xiě)入IS61LV25616,每個(gè)FIFO每次讀出128個(gè)采樣數據。A/D轉換器的輸出為12位數據,而FPGA的片內FIFO和片外IS61LV25616的數據字寬都為16位。在存儲、傳送時(shí),將高4位補0即可。兩路A/D采樣速度都為25MHz,復用后輸出的速率為50MHz,這個(gè)速度對于IS61LV25616和EP1K50都是完全可以達到的。FPGA的作用除了構造FIFO以實(shí)現數據通道復用外,還可以作為協(xié)處理器由板上DSP控制來(lái)進(jìn)行一些簡(jiǎn)單高效的數據預處理(如插值、取平均、FIR濾波等)。同時(shí)可使用EDA工具MAX+PLUSⅡ10.0來(lái)對EP1K50的邏輯算法進(jìn)行設計、編譯并仿真,然后下載到EP1K50中實(shí)現預定功能。
除了FPGA外,系統還采用了一片CPLD(復雜可編程邏輯器件)來(lái)控制采樣。前者主要用于數據通道對A/D采樣結果進(jìn)行緩沖復用以及預處理,后者則負責產(chǎn)生A/D采樣時(shí)鐘以及作為地址計數器產(chǎn)生地址并提供給兩片IS61LV25616以便存入A/D采樣結果等。CPLD不象FPGA那樣能完成較復雜的邏輯功能和信號處理算法,但是它具有更高的速度,且管腳到管腳具有固定一致的時(shí)延,因而在設計調試時(shí)容易獲得簡(jiǎn)單可靠的定時(shí)關(guān)系,適于實(shí)現高速計數器、觸發(fā)器、譯碼器等定時(shí)要求比較嚴格的場(chǎng)合。本系統使用MAX7128AE來(lái)控制采樣,其可實(shí)現的功能如圖3所示。
MAX7128AE可用于實(shí)現兩個(gè)18位地址計數器,它具有地址總線(xiàn)開(kāi)關(guān)切換功能,在A/D采樣期間能以25 MHz的頻率進(jìn)行地址計數以作為高速緩存的地址線(xiàn)。當一輪A/D采樣結束后,系統可將高速緩存的地址總線(xiàn)切換到DSP的地址總線(xiàn),然后由DSP讀取高速緩存中的A/D轉換結果并進(jìn)行處理。高速緩存IS61LV25616的數據總線(xiàn)一方面連到FPGA以便在采樣期間接受復用的A/D轉換結果;一方面則通過(guò)三態(tài)門(mén)連到DSP的數據總線(xiàn)以便在采樣結束后由DSP讀取采樣數據。
3 海量緩存的設計實(shí)現
本系統使用了兩片256k16bit容量的SRAM作為高速緩存,系統中的4個(gè)通道可同時(shí)存儲每通道128k點(diǎn)采樣數據。在25MHz的采樣頻率下,一次可采集存儲5ms多的波形數據。對于超聲信號的單次發(fā)射/接收來(lái)說(shuō),這種采樣時(shí)間長(cháng)度已經(jīng)足夠了,但是對于多批次采樣數據的存儲就比較困難了。若要通過(guò)PCI總線(xiàn)、USB接口等快速通訊方式將采樣數據傳到主機進(jìn)行處理或存入硬盤(pán),則應滿(mǎn)足實(shí)時(shí)傳輸采樣數據所需要的巨大總線(xiàn)帶寬。以25MHz、12bit采樣精度為例,4個(gè)通道同時(shí)采樣將產(chǎn)生150MB/s的數據流,這對于任何總線(xiàn)來(lái)說(shuō)都難以做到。解決的辦法是在數據采集板上采用DSP對采集的數據進(jìn)行預處理,以使處理后的數據量大大減少,然后再上傳給主機以減輕總線(xiàn)傳輸壓力和主機處理負擔,從而避免數據通訊瓶頸。這種由板上DSP執行計算密集型任務(wù)并由上位主機進(jìn)行調度管理的分布式處理機制可廣泛用于許多高速數據采集與處理系統中。而為板上DSP配備大容量?jì)却鎭?lái)作為它的程序和數據存儲器是十分必要的??紤]到本系統所用DSP的結構特點(diǎn)和大容量采樣數據的存儲需要,筆者選用SDRAM作為板上海量?jì)却妗?/P>
系統中的DSP為Analog Devices公司的ADSP-21065L,這是一款性?xún)r(jià)比很高的32位浮點(diǎn)DSP。其峰值浮點(diǎn)運算速度為180M FLOPS,片內帶有68kB的RAM,可用于程序或數據內存,片外數據總線(xiàn)為32位,片外地址總線(xiàn)為24位,具有4個(gè)片選信號輸出,每個(gè)片選信號的尋址空間可達64MB,另外,它還具有多個(gè)高速同步串口以及強大的DMA功能。而最有特色的一點(diǎn)是其內部集成了一個(gè)SDRAM控制器,因此能夠直接驅動(dòng)外部SDRAM。通常SDRAM的控制是比較復雜的,需要按時(shí)序規定驅動(dòng)它的行、列選通線(xiàn)并分時(shí)提供行、列地址,另外還要定時(shí)刷新。一般是由專(zhuān)門(mén)的SDRAM控制器對其操作,或采用FP-GA設計SDRAM控制器,但這都會(huì )增大系統的復雜度。而ADSP-21065L能直接驅動(dòng)和控制片外SDRAM,使用時(shí)只要在程序中設置好相關(guān)的寄存器,然后用一條指令啟動(dòng)SDRAM的上電時(shí)序即可。此后程序對SDRAM的訪(fǎng)問(wèn)操作都是透明的,可象訪(fǎng)問(wèn)普通片外SRAM一樣訪(fǎng)問(wèn)它,因此非常方便,故可使用大容量(可達64MB)高速廉價(jià)的SDRAM芯片作為ADSP-21065L的海量片外存儲器。本系統使用兩片4M16bit的SDRAM芯片HY57V641620來(lái)構成16MB的海量緩存(參見(jiàn)圖1)。這樣,16MB的存儲容量如果都用來(lái)轉存采樣數據的話(huà),可以存儲4個(gè)通道同時(shí)采集的2M點(diǎn)數據,在25MHz的采樣率下可達到0.08s的總記錄時(shí)間,這對于本系統而言已經(jīng)足夠了。而且通過(guò)選用更大容量的SDRAM芯片還可方便地將海量緩存的容量擴充到32MB、64MB。
為了將多次A/D采樣數據從高速緩存轉送到海量緩存,如果讓?zhuān)粒模樱校玻保埃叮担逃弥噶畹姆绞綇钠飧咚倬彺嬷凶x取采樣數據,然后寫(xiě)入片外海量緩存,將會(huì )大量占用ADSP的運行時(shí)間,而且傳輸速度也較慢。為此,筆者采用ADSP的DMA功能進(jìn)行傳送。ADSP-21065L具有多個(gè)DMA通道(其中包括兩個(gè)外部口DMA通道),因而可進(jìn)行高速數據傳輸。它的外部口DMA通道本來(lái)就可以完成外存與外設之間的DMA傳輸,但是若二者之一是SDRAM則不行。所以,實(shí)際使用時(shí)一般通過(guò)ADSP-21065L的片內RAM來(lái)中轉,然后再完成高速緩存到海量緩存的數據傳輸,具體做法如圖4所示。
ADSP內部開(kāi)設有1k32bit的RAM塊構成中轉區,可利用外部口DMA通道0進(jìn)行A/D高速緩存到片內RAM的DMA傳輸,同時(shí)利用外部口DMA通道1來(lái)進(jìn)行片內RAM區到海量緩存SDRAM的DMA傳輸。在60MHz的ADSP主頻下,前者的DMA傳輸速度可達120MB/s,后者的DMA傳輸速度可達240MB/s。當外部口DMA通道0完成一次傳輸后,系統將啟動(dòng)外部口DMA通道1的DMA傳輸;而當后者的DMA傳輸完成后?系統將再次啟動(dòng)前者的DMA傳輸。如此循環(huán)下去,直至A/D高速緩存中的1MB采樣數據都倒入SDRAM海量緩存為止,該過(guò)程大約需要13.1ms。
4 結論與改進(jìn)
通過(guò)對高速數據采集系統中幾種A/D采樣高速緩存的實(shí)現方案進(jìn)行對比分析,結合本系統的結構特點(diǎn)和性能要求,采用SRAM作為A/D高速緩存所構成的采集系統具有速度高、容量大、控制方便、價(jià)格適中等優(yōu)點(diǎn)。選用高速、大容量、低價(jià)格的SDRAM作為海量緩存則可通過(guò)其外部口DMA通道將高速緩存中的采樣數據倒入海量緩存。這種設計使系統的A/D采樣存儲兼具高速和海量的優(yōu)點(diǎn),同時(shí)具有很高的性能價(jià)格比。而其尚存的不足之處是:ADSP和A/D轉換器通過(guò)切換總線(xiàn)方式分時(shí)訪(fǎng)問(wèn)高速緩存在一定程度上影響了系統的實(shí)時(shí)性。作為改進(jìn)措施可以引入雙體存儲交替訪(fǎng)問(wèn)的方案,即再增加兩片IS61LV25616做成一組高速緩存以和已有的兩片IS61LV25616構成雙體存儲區。由于該方式中的ADSP和A/D轉換器以乒乓方式交替訪(fǎng)問(wèn)這兩組緩存,因此,ADSP和A/D轉換器能并行工作而無(wú)需互相等待,從而提高系統的實(shí)時(shí)性。
評論