《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種基于Spartan3E的DDS優(yōu)化設(shè)計(jì)
一種基于Spartan3E的DDS優(yōu)化設(shè)計(jì)
藍(lán) 天,張金林
摘要: 在高可靠應(yīng)用領(lǐng)域,如果設(shè)計(jì)得當(dāng),將不會存在類似于MCU的復(fù)位不可靠和PC可能跑飛等問題。CPLD/FPGA的高可靠性還表現(xiàn)在,,幾乎可將整個系統(tǒng)下載于同一芯片中,實(shí)現(xiàn)所謂片上系統(tǒng),從而大大縮小了體積,,易于管理和屏蔽。所以,,本文將在對DDS的基本原理進(jìn)行深入理解的基礎(chǔ)上,,采用多級流水線控制技術(shù)對DDS的VHDL語言實(shí)現(xiàn)進(jìn)行優(yōu)化,同時考慮到系統(tǒng)設(shè)計(jì)中的異步接口的同步化設(shè)計(jì)問題,,把該設(shè)計(jì)適配到Xilinx公司的最新90nm工藝的Spartan3E系列的FPGA中,。
關(guān)鍵詞: FPGA DDS Spartan3E
Abstract:
Key words :

在高可靠應(yīng)用領(lǐng)域,如果設(shè)計(jì)得當(dāng),,將不會存在類似于MCU的復(fù)位不可靠和PC可能跑飛等問題,。CPLD/FPGA的高可靠性還表現(xiàn)在,幾乎可將整個系統(tǒng)下載于同一芯片中,,實(shí)現(xiàn)所謂片上系統(tǒng),,從而大大縮小了體積,易于管理和屏蔽,。所以,,本文將在對DDS的基本原理進(jìn)行深入理解的基礎(chǔ)上,采用多級流水線控制技術(shù)對DDS的VHDL語言實(shí)現(xiàn)進(jìn)行優(yōu)化,,同時考慮到系統(tǒng)設(shè)計(jì)中的異步接口的同步化設(shè)計(jì)問題,,把該設(shè)計(jì)適配到Xilinx公司的最新90nm工藝的Spartan3E系列的FPGA中。

  1 DDS基本原理及工作過程

  一個基本的DDS由相位累加器,、波形存儲器ROM,、D/A轉(zhuǎn)換器和低通濾波器組成,如圖1所示,。

  

DDS基本組成模塊

 

  在圖1中,,fc為時鐘頻率,K為頻率控制字(N位),,m為ROM地址線位數(shù),,n為ROM數(shù)據(jù)線寬度(一般也為D/A轉(zhuǎn)換器的位數(shù)),f0為輸出頻率,。DDS的基本工作過程如下:每來一個時鐘脈沖fc,,加法器將頻率控制字K與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。其中相位累加器由N位加法器與N位累加寄存器級聯(lián)構(gòu)成,,累加寄存器將加法器在上一個時鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,,以使加法器在下一個時鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,,相位累加器在時鐘作用下,,不斷對頻率控制字進(jìn)行線性相位累加。由此可見,,相位累加器在每一個時鐘脈沖輸入時,,把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信號的相位,,相位累加器的溢出頻率就是DDS輸出的信號頻率,。用相位累加器輸出的數(shù)據(jù)作為波形存儲器ROM的相位取樣地址,可把存儲在波形存儲器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,,完成相位到幅值轉(zhuǎn)換,。波形存儲器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號,,由低通濾波器濾除雜散波和諧波以后,,輸出一個頻率為f0的正弦波。輸出頻率f0與時鐘頻率fc之間的關(guān)系滿足下式:

  

 

  由式(1)可見,,輸出頻率f0由fc和K共同決定,,保持時鐘頻率一定,改變一次K值,,即可合成一個新頻率的正弦波,。DDS的最小輸出頻率(頻率分辨率)△f可由方程△f=f0/2N確定??梢?,頻率分辨率在fc固定時,取決于相位累加器的位數(shù)N,。只要N足夠大,,理論上就可以獲得足夠高的頻率分辨精度。另外,,由采樣定理,,合成信號的頻率不能超過時鐘頻率的一半,即f0≤f0/2,,因此頻率控制值的最大值Kmax應(yīng)滿足Kmax≤2N-1,。

  2 DDS的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)

  采用VHDL硬件描述語言實(shí)現(xiàn)整個電路,不僅利于設(shè)計(jì)文檔的管理,,而且方便了設(shè)計(jì)的修改和擴(kuò)充,,還可以實(shí)現(xiàn)在不同F(xiàn)PGA器件[4]之間的移植,。以下采用VHDL語言,探討對FPGA實(shí)現(xiàn)DDS電路的三點(diǎn)優(yōu)化方法,。

  2.1 流水線累加器

  在用FPGA設(shè)計(jì)DDS電路時,,相位累加器是決定DDS電路性能的一個關(guān)鍵部分。為使輸出波形具有較高的分辨率,,本系統(tǒng)采用32位累加器,。但若直接用32位加法器構(gòu)成累加器,則加法器的延時會大大限制累加器的操作速度,。因此,,這里引入了流水線算法,即采用4個8位累加器級聯(lián)結(jié)構(gòu),,每級用一個8位累加器實(shí)現(xiàn)該部分相位相加,,然后將進(jìn)位值傳給下一級做進(jìn)一步累加。這樣可大幅提高系統(tǒng)的工作速度,。但由于累加器是一個閉環(huán)反饋電路,因此必須使用寄存器,,以保證系統(tǒng)的同步,、準(zhǔn)確運(yùn)行。具體實(shí)現(xiàn)如圖2所示,。

  

