DDS邏輯優(yōu)化設(shè)計及Verilog實現(xiàn)
摘 要:本文主要介紹了在DDS系統(tǒng)中,為了提高芯片運算速度,加大輸出帶寬,減小芯片規(guī)模從而提高可靠性和頻譜純度而采用的優(yōu)化方法及其VerilogHDL實現(xiàn)。
關(guān)鍵詞:流水線;輸入寄存器結(jié)構(gòu);加法器最低位修正;壓縮存儲查找表
概述
由于DDS頻率合成方法具有低頻率轉(zhuǎn)換時間、低失真輸出波形、高分辨率、高頻譜純度、可編程和寬頻率輸出范圍等優(yōu)良性能,在現(xiàn)代頻率合成領(lǐng)域中具有越來越重要的地位。在許多應(yīng)用領(lǐng)域中,如通信、導(dǎo)航、雷達和電子對抗等, DDS頻率源都是主流的關(guān)鍵部件。
DDS的改進構(gòu)想
DDS電路的關(guān)鍵是利用高速存儲器做查找表,通過高速DAC產(chǎn)生已經(jīng)以數(shù)字形式存入的正弦波,并用頻率控制字K來調(diào)制DDS的輸出頻率。
從算法可以看出,DDS的工作主頻決定它輸出的頻率:fout=fclk*K/2N(N為相位累加器的位數(shù),K為頻率控制字,位寬32位,fclk是芯片主頻),所以提高DDS的主頻就可以提高它的輸出頻率和輸出帶寬,同時對于ROM的實現(xiàn)來說,如果用32根地址線來尋址,則需要一個非常大的ROM,要232那么大。這種ROM從存取時間、可靠性和制造上來說是不實際的,所以要對算法進行改進。
DDS設(shè)計優(yōu)化
這一部分對DDS設(shè)計進行了優(yōu)化,目的是在保持其原有優(yōu)點的基礎(chǔ)上,盡量減少硬件復(fù)雜性,降低芯片面積和功耗等,提高芯片速度。核心結(jié)構(gòu)如圖1所示。圖中相位累加器為32位,如果主頻為75MHz,則確定頻率分辨率為0.0174Hz。相位-幅值轉(zhuǎn)換部分由查找表邏輯實現(xiàn)。查找表用字長為13位的ROM實現(xiàn),存儲壓縮后的SIN值。本芯片在相位累加器和查找表之間插入了一個地址轉(zhuǎn)換器,負責(zé)進行地址轉(zhuǎn)換。在查找表和DAC之間插入了一個數(shù)據(jù)轉(zhuǎn)換器,負責(zé)進行數(shù)據(jù)轉(zhuǎn)換。相位累加器輸出的地址碼位寬為16位, Data[12:0]為查找表輸出的二進制SIN值,它經(jīng)過數(shù)據(jù)轉(zhuǎn)換器后和adri[15]反拼接成14位數(shù)據(jù)輸入DAC,變換成連續(xù)的正弦信號V輸出。
對DDS優(yōu)化如下:
1. 引入流水線對累加器進行優(yōu)化。將32位累加器分成4條流水線,每條流水線完成8位的加法運算,流水線的進位進行級聯(lián)。運用流水線實現(xiàn)加法器可以提高累加器的運算速度3倍之多。為了提高運算速度,加法器算法采用的是目前速度最快的預(yù)先進位算法。為了避免因預(yù)先進位加法器中進位傳輸鏈過長而影響速度,每8位加法器由兩個4位的預(yù)先進位加法器級聯(lián)而成。因引入流水線而多加入80個寄存器中的48個可以通過改進的輸入數(shù)據(jù)寄存器減少,詳見圖2。對輸入寄存器結(jié)構(gòu)進行優(yōu)化,以降低硬件復(fù)雜度,減小芯片面積,從而進一步提高運行速度。在設(shè)計中增加一個時鐘分配器,通過時鐘的分配時序,可以節(jié)省保存輸入頻率控制字的級聯(lián)寄存器。還同時節(jié)約芯片的24個I/O口,唯一的缺點是數(shù)據(jù)要保持4個時鐘周期,會降低系統(tǒng)跳頻的跳轉(zhuǎn)頻率。
2. 從圖1可知,從相位累加器的32位輸出中提取高16位作為ROM的查找地址,相位累加器的輸出截尾可以減少ROM的尺寸到原來的1/216,把ROM容量的單元數(shù)從232降到216。損失的低16位相位累加數(shù)值對應(yīng)0.02度的間斷,在絕大部分應(yīng)用中都是可以忽略的,在生成波形的精確度上已經(jīng)可以滿足要求了。但由此而產(chǎn)生的截尾誤差卻會對頻譜純度和輸出帶寬產(chǎn)生影響。相應(yīng)的解決辦法如圖3所示:將D觸發(fā)器的輸出端連接到相位累加器最低位的c0,相位累加器字長變?yōu)?2+1位,頻率控制字的值相當(dāng)于2K+1,而截尾誤差為2,即頻率控制字(奇數(shù))和截尾誤差(2的整數(shù)次冪)之間互質(zhì)。這樣帶來的地址上1/2LSB的誤差影響,在實際應(yīng)用中可以忽略。
主要優(yōu)化算法的Verilog實現(xiàn)
VerilogHDL語言專門面向硬件與系統(tǒng)設(shè)計??梢栽谛酒惴?、功能模塊、層次結(jié)構(gòu)和測試向量等方面進行描述。VerilogHDL簡單、靈活,可直接描述硬件單元結(jié)構(gòu),而且具有很好的可讀性。
流水線加法器陣列和加法器最低進位修正實現(xiàn)
dffn gate1(ci,ci,clk,rst);
lineadd gate2(q[7:0],co0,ci,clk1, clk,datain,k,rst);
twolineadd gate3(q[15:8],co1, co0,clk2,clk,k,rst);
trilineadd gate4(q[23:16], co2,net1,net3, co1,clk3,clk,k,rst);
forlineadd gate5(q[31:24],co,co2, clk4,clk,k,rst);
這是用VerilogHDL的結(jié)構(gòu)描述方法實現(xiàn)的,對應(yīng)于用電路圖輸入邏輯。其中的lineadd,twolineadd, trilineadd,forlineadd是帶寄存器的加法器流水線。Dffn是輸出為QN的D觸發(fā)器,其輸出端接加法器最低進位。
波形折疊及抬高算法
波形折疊(地址轉(zhuǎn)換器)
always@(adri)
if(adri[14])
adro=14'h1fff^adri[13:0];
else
adro=adri;
根據(jù)adri[14]的數(shù)值可以判斷地址碼是否需要對p/2進行折疊。這里用^是按位異或,作用是用全1減去adri值,從而實現(xiàn)地址碼對p/2的折疊。因為被減數(shù)是確定的而且是全1,所以可以用異或?qū)崿F(xiàn)減法,這樣比用減法器要節(jié)約門數(shù)。
抬高算法(數(shù)據(jù)轉(zhuǎn)換器)
always@(data,adri[15])
begin
if(adri[15])
datum=13'h3fff^data;
else
{datum}=data-13'h0001;
end
result={ !adri[15],datum};
end
根據(jù)adri[15]的數(shù)值可以判斷波形值應(yīng)該是正是負,如果是正,則用全1和從ROM中取出的數(shù)相加,就相當(dāng)于原數(shù)據(jù)減1后再在最高位拼接1,以1LSB的偏移量為代價,可以省略減法器。如果是負,則用按位異或?qū)崿F(xiàn)相減,得到經(jīng)過抬高處理的數(shù)據(jù)。抬高處理是為了滿足DAC的輸入全為正值的需要。
壓縮sin值ROM查找表邏輯的結(jié)構(gòu)描述實現(xiàn)
ROM1 gate1(daone,adro[13:5], clk,ren,dinone);
ROM2 gate2(datwo,{adro[13:9], adro[4:0]},clk,ren,dintwo);
adderone gate3(daone, datwo,result[11:0]);
addertwo gate4(adro[13:5], result[11:0],data[12:0]
ROM1和ROM2是兩個讀寫存儲器,ROM1是主值存儲器,ROM2是修正存儲器,分別存放預(yù)先計算好的主值和修正值。dinone和dintow是ROM的數(shù)據(jù)寫入端,daone和datwo是數(shù)據(jù)讀出端。Allader是一個12位加法器,將主值和修正值相加。addertwo是13位加法器,完成 [Sin(p x/2)-p x/2]+p x/2,從而得到Sin(p x/2)的值。
結(jié)語
總體而言,DDS可以得到下面的改進:使用流水線算法和輸入數(shù)據(jù)寄存器可以在不過多增加門數(shù)的條件下,大幅提高芯片的工作頻率;修正加法器最低進位位帶來3dB左右的頻譜性能提高,提高了輸出波形的頻譜純度;而壓縮存儲查找表在保證芯片使用精度的情況下減少了大部分面積,利用SIN函數(shù)的對稱性和三角恒等式以及最后的SIN值壓縮算法經(jīng)過具體實驗可以達到79.24:1的壓縮率,大大節(jié)約了ROM的容量,可以使芯片在滿足性能要求的基礎(chǔ)上,節(jié)約相當(dāng)大的芯片面積,同時節(jié)約了功耗提高了芯片的可靠性。按照此優(yōu)化方法設(shè)計的芯片可以工作在75MHz頻率上,輸出信號諧波小于-60dB,而芯片規(guī)模是13000門左右。■
參考文獻
1 J Vankka, M Waltari, and M Kosunen, 褹 Direct Digital Synthesizer with an On-chip D/A-Converter? IEEE JSolStaCirc,1998;33(2):218-227
2 J. Vankka, 襍pur Reduction Techniques in Sine Output Direct Digital Synthesis?, in Proc. 1996 IEEE Frequency Control Symp., June 1996; 951?59
3 S. Mortezapour, E. K. F. Lee, 褼esign of Low-Power ROM-Less Direct Digital Frequency Synthesizer Using Nonlinear Digital-to-Analog Converter?on IEEE Journal of Solid-State Circuits,Vol. 34, No. 10, October 1999:1350-1359
4. L. K. Tan and H. Samueli, “A 200 MHz Quadrature Digital Synthesizer/Mixer in 0.8mm CMOS” on IEEE Journal of Solid-State Circuits Vol. 30, No. 3, March 1995:193-200
評論