張志煒,呂幼新
(電子科技大學 電子工程學院,四川 成都 611731)
隨著數(shù)字信號處理技術和微電子技術的飛速發(fā)展,數(shù)據(jù)采集和數(shù)據(jù)存儲在各個領域中得到了廣泛的應用。從民用到軍用,從日常生活到科學研究,各領域?qū)?shù)據(jù)采集存儲系統(tǒng)的采樣速率、存儲速率及容量、便攜性都提出了越來越高的要求,針對這一問題,結(jié)合當前技術發(fā)展形勢,設計并實現(xiàn)了一種基于SATA硬盤和FPGA的高速大容量數(shù)據(jù)采集存儲系統(tǒng)。
使用FPGA實現(xiàn)高速采樣數(shù)據(jù)的多通道分配,再使用串并轉(zhuǎn)換芯片對串口SATA硬盤進行數(shù)據(jù)存儲操作,該設計系統(tǒng)可以脫離計算機獨立運行,提高了便攜性,增加了使用范圍。
本設計由前端數(shù)據(jù)采集、分路緩存控制、串并轉(zhuǎn)換和SATA硬盤4部分組成。系統(tǒng)實現(xiàn)流程為:首先采集正交模擬信號I/Q兩路,在FPGA內(nèi)部的SDRAM控制器和FIFO存儲器的操作下實現(xiàn)對高速采集數(shù)據(jù)的分時處理,再通過并口轉(zhuǎn)串口芯片將目標數(shù)據(jù)存入SATA硬盤。組成系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖Fig.1 System principle
數(shù)據(jù)采集的任務是采集輸入的模擬信號并轉(zhuǎn)換成計算機能識別的數(shù)字信號,然后送入計算機或相應的信號處理系統(tǒng),根據(jù)不同需要進行相應的計算和處理,得出所需的數(shù)據(jù)[1]。而輸入的模擬信號首先要經(jīng)過處理,使其滿足后面的器件需要的輸入條件,如調(diào)整幅度,抑制共模信號等。本設計中前端數(shù)據(jù)采集模塊為后續(xù)的FPGA分路控制模塊提供有效可供處理的數(shù)字信號。在時鐘頻率為150 MHz的條件下,采用集成運放芯片AD8352對輸入的兩路I,Q兩路差分模擬信號進行增益調(diào)整,采用模數(shù)轉(zhuǎn)換芯片AD9627對調(diào)整后的信號進行采樣。
AD8352是一款高性能差分放大器,中頻和射頻性能較好,且具有高寬帶、低失真的性能。在頻率為200~500 MHz時,無雜散動態(tài)范圍(SFDR)介于80~65 dB,所以非常適合作為高速12~16 bit的模數(shù)轉(zhuǎn)換器的驅(qū)動器。并能運用自配的緩沖器將調(diào)整增益的電阻與輸入信號隔離起來,通過調(diào)整增益電阻的大小控制輸出的增益。
AD9627為一款雙通道低寬帶失真的高性能A/D模數(shù)轉(zhuǎn)換芯片,具有150 MSPS的最高采樣速度,有效位數(shù)12 Bit的性能優(yōu)點,非常適合本設計的應用范圍;該芯片專為數(shù)據(jù)通信設計,采用多級的差分流水線結(jié)構(gòu)和輸出誤差校正邏輯,內(nèi)部還集成了具有高帶寬差分采樣保持放大器,能支持各種用戶所需要的輸入范圍;內(nèi)部時鐘穩(wěn)定電路能補償時鐘的抖動或偏移,穩(wěn)定時鐘;內(nèi)部還有信號監(jiān)控電路,可以監(jiān)測輸入的信號,調(diào)整增益值,使系統(tǒng)性能最優(yōu)。
FPGA緩存分路實現(xiàn)數(shù)據(jù)分路和數(shù)據(jù)緩存兩部分功能,是整個設計的核心模塊和關鍵技術,由FPGA芯片和SDRAM芯片構(gòu)成。該部分也被稱為“乒乓操作”,是一個常常應用于數(shù)據(jù)流控制的處理技巧。該方法包含4個通道,每個通道由一個異步的FIFO和一個SDRAM組成。首先接受前端采集后的信號,再送入FPGA內(nèi)部資源構(gòu)成的異步FIFO中[2],高速寫進慢速讀出。當異步FIFO寫滿時,F(xiàn)PGA就將數(shù)據(jù)存入同一路的SDRAM中[3]。同時將數(shù)據(jù)等式分成四路,當?shù)谝粋€SDRAM寫滿時,就將數(shù)據(jù)送往第二個通道的異步FIFO和SDRAM;當?shù)诙€SDRAM寫滿時,就將數(shù)據(jù)送往第三個通道的異步FIFO和SDRAM,依次往復循環(huán)。當數(shù)據(jù)送往第二個通道時,第一個通道仍然可以將數(shù)據(jù)送往下一級的存儲單元,由此實現(xiàn)數(shù)據(jù)的連續(xù)高速傳輸,慢速存儲。分路緩存模塊原理如圖2所示。
圖2 分路緩存原理Fig.2 Data channel selection principle
數(shù)據(jù)緩存用Verilog代碼編寫DDR模型和自檢測模塊,內(nèi)部構(gòu)造一個生成數(shù)據(jù)和地址的狀態(tài)機[4],向芯片內(nèi)每個Bank的行列寫入數(shù)據(jù),寫入緩存之后再分析讀出的數(shù)據(jù),比較寫入前數(shù)據(jù)和讀出后數(shù)據(jù)是否相同,以此判斷控制模塊功能是否正確。若前后數(shù)據(jù)不一致誤,既發(fā)生錯,則設定的pnf變量為0,哪一位數(shù)據(jù)發(fā)生錯誤則該位對應的pnf_per_byte位設置為0。前后數(shù)據(jù)一致,則完成后設置狀態(tài)位test_complete為1,表明傳輸正確。
數(shù)據(jù)分路程序的端口例化及代碼:
由于在FPGA內(nèi)部要實現(xiàn)四個FIFO和控制數(shù)據(jù)流的傳輸,需要足夠的RAM塊,大量的接口和多種電平方式,因此本設計中的FPGA采用ALTERA公司性價比較高的EP2C35F672-C8。其擁有高密度的結(jié)構(gòu),滿足常規(guī)設計要求的33 216個邏輯單元數(shù)量,總?cè)萘繛?83 840比特的RAM塊,多達475個可使用的I/O資源,16個全局時鐘網(wǎng)絡,能給設計提供足夠的全局時鐘驅(qū)動。在本設計中將內(nèi)部的RAM塊配置為異步FIFO,實現(xiàn)數(shù)據(jù)的高速寫入慢速讀出[5]。
用于高速數(shù)據(jù)緩存的SDRAM芯片采用Micron公司的MT48LC4M32B2。該芯片基于高速CMOS電路技術,總?cè)萘繛?28 M。芯片總共分4個Bank,每個Bank分為4 096行、256列,每一存儲單元的數(shù)據(jù)寬度為32位。工作電壓為3.3 V,支持自動刷新,兼容LVTTL接口。MT48LC4M32B2支持突發(fā)傳輸,傳輸長度可為1、2、4、8或者是整個頁面。
較之于傳統(tǒng)PATA并口硬盤,SATA串口硬盤的傳輸率、功耗、兼容性、抗干擾性都有極大程度的提高,因此被廣泛的應用在個人電腦及各消費電子設備中。但在實際應用里,F(xiàn)PGA處理的數(shù)據(jù)均為并行數(shù)據(jù),要使之存入SATA硬盤,則必須進行串并轉(zhuǎn)換。本方案采用Jmicron公司的SATA&PATA/IDE雙向橋接單晶片JM20330來實現(xiàn)所要求的功能[8]。前端連接FPGA處理了的并行數(shù)據(jù),后端與SATA硬盤的接口相連。
圖3 數(shù)據(jù)分路仿真結(jié)果Fig.3 Simulation result of data chanelling
兩路8位I,Q數(shù)據(jù)合成一路16位數(shù)據(jù),根據(jù)控制信息將其分成4路,分別送給不同通道,為數(shù)據(jù)緩存提供前處理數(shù)據(jù)。
當test_complete為1,仿真完成之后,pnf值為1。說明寫入的數(shù)和讀出的數(shù)據(jù)完全一樣,該控制器模塊可以正確的實現(xiàn)SDRAM對數(shù)據(jù)的高速讀寫。
圖4 數(shù)據(jù)緩存仿真結(jié)果Fig.4 Simulation result of data caching
使用Tektronix AWG420任意波形發(fā)生器產(chǎn)生中頻10 MHz、帶寬 10 MHz、脈寬 10 μs的線性調(diào)頻信號,模擬實際應用中的輸入信號[6];使用Agilent 8648B產(chǎn)生系統(tǒng)150 MHz的工作時鐘;利用JTAG數(shù)據(jù)線連入電腦來監(jiān)測系統(tǒng)所采集存儲的實時數(shù)據(jù),實時采樣數(shù)據(jù)通過Altera公司的Signal TapⅡ從FPGA中讀出后,使用MATLAB分別在時域和頻域內(nèi)對其進行分析。
從硬盤讀出的信號由MATLAB進行分析,得到的時域圖和頻譜圖如圖5所示,觀察結(jié)果圖,經(jīng)過放大后可觀察到頻譜的脈沖帶寬為10 MHz。因此本系統(tǒng)能夠成功的完成數(shù)據(jù)的采集和存儲功能。
圖5 從SATA硬盤中讀出數(shù)據(jù)的時域圖和頻譜圖Fig.5 Time-domain figure and frequency-domain figure of the data from the SATA
通過AD8352和AD9627搭構(gòu)成的前端數(shù)據(jù)采集模塊實現(xiàn)對正交信號的同時采集,最高采樣率可以達到150MHZ,能夠滿足很多應用場合的需要。對采集數(shù)據(jù)進行緩存分路使得后端的存儲壓力變小;強抗干擾性和高速率的SATA接口增加了數(shù)據(jù)的存儲速度和安全性,可實現(xiàn)長時間、大容量的數(shù)據(jù)存儲,并且縮短了SATA硬盤控制器的開發(fā)周期,以較小的經(jīng)濟代價換取較短的開發(fā)時間。
[1]馬明建.數(shù)據(jù)采集與處理技術[M].西安:西安交通大學出版社,2005.
[2]王志.基于乒乓操作的異步FIFO設計及VHDL實現(xiàn)[J].電子工程師,2005,31(6):13-16.WANG Zhi.Asynchronous FIFO design based on ping pong operation and implementation of the VHDL[J].Electronic Engineer,2005,31(6):13-16.
[3]劉勇.基于USB2.0和DDR2的數(shù)據(jù)采集系統(tǒng)設計與FPGA實現(xiàn)[J].電子元器件應用,2010,12(10):48-50.LIU Yong.Data acquistion system design based on USB2.0 and DDR2 with the implementation of FPGA[J].Electronic Component&Devise Applications,2010,12(10):48-50.
[4]Palnitkar,S.VerilogHDL數(shù)字設計與綜合 [M].2版.夏宇聞等,譯.北京:電子工業(yè)出版社,2004.
[5]Michael D Ciletti.VerilogHDL高級數(shù)字設計[M].張雅綺等,譯.北京:電子工業(yè)出版社,2005.
[6]王金明.數(shù)字系統(tǒng)設計與Verilog HDL[M].2版.北京:電子工業(yè)出版社,2005.