流水累加器原理

 

  2.2 相位/幅度轉(zhuǎn)換電路

  相位/幅度轉(zhuǎn)換電路是DDS電路中的另一個關(guān)鍵部分,,設(shè)計(jì)中面臨的主要問題就是資源的開銷。該電路通常采用ROM結(jié)構(gòu),,相位累加器的輸出是一種數(shù)字式鋸齒波,,通過取它的若干位作為ROM的地址輸入,而后通過查表和運(yùn)算,,ROM就能輸出所需波形的量化數(shù)據(jù),。考慮到正弦函數(shù)的對稱性:在[0,,2π]內(nèi),,正弦函數(shù)關(guān)于x=π成奇對稱,在[0,,π]內(nèi),,關(guān)于x=π/2成軸對稱。因此,,在正弦查找表中只須存儲相位在[0,,π/2]的函數(shù)值。這樣,,通過一個正弦碼表的前1/4周期就可以變換得到整個周期碼表,,節(jié)省了近3/4的資源,,非常可觀,。具體實(shí)現(xiàn)如表1所示,,為節(jié)省ROM資源,取相位累加器輸出的高8位做為ROM的輸入地址,,其中最高位(MSB)控制對輸出信號符號的處理,,次高位(MSB-1)控制對輸入地址的處理。

  

當(dāng)MSB-1為‘0’(一,,三象限)時,,對查找地址phase(5...0)不做任何處理;當(dāng)其為‘1’(二,四象限)時,,對phase(5...0)取反,。ROM的輸出為10位數(shù)據(jù),其中最高位為符號位,。當(dāng)MSB為‘0’(一,,二象限)時,輸出信號符號位為‘0’,,低9為ROM中的幅度數(shù)據(jù);當(dāng)其為‘1’(三,,四象限)時,輸出信號符號位為‘1’,,低9位為ROM中的幅度數(shù)據(jù)的相反數(shù)的補(bǔ)碼,。ROM的VHDL實(shí)現(xiàn)的主要部分如下:

 

  architecture Behavioral of rom is

  signal sin:STD_LOGIC_VECTOR(8 downto 0);

  signal temp:STD_LOGIC_VECTOR(5 downto 0);

  begin

  temp<=phase when MSB-1=′0′ else

  not phase;

  process(temp)

  begin

  case temp is

  when ″000000″=>

  sin<=″000000000″;

  …… --正弦查找表由MATLAB生成

  end case;

  end process;

  data_out<=″0″ & sin when MSB=′0′ else

  ″1″ & not sin+″000000001″;

  end Behavioral;

  2.3 同步接口電路設(shè)計(jì)

  在使用DDS時,需要為其提供頻率控制字K的值,,一般通過中央控制單元MCU來完成,,其以數(shù)據(jù)總線及寫時鐘信號的方式與FPGA內(nèi)的DDS實(shí)體進(jìn)行通訊,同時DDS在FPGA內(nèi)部又是在本地時鐘fc驅(qū)動下運(yùn)行,。由于MCU的寫時鐘和FPGA內(nèi)的本地時鐘異步,,兩者之間進(jìn)行通訊難免存在數(shù)據(jù)不穩(wěn)等問題,特別是在通訊速度較高時,,這一異步接口問題會更加突出,。為了實(shí)現(xiàn)異步接口的同步化,本文提出了如圖3所示的接口同步電路,。

  

