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

3 系統軟件設計
3.1 累加控制模塊的設計
相位累加器主要完成相位累加,實(shí)現輸出波形頻率可調的功能。該模塊采用Verilog HDL語(yǔ)言來(lái)實(shí)現,若要求DDS系統精度高,相位累加器的位數N需較大。這里取N=8,它的Verilog HDL關(guān)鍵代碼如下:

其中,data信號為8位的頻率控制字,通過(guò)改變data的值可以實(shí)現不同頻率波形的輸出。
3.2 波形存儲器的設計
針對不同的可編程器件,ROM查找表的設計采用的方法也不相同。主要是基于IP核Single Port BlockMemory和Verilog選擇語(yǔ)句這兩種方法。使用SinglePort Block Memory的波形存儲表只需要產(chǎn)生數據文件*.mif或*.coe,然后直接在定制Single Port BlockMemory時(shí),添加數據文件即可。不過(guò)這種方法在FPGA支持內部嵌入式陣列塊(EAB)時(shí)才可以使用;使用Verilog選擇語(yǔ)句比較直觀(guān),但當輸入數據量大的
這種方法是比較繁瑣的。此次設計采用第一種方法。
coe文件是在編譯和仿真過(guò)程中作為存儲器(ROM或RAM)初始化輸入的文件,即memory initializationfile。創(chuàng )建coe文件的方式有很多種,在這次設計中,在Matlab中采用C語(yǔ)言來(lái)生成coe文件。coe文件編寫(xiě)格式如下:

將生成的cos.txt文件的后綴該為.coe,打開(kāi)文件并將最后一行的逗號改為分號,并在文件的最開(kāi)始添加下面兩行:

最后保存文件退出,并加載到Single Port BlockMemory所生成的ROM中。加載時(shí)要特別注意數據基數和數據長(cháng)度的參數設置。
4 系統的功能仿真和驗證分析
累加控制器、ROM查找表組成一個(gè)整體,實(shí)現了一個(gè)基本的DDS系統。該設計以原子鐘(33 MHz)為基準頻率輸入,取累加器為32位,實(shí)現輸出頻率為700 kHz的信號。
評論