<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > DDS邏輯優(yōu)化設計及Verilog實(shí)現

DDS邏輯優(yōu)化設計及Verilog實(shí)現

作者:■ 西安電子科技大學(xué)微電子研究所 史吉吉 楊銀堂 時(shí)間:2005-04-27 來(lái)源:eaw 收藏

摘    要:本文主要介紹了在DDS系統中,為了提高芯片運算速度,加大輸出帶寬,減小芯片規模從而提高可靠性和頻譜純度而采用的優(yōu)化方法及其VerilogHDL實(shí)現。
關(guān)鍵詞:;;;

概述
由于DDS頻率合成方法具有低頻率轉換時(shí)間、低失真輸出波形、高分辨率、高頻譜純度、可編程和寬頻率輸出范圍等優(yōu)良性能,在現代頻率合成領(lǐng)域中具有越來(lái)越重要的地位。在許多應用領(lǐng)域中,如通信、導航、雷達和電子對抗等, DDS頻率源都是主流的關(guān)鍵部件。

DDS的改進(jìn)構想
DDS電路的關(guān)鍵是利用高速存儲器做查找表,通過(guò)高速DAC產(chǎn)生已經(jīng)以數字形式存入的正弦波,并用頻率控制字K來(lái)調制DDS的輸出頻率。
從算法可以看出,DDS的工作主頻決定它輸出的頻率:fout=fclk*K/2N(N為相位累加器的位數,K為頻率控制字,位寬32位,fclk是芯片主頻),所以提高DDS的主頻就可以提高它的輸出頻率和輸出帶寬,同時(shí)對于ROM的實(shí)現來(lái)說(shuō),如果用32根地址線(xiàn)來(lái)尋址,則需要一個(gè)非常大的ROM,要232那么大。這種ROM從存取時(shí)間、可靠性和制造上來(lái)說(shuō)是不實(shí)際的,所以要對算法進(jìn)行改進(jìn)。

DDS設計優(yōu)化
這一部分對DDS設計進(jìn)行了優(yōu)化,目的是在保持其原有優(yōu)點(diǎn)的基礎上,盡量減少硬件復雜性,降低芯片面積和功耗等,提高芯片速度。核心結構如圖1所示。圖中相位累加器為32位,如果主頻為75MHz,則確定頻率分辨率為0.0174Hz。相位-幅值轉換部分由查找表邏輯實(shí)現。查找表用字長(cháng)為13位的ROM實(shí)現,存儲壓縮后的SIN值。本芯片在相位累加器和查找表之間插入了一個(gè)地址轉換器,負責進(jìn)行地址轉換。在查找表和DAC之間插入了一個(gè)數據轉換器,負責進(jìn)行數據轉換。相位累加器輸出的地址碼位寬為16位, Data[12:0]為查找表輸出的二進(jìn)制SIN值,它經(jīng)過(guò)數據轉換器后和adri[15]反拼接成14位數據輸入DAC,變換成連續的正弦信號V輸出。
對DDS優(yōu)化如下:
1. 引入對累加器進(jìn)行優(yōu)化。將32位累加器分成4條,每條流水線(xiàn)完成8位的加法運算,流水線(xiàn)的進(jìn)位進(jìn)行級聯(lián)。運用流水線(xiàn)實(shí)現加法器可以提高累加器的運算速度3倍之多。為了提高運算速度,加法器算法采用的是目前速度最快的預先進(jìn)位算法。為了避免因預先進(jìn)位加法器中進(jìn)位傳輸鏈過(guò)長(cháng)而影響速度,每8位加法器由兩個(gè)4位的預先進(jìn)位加法器級聯(lián)而成。因引入流水線(xiàn)而多加入80個(gè)寄存器中的48個(gè)可以通過(guò)改進(jìn)的輸入數據寄存器減少,詳見(jiàn)圖2。對進(jìn)行優(yōu)化,以降低硬件復雜度,減小芯片面積,從而進(jìn)一步提高運行速度。在設計中增加一個(gè)時(shí)鐘分配器,通過(guò)時(shí)鐘的分配時(shí)序,可以節省保存輸入頻率控制字的級聯(lián)寄存器。還同時(shí)節約芯片的24個(gè)I/O口,唯一的缺點(diǎn)是數據要保持4個(gè)時(shí)鐘周期,會(huì )降低系統跳頻的跳轉頻率。
2. 從圖1可知,從相位累加器的32位輸出中提取高16位作為ROM的查找地址,相位累加器的輸出截尾可以減少ROM的尺寸到原來(lái)的1/216,把ROM容量的單元數從232降到216。損失的低16位相位累加數值對應0.02度的間斷,在絕大部分應用中都是可以忽略的,在生成波形的精確度上已經(jīng)可以滿(mǎn)足要求了。但由此而產(chǎn)生的截尾誤差卻會(huì )對頻譜純度和輸出帶寬產(chǎn)生影響。相應的解決辦法如圖3所示:將D觸發(fā)器的輸出端連接到相位累加器最低位的c0,相位累加器字長(cháng)變?yōu)?2+1位,頻率控制字的值相當于2K+1,而截尾誤差為2,即頻率控制字(奇數)和截尾誤差(2的整數次冪)之間互質(zhì)。這樣帶來(lái)的地址上1/2LSB的誤差影響,在實(shí)際應用中可以忽略。

