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

    時(shí)間:2024-06-05 15:04:33 理工畢業(yè)論文 我要投稿
    • 相關(guān)推薦

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

    摘要:介紹了基于可編程邏輯器件CPLD和直接數(shù)字頻率合成技術(shù)(DDS)的三相多波形函數(shù)發(fā)生器的基本原理,并在此基礎(chǔ)上給出了基于CPLD的各模塊設(shè)計(jì)方法及其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ù)發(fā)生器可以實(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 rang

    【基于CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)】相關(guān)文章:

    基于FPGA的多功能波形信號(hào)發(fā)生器11-22

    基于單片機(jī)技術(shù)的波形發(fā)生器采用單片機(jī)設(shè)計(jì)(一)03-07

    基于FPGA的DDS信號(hào)發(fā)生器的設(shè)計(jì)03-03

    基于DDR SDRAM的信號(hào)發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)03-30

    基于CPLD/FPGA的半整數(shù)分頻器的設(shè)計(jì)03-18

    基于CPLD的系統(tǒng)中I2C總線的設(shè)計(jì)03-18

    基于CPLD的高壓電力線FSK MODEM設(shè)計(jì)03-18

    一種基于CPLD的PWM控制電路設(shè)計(jì)03-19

    基于軟件無(wú)線電的GPP通信波形軟件設(shè)計(jì)方法03-11

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      属日中文字幕亚洲精彩视频 | 亚洲成AⅤ人影院在线欢看 亚洲成a人片在线天堂 | 婷婷成人亚洲综合国产麻豆 | 亚洲中文日韩一级 | 亚州Av片在线劲爆看 | 先锋午夜影音久久 |