黃遠望,嚴濟鴻
(電子科技大學電子工程學院,成都611731)
數據采集系統是信號與信息處理系統不可缺少的組成部分,其廣泛應用于微電子技術、計算機技術和通信技術等領域。本文所述系統充分利用了現場可編程門陣列的靈活性[1]和通用串行總線(USB)體積小、即插即用、速度高等優點[2],可實現多種頻率信號的雙通道觸發采集。給出了該系統的硬件方案和電路原理,做了詳細說明,同時介紹了FPGA 內部邏輯的設計,最后搭建實驗平臺對該系統的功能做了驗證。
硬件系統中包括差分接口電路、高速SRAM、時鐘選擇電路、FPGA 和USB 接口電路。輸入的數據通過差分接口電路輸入到FPGA 中,而數據的隨路時鐘則進入到時鐘選擇電路中做延時處理。當上位機發送采集命令后,FPGA 開始采集數據并存入到SRAM 中,當達到預定緩存區長度時,再由SRAM 將數據讀出,通過USB 總線上傳到計算機中。其中系統的整體結構如圖1所示。

圖1 數據采集系統框圖
作為采集系統硬件核心的FPGA 選取Cyclone系列EP1C12Q240C6[3]芯片。該芯片采用全銅SRAM 工藝,封裝為PQFQ240,保證了較低的焊接成本,同時具有高達175個用戶I/O 口,能夠充分滿足本系統對I/O 口數量的需求。其內部集成了2個PLL鎖相環,12 060個LE邏輯單元,存儲資源達到239 616位,可以很好地支撐硬件資源的開銷。與該芯片配套的還有Altera公司的專用配置芯片EPCS4,該芯片能夠提供4 Mb的程序空間,它與FPGA 芯片之間采用專門的AS-JTAG 兼容配置電路連接。
數據緩存為高速SRAM 存儲器CY7C1061AV33,其最大具有1 M×16位的存儲空間,最高支持100 MHz的讀寫速度。
USB芯片采用的是CYPRESS公司使用廣泛的EZUSB FX2LP系列CY7C68013A。該芯片支持USB2.0傳輸協議,內部集成了智能串行接口引擎和8051微處理器內核,其在低功耗的前提下可以實現數據傳輸的無縫連接,其數據傳輸速度可達到48 MHz。
差分接口芯片則為TI公司的SN65LVDS386,該芯片可將LVDS數據和時鐘信號轉換為LVTTL 格式的單端信號。要使其正常工作,需要在輸入差分對信號之間串聯一個100Ω 的電阻。
USB 方案采用CY7C68013A 的SLAVE FIFO[4]模式,通過讀寫其內部的4個端點FIFO 的方式來實現數據的無縫連接。其硬件連接示意圖如圖2所示。

圖2 SLAVE FIFO 方案硬件連接框圖
其中FIFOADDR[1:0]為端點的地址線,FPGA 通過該地址線控制USB端點FIFO的選擇;FD[15∶0]為雙向數據總線;FLAGA/B/C為可編程狀態指示信號,可以通過固件編程使其表示端點FIFO 的空滿狀態信息;SLCS#為USB芯片片選信號;SLOE、SLWR、SLRD為讀寫端點FIFO的控制信號,低有效;PKTEND是數據包結束信號,IFCLK 為接口同步時鐘,由USB芯片提供,頻率為48MHz。
由于FPGA 中資源量較小,而對于數據緩存最大容量為每一路數據為1M,采用FPGA 內部RAM 資源達不到其數據存儲的要求,則采用外部存儲的方式。為簡化設計,對于存儲器的選擇采用了讀寫時序比較簡單的SRAM。為了方便同時對兩路數據存儲,本系統中運用兩片SRAM 分別完成兩路數據通道的緩存。其中電路連接框圖如圖3所示。
其中,ADDR[19∶0]為地址總線,DATA[15:0]為雙向數據總線,WEN、CEN、OEN 為讀寫使能信號,BHEN和BLEN 為高低字節有效信號。

圖3 存儲方案硬件連接框圖
采用外部隨路時鐘進行采樣,每一個數據通道對應一路時鐘。每路時鐘通過外部延時芯片,其延時量可通過FPGA 控制。其電路圖如圖4所示。

圖4 外部時鐘延時選擇方案原理圖
其中DS1100為延時芯片,其輸出TAP1~TAP5 為輸入時鐘延時20~100ns的時鐘信號。延時之后的時鐘輸出到8 路選擇器74AC151中,輸出控制端ADELAY_SEL0~2連接到FPGA。通過這種方式,可以靈活地對輸入時鐘做適當延時,以保持時鐘和數據之間的建立時間和保持時間關系,防止采樣到亞穩態的情況。
整個數據采集系統硬件所需要的供電電平有5 V、3.3V 和1.5V 三種情況,其中通過初步功率分析,3.3V和1.5V 提供的電流總量不超過1.5A,其可以通過線性電源芯片LM1086來實現,而5V 可由外圍供電接口直接供電。其電路圖如圖5所示。

