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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 利用任意信號發(fā)生器模擬高速光驅(qū)信號

          利用任意信號發(fā)生器模擬高速光驅(qū)信號

          作者: 時間:2008-05-23 來源:網(wǎng)絡(luò) 收藏
            為開發(fā)下一代光驅(qū),工程人員需要有能夠模擬的測試信號。為了確保元件和系統(tǒng)達(dá)到規(guī)格要求,這種信號是必需的,目前通常使用一種叫做任意波形發(fā)生器(AWG)的信號源,作為開發(fā)高速讀/寫的基本工具。本文主要介紹AWG的基本原理與應(yīng)用須知。

          圖1:高速任意波形發(fā)生器系統(tǒng)結(jié)構(gòu)。

            從原理上講,AWG相當(dāng)于一臺正在播放歌曲的CD機(jī)(只不過信號是任意組合的),播放器的探頭讀取CD上以二進(jìn)制格式儲存的歌曲,經(jīng)過數(shù)模轉(zhuǎn)換器,放大后形成聲音,連續(xù)播放時,產(chǎn)生的音樂就可以從模擬喇叭中聽到。AWG結(jié)構(gòu)如圖1所示,聲波數(shù)據(jù)以二進(jìn)制形式駐留在存儲器中,二進(jìn)制數(shù)值通過主時鐘“取樣”,同時取樣時鐘還驅(qū)動高速移位寄存器和數(shù)模轉(zhuǎn)換器。存儲器中保存的數(shù)據(jù)包含波形的振幅和位置信息,取樣時鐘的速率和取樣數(shù)據(jù)點(diǎn)總數(shù)量決定了信號輸出的頻率。

            所有的波形都是由一系列數(shù)據(jù)點(diǎn)組成,輸出信號頻率可用時鐘取樣率除以波形點(diǎn)總數(shù)來確定。對于多波形,輸出頻率=取樣率×數(shù)/波形總點(diǎn)數(shù)。例如對最大取樣率為每秒4G采樣點(diǎn)的AWG來說,如果一個用兩個點(diǎn)來表示波形,可以產(chǎn)生2GHz信號,同理,每個周期用三個點(diǎn)可以得到1.3GHz信號,用四個點(diǎn)可以得到1GHz信號,并以此類推。由于波形質(zhì)量直接與波形點(diǎn)總數(shù)和所選取樣率有關(guān),因此驅(qū)動器開發(fā)人員要掌握好它們之間的取舍。好在有些AWG內(nèi)置有應(yīng)用菜單,可讓用戶快速建立標(biāo)準(zhǔn)驅(qū)動器信號,從而簡化了波形的創(chuàng)建過程。

          圖2:利用AWG710菜單生成50/50洛侖茲/高斯脈沖。

            泰克的AWG710就是這樣一種設(shè)備,它依據(jù)的原理是幾乎所有磁盤驅(qū)動器都采用飽和記錄來讀寫數(shù)據(jù)。在這種情形下,磁盤上每個字節(jié)都極化成兩種狀態(tài)中的一種,也就是說,通過簡單改變寫入頭電流的方向就可以將寫入頭下面的磁介質(zhì)極性顛倒,從而對數(shù)據(jù)進(jìn)行編碼。之后,讀取頭將感應(yīng)到磁盤上的逆轉(zhuǎn),并對這種變化做出相應(yīng)反應(yīng),這種轉(zhuǎn)換響應(yīng)的有效模型是混合型洛侖茲和。

            通過改變洛侖茲和的比率,可以建立讀/寫信號模型,該模型能對一連串轉(zhuǎn)換做出響應(yīng),這些轉(zhuǎn)換代表了讀/寫頭響應(yīng)每個記錄媒介轉(zhuǎn)換時的輸出電壓,的符號隨連續(xù)的方向變化而變化。圖2是洛侖茲/脈沖以50/50比率混合時建立的讀/寫通道信號,另外AWG710還支持PR4、EPR4、E2PR4和用戶自定義脈沖。

          圖3:將讀/寫信號和脈沖連接起來對信號進(jìn)行改變。

            為了正確模擬通道信號,可在混合信號中加入表示讀寫數(shù)據(jù)時序的部分,它規(guī)定轉(zhuǎn)換的位置,這種時序可從簡單1F或2F單頻模式到最大長度為2n-1的偽隨機(jī)位串(PRBS)或用戶自定義數(shù)據(jù)模式?;旌厦}沖和這些數(shù)據(jù)在AWG中連接起來建立讀/寫信道信號,也可以利用附加參數(shù)進(jìn)行編輯,如磁軌平均振幅(TAA)、脈沖寬度( PW)、非線性轉(zhuǎn)換位移(NLTS)及不對稱信號等。

            讀/寫通道信號建立后,可通過圖形編輯器加入振幅和時鐘變量。圖3顯示將讀/寫信號和一個脈沖連接起來,目的是對信號進(jìn)行改變,用圖形編輯器很容易插入遺失的字節(jié)或加入額外字節(jié)。圖中有兩個標(biāo)記點(diǎn),其中標(biāo)記2表示每個數(shù)據(jù)點(diǎn)的時間,標(biāo)記1代表整個波形記錄中脈沖的衰減情況。標(biāo)記通常用于觸發(fā)讀寫信號,或為信號采集裝置如示波器和邏輯分析儀確定觸發(fā)位置。圖4顯示了修正后的脈沖幅度。

            設(shè)計人員改變時序可以幫助調(diào)試驗證后續(xù)指標(biāo)富余量。改變時序的方法與丟棄(或增加)字節(jié)很類似,用指針確定相應(yīng)的區(qū)域,對相應(yīng)波形點(diǎn)進(jìn)行“縮放”以得到規(guī)定的時間位移。這里的縮放與放大縮小不同,是將每一個目標(biāo)數(shù)據(jù)點(diǎn)都乘上或除以一個縮放系數(shù)??s放允許時間位移超過4.0GS/s的250皮秒限制,對AWG710來說,最小時鐘波形位移為400飛秒(fs)。

          圖4:修正后的波形圖。

            AWG同時還為驅(qū)動器開發(fā)人員提供了波形實(shí)時排序能力。實(shí)時排序(RTS)有兩個重要作用,第一,它允許將多個波形無縫連接起來,不會影響輸出信號;第二,RTS可將較長信號傳送給被測器件。這兩種功能可使驅(qū)動器開發(fā)人員安排系列波形以對產(chǎn)品進(jìn)行長期評估。

            RTS的關(guān)鍵是對AWG存儲器進(jìn)行分配,沒有RTS的AWG必須存儲整個波形。例如要存儲三種不同的信號各500個周期,每個信號1,000個點(diǎn),則需要能存儲150萬點(diǎn)的RAM(3×500×1000)。而實(shí)時序列發(fā)生器可以不間斷地自動重復(fù)每段波形,所以帶RTS的AWG只要存儲一個波形周期就可以了,用RTS儲存上述序列只需要存儲3,000點(diǎn)的RAM。由于AWG存儲波形的容量有限,因此實(shí)時序列功能就顯得很重要。在有些應(yīng)用中,以4.0GS/s(250皮秒間隔)模擬10毫秒寫入需要4,000萬點(diǎn)波形存儲量。實(shí)際的一個序列可能含有幾百個波形,波形中還帶有由邏輯和軟件狀態(tài)決定的條件跳躍和分支,符合條件的還要調(diào)用下一個序列。

          圖5:通過公式編輯器生成分散頻譜時鐘信號。

            AWG為驅(qū)動器開發(fā)人員提供了多種方法生成模擬波形,包括規(guī)定波形和最壞情形波形。第一個方法是用內(nèi)建的圖形編輯器提供的組建和波形操作內(nèi)部工作環(huán)境(如圖3和圖4);第二種方法通過公式編輯器創(chuàng)建信號,可提供更復(fù)雜的波形。公式編輯器將復(fù)雜數(shù)學(xué)函數(shù)匯編到模擬和數(shù)字等式中,圖5是產(chǎn)生分散頻譜時鐘的部分公式內(nèi)容。還有一種很流行的方法是利用數(shù)字存儲示波器的記錄能力將波形記錄下來,然后轉(zhuǎn)到AWG內(nèi)存中,通常這種轉(zhuǎn)移通過GPIB或LAN等外部控制方式來實(shí)現(xiàn),也可以用軟盤。當(dāng)波形轉(zhuǎn)入AWG存儲器以后,就好像是用圖形編輯器建立的一樣,可對它進(jìn)行編輯和回放。另外也可以從模擬程序如 MATLAB或MathCAD中下載 ASCII數(shù)據(jù)。



          評論


          相關(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); })();