DDS的FPGA實(shí)現(xiàn)設(shè)計(jì)
根據(jù)圖1,并假定相位控制字為0,這時(shí)DDS的核心部分相位累加器的FPGA的設(shè)計(jì)可分為如下幾個(gè)模塊:相位累加器SUM99、相位寄存器REG1、正弦查找表ROM和輸出數(shù)據(jù)寄存器REG2,其內(nèi)部組成框圖如圖 2所示。圖中,輸入信號(hào)有時(shí)鐘輸入CLK,使能端EN,復(fù)位端RESET,頻率控制字K,輸出信號(hào)為Q。
圖2 DDS內(nèi)部組成框圖
整個(gè)DDS模塊采用一個(gè)時(shí)鐘,以用來(lái)同步各個(gè)模塊的運(yùn)算速度。其中相位累加器SUM99是一個(gè)帶有累加功能的10位加法器,它以設(shè)定的10位頻率控制字Κ作為步長(zhǎng)來(lái)進(jìn)行加法運(yùn)算,當(dāng)其和滿時(shí),計(jì)數(shù)器清零,并進(jìn)行重新運(yùn)算。相位寄存器REG1就是一個(gè)一般的10位寄存器,它對(duì)輸入端輸入的數(shù)據(jù)進(jìn)行寄存,當(dāng)下一個(gè)時(shí)鐘到來(lái)時(shí),輸出寄存的數(shù)據(jù)。正弦查找表ROM是DDS最關(guān)鍵的部分,也是最復(fù)雜的部分,設(shè)計(jì)時(shí)首先需對(duì)正弦函數(shù)進(jìn)行采樣,接著將采樣的結(jié)果放到ROM模塊的對(duì)應(yīng)存儲(chǔ)單元中,每一位地址對(duì)應(yīng)一個(gè)數(shù)值,輸出為9位。為了保證輸出數(shù)據(jù)的穩(wěn)定性,我們將ROM的輸出數(shù)據(jù)先寄存在REG2中,待下一個(gè)時(shí)鐘到來(lái)時(shí),再將其輸出。整個(gè)系統(tǒng)各模塊是在同步時(shí)鐘信號(hào)CLK的控制下協(xié)調(diào)工作的。
下面介紹一下正弦查找表ROM模塊的具體設(shè)計(jì)。
首先利用MATLAB或C語(yǔ)言編程對(duì)正弦函數(shù)進(jìn)行采樣;然后對(duì)采樣數(shù)據(jù)進(jìn)行二進(jìn)制轉(zhuǎn)換,其結(jié)果作為查找表地址的數(shù)值。
用MATLAB語(yǔ)言編寫的正弦函數(shù)數(shù)據(jù)采集程序如下:
用C語(yǔ)言編寫的正弦函數(shù)數(shù)據(jù)采樣程序如下:
兩個(gè)程序運(yùn)行之后所得結(jié)果是一致的。
MATLAB語(yǔ)言編寫的正弦函數(shù)數(shù)據(jù)采集程序運(yùn)行結(jié)果如下:
總共是1024個(gè)數(shù)據(jù)。
歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
來(lái)源:ks990次