圖5 電源模塊原理圖
LM1086-3.3直接提供5V到3.3V的電壓轉換,而1.5V電壓是LM1086-ADJ輸出端串接兩個精密電阻(R1和R2)分壓電路來實現的,其中兩個電阻值之比為5:1。
FPGA 的內部程序為本系統的核心內容,本設計采用模塊化的設計思路,將系統分為各個子模塊來完成相應的功能,最后集成為一個整體。下文中給出了每個功能模塊的具體說明。
在本系統中每個數據通道的輸入位寬為16位,伴隨數據的還有一個同步時鐘輸入。每個通道數據格式為IQ,兩路數據相互交錯輸入,時鐘上升沿為I,下降沿為Q。針對這樣的數據格式,本設計采用兩個并聯的異步FIFO 的方式來實現數據的采集和時鐘域的轉換。兩個FIFO 中一個接輸入時鐘,另外一個接輸入時鐘的反相時鐘,通過這種方式來同時采樣上升沿和下降沿的數據。為了保證數據采樣過程中寫入數據的連續性,必須保證在異步FIFO 之后的讀取數據速度大于寫數據的時鐘速率,故在讀時鐘端采用48MHz時鐘,使速率低于48Mbps的輸入數據都能夠被有效、連續地采集下來。
該模塊完成外圍存儲芯片的讀寫操作,其讀寫速度達到48 Mbps。針對CY7C1061AV33 存儲芯片的讀時序,必須在一個地址穩定有效時間段內使得WEN 信號經歷一個負脈沖的過程,才能保證數據正確地寫入SRAM 中。讀過程中,一直保持OEN 信號為低,輸入待讀取數據的地址,即可將存儲器中相應位置的數據成功讀取出來。在整個讀寫過程中,CEN 都保持為低,當該模塊空閑狀態時,該信號置高。
此部分負責數據通道的選擇。由于在采集前端是兩路數據同時采集,而上傳到PC 機上只有一路數據總線,故這里需要將傳輸到USB的數據通道根據主控程序的控制在A 通道和B通道之間切換。根據上位機參數設置指令可以指定采集的通道,可為A 通道、B通道或者AB 通道同時選擇。當同時選擇AB通道時,數據選擇模塊先將A 通道接到USB接口模塊,A 通道傳輸完畢之后再將B通道接入。
該模塊為與外圍USB芯片的接口程序主要完成接收并返回上位機的指令,并將采集的數據傳輸給上位機,實現FPGA和USB芯片之間的交互。數據和命令采用分離傳輸方式,即數據命令不能在同一時刻傳輸。上傳數據時FPGA選擇6端點[5],通過FLAGB和FLAGC來檢測數據端點的空滿狀態,當端點FIFO 為非空時啟動數據傳輸,為滿時暫停數據傳輸。另一方面,控制命令的傳輸需要通過端點2實現,主機向端點2發送命令,當FPGA檢測到端點2所對應的FIFO非空時即可通過讀FIFO 操作接收命令,通過這種方式FPGA能夠獲取上位機設置的命令參數,之后底層硬件便可以按照上位機的要求進行相應的操作。
主控模塊作為FPGA 內部邏輯的控制核心,負責對上位機指令譯碼并作出相關操作,同時監測和控制各個子模塊的工作狀態。
指令的下傳主要由上位機經過USB芯片傳輸到FPGA 的I/O 口上。USB接口程序接收到指令之后,將接收到的指令傳給主控模塊,在主控模塊中對指令進行譯碼操作。上位機下傳給硬件系統的命令包括板卡檢測、硬件自檢、參數設置、采集開始這4類,每一條指令長度為16位。其中又以參數設置指令最為重要,其包含了通道選擇、緩沖區長度設置、外部時鐘延時選擇、觸發模式選擇等相關信息。主控模塊的工作狀態圖如圖6所示。

圖6 主控模塊內部狀態圖
由圖6可知,針對上位機不同的指令對應不同的操作,操作完成之后狀態機會重新進入到等待命令的狀態。
結合CYPRESS公司官方提供的USB接口調試軟件Cyconsol EZ-USB來實現發送命令,并接收硬件上傳數據。通過軟硬件聯合調試,搭建實驗平臺,對本次設計做了功能測試。
利用安捷倫E4430B 信號源產生頻率為26KHz、幅度為0dB 的正弦信號,通過ADC500芯片做A/D 轉換,采樣率為1 MHz,采樣得到信號經過差分轉換之后接入本數據采集系統,得到的結果如圖7所示。可以看到,該數據采集系統能夠正確、穩定地采集數據并將數據傳輸到上位機中,驗證了系統的正確性。
本文從工程應用的角度出發,介紹了基于FPGA、SRAM 和USB的系統構架的數據采集系統。實踐證明,該系統能夠實現數據穩定有效的采集,具有較高的實用價值,可以適用于多種速度的數據采集需求,具可有擴展性。

圖7 測試軟件界面圖
[1]邵磊,倪明.基于FPGA 的高速數據采集系統設計與實現[J].計算機工程,2011,27(19):221-223.
[2]曾一,李鵬,毛樂山.一種USB 接口便攜式多模式多通道A/D 數據采集系統[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.