基于USB2_0和DDR2的數(shù)據(jù)采集系統(tǒng)設計與FPGA實現(xiàn)
摘要: 采用DDR2 SDRAM作為被采集數(shù)據(jù)的緩存技術, 給出了USB2.0與DDR2相結合的實時、高速數(shù)據(jù)采集系統(tǒng)的解決方案, 同時提出了對數(shù)據(jù)采集系統(tǒng)的改進思路以及在Xilinx的Virtex5 LX30 FPGA上的實現(xiàn)方法。
0 引言
隨著計算機、微電子和嵌入式系統(tǒng)技術的發(fā)展, 數(shù)據(jù)采集技術已經在生物醫(yī)學、圖像處理、雷達系統(tǒng)等眾多領域得到廣泛應用。本文設計的高速數(shù)據(jù)采集系統(tǒng)是應用于芯片現(xiàn)場測試的實時數(shù)據(jù)采集系統(tǒng), 由于被測試芯片為250 MHz 8 bit的高速AD輸出, 因此, 該數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)采集率是2 Gbps。為了達到實時、高速、海量的數(shù)據(jù)采集, 該系統(tǒng)利用DDR2 SDRAM的高速數(shù)據(jù)傳輸能力和海量存儲能力做為采集數(shù)據(jù)的緩存,然后通過具有即插即用、易擴展、傳輸速率較高等特點的USB2.0接口來將DDR2 SDRAM中的數(shù)據(jù)傳輸?shù)接嬎銠C中進行存儲和分析。
1 數(shù)據(jù)采集系統(tǒng)架構
該數(shù)據(jù)采集系統(tǒng)的總體架構由硬件部分、固件部分和計算機上的USB驅動及應用程序等幾大部分組成, 本文完成了硬件和固件部分的設計。
該系統(tǒng)的硬件部分主要由USB2.0、DDR2SDRAM、MCU以及IF等核心模塊組成, 圖1所示是其系統(tǒng)架構圖。
系統(tǒng)總體架構圖
圖1 系統(tǒng)總體架構圖
USB2.0由控制器和物理傳輸層組成, 其中控制器是在FPGA上實現(xiàn)的Faraday公司的IP核, 物理層可選用SMSC公司的GT3200芯片, 控制器與物理層芯片之間可通過標準的UTMI接口相連。
DDR2 SDRAM控制器是基于Xilinx公司提供的IP核, 工作頻率是125~266 MHz, 與SDRAM之間的接口是64 bit SODIMM筆記本內存條接口。作為數(shù)據(jù)存儲的SDRAM 是Samsung 公司的M470T5663QZ3-CE6 2GB 內存條。系統(tǒng)的控制核心MCU采用Mentor Graphics公司的增強型8051 IP核M8051EW, 該8051核采用兩個時鐘周期為一個機器周期的高性能架構, 同時支持MWAIT信號來控制程序總線, 從而能夠支持慢速的外部程序和數(shù)據(jù)存儲器。IF模塊是該系統(tǒng)設計的關鍵, 它相當于DMA的功能, 主要負責USB與DDR2、外部數(shù)據(jù)接口與DDR2之間的數(shù)據(jù)傳輸。
2 數(shù)據(jù)采集系統(tǒng)設計
本文中的數(shù)據(jù)采集系統(tǒng)采用USB2.0和DDR2SDRAM相結合的設計思路, 從而打破了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)在實時數(shù)據(jù)采集中大容量和高速率不可兼得的瓶頸。在圖1所示的系統(tǒng)架構的四個部分中, 由于USB2.0和DDR2控制器都是IP核, 因此, 該系統(tǒng)設計的關鍵在于MCU和IF模塊。
2.1 MCU的設計
MCU是數(shù)據(jù)采集系統(tǒng)的控制核心, 主要用于對USB2.0控制器進行配置、查詢和處理USB事務, 以及解析USB設備請求, 同時, 還需配置IF模塊, 處理與IF模塊之間的控制信號等, 因此,MCU的設計包括數(shù)據(jù)接口及控制信號的設計以及固件設計兩個部分。
MCU數(shù)據(jù)總線接口包括與USB2.0控制器和與IF模塊的接口, 這里的USB2.0控制器和IF模塊相當于外部設備掛在MCU的外部存儲器總線和ESFR(外部特殊功能寄存器) 總線上??刂菩盘栔饕糜谟嬎銠C上的控制臺控制IF模塊數(shù)據(jù)傳輸?shù)拈_始與結束, 通常包含在USB的設備請求中。
整個固件的開發(fā)可在Keil C下完成, 并可通過JTAG進行調試。開發(fā)一般包括三部分: 一是協(xié)助USB控制器完成總線列舉過程, 讓計算機識別USB設備; 二是通過解析自定義USB設備請求,來對采集模式、深度等進行配置, 從而控制采集的開始與結束; 三是查詢和處理IN、OUT事務中斷, 并控制USB數(shù)據(jù)傳輸。
2.2 IF模塊設計
IF模塊負責接口的轉換和數(shù)據(jù)傳輸?shù)目刂?,其結構如圖2所示。其中, usb2ddr和eoc2ddr子模塊分別控制USB2.0與DDR2 SDRAM、外部采集接口與DDR2 SDRAM之間數(shù)據(jù)的上下行傳輸。
上下行數(shù)據(jù)傳輸分別由usb2ddr_ctrl 和eoc2ddr_ctrl模塊中的狀態(tài)機進行控制和管理。其中采集模式和深度由MCU的ESFR總線配置, 而傳輸開始信號則使用MCU的PORT0 [0]、PORT0[1], 結束信號連接在MCU的外部中斷NINT0和NINT1上, 這樣可使MCU能夠及時響應。上行采集開始后, 首先使eoc2ddr_ctrl中的控制狀態(tài)機處于寫狀態(tài), 并不斷地比較DDR2的地址與配置深度, 直到采集完成。然后再使usb2ddr_ctrl中的控制狀態(tài)機處于讀狀態(tài), 同樣也比較地址與深度,直到數(shù)據(jù)讀取完成。下行傳輸過程則與之相反。
IF模塊結構框圖
圖2 IF模塊結構框圖。
由于各個接口上數(shù)據(jù)傳輸?shù)乃俾什煌?因此, 數(shù)據(jù)傳輸時, 要異步FIFO或者緩存。在本設計中, 由于各接口速率固定, 因此, 可采用雙端口RAM作乒乓緩存方式以提高效率并保證數(shù)據(jù)連續(xù), 圖3所示是乒乓緩存原理圖。
乒乓緩存原理圖
圖3 乒乓緩存原理圖。
當下行發(fā)出數(shù)據(jù)時, 從DDR2的125 M×128bit到50 M×8 bit所需要的最小深度為32×8 bit, 因為從SDRAM中讀數(shù)據(jù)的最大延遲是26個DDR2時鐘周期(即208 ns), 而將DDR2讀出的128 bit發(fā)出則需要16個時鐘周期(即320 ns), 因此, 為了保證發(fā)出的數(shù)據(jù)可連續(xù)進行乒乓操作, 需要2×128bit的深度。同理, 在上行數(shù)據(jù)從DDR2的125 M×128 bit到USB的30 M×32 bit則需要4×128 bit深度,因為USB時鐘讀完128 bit數(shù)據(jù)需要133.2 ns, 小于SDRAM 讀數(shù)據(jù)延遲的208 ns, 因此, 每次從SDRAM中讀2×128 bit數(shù)據(jù)時, 其乒乓操作就至少需要4×128 bit深度。
3 系統(tǒng)的改進
本數(shù)據(jù)采集系統(tǒng)對傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)做了創(chuàng)新型改進。改進主要是三個方面: 一是對數(shù)據(jù)采集的深度實行可配置模式; 二是在功能上不僅作為數(shù)據(jù)采集系統(tǒng), 還能作為數(shù)據(jù)發(fā)生器, 即將采集到計算機上的數(shù)據(jù)通過數(shù)據(jù)采集系統(tǒng)發(fā)送出來; 三是該數(shù)據(jù)采集系統(tǒng)有兩種工作模式, 即普通采集模式和觸發(fā)采集模式。
深度可配置增加了系統(tǒng)在使用過程中的靈活性。該系統(tǒng)除了采集數(shù)據(jù)外, 還能將數(shù)據(jù)發(fā)出來用于芯片的FPGA原型驗證, 從而避免了緩慢的大數(shù)據(jù)量仿真, 更增強了系統(tǒng)的實用性。通過ESFR配置8 bit的深度寄存器可實現(xiàn)以16 MByte為單位的深度調節(jié)。觸發(fā)是數(shù)據(jù)采集系統(tǒng)不可缺少的功能, 因此, 該數(shù)據(jù)采集系統(tǒng)分為普通采集模式和觸發(fā)采集模式。觸發(fā)采集模式的原理如圖4所示。在觸發(fā)模式中, 可將SDRAM看做一個圓形的循環(huán)存儲器, 觸發(fā)前后的采集深度同樣也可以通過ESFR配置, 從而實現(xiàn)觸發(fā)前后的采集深度比例可調。
觸發(fā)實現(xiàn)機制原理圖
圖4 觸發(fā)實現(xiàn)機制原理圖。
4 FPGA實現(xiàn)
FPGA在系統(tǒng)設計中具有很好的靈活性和可擴展性, 因此, FPGA是一個非常好的系統(tǒng)實現(xiàn)平臺。通過對數(shù)據(jù)采集系統(tǒng)的資源*估, 可得出如表1所列的資源占用結果。
表1 FPGA的資源占用情況。
FPGA的資源占用情況
本系統(tǒng)最終選擇了Xilinx 公司的FPGA器件Virtex5 LX30。由于DDR2 SDRAM控制器是Xilinx公司的IP核, 故在系統(tǒng)的集成和實現(xiàn)過程中不可避免的要對原IP核進行改動, 同時, 在ISE中布局布線時, 相應地要對原有UCF文件中的約束進行修改, 以滿足時序要求。本系統(tǒng)除USB2.0的PHY和SDRAM外, 其余部分均由FPGA實現(xiàn), 圖5所示是系統(tǒng)在計算機上的操作界面和實物圖。
操作界面和FPGA實物圖
圖5 操作界面和FPGA實物圖。
5 結束語
本文結合USB2.0與DDR2 SDRAM的特點, 給出了可打破普通數(shù)據(jù)采集系統(tǒng)在實時、高速和大容量數(shù)據(jù)采集上的瓶頸的方法, 并且在實用性方面進行了改進。該系統(tǒng)最終可在FPGA上實現(xiàn),因為用FPGA實現(xiàn)具有極大的靈活性和可擴展性,并且在系統(tǒng)設計成本和快速實現(xiàn)上具有很好的競爭優(yōu)勢。目前, 該數(shù)據(jù)采集系統(tǒng)在實際運用中效果良好。實際上, 若對采集接口稍加改進, 并將IF模塊中的乒乓緩存改為異步FIFO, 就能廣泛地應用于各類高速系統(tǒng)的實時數(shù)據(jù)采集。