黃遠望,嚴濟鴻
(電子科技大學(xué)電子工程學(xué)院,成都611731)
數(shù)據(jù)采集系統(tǒng)是信號與信息處理系統(tǒng)不可缺少的組成部分,其廣泛應(yīng)用于微電子技術(shù)、計算機技術(shù)和通信技術(shù)等領(lǐng)域。本文所述系統(tǒng)充分利用了現(xiàn)場可編程門陣列的靈活性[1]和通用串行總線(USB)體積小、即插即用、速度高等優(yōu)點[2],可實現(xiàn)多種頻率信號的雙通道觸發(fā)采集。給出了該系統(tǒng)的硬件方案和電路原理,做了詳細說明,同時介紹了FPGA 內(nèi)部邏輯的設(shè)計,最后搭建實驗平臺對該系統(tǒng)的功能做了驗證。
硬件系統(tǒng)中包括差分接口電路、高速SRAM、時鐘選擇電路、FPGA 和USB 接口電路。輸入的數(shù)據(jù)通過差分接口電路輸入到FPGA 中,而數(shù)據(jù)的隨路時鐘則進入到時鐘選擇電路中做延時處理。當(dāng)上位機發(fā)送采集命令后,F(xiàn)PGA 開始采集數(shù)據(jù)并存入到SRAM 中,當(dāng)達到預(yù)定緩存區(qū)長度時,再由SRAM 將數(shù)據(jù)讀出,通過USB 總線上傳到計算機中。其中系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)采集系統(tǒng)框圖
作為采集系統(tǒng)硬件核心的FPGA 選取Cyclone系列EP1C12Q240C6[3]芯片。該芯片采用全銅SRAM 工藝,封裝為PQFQ240,保證了較低的焊接成本,同時具有高達175個用戶I/O 口,能夠充分滿足本系統(tǒng)對I/O 口數(shù)量的需求。其內(nèi)部集成了2個PLL鎖相環(huán),12 060個LE邏輯單元,存儲資源達到239 616位,可以很好地支撐硬件資源的開銷。與該芯片配套的還有Altera公司的專用配置芯片EPCS4,該芯片能夠提供4 Mb的程序空間,它與FPGA 芯片之間采用專門的AS-JTAG 兼容配置電路連接。
數(shù)據(jù)緩存為高速SRAM 存儲器CY7C1061AV33,其最大具有1 M×16位的存儲空間,最高支持100 MHz的讀寫速度。
USB芯片采用的是CYPRESS公司使用廣泛的EZUSB FX2LP系列CY7C68013A。該芯片支持USB2.0傳輸協(xié)議,內(nèi)部集成了智能串行接口引擎和8051微處理器內(nèi)核,其在低功耗的前提下可以實現(xiàn)數(shù)據(jù)傳輸?shù)臒o縫連接,其數(shù)據(jù)傳輸速度可達到48 MHz。
差分接口芯片則為TI公司的SN65LVDS386,該芯片可將LVDS數(shù)據(jù)和時鐘信號轉(zhuǎn)換為LVTTL 格式的單端信號。要使其正常工作,需要在輸入差分對信號之間串聯(lián)一個100Ω 的電阻。
USB 方案采用CY7C68013A 的SLAVE FIFO[4]模式,通過讀寫其內(nèi)部的4個端點FIFO 的方式來實現(xiàn)數(shù)據(jù)的無縫連接。其硬件連接示意圖如圖2所示。
圖2 SLAVE FIFO 方案硬件連接框圖
其中FIFOADDR[1:0]為端點的地址線,F(xiàn)PGA 通過該地址線控制USB端點FIFO的選擇;FD[15∶0]為雙向數(shù)據(jù)總線;FLAGA/B/C為可編程狀態(tài)指示信號,可以通過固件編程使其表示端點FIFO 的空滿狀態(tài)信息;SLCS#為USB芯片片選信號;SLOE、SLWR、SLRD為讀寫端點FIFO的控制信號,低有效;PKTEND是數(shù)據(jù)包結(jié)束信號,IFCLK 為接口同步時鐘,由USB芯片提供,頻率為48MHz。
由于FPGA 中資源量較小,而對于數(shù)據(jù)緩存最大容量為每一路數(shù)據(jù)為1M,采用FPGA 內(nèi)部RAM 資源達不到其數(shù)據(jù)存儲的要求,則采用外部存儲的方式。為簡化設(shè)計,對于存儲器的選擇采用了讀寫時序比較簡單的SRAM。為了方便同時對兩路數(shù)據(jù)存儲,本系統(tǒng)中運用兩片SRAM 分別完成兩路數(shù)據(jù)通道的緩存。其中電路連接框圖如圖3所示。
其中,ADDR[19∶0]為地址總線,DATA[15:0]為雙向數(shù)據(jù)總線,WEN、CEN、OEN 為讀寫使能信號,BHEN和BLEN 為高低字節(jié)有效信號。
圖3 存儲方案硬件連接框圖
采用外部隨路時鐘進行采樣,每一個數(shù)據(jù)通道對應(yīng)一路時鐘。每路時鐘通過外部延時芯片,其延時量可通過FPGA 控制。其電路圖如圖4所示。
圖4 外部時鐘延時選擇方案原理圖
其中DS1100為延時芯片,其輸出TAP1~TAP5 為輸入時鐘延時20~100ns的時鐘信號。延時之后的時鐘輸出到8 路選擇器74AC151中,輸出控制端ADELAY_SEL0~2連接到FPGA。通過這種方式,可以靈活地對輸入時鐘做適當(dāng)延時,以保持時鐘和數(shù)據(jù)之間的建立時間和保持時間關(guān)系,防止采樣到亞穩(wěn)態(tài)的情況。
整個數(shù)據(jù)采集系統(tǒng)硬件所需要的供電電平有5 V、3.3V 和1.5V 三種情況,其中通過初步功率分析,3.3V和1.5V 提供的電流總量不超過1.5A,其可以通過線性電源芯片LM1086來實現(xiàn),而5V 可由外圍供電接口直接供電。其電路圖如圖5所示。
圖5 電源模塊原理圖
LM1086-3.3直接提供5V到3.3V的電壓轉(zhuǎn)換,而1.5V電壓是LM1086-ADJ輸出端串接兩個精密電阻(R1和R2)分壓電路來實現(xiàn)的,其中兩個電阻值之比為5:1。
FPGA 的內(nèi)部程序為本系統(tǒng)的核心內(nèi)容,本設(shè)計采用模塊化的設(shè)計思路,將系統(tǒng)分為各個子模塊來完成相應(yīng)的功能,最后集成為一個整體。下文中給出了每個功能模塊的具體說明。
在本系統(tǒng)中每個數(shù)據(jù)通道的輸入位寬為16位,伴隨數(shù)據(jù)的還有一個同步時鐘輸入。每個通道數(shù)據(jù)格式為IQ,兩路數(shù)據(jù)相互交錯輸入,時鐘上升沿為I,下降沿為Q。針對這樣的數(shù)據(jù)格式,本設(shè)計采用兩個并聯(lián)的異步FIFO 的方式來實現(xiàn)數(shù)據(jù)的采集和時鐘域的轉(zhuǎn)換。兩個FIFO 中一個接輸入時鐘,另外一個接輸入時鐘的反相時鐘,通過這種方式來同時采樣上升沿和下降沿的數(shù)據(jù)。為了保證數(shù)據(jù)采樣過程中寫入數(shù)據(jù)的連續(xù)性,必須保證在異步FIFO 之后的讀取數(shù)據(jù)速度大于寫數(shù)據(jù)的時鐘速率,故在讀時鐘端采用48MHz時鐘,使速率低于48Mbps的輸入數(shù)據(jù)都能夠被有效、連續(xù)地采集下來。
該模塊完成外圍存儲芯片的讀寫操作,其讀寫速度達到48 Mbps。針對CY7C1061AV33 存儲芯片的讀時序,必須在一個地址穩(wěn)定有效時間段內(nèi)使得WEN 信號經(jīng)歷一個負脈沖的過程,才能保證數(shù)據(jù)正確地寫入SRAM 中。讀過程中,一直保持OEN 信號為低,輸入待讀取數(shù)據(jù)的地址,即可將存儲器中相應(yīng)位置的數(shù)據(jù)成功讀取出來。在整個讀寫過程中,CEN 都保持為低,當(dāng)該模塊空閑狀態(tài)時,該信號置高。
此部分負責(zé)數(shù)據(jù)通道的選擇。由于在采集前端是兩路數(shù)據(jù)同時采集,而上傳到PC 機上只有一路數(shù)據(jù)總線,故這里需要將傳輸?shù)経SB的數(shù)據(jù)通道根據(jù)主控程序的控制在A 通道和B通道之間切換。根據(jù)上位機參數(shù)設(shè)置指令可以指定采集的通道,可為A 通道、B通道或者AB 通道同時選擇。當(dāng)同時選擇AB通道時,數(shù)據(jù)選擇模塊先將A 通道接到USB接口模塊,A 通道傳輸完畢之后再將B通道接入。
該模塊為與外圍USB芯片的接口程序主要完成接收并返回上位機的指令,并將采集的數(shù)據(jù)傳輸給上位機,實現(xiàn)FPGA和USB芯片之間的交互。數(shù)據(jù)和命令采用分離傳輸方式,即數(shù)據(jù)命令不能在同一時刻傳輸。上傳數(shù)據(jù)時FPGA選擇6端點[5],通過FLAGB和FLAGC來檢測數(shù)據(jù)端點的空滿狀態(tài),當(dāng)端點FIFO 為非空時啟動數(shù)據(jù)傳輸,為滿時暫停數(shù)據(jù)傳輸。另一方面,控制命令的傳輸需要通過端點2實現(xiàn),主機向端點2發(fā)送命令,當(dāng)FPGA檢測到端點2所對應(yīng)的FIFO非空時即可通過讀FIFO 操作接收命令,通過這種方式FPGA能夠獲取上位機設(shè)置的命令參數(shù),之后底層硬件便可以按照上位機的要求進行相應(yīng)的操作。
主控模塊作為FPGA 內(nèi)部邏輯的控制核心,負責(zé)對上位機指令譯碼并作出相關(guān)操作,同時監(jiān)測和控制各個子模塊的工作狀態(tài)。
指令的下傳主要由上位機經(jīng)過USB芯片傳輸?shù)紽PGA 的I/O 口上。USB接口程序接收到指令之后,將接收到的指令傳給主控模塊,在主控模塊中對指令進行譯碼操作。上位機下傳給硬件系統(tǒng)的命令包括板卡檢測、硬件自檢、參數(shù)設(shè)置、采集開始這4類,每一條指令長度為16位。其中又以參數(shù)設(shè)置指令最為重要,其包含了通道選擇、緩沖區(qū)長度設(shè)置、外部時鐘延時選擇、觸發(fā)模式選擇等相關(guān)信息。主控模塊的工作狀態(tài)圖如圖6所示。
圖6 主控模塊內(nèi)部狀態(tài)圖
由圖6可知,針對上位機不同的指令對應(yīng)不同的操作,操作完成之后狀態(tài)機會重新進入到等待命令的狀態(tài)。
結(jié)合CYPRESS公司官方提供的USB接口調(diào)試軟件Cyconsol EZ-USB來實現(xiàn)發(fā)送命令,并接收硬件上傳數(shù)據(jù)。通過軟硬件聯(lián)合調(diào)試,搭建實驗平臺,對本次設(shè)計做了功能測試。
利用安捷倫E4430B 信號源產(chǎn)生頻率為26KHz、幅度為0dB 的正弦信號,通過ADC500芯片做A/D 轉(zhuǎn)換,采樣率為1 MHz,采樣得到信號經(jīng)過差分轉(zhuǎn)換之后接入本數(shù)據(jù)采集系統(tǒng),得到的結(jié)果如圖7所示??梢钥吹?,該數(shù)據(jù)采集系統(tǒng)能夠正確、穩(wěn)定地采集數(shù)據(jù)并將數(shù)據(jù)傳輸?shù)缴衔粰C中,驗證了系統(tǒng)的正確性。
本文從工程應(yīng)用的角度出發(fā),介紹了基于FPGA、SRAM 和USB的系統(tǒng)構(gòu)架的數(shù)據(jù)采集系統(tǒng)。實踐證明,該系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)穩(wěn)定有效的采集,具有較高的實用價值,可以適用于多種速度的數(shù)據(jù)采集需求,具可有擴展性。
圖7 測試軟件界面圖
[1]邵磊,倪明.基于FPGA 的高速數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)[J].計算機工程,2011,27(19):221-223.
[2]曾一,李鵬,毛樂山.一種USB 接口便攜式多模式多通道A/D 數(shù)據(jù)采集系統(tǒng)[J].電測與儀表,2008,45(7):44-46.
[3]Altera Corporation.Cyclone Device Handbook,2008.
[4]Cypress.EZ-USB Technical Reference Manual,2002.
[5]Cypress.Cypress CyAPI Programmer's Reference,2011.