異步接口同步處理電路

3 硬件實(shí)現(xiàn)及仿真結(jié)果

 

  本文使用VHDL 語言對各個模塊及DDS系統(tǒng)進(jìn)行描述,。頂層文件如下所示:

  Entity dds is

  Port(reset:in std_logic;--全局復(fù)位信號

  fre:in std_logic_vector(7 downto 0);

  --頻率控制字輸入

  clk:in std_logic;

  --系統(tǒng)時鐘

  fwwrn:in std_logic;      --頻率控制字寫信號

  gen:in std_logic_vector(0 downto 0);--波形控制字

  amp_out:out std_logic_vector(9 downto 0));

  --正弦波幅度輸出

  end dds;

  architecture Behavioral of dds is

  component fcwld--接口同步模塊

  Port(reset:in std_logic;

  clk:in std_logic;

  fre:in std_logic_vector(7 downto 0);

  fwwrn:in std_logic;

  syncfreq:out std_logic_vector(31 downto 0));

  --合成頻率控制字

  end component;

  component accumulator        --流水線累加器塊

  Port(reset:in STD_LOGIC;

  clk:in STD_LOGIC;

  syncfreq:in STD_LOGIC_VECTOR(31 downto 0);

  phase:out STD_LOGIC_VECTOR(7 downto 0));

  --相位高八位輸出

  end component;

  component rom--波形存儲器模塊

  Port(phase:in STD_LOGIC_VECTOR(7 downto 0);

  gen:in STD_LOGIC_VECTOR(0 downto 0);

  amp_out:out STD_LOGIC_VECTOR(9 downto 0));

  end component;

  為了對DDS進(jìn)行評估,將以上設(shè)計(jì)在Xilinx公司的開發(fā)軟件中進(jìn)行了設(shè)計(jì)及優(yōu)化,,目標(biāo)器件為其最新的90nm工藝器件Spartan3E中最小器件XC3S100E-4VQ100C,,該設(shè)計(jì)所占用的FPGA資源如表2所示。

  

 

  由表2可以看出,,本文給出的DDS設(shè)計(jì)占用資源很少,,由于XC3S100E的市場價格在2美金左右,,故本設(shè)計(jì)所占的硬件成本可以縮減到0.2美金左右。同時在ISE8.2中該設(shè)計(jì)的系統(tǒng)時鐘最大達(dá)到159.6MHz,。以上的設(shè)計(jì)性能幾乎和現(xiàn)有的專用芯片相當(dāng),,但成本下降很多。

  為了進(jìn)一步驗(yàn)證本文給出的DDS設(shè)計(jì)系統(tǒng)在功能和時序上的正確性,,對其進(jìn)行了時序仿真,,使用的仿真軟件為Modelsim6.1。仿真結(jié)果表明,,該DDS系統(tǒng)可以運(yùn)行在較高的工作頻率下,。

  本文在對DDS的基本原理進(jìn)行深入理解的基礎(chǔ)上,通過采用三種優(yōu)化與設(shè)計(jì)技術(shù):(1)使用流水線累加器在不過多增加門數(shù)的條件下,,大幅提高了芯片的工作速度;(2)壓縮成正弦查找表,,在保證芯片使用精度的情況下減少了近3/4面積,大大節(jié)約了ROM的容量,。(3)采用同步接口電路設(shè)計(jì)方案,,消除了系統(tǒng)的接口不穩(wěn)定性。同時使用VHDL語言實(shí)現(xiàn)了優(yōu)化,,并把該設(shè)計(jì)適配到Xilinx公司的最新90nm工藝的Spartan3E系列的FPGA中,,實(shí)際結(jié)果表明了本文給出的DDS設(shè)計(jì)方案在硬件開銷方面的優(yōu)勢。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。