
我知道,我對與電子有關的所有事情都很着迷,但不論從哪個角度看,今天的現場可編程門陣列(FPGA),都顯得“鶴立雞群”,真是非常棒的器件。如果在這個智能時代,在這個領域,想擁有一技之長的你還沒有關注FPGA,那么世界將拋棄你,時代將拋棄你。本公眾號作者ALIFPGA,多年FPGA開發經驗,所有文章皆為多年學習和工作經驗之總結。
DDS是直接數字式頻率合成器(Direct Digital Synthesizer)的英文縮寫,是一項關鍵的數字化技術。與傳統的頻率合成器相比,DDS具有低成本、低功耗、高分辨率和快速轉換時間等優點,廣泛使用在電信與電子儀器領域,是實現設備全數字化的一個關鍵技術。

上圖所示是一個基本的DDS結構,主要由相位累加器、相位調制器、正弦ROM 查找表和D /A 構成。圖中的相位累加器、相位調制器、正弦ROM查找表是DDS結構中的數字部分, 由於具有數控頻率合成的功能,又合稱為NCO。
相位累加器是整個DDS系統的核心,在這里完成相位累加功能。相位累加器的輸入是相位增量B∆θ=2N X fout /fclk,故相位累加器的輸入又稱為頻率控制字,fclk為系統基准時鍾,fout為輸出的頻率。頻率控制字還經過一組寄存器, 該寄存器是同步的, 使得當頻率控制字改變時不會干擾相位累加器的工作。
相位調制器接收相位累加器的相位輸出, 在這里加上一個相位偏移值, 主要用於信號的相位調制,
如應用於通信方面的相移鍵控等, 不使用此部分時可以去掉, 或者將其設為一個常數輸入。同樣相位字
輸入也要用同步寄存器保持同步。
正弦ROM查找表,完成fsin(B∆θ)的查找表轉換,是相位到幅度的轉換, 內部存有一個完整周期正弦波的
數字幅度信號,輸入是ROM 的地址值, 輸出送往D /A, 轉化成模擬信號。
在參考時鍾fclk控制下,頻率控制字K與相位寄存器的輸出反饋在相位累加器中完成加運算,存入寄存器,作為下一次加運算的一個輸入值,相位累加器輸出高位數據作為波形存儲器的相位抽樣地址值,查找波形存儲器中相對應單元的電壓幅值,得到波形二進制編碼,實現相位到電壓幅值的轉變。波形二進制編碼再通過D/A轉換器,把數字信號轉換成相應的模擬信號。
fout =K X fclk/ 2N
當K=l時,可得DDS的最小分辨率為:fout =fclk/ 2N
根據采樣定理,K的最大值應小於2N/2。
累加器得到的相位是怎么去尋址正弦ROM的,對於N位的相位累加器對應2的N次方數量的相位累加值,如果正弦ROM中存儲的點數也是2的N次方的話,對存儲容量和資源的要求就比較高了,實際上在尋址正弦ROM表時,用的是相位累加值的高位,也就是說並不是每個時鍾fc都從正弦ROM表中取一個數值,而是多個時鍾取一個值,這樣能保證相位累加器溢出時,從正弦ROM表中取出正好一個正弦周期的樣點。因此,相位累加器每計數2的N次方次,對應一個正弦周期。而相位累加器1秒鍾計數fc次,在k=1時,DDS輸出的時鍾頻率就是頻率分辨率。頻率控制字K增加時,相位累加器溢出的頻率增加,對應DDS輸出的頻率變為K倍的DDS頻率分辨率。
深入剖析:
設定:ROM存儲點數為1024,每個點是用8位二進制表示。即,ROM地址線寬度為10,數據線寬度為8。
根據上述條件可以知道,相位調制器位寬M=10,那么根據DDS原理,相位累加器位寬N=20。那么在相位調制器中與相位控制字進行累加時,應用相位累加器的高10位累加。
而相位累加器的低十位只與頻率控制字累加。為什么是這樣子?
我們以頻率控制字K=1為例,相位累加器的低十位一直會加1,直到低十位溢出向高十位進位,此時ROM地址應該是0,也就是說,ROM的0地址中的數據被讀了1024次,繼續下去,ROM中的1024個點,每個點都將會被讀1024次,最終輸出的波形頻率應該是參考時鍾頻率的1/1024。 fout =1 Xfclk/ 1024。反過來想,周期被擴大了1024 。同樣當頻率控制字為10時,相位累加器的低十位一直會加10,那么,相位累加器的低十位溢出的時間比上面會快十倍,則ROM中的每個點相比於上面會少讀10次,所以最終輸出頻率是上述的10倍。fout =10 Xfclk/ 1024。這就是DDS。
DDS 最終輸出的正弦波的幅值,必須都是ROM表中的正弦幅值。之前我們說根據采樣定理,頻率控制字K的最大值應小於2的N次冪除以2,這是有道理的,累加器數據位寬20位,ROM表地址位寬10位,在最終ROM表尋址時,用的是累加器的高10位,而低10位只用來進行累加。由於我們上述說DDS最終輸出正弦波的賦值必須是ROM表中的幅值,也就是說,ROM表中的幅值必須都被用到,而不能跳過。以累加器位寬20位為例,它的一半是1024,當頻率控制字以超過1024累加時,高十位輸出累加值會超過1,也就是在尋址ROM表時跳過某些賦值。根據上述可以得出結論了,頻率控制字K的最大值應小於2的N次冪除以2。

版權所有權歸卿萃科技 杭州FPGA事業部,轉載請注明出處

