波形產(chǎn)生單元205用于根據(jù)波形數(shù)據(jù)211產(chǎn)生數(shù)字波形212,數(shù)模轉(zhuǎn)換單元204用于將數(shù)字波形212轉(zhuǎn)換成模擬波形后輸出。
[0027]作為舉例說明,數(shù)模轉(zhuǎn)換單元204包括將數(shù)字波形轉(zhuǎn)換成模擬波形的數(shù)模轉(zhuǎn)換器,以及將模擬波形進(jìn)行放大、衰減等處理的其他部件。
[0028]在本實(shí)施例中,波形產(chǎn)生單元205包括預(yù)讀取累加器206、DRAM控制器207、FIFO存儲(chǔ)器208和相位累加器209,
[0029]在本實(shí)施例中,預(yù)讀取累加器206用于產(chǎn)生預(yù)讀取累加值213。具體的,在任意波形發(fā)生器2開始產(chǎn)生本次波形之前,控制單元202先將預(yù)讀取累加器206產(chǎn)生的預(yù)讀取累加值213置0,當(dāng)控制單元202配置完所有系統(tǒng)參數(shù)之后,預(yù)讀取累加值213開始累加,累加步進(jìn)值為I。
[0030]在本實(shí)施例中,DRAM控制器207用于根據(jù)預(yù)讀取累加值213從DRAM存儲(chǔ)器中取出波形數(shù)據(jù)。具體的,DRAM控制器207以預(yù)讀取累加器206送來的預(yù)讀取累加值213作為讀地址,從DRAM存儲(chǔ)器203中取出波形數(shù)據(jù)211。上面提到,預(yù)讀取累加器206所產(chǎn)生的預(yù)讀取累加值213是單調(diào)遞增的,所以DRAM控制器207是根據(jù)單調(diào)遞增的讀地址從DRAM存儲(chǔ)器中取出波形數(shù)據(jù),即如【背景技術(shù)】中對(duì)DRAM存儲(chǔ)器的結(jié)構(gòu)的比喻,本發(fā)明在訪問DRAM存儲(chǔ)器203時(shí),先找到某個(gè)單元的某個(gè)樓層,然后連續(xù)訪問這個(gè)樓層的房間,這個(gè)樓層訪問完后,在連續(xù)訪問下一個(gè)樓層的房間,這樣就大大節(jié)省了在頻繁更換單元或樓層時(shí)所消耗的等待時(shí)間。
[0031]在本實(shí)施例中,相位累加器209用于根據(jù)采樣率S產(chǎn)生FIFO讀使能信號(hào)214。具體的,在開始輸出波形之前,控制單元202首先將相位累加器209產(chǎn)生的相位累加值置0,從O開始累加,并根據(jù)采樣率S得到的步進(jìn)值進(jìn)行步進(jìn),最終根據(jù)相位累加值產(chǎn)生FIFO讀使能信號(hào)214。
[0032]在本實(shí)施例中,F(xiàn)IFO存儲(chǔ)器208用于存儲(chǔ)波形數(shù)據(jù)211,并根據(jù)FIFO讀使能信號(hào)214將波形數(shù)據(jù)211送給數(shù)模轉(zhuǎn)換單元204。FIFO存儲(chǔ)器208是一種具有先入先出(FirstInput First Output, FIFO)特點(diǎn)的存儲(chǔ)器,用于存儲(chǔ)DRAM控制器207從DRAM存儲(chǔ)器203中讀出的波形數(shù)據(jù)211,當(dāng)相位累加器209發(fā)出的FIFO讀使能信號(hào)214有效時(shí),F(xiàn)IFO存儲(chǔ)器208就將所存儲(chǔ)的波形數(shù)據(jù)211送給數(shù)模轉(zhuǎn)換單元204,每到來一個(gè)有效的FIFO讀使能信號(hào)214,就讀出一個(gè)波形數(shù)據(jù)點(diǎn)送給數(shù)模轉(zhuǎn)換單元204。
[0033]在本實(shí)施例中,控制單元202用于根據(jù)所述采樣率S產(chǎn)生采樣率控制字C216,C=S*2n/F,N為相位累加器的數(shù)據(jù)位寬,F(xiàn)為時(shí)鐘單元201產(chǎn)生的系統(tǒng)時(shí)鐘210的頻率,在本實(shí)施例中,系統(tǒng)時(shí)鐘210的頻率F是固定的。
[0034]在本實(shí)施例中,F(xiàn)IFO存儲(chǔ)器還208用于產(chǎn)生一個(gè)累加使能信號(hào)215,預(yù)讀取累加器206還用于在累加使能信號(hào)215為高電平時(shí),停止產(chǎn)生預(yù)讀取累加值213,并保持當(dāng)前累加值;在累加使能信號(hào)215為低電平時(shí),繼續(xù)產(chǎn)生預(yù)讀取累加值213。
[0035]并且,在本實(shí)施例中,累加使能信號(hào)215為高電平時(shí),表示FIFO存儲(chǔ)器208的剩余空間少于DRAM存儲(chǔ)器203的列的寬度的2k倍,K為整數(shù),當(dāng)累加使能信號(hào)215為低電平時(shí),則FIFO存儲(chǔ)器208的剩余空間多于DRAM存儲(chǔ)器的列的寬度的2k倍,K為整數(shù)。這里,DRAM存儲(chǔ)器的列的寬度的2k倍是指本次累加的長(zhǎng)度。累加使能信號(hào)215是表示FIFO存儲(chǔ)器208存儲(chǔ)空間剩余大小的信號(hào)。
[0036]也就是說,DRAM控制器207每次連續(xù)的讀取長(zhǎng)度為DRAM存儲(chǔ)器的列的寬度的2K倍的波形數(shù)據(jù),當(dāng)FIFO存儲(chǔ)器208已經(jīng)沒有足夠的空間存儲(chǔ)波形數(shù)據(jù)時(shí),預(yù)讀取累加器206則暫停產(chǎn)生預(yù)讀取累加值213,從而DRAM控制器207暫停從DRAM存儲(chǔ)器203中取波形數(shù)據(jù)送給FIFO存儲(chǔ)器208,等到FIFO存儲(chǔ)器208騰出足夠的空間時(shí),預(yù)讀取累加器206則從之前暫停時(shí)的預(yù)讀取累加值開始繼續(xù)累加,DRAM控制器207繼續(xù)從DRAM存儲(chǔ)器203中取波形數(shù)據(jù)送給FIFO存儲(chǔ)器208。由于預(yù)讀取累加器206所產(chǎn)生的預(yù)讀取累加值213是單調(diào)遞增的,并且每次讀取的長(zhǎng)度為DRAM存儲(chǔ)器的列的寬度的2K倍,由此極大提高了 DRAM存儲(chǔ)器的帶寬利用率(選取較大的K值,很容易超過90%)。另外,在具體的設(shè)計(jì)過程中,K越大,要求FIFO存儲(chǔ)器的存儲(chǔ)深度就越大,F(xiàn)IFO存儲(chǔ)器208的大小可以根據(jù)設(shè)計(jì)需要進(jìn)行選取。
[0037]在本實(shí)施例中,控制單元202用于接收波形長(zhǎng)度217,當(dāng)預(yù)讀取累加器206產(chǎn)生的預(yù)讀取累加值213等于波形長(zhǎng)度217時(shí),預(yù)讀取累加值213置O。具體測(cè)量時(shí),用戶可以實(shí)際的測(cè)量需要,通過用于人機(jī)交互的顯示屏幕軟鍵盤或者任意波形發(fā)生器面板上的硬鍵盤輸入波形長(zhǎng)度217,當(dāng)預(yù)讀取累加器206產(chǎn)生的預(yù)讀取累加值213等于波形長(zhǎng)度217時(shí),表示FIFO存儲(chǔ)器208中已經(jīng)存儲(chǔ)了滿足本次波形輸出的波形數(shù)據(jù),所以控制單元202會(huì)將預(yù)讀取累加值213置0,等待下次波形輸出重新開始累加。
[0038]在本實(shí)施例中,相位累加器209以采樣率控制字216為步進(jìn)產(chǎn)生相位累加值,并在相位累加值大于2N-1時(shí),發(fā)出FIFO讀使能信號(hào)214給FIFO存儲(chǔ)器208,并從溢出值繼續(xù)累加,N為相位累加器209的數(shù)據(jù)位寬。在開始輸出波形前,控制單元202將相位累加值置0,當(dāng)控制單元202將系統(tǒng)參數(shù)配置完成后,從O開始累加,累加步進(jìn)值為控制單元202所產(chǎn)生的采樣率控制字216,假設(shè)累加器224的數(shù)據(jù)位寬為N,當(dāng)累加值超過2N-1時(shí),在溢出時(shí)發(fā)出一個(gè)FIFO讀使能信號(hào)214送給FIFO存儲(chǔ)器208 ;,并從溢出值繼續(xù)累加,不停的產(chǎn)生FIFO讀使能信號(hào)214,F(xiàn)IFO存儲(chǔ)器208每接到一個(gè)FIFO讀使能信號(hào)214就向數(shù)模轉(zhuǎn)換單元204輸出一個(gè)波形數(shù)據(jù)。顯然兩次FIFO讀使能信號(hào)214之間的間隔即為采樣率。
[0039]并且,由于累加使能信號(hào)215和FIFO讀使能信號(hào)214的抑制作用,當(dāng)FIFO存儲(chǔ)器208中的數(shù)據(jù)足夠輸出給DAC時(shí),暫停從DRAM存儲(chǔ)器203中讀數(shù),從而使得DRAM存儲(chǔ)器203的帶寬只需滿足任意波形發(fā)生器2的采樣率即可,由此減小了對(duì)DRAM存儲(chǔ)器帶寬的要求。
[0040]在本實(shí)施例中,控制單元202用于接收波形文件,DRAM控制器207用于將波形文件218存儲(chǔ)到DRAM存儲(chǔ)器203中??刂茊卧?02通過輸入接口接收波形文件,并發(fā)送給DRAM控制器207,DRAM控制器207對(duì)波形文件218進(jìn)行解析后得到波形數(shù)據(jù),存儲(chǔ)到DRAM存儲(chǔ)器203中。
[0041]在本實(shí)施例中,波形產(chǎn)生單元205可以由FPGA器件構(gòu)成。
[0042]作為舉例說明,波形產(chǎn)生單元205還可以由CPLD等其間構(gòu)成。
[0043]參考圖3,是本實(shí)施例任意波形發(fā)生器2的工作流程圖。下面結(jié)合圖3對(duì)任意波形發(fā)生器2的工作流程做一下詳細(xì)說明:
[0044]301:控制單元202進(jìn)行系統(tǒng)配置;
[0045]在開始輸出波形前,控制單元202首先根據(jù)用戶的設(shè)置對(duì)系統(tǒng)中的每個(gè)單元進(jìn)行配置,具體包括:接收用戶設(shè)置的波形長(zhǎng)度217,并送給預(yù)讀取累加器206 ;接收用戶設(shè)置的采樣率,生成采樣率控制字216,送給相位累加器209,假設(shè)用戶設(shè)置的采樣率為Sa,相位累加器209的數(shù)據(jù)位寬為N,時(shí)鐘單元201提供的工作時(shí)鐘210的頻率為F,則控制單元按照如下公式計(jì)算采樣率控制字216:采樣率控制字216=S*2n/F??刂茊卧?02完成配置后向各個(gè)單元發(fā)出配置完成的指令。