新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 直接數(shù)字頻率合成器的PFGA實(shí)現(xiàn)

直接數(shù)字頻率合成器的PFGA實(shí)現(xiàn)

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

2.2 波形存儲器
以相位累加器輸出數(shù)據(jù)作為波形存儲器的取樣地址,進(jìn)行波形的相位—幅碼轉(zhuǎn)換,即可在給定的時間上確定輸出的波形的抽樣幅碼。N位的尋址ROM相當(dāng)于把0~2π的正弦信號離散成具有2N個樣值的序列。若波形存儲器有D位數(shù)據(jù)位,則各樣值的幅碼以D位二進(jìn)制數(shù)值保存在該模擬ROM中,按照不同地址輸出相應(yīng)相位的正弦信號的幅碼數(shù)值。為了更加有效的表示波形,當(dāng)然期望波形存儲器輸出的二進(jìn)制值位數(shù)越多越好。但是查找表的設(shè)計(jì)和D/A轉(zhuǎn)換器的選擇是相關(guān)的,因此需要選擇位數(shù)高的D/A轉(zhuǎn)換器。本文設(shè)計(jì)的正弦表,具有16b輸出,采樣點(diǎn)為256。
2.3 D/A轉(zhuǎn)換電路的實(shí)現(xiàn)
D/A轉(zhuǎn)換單元是繼波形數(shù)據(jù)產(chǎn)生單元之后,將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率的模擬量形式信號。DAC輸出信號實(shí)際上是階梯模擬信號,需在D/A轉(zhuǎn)換后利用低通濾波器對波形進(jìn)行平滑處理。在此,用Maxim公司生產(chǎn)的A/D換器MAX5885芯片。該芯片需要將輸入時鐘信號轉(zhuǎn)換為差分輸入,且由外部芯片MAX6161提供1.2 V的參考電壓,D/A轉(zhuǎn)換后的差分輸出經(jīng)變壓器轉(zhuǎn)換后即可得到所需的信號:
f.JPG

3 系統(tǒng)軟件設(shè)計(jì)
3.1 累加控制模塊的設(shè)計(jì)
相位累加器主要完成相位累加,實(shí)現(xiàn)輸出波形頻率可調(diào)的功能。該模塊采用Verilog HDL語言來實(shí)現(xiàn),若要求DDS系統(tǒng)精度高,相位累加器的位數(shù)N需較大。這里取N=8,它的Verilog HDL關(guān)鍵代碼如下:
g.JPG
其中,data信號為8位的頻率控制字,通過改變data的值可以實(shí)現(xiàn)不同頻率波形的輸出。
3.2 波形存儲器的設(shè)計(jì)
針對不同的可編程器件,ROM查找表的設(shè)計(jì)采用的方法也不相同。主要是基于IP核Single Port BlockMemory和Verilog選擇語句這兩種方法。使用SinglePort Block Memory的波形存儲表只需要產(chǎn)生數(shù)據(jù)文件*.mif或*.coe,然后直接在定制Single Port BlockMemory時,添加數(shù)據(jù)文件即可。不過這種方法在FPGA支持內(nèi)部嵌入式陣列塊(EAB)時才可以使用;使用Verilog選擇語句比較直觀,但當(dāng)輸入數(shù)據(jù)量大的
這種方法是比較繁瑣的。此次設(shè)計(jì)采用第一種方法。
coe文件是在編譯和仿真過程中作為存儲器(ROM或RAM)初始化輸入的文件,即memory initializationfile。創(chuàng)建coe文件的方式有很多種,在這次設(shè)計(jì)中,在Matlab中采用C語言來生成coe文件。coe文件編寫格式如下:
h.JPG
將生成的cos.txt文件的后綴該為.coe,打開文件并將最后一行的逗號改為分號,并在文件的最開始添加下面兩行:
i.JPG
最后保存文件退出,并加載到Single Port BlockMemory所生成的ROM中。加載時要特別注意數(shù)據(jù)基數(shù)和數(shù)據(jù)長度的參數(shù)設(shè)置。

4 系統(tǒng)的功能仿真和驗(yàn)證分析
累加控制器、ROM查找表組成一個整體,實(shí)現(xiàn)了一個基本的DDS系統(tǒng)。該設(shè)計(jì)以原子鐘(33 MHz)為基準(zhǔn)頻率輸入,取累加器為32位,實(shí)現(xiàn)輸出頻率為700 kHz的信號。


關(guān)鍵詞: PFGA 數(shù)字頻率合成器

評論


相關(guān)推薦

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

關(guān)閉