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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)

          基于CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)

          作者: 時(shí)間:2004-12-08 來(lái)源:網(wǎng)絡(luò) 收藏
          摘要:介紹了基于可編程邏輯器件和直接數(shù)字頻率合成技術(shù)(DDS)的的基本原理,并在此基礎(chǔ)上給出了基于的各模塊設(shè)計(jì)方法及其VHDL源程序。

          關(guān)鍵詞:;直接數(shù)字頻率合成;;VHDL

          1 引言

          直接數(shù)字頻率合成 ?Direct Digital Synthesis ,DDS?是20世紀(jì)60年代末出現(xiàn)的第三代頻率合成技術(shù)。該技術(shù)從相位概念出發(fā),以Nyquist時(shí)域采樣定理為基礎(chǔ),在時(shí)域中進(jìn)行頻率合成。DDS頻率轉(zhuǎn)換速度快,頻率分辨率高,并在頻率轉(zhuǎn)換時(shí)可保持相位的連續(xù),因而易于實(shí)現(xiàn)多種調(diào)制功能。DDS是全數(shù)字化技術(shù),其幅度、相位、頻率均可實(shí)現(xiàn)程控,并可通過(guò)更換波形數(shù)據(jù)靈活實(shí)現(xiàn)任意波形。此外,DDS易于單片集成,體積小,價(jià)格低,功耗小,因此DDS技術(shù)近年來(lái)得到了飛速發(fā)展,其應(yīng)用也越來(lái)越廣泛。

          基于CPLD和DDS技術(shù)的可以實(shí)現(xiàn)信號(hào)波形的多樣化,而且方便可靠,簡(jiǎn)單經(jīng)濟(jì),系統(tǒng)易于擴(kuò)展,同時(shí)可大大提高輸出信號(hào)的帶寬。

          2 系統(tǒng)原理

          2.1 CPLD內(nèi)部設(shè)計(jì)

          CPLD的內(nèi)部結(jié)構(gòu)框圖如圖1所示,圖中,首先由控制寄存器將外部控制器(如單片機(jī))送入的數(shù)據(jù)轉(zhuǎn)換為頻率和幅度控制字;然后再由分頻器根據(jù)頻率控制字進(jìn)行分頻并將輸出作為尋址計(jì)數(shù)器的時(shí)鐘;尋址計(jì)數(shù)器的尋址空間為360字節(jié),可對(duì)ROM中的查找表進(jìn)行尋址;而通過(guò)模360加法器可以產(chǎn)生120的相位差。

          2.2 CPLD的外圍電路

          圖2所示是CPLD的外圍電路連接圖。圖中,CPLD幅度控制字經(jīng)D/A轉(zhuǎn)換輸出后,可作為查找表輸出DAC的參考電壓,該參考電壓可通過(guò)改變幅度控制字來(lái)進(jìn)行改變,從而改變輸出信號(hào)的幅度。

          3 CPLD各模塊的設(shè)計(jì)

          3.1 控制寄存器的設(shè)計(jì)

          控制寄存器設(shè)計(jì)主要是將外部控制器輸入的數(shù)據(jù)轉(zhuǎn)換為頻率和幅度控制字。其程序代碼如下:

          --////////////調(diào)庫(kù)////////////--

          entity controller is

          port(clk:in std_logic;

          datain:in std_logic;

          ad:out std_logic_vector(16 down to 0);

          freq:out std_logic_ vector(16 down to 0));

          end;

          architecture dataflow of controller is

          signal out1:std_logic_vector(16 down to 0);

          begin

          s2p:process(clk,datain)

          variable temp:std_logic_vector(16 down to 0);?

          begin

          if clk'event and clk=‘1’ then

          temp:=temp(15 down to 0)&datain;

          end if;

          out1<=temp;

          end process s2p;

          mux:process(out1(16))

          begin

          if out1(16)=‘1’ then

          ad<=out1(15 down to 0); --1號(hào)寄存器為幅度控制字

          else

          freq<=out1(15 downto 0); --0號(hào)寄存器為頻率控制字

          end if;

          end process mux;

          end;

          圖3

          3.2 分頻比可變的分頻器模塊設(shè)計(jì)

          該設(shè)計(jì)主要是根據(jù)頻率控制字決定分頻倍數(shù),從而輸出與頻率控制字相對(duì)應(yīng)的頻率時(shí)鐘,此模塊的輸出可作為尋址計(jì)數(shù)器的時(shí)鐘。具體代碼如下:

          process?clk? --clk為外部時(shí)鐘(如晶振)

          variable temp,fen:std_logic_vector(15 down to 0);?

          constant temp1:std_logic_vector(15 down to 0):=“1111111111111111”;

          variable a:std_logic;

          begin

          fen:=temp1-fen_in; --使分頻后的頻率正比于頻率控制字

          if clk=‘1’ and clk'event then

          if temp=(‘0’&fen(15 down to 1)) then --相當(dāng)于除2運(yùn)算

          a:=not a;

          temp:=temp+1;

          elsif temp=fen then

          a:=not a;

          temp:=“0000000000000000”;

          else

          temp:=temp+1;

          end if;

          end if;

          fen out<=a; --fen out 為輸入時(shí)鐘的頻率fen倍分頻

          end process;

          3.3 尋址計(jì)數(shù)器設(shè)計(jì)

          尋址計(jì)數(shù)器主要用于產(chǎn)生對(duì)ROM尋址輸出波形數(shù)據(jù)的尋址信號(hào),尋址空間為360字節(jié),具體的程序代碼如下:

          process(clk)

          variable temp:integer range 0 to 359;

          begin

          if clk=‘1' and clk'event then

          if temp<359 then

          temp:=temp+1;

          else

          temp:=0;

          end if;

          end if;

          adress<=temp;

          end process;

          3.4 模360加法器設(shè)計(jì)

          此模塊用來(lái)產(chǎn)生120的相移,以形成相差為120的輸出波形。由于尋址空間為360字節(jié),故在輸出尋址數(shù)大于360時(shí),須對(duì)360取模。程序如下:

          process(adress_in)

          variable temp?integer range 0 to 511;

          begin

          temp:=adress in+120;--相移120

          if temp<360 then;

          adress out<=temp?

          else

          adress_out<=temp-360;--綜合工具不支持取模運(yùn)算,故采用減法器來(lái)實(shí)現(xiàn)

          end if;

          end process;

          3.5 查找表ROM設(shè)計(jì)

          此模塊主要用于存儲(chǔ)各種波形數(shù)據(jù),以便通過(guò)尋址計(jì)數(shù)器尋址輸出并經(jīng)D/A轉(zhuǎn)換來(lái)輸出各種波形,其中包括正弦波、三角波、方波以及鋸齒波。代碼如下:

          process(adress,sel)

          begin

          if sel=“00” then --sel為波形選擇端口,選擇輸出波形,00為正弦波

          case adress is

          when 000=>data<=0; when 001=>data<=4; ......--正弦波查找表

          when others=>null;

          end case;

          else if sel=“01” then --01輸出方波,

          if adress<180 then

          data<=255;

          else

          data<=0;

          end if;

          else if sel=“10” then --鋸齒波

          data<=adress/2;

          else --三角波

          if adress<180 then

          data<=adress;

          else

          data<=adress-180;

          end if;

          end if;

          end process;

          由以上各模塊組成的波形發(fā)生器原理圖如圖3所示。

          4 結(jié)束語(yǔ)

          此方案可以方便地輸出多種三相波形,而且,由于CPLD具有可編程重置特性,因而可以方便地改變控制方式或更換波形數(shù)據(jù),而且簡(jiǎn)單易行,易于系統(tǒng)升級(jí),同時(shí)具有很高的性?xún)r(jià)比。

          電容式觸摸屏相關(guān)文章:電容式觸摸屏原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();