直接數(shù)字合成器中相位截?cái)嗟幕A(chǔ)知識(shí)
在本文中,我們將討論在實(shí)踐中,相位累加器的輸出在傳遞到 LUT 之前應(yīng)被截?cái)唷N覀冞€將簡(jiǎn)要回顧一下相位截?cái)鄬?duì) DDS 輸出光譜純度的影響。
DDS的基本操作
假設(shè)我們想要生成一個(gè)數(shù)字化的正弦曲線。由于正弦波是一種周期性信號(hào),因此我們可以將一個(gè)周期的樣本存儲(chǔ)在存儲(chǔ)器中,并使用這些樣本生成我們想要的任意數(shù)量的周期。圖 1 顯示了一個(gè)示例,其中對(duì)模擬正弦曲線的一個(gè)周期采集了 16 個(gè)樣本。使用這些樣本,我們可以生成所需的周期信號(hào)。圖 1 所示的時(shí)域采樣實(shí)際上相當(dāng)于量化正弦曲線的相位參數(shù)。
圖1
在此示例中,使用 16 個(gè)不同級(jí)別來(lái)量化從 0 到 $$2 \pi$$ 的范圍。
圖 2 使用三角單位圓顯示了該相位量化。
使用三角單位圓進(jìn)行相位量化
圖2
現(xiàn)在,假設(shè)我們將這 16 個(gè)樣本存儲(chǔ)在 ROM 中,并使用周期為 $$T_{clk} 的時(shí)鐘信號(hào)順序讀取樣本。每個(gè)樣本將持續(xù)一個(gè) T_{clk},因此需要 $$16 \times T_{clk}才能產(chǎn)生一個(gè)正弦曲線周期。如您所見(jiàn),產(chǎn)生的正弦波頻率將為 f_{out}=\tfrac{1}{16 \times T_{clk}}。
請(qǐng)注意,對(duì)于給定的時(shí)鐘頻率,我們可以通過(guò)更改所使用的樣本數(shù)量來(lái)更改輸出頻率。例如,如果我們順序讀取圖 1 的 16 個(gè)可用樣本(每隔一個(gè)樣本)中的 8 個(gè)等距樣本,則輸出頻率將增加到 $$f_{out}=\tfrac{1}{8 \times T_{clk}}$$。在本例中,我們正在讀取圖 1 的所有其他樣本。換句話說(shuō),為了生成 $$f_{out}=\tfrac{1}{16 \times T_{clk}}$$,我們使用一個(gè)階段表示 0 到 $$2 \pi$$ 范圍的離散水平之間 $$\tfrac{2 \pi}{16}$$ 的增量;然而,對(duì)于 $$f_{out}=\tfrac{1}{8 \times T_{clk}}$$,離散級(jí)之間的相位增量增加到 $$\tfrac{2 \pi}{8}$ $。
這就是DDS的基本思想:我們?cè)赗OM中存儲(chǔ)相對(duì)大量的樣本,并以適當(dāng)?shù)南辔辉隽宽樞蜃x取樣本,以產(chǎn)生存儲(chǔ)波形的不同頻率?;诖擞懻摚覀儷@得了 DDS 的基本框圖,如圖 3 所示。
DDS 的框圖
圖3
如您所見(jiàn),2^n正弦樣本存儲(chǔ)在查找表 (LUT) 中。LUT 的地址輸入連接到稱為“相位累加器”的塊。“相位累加器”只是一個(gè)加法器,后面跟著一組 n 個(gè)寄存器。如圖所示,寄存的輸出用作加法器的輸入。因此,隨著每個(gè)時(shí)鐘沿,存儲(chǔ)在寄存器組中的值將增加 $$\Delta \theta$$ 的值。通過(guò)這種方式,我們可以控制從 LUT 讀取的樣本數(shù)量,并且我們將能夠控制輸出正弦波的頻率。擴(kuò)展上面討論的簡(jiǎn)單示例,我們可以發(fā)現(xiàn) DDS 的輸出頻率為
f_{out}=\frac{f_{clk}}{2^n}\times \Delta \theta
DDS 的頻率分辨率
公式 1 顯示 DDS 的輸出頻率是 $$\tfrac{f_{clk}}{2^n}$$ 的整數(shù)倍。將相位增量替換為其可能值,即 $$\Delta \theta =1$$,我們得到 DDS 的頻率分辨率為
\Delta f=\frac{f_{clk}}{2^n}
公式2
公式 2 顯示,對(duì)于給定的 $$f_{clk}$$,只能通過(guò)增加 n 來(lái)提高頻率分辨率。這就是為什么需要具有大累加器的 DDS。例如,利用 n=48 的累加器,Analog Devices AD9912可以提供大約 3.6 Hz 的頻率分辨率,同時(shí)以 $$f_{clk}=1GHz$$ 運(yùn)行。
相位截?cái)?/p>
大累加器可以產(chǎn)生任意小的頻率調(diào)諧分辨率;然而,對(duì)于圖 3 所示的結(jié)構(gòu),大型累加器要求使用不切實(shí)際的大 LUT。為了避免這個(gè)問(wèn)題,我們通常截?cái)嗬奂悠鞯妮敵?。如圖 4 所示。
具有截?cái)嗬奂悠鬏敵龅目驁D
圖4
“量化器”接受累加器的 n 位輸出,并僅將 p 個(gè)有效位 (MSB) 應(yīng)用到 LUT。您可能想知道如果我們要丟棄一些 LSB 并僅將 p 個(gè) MSB 應(yīng)用于 LUT 的地址輸入,為什么我們首先要使用大型累加器?
為了獲得更好的理解,我們?cè)趫D 2 的相位量化中再添加兩位,但在訪問(wèn) LUT 時(shí)丟棄這兩位。我們的六位累加器的相位量化如圖5所示。在該圖中,紅色圓圈代表累加器的四個(gè)MSB實(shí)現(xiàn)的相位量化級(jí)別,因此,兩個(gè)相鄰紅色圓圈之間的相位差為$$\ tfrac{2 \pi}{16}$$。
正如您所看到的,黑點(diǎn)將兩個(gè)連續(xù)的紅色圓圈之間的每條弧線分為四個(gè)離散的級(jí)別。這些黑點(diǎn)對(duì)應(yīng)于累加器的兩個(gè) LSB。兩個(gè)相鄰黑點(diǎn)之間的相位差為$$\tfrac{2 \pi }{64}$$?,F(xiàn)在,假設(shè)累加器重置為零,并且圖 4 中的 $$\Delta \theta =3_{10}$$。從累加器輸出連續(xù)獲得的離散級(jí)別將如圖 5 的三角形所示。
從累加器輸出獲得的離散電平
圖5
請(qǐng)注意,當(dāng)三角形對(duì)應(yīng)于黑點(diǎn)時(shí),三角形為黑色;當(dāng)三角形與紅色圓圈重合時(shí),三角形為紅色。當(dāng)累加器重置為零時(shí),起始點(diǎn)將如圖所示。
在下一個(gè)時(shí)鐘沿,累加器輸出將為三。正如您所看到的,這沒(méi)有達(dá)到個(gè)紅色圓圈的要求。因此,將傳遞到 LUT 的值將對(duì)應(yīng)于 LUT 中存儲(chǔ)的個(gè)樣本(就像我們處于“起始”點(diǎn)時(shí)一樣)。因此,截?cái)噙^(guò)程此時(shí)會(huì)導(dǎo)致 $$3 \times \tfrac{2 \pi}{64}$$ 的相位誤差。該相位誤差將導(dǎo)致幅度誤差,因?yàn)?LUT 將輸出與“起始”點(diǎn)相對(duì)應(yīng)的樣本。
在下一個(gè)時(shí)鐘沿,累加器將再增加 3,我們將達(dá)到 $$2 \times \Delta \theta$$ 指定的點(diǎn)。在這種情況下,截?cái)嗟南辔恢祵⒅赶虼鎯?chǔ)在存儲(chǔ)器中的第二個(gè)樣本。這次,相位誤差將為$$2 \times \tfrac{2 \pi}{64}$$。
這個(gè)過(guò)程將繼續(xù)下去,再添加兩次之后,我們將達(dá)到 $$4 \times \Delta \theta$$ 點(diǎn)。該點(diǎn)的三角形顯示為紅色,因?yàn)樗鼘?duì)應(yīng)于從累加器的四個(gè) MSB 獲得的離散電平。此時(shí),截?cái)嗖粫?huì)導(dǎo)致相位誤差。
這個(gè)例子強(qiáng)調(diào)了三點(diǎn):首先,無(wú)論我們是否進(jìn)行相位截?cái)?,大累加器都?huì)增加頻率調(diào)諧分辨率。事實(shí)上,對(duì)于給定的 $$f_{clk}$$ 和 $$\Delta \theta$$,較大的累加器將需要更多時(shí)間溢出,并將產(chǎn)生更高分辨率的頻率。
其次,由于我們截?cái)嗔死奂悠鬏敵?,因此傳遞到 LUT 的相位信息可能會(huì)遇到一些錯(cuò)誤。然而,該誤差的值可能受到截?cái)嗪蟊A舻睦奂悠魑粩?shù)的限制。這種有限的相位誤差可以被設(shè)想為時(shí)基抖動(dòng)。當(dāng)我們?cè)黾訄D 4 中的 p 時(shí),LUT 的深度將會(huì)增加,但由于相位截?cái)喽鴮?dǎo)致的誤差將會(huì)減少。
總結(jié)這兩點(diǎn),我們以一些相位誤差為代價(jià)來(lái)提高 DDS 的頻率分辨率。這是一個(gè)有趣的想法,主要是因?yàn)槲覀兛梢酝ㄟ^(guò)將足夠數(shù)量的累加器位傳遞給 LUT 來(lái)限制相位誤差的值。
第三點(diǎn),可以驗(yàn)證截?cái)喈a(chǎn)生的相位誤差是周期性的。在討論的示例中,我們看到前四次相加的相位誤差為 $$3 \times \tfrac{2 \pi}{64}$$、$$2 \times \tfrac{2 \pi}{64}$$ ,$$1 \times \tfrac{2 \pi}{64}$$ 和零。您可以驗(yàn)證該錯(cuò)誤術(shù)語(yǔ)序列是否也會(huì)在下一個(gè)添加中重復(fù)出現(xiàn)。
相位截?cái)嚯s散
相位截?cái)喈a(chǎn)生的周期性誤差會(huì)導(dǎo)致 DDS 輸出信號(hào)幅度出現(xiàn)周期性誤差。在輸出頻譜中,周期性幅度誤差會(huì)產(chǎn)生不需要的頻率分量,稱為相位截?cái)嚯s散。相位截?cái)嚯s散的幅度和分布取決于三個(gè)參數(shù):
累加器的大小 (n)
傳遞到 LUT 的累加器位數(shù) (p)
相位增量的值 ($$\Delta \theta $$)
分析雜散的幅度,尤其是分布是相當(dāng)復(fù)雜的。您可以在本書(shū)第 10.3.3 節(jié)中找到分析摘要。在此,我們僅回顧幅度分析的結(jié)果。根據(jù)此分析,相位截?cái)嚯s散的幅度比所需輸出的幅度低約 6.02p 分貝。例如,當(dāng) p=8 時(shí),雜散將比 DDS 的所需輸出低約 48 dB。如圖 6 所示。
DDS輸出頻譜1
圖 6. $$f_{out}=0.022$$Hz、n=p=8 和 l=12 時(shí)的 DDS 輸出頻譜。圖片由Xilinx提供。
值得注意的是,在基本的 DDS 結(jié)構(gòu)中可以識(shí)別兩種類型的量化: 1- 上面討論的相位量化和 2- 幅度量化,對(duì)應(yīng)于用于表示 LUT 中正弦曲線樣本的位數(shù)。例如,通過(guò)增加圖 4 中的 l,我們可以獲得更好的正弦曲線樣本近似值。
有趣的是,圖 6 中所示的雜散電平取決于 LUT 的深度(即 p),而不是其寬度 (l)。例如,如果我們使用 l=16 位來(lái)表示正弦曲線的每個(gè)樣本,并保持圖 6 中所示的仿真的其他參數(shù)不變,則雜散電平將比 DDS 所需輸出低約 48 dB。如圖 7 所示。
DDS輸出頻譜2
圖 7. $$f_{out}=0.022$$Hz、n=p=8 和 l=16 時(shí)的 DDS 輸出頻譜。圖片由Xilinx提供。
概括
大累加器可以產(chǎn)生任意小的頻率調(diào)諧分辨率;然而,這將要求使用不切實(shí)際的大 LUT。為了避免這個(gè)問(wèn)題,我們通常截?cái)嗬奂悠鞯妮敵?。在這種情況下,我們以一些相位誤差為代價(jià)來(lái)提高 DDS 的頻率分辨率。這是一個(gè)有趣的想法,主要是因?yàn)槲覀兛梢酝ㄟ^(guò)將足夠數(shù)量的累加器位傳遞給 LUT 來(lái)限制相位誤差的值。
相位截?cái)喈a(chǎn)生的誤差是周期性的,會(huì)導(dǎo)致不需要的頻率分量,稱為相位截?cái)嚯s散。相位截?cái)嚯s散的幅度大約比所需輸出的幅度低 6.02p 分貝。例如,當(dāng) p=8 時(shí),雜散幅度將比 DDS 的所需輸出低約 48 dB。