高速數(shù)據(jù)采集系統(tǒng)中的存儲與傳輸控制邏輯設(shè)計
隨著信息科學的飛速發(fā)展,數(shù)據(jù)采集和存儲技術(shù)廣泛應(yīng)用于雷達、通信、遙測遙感等領(lǐng)域。在高速數(shù)據(jù)采集系統(tǒng)中,由ADC轉(zhuǎn)換后的數(shù)據(jù)需要存儲在存儲器 中,再進行相應(yīng)的處理,保證快速準確的數(shù)據(jù)傳輸處理是實現(xiàn)高速數(shù)據(jù)采集的一個關(guān)鍵。由于高速ADC的轉(zhuǎn)換率很高,而大容量RAM相對ADC輸出速度較慢, 保持高速數(shù)據(jù)存儲過程的可靠性、實時性是一個比較棘手的問題。對于數(shù)據(jù)采集系統(tǒng)中的大容量高速度數(shù)據(jù)存儲、傳輸,本文提出一種基于FPGA的多片RAM實 現(xiàn)高速數(shù)據(jù)的存儲和傳輸?shù)姆桨福?yīng)用于1GS/s數(shù)據(jù)采集系統(tǒng)中,實現(xiàn)了以低成本RAM完成高速實時數(shù)據(jù)存儲系統(tǒng)的設(shè)計。
方案選擇
高速的數(shù)據(jù)采集速度是保證數(shù)據(jù)采集精度的標準,但往往在數(shù)據(jù)處理時并不需要以同樣的速度來進行,否則對硬件的需求太高,成本也較高。這就需要有一個數(shù)據(jù)緩存單元,將數(shù)據(jù)有效地存儲,再根據(jù)系統(tǒng)需求進行數(shù)據(jù)處理。
通常構(gòu)成高速緩存的方案有三種。第一種是FIFO(先進先出)方式。FIFO存儲器就像數(shù)據(jù)管道一樣,數(shù)據(jù)從管道的一頭流入,從另一頭流 出,先進入的數(shù)據(jù)先流出。FIFO具有兩套數(shù)據(jù)線而無地址線,可在其一端寫操作而在另一端讀操作,數(shù)據(jù)在其中順序移動,因而能夠達到很高的傳輸速度和效 率,且由于省去了地址線而有利于PCB板布線。缺點是只能順序讀寫數(shù)據(jù),不易靈活控制,而且大容量的高速FIFO非常昂貴。
第二種是雙口RAM方式。雙口RAM具有兩套獨立的數(shù)據(jù)、地址和控制總線,因而可從兩個端口同時讀寫而互不干擾,并可將采樣數(shù)據(jù)從一個端口 寫入,而由控制器從另一個端口讀出。雙口RAM也能達到很高的傳輸速度,并且具有隨機存取的優(yōu)點,缺點是大容量的高速雙口RAM的價格很昂貴。
第三種是高速SRAM切換方式。高速SRAM只有一套數(shù)據(jù)、地址和控制總線,可通過三態(tài)緩沖門分別接到A/D轉(zhuǎn)換器和控制器上。當A/D采 樣時,SRAM由三態(tài)門切換到A/D轉(zhuǎn)換器一側(cè),以使采樣數(shù)據(jù)寫入其中。當A/D采樣結(jié)束后,SRAM再由三態(tài)門切換到控制器一側(cè)進行讀寫。這種方式的優(yōu) 點是SRAM可隨機存取,同時較大容量的高速SRAM有現(xiàn)成的產(chǎn)品可供選擇。
從降低成本上考慮,采用第三種方式實現(xiàn)大容量數(shù)據(jù)存儲功能。結(jié)合1GS/s數(shù)據(jù)采集系統(tǒng)的要求,存儲深度為4MB。選擇ISSI公司的靜態(tài)RAM,由8片IS61LV25616構(gòu)成4MB測試數(shù)據(jù)的存儲,系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)存儲原理框圖
數(shù)據(jù)存儲設(shè)計
● 數(shù)據(jù)流控制
ADC為雙通道500MS/s的轉(zhuǎn)換率,8bit的垂直分辨率,轉(zhuǎn)換數(shù)據(jù)的輸出是每通道I、Q兩個方向上差動輸出,在差動時鐘500MHz 的驅(qū)動下,可以實現(xiàn)1GS/s的實時采樣率,由ADC輸出的4路轉(zhuǎn)換數(shù)據(jù)流輸出分別為250MS/s。而IS61LV256系列RAM的速度級別為 10ns或12ns,這樣數(shù)據(jù)必須經(jīng)過FPGA進行緩存以后,才可以再次存入RAM。
IS61LV25616系列RAM芯片有16位數(shù)據(jù)線,18位地址寬度,同時還包括數(shù)據(jù)讀RD、寫WR及片選CS等控制信號。將8片RAM并行連接到FPGA上,組成數(shù)據(jù)采集的存儲單元。
將從ADC輸出AI[8...0]、AQ[8...0]、BI[8...0]、BQ[8...0],每路信號都為LVDS輸出,共32位為 一組轉(zhuǎn)換數(shù)據(jù)DATA[31...0],速率為250MS/s,要將這個速度在FPGA內(nèi)部降至RAM可接受的范圍。選用CycloneII系列 FPGA,其內(nèi)部時鐘可工作在402.5MHz,支持單端和高速差動標準I/O接口,對于250MS/s的數(shù)據(jù)流完全可以接收。利用FPGA內(nèi)部的D觸發(fā) 器作為緩沖,經(jīng)過4級緩沖之后分別得到DBO[127...0],這樣數(shù)據(jù)速度降為62.5MS/s。經(jīng)過緩沖后的數(shù)據(jù)已經(jīng)在選用的RAM接受速度級別 內(nèi),將得到128位的數(shù)據(jù)作為8片RAM的數(shù)據(jù)線,完成了數(shù)據(jù)流的控制。數(shù)據(jù)緩沖的原理如圖2所示。
圖2 數(shù)據(jù)緩沖設(shè)計
● 地址發(fā)生器設(shè)計
每次讀寫數(shù)據(jù)時,必須提供數(shù)據(jù)的存儲位置,以讀寫信號作為時鐘計數(shù)信號,順序產(chǎn)生地址信號,其中NWE是RAM的寫數(shù)據(jù)信號,NOE是讀數(shù) 據(jù)信號,二者都是低電平有效,選擇AB[17...0]作為RAM組的地址信號。CNTEN是地址計數(shù)器的使能信號,由讀取/寫入數(shù)據(jù)的深度決定,當未完 成讀取/寫入的數(shù)據(jù)時,CNTEN=0,此時允許讀/寫操作繼續(xù)執(zhí)行;當讀/寫操作完成時,相應(yīng)的地址信號將CNTEN設(shè)置為1,則停止地址計數(shù)。地址發(fā) 生器的原理如圖3所示。
圖3 地址發(fā)生器設(shè)計
● 讀寫數(shù)據(jù)的設(shè)計
在設(shè)計好采集數(shù)據(jù)的地址發(fā)生單元后,接下來就是配合時序進行讀寫操作。
圖4是RAM的讀操作時序圖,從圖中可以看出,當指定待操作的地址后,設(shè)置芯片使能信號OE和片選使能信號CE有效,即可從數(shù)據(jù)線上讀出相應(yīng)地址內(nèi)的數(shù)據(jù)。
圖4 RAM的讀數(shù)據(jù)時序圖
對于單片RAM的操作比較簡單,但是要將數(shù)據(jù)順序?qū)懭?片RAM中,就要求對上一片RAM寫操作完成后,系統(tǒng)能夠設(shè)置下一個待操作的RAM 有效,128位數(shù)據(jù)線分別對應(yīng)8片RAM的數(shù)據(jù)線,由于地址線和讀寫使能線公用,則需要分別設(shè)置每個RAM的片選,以區(qū)別當前操作是針對哪一個RAM。片 選信號可以由譯碼器產(chǎn)生。讀操作時設(shè)置相應(yīng)RAM的片選有效,即可讀出存儲的數(shù)據(jù),而進行寫操作時,則可以設(shè)置所有的RAM片選有效,將采集到的數(shù)據(jù)同時 并行的寫入8片RAM中。根據(jù)這些描述,片選信號的設(shè)計如圖5所示。NIOMD為操作的狀態(tài)信號,說明當前的操作是讀狀態(tài)或是寫狀態(tài),讀數(shù)據(jù)情況下設(shè)置為 1,片選信號分別有效,寫數(shù)據(jù)情況下設(shè)置為0,所有RAM均處于片選有效狀態(tài)下,可以同時寫入數(shù)據(jù)。這樣的設(shè)計也是為了配合系統(tǒng)的需求,一般的,讀取數(shù)據(jù) 的速度相對于寫數(shù)據(jù)來說還是要快一些的。
圖5 RAM片選使能信號設(shè)計
仿真驗證
將上述設(shè)計方案整合后,配合其他控制信號的設(shè)計,就完成了數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)存儲功能的設(shè)計。在QuartusII軟件中對上述設(shè)計進行波形 仿真,可以看到設(shè)置SET值及相應(yīng)的狀態(tài)控制信號,則在VDB端就可以按照CS指示的相應(yīng)的RAM芯片中順序讀出預(yù)先存入的數(shù)據(jù)。按照圖中所示的狀態(tài)寄存 器設(shè)置,讀取深度設(shè)置寄存器設(shè)置為最小值SET[4...1]=000,即只讀每片RAM的首個存儲數(shù)據(jù),則地址發(fā)生器的最高值為8,從圖中可以看到當?shù)?址發(fā)生器輸出值增加到8時,WE跳變?yōu)楦唠娖剑琑AM的讀使能無效。由于AB[3]=1,使得CNTEN=1,地址發(fā)生器的計數(shù)時鐘使能無效,計數(shù)器停止 計數(shù),完成一輪數(shù)據(jù)的讀取操作。讀數(shù)據(jù)仿真驗證結(jié)果如圖6所示。
圖6 讀數(shù)據(jù)仿真驗證
在圖6中,對于當前數(shù)據(jù)線上的數(shù)據(jù)串DB=0010,0011,1010,1110,1101,0011,1001,0111,片選信號 CS低電平有效,當CS=11011111時,即選中按順序由低位到高位計算的第6片RAM,此時對應(yīng)的在VDB上讀出的數(shù)據(jù)應(yīng)該為DB的第6個數(shù)據(jù)值, 即為1010。從波形方針圖上得到驗證。
結(jié)語
利用FPGA的內(nèi)部資源,設(shè)計靈活的邏輯控制,完成高速大容量數(shù)據(jù)采集的存儲和傳輸設(shè)計,本文提出的設(shè)計方案可以在選用低成本、操作簡單的 靜態(tài)RAM組的情況下,實現(xiàn)實時大容量數(shù)據(jù)存儲需求的一種設(shè)計方法,并在EDA軟件中進行了仿真驗證,成功地應(yīng)用在1GS/s數(shù)據(jù)采集模塊中。