在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

            1 引言

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

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

            2 系統(tǒng)原理

            2.1 CPLD內(nèi)部設計

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

            2.2 CPLD的外圍電路

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

            3?。茫校蹋母髂K的設計

            3.1 控制寄存器的設計

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

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

            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號寄存器為幅度控制字

            else

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

            end if;

            end process mux;

            end;

            圖3

            3.2 分頻比可變的分頻器模塊設計

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

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

            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 --相當于除2運算

            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 為輸入時鐘的頻率fen倍分頻

            end process;

            3.3 尋址計數(shù)器設計

            尋址計數(shù)器主要用于產(chǎn)生對ROM尋址輸出波形數(shù)據(jù)的尋址信號,尋址空間為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加法器設計

            此模塊用來產(chǎn)生120的相移,以形成相差為120的輸出波形。由于尋址空間為360字節(jié),故在輸出尋址數(shù)大于360時,須對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;--綜合工具不支持取模運算,故采用減法器來實現(xiàn)

            end if;

            end process;

            3.5 查找表ROM設計

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

            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é)束語

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

            電容式觸摸屏相關文章:電容式觸摸屏原理


            評論


            相關推薦

            技術專區(qū)

            關閉