<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > DDS的優(yōu)化設(shè)計(jì)介紹

          DDS的優(yōu)化設(shè)計(jì)介紹

          作者: 時(shí)間:2012-11-11 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/185570.htm

          當(dāng)MSB-1為‘0’(一,三象限)時(shí),對查找地址phase(5...0)不做任何處理;當(dāng)其為‘1’(二,四象限)時(shí),對phase(5...0)取反。ROM的輸出為10位數(shù)據(jù),其中最高位為符號位。當(dāng)MSB為‘0’(一,二象限)時(shí),輸出信號符號位為‘0’,低9為ROM中的幅度數(shù)據(jù);當(dāng)其為‘1’(三,四象限)時(shí),輸出信號符號位為‘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ì)

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

          異步接口同步處理電路

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

          本文使用VHDL 語言對各個(gè)模塊及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)時(shí)鐘

          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所示。

          44.jpg

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

          為了進(jìn)一步驗(yàn)證本文給出的DDS設(shè)計(jì)系統(tǒng)在功能和時(shí)序上的正確性,對其進(jìn)行了時(shí)序仿真,使用的仿真軟件為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)定性。同時(shí)使用VHDL語言實(shí)現(xiàn)了優(yōu)化,并把該設(shè)計(jì)適配到Xilinx公司的最新90nm工藝的Spartan3E系列的FPGA中,實(shí)際結(jié)果表明了本文給出的DDS設(shè)計(jì)方案在硬件開銷方面的優(yōu)勢。


          上一頁 1 2 下一頁

          關(guān)鍵詞: DDS 優(yōu)化設(shè)計(jì)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();