<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

1 引言

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

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

2 系統原理

2.1 CPLD內部設計

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

2.2 CPLD的外圍電路

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

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

3.1 控制寄存器的設計

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

--////////////調庫////////////--

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 分頻比可變的分頻器模塊設計

該設計主要是根據頻率控制字決定分頻倍數,從而輸出與頻率控制字相對應的頻率時(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 --相當于除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 為輸入時(shí)鐘的頻率fen倍分頻

end process;

3.3 尋址計數器設計

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

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加法器設計

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

end if;

end process;

3.5 查找表ROM設計

此模塊主要用于存儲各種波形數據,以便通過(guò)尋址計數器尋址輸出并經(jīng)D/A轉換來(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 結束語(yǔ)

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

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


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>