主要優(yōu)化算法的Verilog實(shí)現
VerilogHDL語(yǔ)言專(zhuān)門(mén)面向硬件與系統設計??梢栽谛酒惴?、功能模塊、層次結構和測試向量等方面進(jìn)行描述。VerilogHDL簡(jiǎn)單、靈活,可直接描述硬件單元結構,而且具有很好的可讀性。
流水線(xiàn)加法器陣列和加法器最低進(jìn)位修正實(shí)現
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的結構描述方法實(shí)現的,對應于用電路圖輸入邏輯。其中的lineadd,twolineadd, trilineadd,forlineadd是帶寄存器的加法器流水線(xiàn)。Dffn是輸出為QN的D觸發(fā)器,其輸出端接加法器最低進(jìn)位。
波形折疊及抬高算法
波形折疊(地址轉換器)
 always@(adri)
                if(adri[14])
                  adro=14'h1fff^adri[13:0];
                else
adro=adri;
根據adri[14]的數值可以判斷地址碼是否需要對p/2進(jìn)行折疊。這里用^是按位異或,作用是用全1減去adri值,從而實(shí)現地址碼對p/2的折疊。因為被減數是確定的而且是全1,所以可以用異或實(shí)現減法,這樣比用減法器要節約門(mén)數。
抬高算法(數據轉換器)
always@(data,adri[15])
           begin 
 if(adri[15])
              datum=13'h3fff^data;
            else
{datum}=data-13'h0001;
end
 result={ !adri[15],datum};
                end
根據adri[15]的數值可以判斷波形值應該是正是負,如果是正,則用全1和從ROM中取出的數相加,就相當于原數據減1后再在最高位拼接1,以1LSB的偏移量為代價(jià),可以省略減法器。如果是負,則用按位異或實(shí)現相減,得到經(jīng)過(guò)抬高處理的數據。抬高處理是為了滿(mǎn)足DAC的輸入全為正值的需要。
壓縮sin值ROM查找表邏輯的結構描述實(shí)現
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是兩個(gè)讀寫(xiě)存儲器,ROM1是主值存儲器,ROM2是修正存儲器,分別存放預先計算好的主值和修正值。dinone和dintow是ROM的數據寫(xiě)入端,daone和datwo是數據讀出端。Allader是一個(gè)12位加法器,將主值和修正值相加。addertwo是13位加法器,完成 [Sin(p x/2)-p x/2]+p x/2,從而得到Sin(p x/2)的值。
結語(yǔ)
總體而言,DDS可以得到下面的改進(jìn):使用流水線(xiàn)算法和輸入數據寄存器可以在不過(guò)多增加門(mén)數的條件下,大幅提高芯片的工作頻率;修正加法器最低進(jìn)位位帶來(lái)3dB左右的頻譜性能提高,提高了輸出波形的頻譜純度;而在保證芯片使用精度的情況下減少了大部分面積,利用SIN函數的對稱(chēng)性和三角恒等式以及最后的SIN值壓縮算法經(jīng)過(guò)具體實(shí)驗可以達到79.24:1的壓縮率,大大節約了ROM的容量,可以使芯片在滿(mǎn)足性能要求的基礎上,節約相當大的芯片面積,同時(shí)節約了功耗提高了芯片的可靠性。按照此優(yōu)化方法設計的芯片可以工作在75MHz頻率上,輸出信號諧波小于-60dB,而芯片規模是13000門(mén)左右?!?/P>

參考文獻
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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>