<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于USB2.0和DDR2 SDRAM IP核的數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)

          基于USB2.0和DDR2 SDRAM IP核的數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)

          作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

          引言

          隨著計算機、微電子和嵌入式系統(tǒng)技術(shù)的發(fā)展,技術(shù)已經(jīng)在生物醫(yī)學(xué)、圖像處理、雷達系統(tǒng)等眾多領(lǐng)域得到廣泛應(yīng)用。本文設(shè)計的高速系統(tǒng)是應(yīng)用于芯片現(xiàn)場測試的實時系統(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)架構(gòu)

          該數(shù)據(jù)采集系統(tǒng)的總體架構(gòu)由硬件部分、固件部分和計算機上的USB驅(qū)動及應(yīng)用程序等幾大部分組成, 本文完成了硬件和固件部分的設(shè)計。

          該系統(tǒng)的硬件部分主要由USB2.0、DDR2SDRAM、MCU以及IF等核心模塊組成, 圖1所示是其系統(tǒng)架構(gòu)圖。

          圖1 系統(tǒng)總體架構(gòu)圖

          本文引用地址:http://www.ex-cimer.com/article/201706/349123.htm

          USB2.0由控制器和物理傳輸層組成, 其中控制器是在FPGA上實現(xiàn)的Faraday公司的,物理層可選用SMSC公司的GT3200芯片, 控制器與物理層芯片之間可通過標(biāo)準(zhǔn)的UTMI接口相連。

          DDR2 SDRAM控制器是基于Xilinx公司提供的, 工作頻率是125~266 MHz, 與SDRAM之間的接口是64 bit SODIMM筆記本內(nèi)存條接口。作為數(shù)據(jù)存儲的SDRAM 是Samsung 公司的M470T5663QZ3-CE6 2GB 內(nèi)存條。系統(tǒng)的控制核心MCU采用Mentor Graphics公司的增強型8051 M8051EW,該8051核采用兩個時鐘周期為一個機器周期的高性能架構(gòu), 同時支持MWAIT信號來控制程序總線,從而能夠支持慢速的外部程序和數(shù)據(jù)存儲器。IF模塊是該系統(tǒng)設(shè)計的關(guān)鍵, 它相當(dāng)于DMA的功能,主要負責(zé)USB與DDR2、外部數(shù)據(jù)接口與DDR2之間的數(shù)據(jù)傳輸。

          2 數(shù)據(jù)采集系統(tǒng)設(shè)計

          本文中的數(shù)據(jù)采集系統(tǒng)采用USB2.0和DDR2SDRAM相結(jié)合的設(shè)計思路,從而打破了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)在實時數(shù)據(jù)采集中大容量和高速率不可兼得的瓶頸。在圖1所示的系統(tǒng)架構(gòu)的四個部分中,由于USB2.0和DDR2控制器都是IP核, 因此, 該系統(tǒng)設(shè)計的關(guān)鍵在于MCU和IF模塊。

          2.1 MCU的設(shè)計

          MCU是數(shù)據(jù)采集系統(tǒng)的控制核心, 主要用于對USB2.0控制器進行配置、查詢和處理USB事務(wù), 以及解析USB設(shè)備請求, 同時,還需配置IF模塊, 處理與IF模塊之間的控制信號等, 因此,MCU的設(shè)計包括數(shù)據(jù)接口及控制信號的設(shè)計以及固件設(shè)計兩個部分。

          MCU數(shù)據(jù)總線接口包括與USB2.0控制器和與IF模塊的接口,這里的USB2.0控制器和IF模塊相當(dāng)于外部設(shè)備掛在MCU的外部存儲器總線和ESFR(外部特殊功能寄存器) 總線上。控制信號主要用于計算機上的控制臺控制IF模塊數(shù)據(jù)傳輸?shù)拈_始與結(jié)束, 通常包含在USB的設(shè)備請求中。

          整個固件的開發(fā)可在Keil C下完成, 并可通過JTAG進行調(diào)試。開發(fā)一般包括三部分: 一是協(xié)助USB控制器完成總線列舉過程,讓計算機識別USB設(shè)備; 二是通過解析自定義USB設(shè)備請求,來對采集模式、深度等進行配置, 從而控制采集的開始與結(jié)束;三是查詢和處理IN、OUT事務(wù)中斷, 并控制USB數(shù)據(jù)傳輸。

          2.2 IF模塊設(shè)計

          IF模塊負責(zé)接口的轉(zhuǎn)換和數(shù)據(jù)傳輸?shù)目刂?,其結(jié)構(gòu)如圖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], 結(jié)束信號連接在MCU的外部中斷NINT0和NINT1上,這樣可使MCU能夠及時響應(yīng)。上行采集開始后, 首先使eoc2ddr_ctrl中的控制狀態(tài)機處于寫狀態(tài),并不斷地比較DDR2的地址與配置深度, 直到采集完成。然后再使usb2ddr_ctrl中的控制狀態(tài)機處于讀狀態(tài),同樣也比較地址與深度,直到數(shù)據(jù)讀取完成。下行傳輸過程則與之相反。

          圖2 IF模塊結(jié)構(gòu)框圖。

          由于各個接口上數(shù)據(jù)傳輸?shù)乃俾什煌?因此, 數(shù)據(jù)傳輸時, 要異步FIFO或者緩存。在本設(shè)計中, 由于各接口速率固定, 因此,可采用雙端口RAM作方式以提高效率并保證數(shù)據(jù)連續(xù), 圖3所示是原理圖。

          圖3 原理圖。

          當(dāng)下行發(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為單位的深度調(diào)節(jié)。觸發(fā)是數(shù)據(jù)采集系統(tǒng)不可缺少的功能, 因此,該數(shù)據(jù)采集系統(tǒng)分為普通采集模式和觸發(fā)采集模式。觸發(fā)采集模式的原理如圖4所示。在觸發(fā)模式中, 可將SDRAM看做一個圓形的循環(huán)存儲器,觸發(fā)前后的采集深度同樣也可以通過ESFR配置, 從而實現(xiàn)觸發(fā)前后的采集深度比例可調(diào)。

          圖4 觸發(fā)實現(xiàn)機制原理圖。

          4 FPGA實現(xiàn)

          FPGA在系統(tǒng)設(shè)計中具有很好的靈活性和可擴展性, 因此, FPGA是一個非常好的系統(tǒng)實現(xiàn)平臺。通過對數(shù)據(jù)采集系統(tǒng)的資源*估,可得出如表1所列的資源占用結(jié)果。

          表1 FPGA的資源占用情況。

          本系統(tǒng)最終選擇了Xilinx 公司的FPGA器件Virtex5 LX30。由于DDR2 SDRAM控制器是Xilinx公司的IP核, 故在系統(tǒng)的集成和實現(xiàn)過程中不可避免的要對原IP核進行改動, 同時,在ISE中布局布線時, 相應(yīng)地要對原有UCF文件中的約束進行修改, 以滿足時序要求。本系統(tǒng)除USB2.0的PHY和SDRAM外,其余部分均由FPGA實現(xiàn), 圖5所示是系統(tǒng)在計算機上的操作界面和實物圖。

          圖5 操作界面和FPGA實物圖。

          5 結(jié)束語

          本文結(jié)合USB2.0與DDR2 SDRAM的特點, 給出了可打破普通數(shù)據(jù)采集系統(tǒng)在實時、高速和大容量數(shù)據(jù)采集上的瓶頸的方法,并且在實用性方面進行了改進。該系統(tǒng)最終可在FPGA上實現(xiàn),因為用FPGA實現(xiàn)具有極大的靈活性和可擴展性,并且在系統(tǒng)設(shè)計成本和快速實現(xiàn)上具有很好的競爭優(yōu)勢。目前,該數(shù)據(jù)采集系統(tǒng)在實際運用中效果良好。實際上, 若對采集接口稍加改進, 并將IF模塊中的乒乓緩存改為異步FIFO,就能廣泛地應(yīng)用于各類高速系統(tǒng)的實時數(shù)據(jù)采集。

          須注意的是,時鐘速率與傳輸延時并沒有什么關(guān)系,甚至普通的100bps時鐘也會出現(xiàn)抖動問題。這意味著雖然FPGA供應(yīng)商宣稱他們的芯片具有較短的傳輸時間和很高的時鐘速率,但抖動問題可能會嚴重,甚至那些沒有運行在最高速率上的設(shè)計也是如此。

          好在FPGA供應(yīng)商已經(jīng)認識到時鐘抖動的影響,并在他們的芯片中提供低抖動的布線資源。這些特殊的布線能夠在芯片中一個給定范圍內(nèi)的任何兩個觸發(fā)器之間提供一個確定的最大抖動。部分產(chǎn)品的低抖動資源覆蓋了整個芯片,而其它的則可能只覆蓋了FPGA邏輯塊中的一個特定的行或列。對于一個需要很多不同時鐘源的設(shè)計,這些低抖動FPGA是比較理想的選擇。

          多時鐘設(shè)計的最嚴重問題之一是用異步時鐘將兩級邏輯結(jié)合在一起。由于異步時鐘會產(chǎn)生亞穩(wěn)態(tài),從而嚴重降低設(shè)計性能,或完全破壞設(shè)計所能實現(xiàn)的功能。在觸發(fā)器的時序要求產(chǎn)生沖突時(設(shè)置時間和保持時間)將產(chǎn)生亞穩(wěn)態(tài),觸發(fā)器的最終輸出是未知的,并使整個設(shè)計處于不確定狀態(tài)。如果有一級邏輯要將數(shù)據(jù)異步地發(fā)送到另一級,圖3所示的情形將不能滿足觸發(fā)器的設(shè)置和保持時間要求。確切地說,如果設(shè)計中含有異步邏輯將有可能會產(chǎn)生亞穩(wěn)態(tài)。在處置異步資源時必需非常小心,因為這可能產(chǎn)生一些很嚴重的問題。

          多時鐘設(shè)計

          本文以電信應(yīng)用中的E3多路復(fù)用/解復(fù)用設(shè)計為例。如圖4所示,多路復(fù)用器接收來自一組獨立線路接口芯片的16個獨立E1信道,每一個信道都工作于2.048MHz;經(jīng)復(fù)用后,這些E1流組合成4個E2流,分別工作在8.0448MHz;4個E2流最后組合成一個E3流,以34.368Mbps的速率串行發(fā)送出去。在接收端執(zhí)行相反的操作:解復(fù)用器從E3流提取4個E2數(shù)據(jù)流,然后從E2流提取16個E1流,最終將E1流發(fā)送到接收端的線路接口芯片。

          這些E1線路接口在發(fā)送和接收時都獨立工作,因此2.048MHz的時鐘速率可以有+/- 20ppm的偏差。同樣,因為大多數(shù)系統(tǒng)同時發(fā)送和接收數(shù)據(jù),分立的多路復(fù)用器和多路解復(fù)用器將提供2個獨立的E3流(發(fā)送和接收)。因此,兩個34.368MHz的時鐘可以存在細微的差異。

          由于E2流是在芯片上產(chǎn)生的,這些E2多路復(fù)用器可以共享同一個8.448MHz時鐘。然而,由于接收的數(shù)據(jù)速率與我們所設(shè)計的板無關(guān)(且不能假定所有E2多路復(fù)用器使用相同時鐘),所以E2解復(fù)用器時鐘必須能工作在略為不同的速率下。

          此外,假定設(shè)計中需要一個由工作頻率為1MHz的處理器控制的獨立SPI(串行外圍接口)總線接口,該接口用于狀態(tài)和控制。這樣一來,設(shè)計中總共用了32個2.048MHz時鐘,5個8.448MHz時鐘,2個34.368MHz時鐘和一個1MHz時鐘,總共多達40個時鐘。

          本設(shè)計中最快時鐘是34.368MHz E3時鐘。FPGA的最大時鐘速率的確定很重要,因為設(shè)計的差異將影響到該最大值。然而,在芯片商的資料手冊中常??梢钥吹?ldquo;全局時鐘設(shè)置及保持時間”和“至CLB輸出的時鐘”兩個參數(shù),將這兩個參數(shù)的最大值相加,再增加25%就能可以得到最小時鐘周期的初略值,在最大時鐘速率條件下允許10%的余量,以保證過熱條件下能正常工作。因此,我們設(shè)置的最小速率為40MHz,很多較新的FPGA都能夠很容易地支持該頻率。事實上,F(xiàn)PGA供應(yīng)商已經(jīng)推出了超過300MHz的器件。

          在確定了能滿足最大頻率要求的FPGA后,就需要保證有足夠的空間來實現(xiàn)你的設(shè)計。如果所選的FPGA沒有足夠的余量,就不能提供足夠的布線資源來滿足設(shè)計的時序約束。通常芯片供應(yīng)商宣稱的速率是最佳條件下的速率,F(xiàn)PGA供應(yīng)商一般建議FPGA邏輯在布線功能開始明顯變差以前可以用到80%。在選擇FPGA器件時,建議在新的設(shè)計時最好使FPGA邏輯用到50%左右,這樣就允許計算起始設(shè)計大小出現(xiàn)超差,以及為在設(shè)計起動后產(chǎn)生不可避免的設(shè)計變更留出空間。如果最終的設(shè)計只占用低于50%的資源,則可以使用同一系列中較小的FPGA以降低成本。

          通過時序約束來規(guī)定慢時鐘速率,從而可以改進設(shè)計中最快時鐘的布線。在多路復(fù)用器例子中,如果設(shè)置FPGA布線工具SPI總線時鐘為1MHz,而E3時鐘為40MHz,布線工具將盡量使E3時鐘的邏輯電路模塊相鄰布局。如果由于空間的限制而不能將全部電路布局在一起,則首先應(yīng)將SPI邏輯另外布局,因為SPI邏輯可以處理更長傳輸延遲。所有FPGA供應(yīng)商的布線工具都能規(guī)定這些較慢時鐘速率。

          減少時鐘數(shù)量

          根據(jù)市場調(diào)查,目前還沒有哪個FPGA器件能夠支持這種多路復(fù)用器/解復(fù)用器設(shè)計所需的40個時鐘。所以,我們必須減少所需要的時鐘數(shù)。

          首先了解E2和E3多路復(fù)用器的時鐘。前面已經(jīng)分析了4個E2多路復(fù)用器工作在相同時鐘下的可接受度,E3多路復(fù)用器運行于比E2時鐘高得多的速率,必需使用一個不同的時鐘。但是,如果我們從E3時鐘中引出E2時鐘是否可行呢?因為E3多路復(fù)用器要從每個E2支路得到數(shù)據(jù),我們可以在需要E2多路復(fù)用器給我們數(shù)據(jù)時,簡單地將脈沖送給每個多路復(fù)用器。我們沒有去掉任何時鐘,但E2時鐘現(xiàn)在是基于E3時鐘。

          如果在所有的多路復(fù)用器中也使用同樣的時鐘,并且只使用一個使能信號來告訴E2多路復(fù)用器什么時候工作,這時會產(chǎn)生什么問題呢?如果E3多路復(fù)用器用34.368MHz時鐘產(chǎn)生使能信號,在這些使能信號上的抖動不會比用在FPGA中任何其它同步邏輯更大。所以,使能信號可以使用正常(高抖動)布線資源,這樣就不需要單獨的8.448MHz多路復(fù)用器時鐘,讀取E1數(shù)據(jù)緩沖器的數(shù)據(jù)時也是一樣。換言之,如果E2多路復(fù)用器需要數(shù)據(jù),它可以激活到特定緩沖器的使能信號。到緩沖器的時鐘本身能夠保持E3多路復(fù)用器所用的34.368MHz時鐘,如圖5所示。

          最后,我們檢查16個從線路接口芯片輸入到FPGA的E1時鐘。這些時鐘有會產(chǎn)生下面幾個問題:首先,16個時鐘將占用太多可用芯片時鐘布線資源;其次,在同一個FPGA中使用16個異步時鐘來驅(qū)動相互鄰近的觸發(fā)器,由于地彈、串?dāng)_和其它效應(yīng)將產(chǎn)生噪聲問題。例如,由于噪聲的原因,一個正邊沿觸發(fā)器會在下降邊沿時改變輸出狀態(tài),此類問題將難以處理。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();