任意信號(hào)發(fā)生器設(shè)計(jì)DDS_第1頁(yè)
任意信號(hào)發(fā)生器設(shè)計(jì)DDS_第2頁(yè)
任意信號(hào)發(fā)生器設(shè)計(jì)DDS_第3頁(yè)
任意信號(hào)發(fā)生器設(shè)計(jì)DDS_第4頁(yè)
任意信號(hào)發(fā)生器設(shè)計(jì)DDS_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

任意信號(hào)發(fā)生器設(shè)計(jì)發(fā)布時(shí)間:2011-07-0812:45:53技術(shù)類(lèi)別:CPLD/FPGA修改

|

刪除

|

置頂

錄緒

論第1章

DDS原理1.1DDS原理和結(jié)構(gòu)1.2DDS的特點(diǎn)第2章系統(tǒng)總體設(shè)計(jì)2.1

設(shè)計(jì)思路2.2

系統(tǒng)設(shè)計(jì)2.2.2

各底層文件管腳圖第3章程序設(shè)計(jì)與分析3.1

程序設(shè)計(jì)概要3.2

核心程序分析3.2.1

數(shù)控分頻器3.2.2

多路選擇器3.2.3

三角波生成器3.2.4

可調(diào)節(jié)占空比的方波3.2.5振幅鍵控(ASK-AmplitudeShiftKeying)3.2.6移頻鍵控(FSK-FrequencyShiftKeying)3.2.7移相鍵控(PSK-PhaseShiftKeying)3.2.8任意波的產(chǎn)生3.2.9正弦信號(hào)的產(chǎn)生第4章仿真與測(cè)試4.1QUARTUSII簡(jiǎn)介4.2

各模塊時(shí)序仿真結(jié)果4.2.1

數(shù)控分頻模塊4.2.2

波形發(fā)生模塊4.2.3

多路選擇器模塊4.3

硬件測(cè)試結(jié)束語(yǔ)參考文獻(xiàn)謝

論EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言HDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線(xiàn)和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。硬件描述語(yǔ)言HDL是EDA技術(shù)的重要組成部分,常見(jiàn)的HDL主要有VHDL、Verilog

HDL、ABEL、AHDL、System

Verilog和SystemC。其中VHDL、Verilog

HDL在現(xiàn)在的EDA設(shè)計(jì)中使用最多,并且我們學(xué)習(xí)的是VHDL的編程方法和實(shí)用技術(shù)。VHDL的英文全名是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,由IEEE(TheInstituteofElectricalandElectronicsEngineers)進(jìn)一步發(fā)展,并在1987年作為“IEEE標(biāo)準(zhǔn)1076”公布。從此VHDL成為硬件描述語(yǔ)言的業(yè)界標(biāo)準(zhǔn)之一。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處理完成?,F(xiàn)在對(duì)EDA的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門(mén)廣泛使用。例如在飛機(jī)制造過(guò)程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。本文主要介紹了EDA在設(shè)計(jì)波形發(fā)生器中的應(yīng)用,完成了鋸齒波、三角波、占空比可調(diào)的方波、占空比50%的方波以及正弦波設(shè)計(jì),同時(shí)還能起到對(duì)頻率、幅值、占空比的調(diào)節(jié),用原理圖及VHDL語(yǔ)言完成了整個(gè)系統(tǒng)的設(shè)計(jì),并用實(shí)驗(yàn)箱完成了所有功能硬件調(diào)試。

第1章

DDS原理1.1

DDS原理和結(jié)構(gòu)基于DDS技術(shù)的函數(shù)信號(hào)發(fā)生器由相位累加器、波形存儲(chǔ)器ROM、數(shù)模轉(zhuǎn)換器DAC和低通濾波器LPF組成,相位累加器和波形存儲(chǔ)器ROM在FPGA器件EP1K30TC144-3中實(shí)現(xiàn),系統(tǒng)框圖如圖1所示:

圖2

系統(tǒng)框架2.2

系統(tǒng)設(shè)計(jì)2.2.2

各底層文件管腳圖根據(jù)給出的系統(tǒng)原理圖,下面分別列出各底層文件管腳圖。數(shù)控分頻器如圖4所示:圖3

數(shù)控分頻器管腳其中,CLK為外部輸入時(shí)鐘,D[3..0]為數(shù)控分頻的計(jì)數(shù)值輸入端,F(xiàn)OUT為分頻頻率輸出。多路選擇器如圖5所示:圖4

多路選擇器其中,CLK為外部輸入時(shí)鐘,

SEL為多路選擇器的選擇輸入信號(hào),D0-D5為6路信號(hào)的輸入,Q[7..0]為頻率輸出,各波形產(chǎn)生器如圖6所示:圖5

各波形發(fā)生器管腳其中,CLK為分頻后的時(shí)鐘信號(hào)輸入端,

Q[7..0]為輸出的一個(gè)8位數(shù)據(jù),供DAC0832的數(shù)據(jù)輸入。

第3章程序設(shè)計(jì)與分析3.1

程序設(shè)計(jì)概要本課程設(shè)計(jì)主要完成與任意波形信號(hào)發(fā)生相關(guān)的VHDL語(yǔ)言程序設(shè)計(jì)與控制綜合,體現(xiàn)了VHDL從頂向下的設(shè)計(jì)思想,同時(shí)對(duì)初學(xué)者來(lái)說(shuō)也是一個(gè)不錯(cuò)的練習(xí)機(jī)會(huì)。從整體設(shè)計(jì)上將要產(chǎn)生的幾個(gè)波形分開(kāi)設(shè)計(jì),與C語(yǔ)言設(shè)計(jì)有點(diǎn)類(lèi)似,不過(guò)VHDL語(yǔ)言作為一種硬件描述語(yǔ)言,其本質(zhì)與C語(yǔ)言不同,它完成的是實(shí)際的硬件電路的配置,而C語(yǔ)言完成的是控制、運(yùn)算等。3.2

核心程序分析3.2.1

數(shù)控分頻器P_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THEN

IFCNT8="1111"THEN

CNT8:=D;

FULL<='1';

ELSE

CNT8:=CNT8+1;

FULL<='0';

ENDIF;ENDIF;ENDPROCESSP_REG;以D為基數(shù)的一個(gè)計(jì)數(shù)器,時(shí)鐘上升沿觸發(fā),當(dāng)CNT8=“1111”時(shí)給CNT8載入初值,同時(shí)給FULL一個(gè)時(shí)鐘周期的高電平,使其周期性的輸出一個(gè)脈沖信號(hào)。P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;

IFCNT2='1'THEN

FOUT<='1';

ELSE

FOUT<='0';

ENDIF;ENDIF;ENDPROCESSP_DIV;此進(jìn)程應(yīng)用上一進(jìn)程的FULL為敏感變量,每次FULL來(lái)一個(gè)正脈沖時(shí),CNT2取反,再用CNT2來(lái)控制FOUT輸出。3.2.2

多路選擇器

process(sel)

begin

case

sel

is

when"0000"=>out_bo<=sine;--輸出正弦波

when"0001"=>out_bo<=square;--輸出標(biāo)準(zhǔn)方波

when"0010"=>out_bo<=square_ketiao;--輸出占空比可調(diào)方波

when"0011"=>out_bo<=ask;--輸出振幅鍵控

when"0100"=>out_bo<=fsk;--輸出移頻鍵控

when"0101"=>out_bo<=psk;--輸出移相鍵控

when"0110"=>out_bo<=left_zeng;--輸出遞減鋸齒波

when"0111"=>out_bo<=r_zeng;--輸出遞增鋸齒波

when"1000"=>out_bo<=randbo_gnt;--輸出任意波形

when"1001"=>out_bo<=jiedi;--輸出階梯波

when"1010"=>out_bo<=sanjiaobo;--輸出三角波

whenothers=>out_bo<=null;--其他情況下無(wú)輸出

endcase;

endprocess;此進(jìn)程為一個(gè)case語(yǔ)句設(shè)計(jì)的多路選擇器進(jìn)程,其中,sel為選擇哪一種波形的輸出。3.2.3

三角波生成器PROCESS(clk,reset)VARIABLE

tmp:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLE

a:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號(hào)為0,置最小值ELSIF

clk'EVENT

AND

clk='1'THEN--檢測(cè)時(shí)鐘上升沿

IFa='0'THEN

IF

tmp="11111110"THEN

tmp:="11111111";--置最大值

a:='1';

ELSE

--不是最大值時(shí)遞增

tmp:=tmp+1;--遞增運(yùn)算

ENDIF;

ELSE

IF

tmp

="00000001"THEN

tmp:="00000000";--置最小值

a:='0';

ELSE

--a為1時(shí),執(zhí)行遞減運(yùn)算

tmp:=tmp-1;--遞減運(yùn)算

ENDIF;

ENDIF;ENDIF;

q<=tmp;ENDPROCESS;此進(jìn)程是控制一個(gè)三角波發(fā)生的,其中以a作為計(jì)滿(mǎn)標(biāo)志。當(dāng)tmp為“00000001”時(shí)a=0,下一時(shí)鐘到來(lái)時(shí),進(jìn)入tmp加狀態(tài);當(dāng)tmp為“11111110”時(shí),a=1,下一時(shí)鐘到來(lái)時(shí),進(jìn)入tmp減狀態(tài)。3.2.4

可調(diào)節(jié)占空比的方波process(clk,conup,condown),此進(jìn)程與多路選擇器相類(lèi)似,這里不再最贅述。PROCESS(clk,clr)VARIABLE

cnt:INTEGER;--定義內(nèi)部整數(shù)變量BEGINIF

clr='0'THEN

a<='0';

ELSIF

clk'EVENT

AND

clk='1'THEN--檢測(cè)時(shí)鐘上升沿

cnt:=cnt+1;--計(jì)數(shù)

IF

cnt<zTHEN

a<='1';

ELSif

cnt<128then

a<='0';

ELSEcnt:=0;

ENDIF;

ENDIF;

ENDPROCESS;此進(jìn)程是通過(guò)a的值調(diào)整一個(gè)占空比的信號(hào)的控制量。其中,時(shí)鐘上升沿條件下,調(diào)節(jié)a的值,以控制clk的分頻系數(shù)。PROCESS(clk,a)BEGINIF

clk'EVENT

AND

clk='1'THENIFa='1'THENq<=255;--a=1,輸出一個(gè)波形周期內(nèi)的高電平

ELSE

q<=0;--a=0,輸出一個(gè)波形周期的低電平。

ENDIF;

ENDIF;

ENDPROCESS;此進(jìn)程是一個(gè)分頻進(jìn)程,其時(shí)鐘來(lái)源是實(shí)驗(yàn)箱中的時(shí)鐘源,記滿(mǎn)后清零,重新仿真。3.2.5振幅鍵控(ASK-AmplitudeShiftKeying)

主要程序如下

process(yin)—根據(jù)輸入的信號(hào)進(jìn)行調(diào)制

begin

caseyinis

when'1'=>

outdata_buf<=indata_buf;--如果輸入的是1的話(huà)就直接輸出正弦波發(fā)生器產(chǎn)生的正弦信號(hào),0的話(huà)就輸出中間狀態(tài)。

when'0'=>

outdata_buf<="10000000";

whenothers=>outdata_buf<=null;--其他情況下則無(wú)輸出

endcase;

endprocess;

outdata<=outdata_buf;--信號(hào)賦值

indata_buf<=indata;3.2.6移頻鍵控(FSK-FrequencyShiftKeying)主要是通過(guò)分頻來(lái)實(shí)現(xiàn)FSK的,當(dāng)輸入信號(hào)為1的時(shí)候則對(duì)系統(tǒng)輸入時(shí)鐘進(jìn)行4分頻,當(dāng)輸入為0的時(shí)候則直接輸出輸入的時(shí)鐘信號(hào)。然后將控制輸出的時(shí)鐘信號(hào)輸?shù)秸也òl(fā)生器的時(shí)鐘腳。從而實(shí)現(xiàn)調(diào)頻的目的。

process(clk,xuanze)

variablecount:integerrange0to4;

begin

if

clk'event

and

clk='1'then

if

xuanze='1'then—如果輸入信號(hào)是1的話(huà)則進(jìn)行4分頻

ifcount=4then—四分頻進(jìn)程

count:=0;

full<='1';

else

count:=count+1;

full<='0';

endif;

elsif

xuanze='0'then

full<=notfull;

endif;

endif;

endprocess;

outclk<=full;3.2.7移相鍵控(PSK-PhaseShiftKeying)PSK實(shí)現(xiàn)主要根據(jù)輸入信號(hào)進(jìn)行判斷,如果是0的話(huà)那么就將相位移動(dòng)180度,這個(gè)是由255減去正弦波輸入的幅度值來(lái)實(shí)現(xiàn)的,如果輸入的是1的話(huà)就是直接和載波相位相同,直接輸出正弦波信號(hào)。

process(pskin)

begin

if

clk'event

and

clk='1'then

if

pskin='0'then

outdata<=255-indata;

elsif

pskin='1'then

outdata<=indata;

endif;

endif;

endprocess;3.2.8任意波的產(chǎn)生任意波的產(chǎn)生主要是先將波的幅度值先存入randbo.mif文件當(dāng)中,然后再定制一個(gè)ROM存儲(chǔ)randbo.mif文件中的內(nèi)容,最后在由相位累加器地址取出對(duì)應(yīng)的幅度值輸出到DAC0832的數(shù)據(jù)口再經(jīng)過(guò)DA轉(zhuǎn)換成模擬信號(hào)從而實(shí)現(xiàn)任意波的產(chǎn)生。3.2.9正弦信號(hào)的產(chǎn)生正弦波我沒(méi)有使用ROM定制的方法,因?yàn)榍懊嬖囘^(guò)使用ROM定制結(jié)果導(dǎo)致資源占用太大超出了芯片的容量。所以我后面改用了一個(gè)周期的正弦波采樣64個(gè)點(diǎn)。

PROCESS(clk,en)

VARIABLE

tmp:

INTEGER

RANGE

0TO63;

BEGIN

IF

clk'EVENT

AND

clk='1'THEN

ifen='1'then

IF

tmp=63THEN

tmp:=0;

ELSE

tmp:=tmp+1;

ENDIF;

CASE

tmp

IS

WHEN00=>q<=255;WHEN01=>q<=254;WHEN02=>q<=252;

WHEN03=>q<=249;WHEN04=>q<=245;WHEN05=>q<=239;

WHEN06=>q<=233;WHEN07=>q<=225;WHEN08=>q<=217;

WHEN09=>q<=207;WHEN10=>q<=197;WHEN11=>q<=186;

WHEN12=>q<=174;WHEN13=>q<=162;WHEN14=>q<=150;

WHEN15=>q<=137;WHEN16=>q<=124;WHEN17=>q<=112;

WHEN18=>q<=99;WHEN19=>q<=87;WHEN20=>q<=75;

WHEN21=>q<=64;WHEN22=>q<=53;WHEN23=>q<=43;

WHEN24=>q<=34;WHEN25=>q<=26;WHEN26=>q<=19;

WHEN27=>q<=13;WHEN28=>q<=8;

WHEN29=>q<=4;

WHEN30=>q<=1;

WHEN31=>q<=0;

WHEN32=>q<=0;

WHEN33=>q<=1;

WHEN34=>q<=4;

WHEN35=>q<=8;

WHEN36=>q<=13;WHEN37=>q<=19;WHEN38=>q<=26;

WHEN39=>q<=34;WHEN40=>q<=43;WHEN41=>q<=53;

WHEN42=>q<=64;WHEN43=>q<=75;WHEN44=>q<=87;

WHEN45=>q<=99;WHEN46=>q<=112;WHEN47=>q<=124;

WHEN48=>q<=137;WHEN49=>q<=150;WHEN50=>q<=162;

WHEN51=>q<=174;WHEN52=>q<=186;WHEN53=>q<=197;

WHEN54=>q<=207;WHEN55=>q<=217;WHEN56=>q<=225;

WHEN57=>q<=233;WHEN58=>q<=239;WHEN59=>q<=245;

WHEN60=>q<=249;WHEN61=>q<=252;WHEN62=>q<=254;

WHEN63=>q<=255;

WHENOTHERS=>NULL;

ENDCASE;

else

tmp:=0;

endif;

ENDIF;

ENDPROCESS;

第4章仿真與測(cè)試4.1

QuartusII簡(jiǎn)介QuartusII可編程邏輯開(kāi)發(fā)軟件是Altera公司為其FPGA/CPLD芯片設(shè)計(jì)推出的專(zhuān)用開(kāi)發(fā)工具,是Altera公司最新一代功能更強(qiáng)的EDA開(kāi)發(fā)軟件,可完成從設(shè)計(jì)輸入,綜合適配,仿真到下載的整個(gè)設(shè)計(jì)過(guò)程。QuartusII提供了一個(gè)完整的多平臺(tái)開(kāi)發(fā)環(huán)境,它包含F(xiàn)PGA和CPLD整個(gè)設(shè)計(jì)階段的解決方案。QuartusII集成環(huán)境包括以下內(nèi)容:系統(tǒng)級(jí)設(shè)計(jì),嵌入式軟件開(kāi)發(fā),可編程邏輯器件設(shè)計(jì)、綜合、布局和布線(xiàn),驗(yàn)證和仿真。QuartusII也可以直接調(diào)用Synplify

Pro、ModelSim等第三方

EDA

工具來(lái)完成設(shè)計(jì)任務(wù)的綜合與仿真。QuartusII與MATLAB和DSPBuilder結(jié)合可以進(jìn)行基于FPGA的DSP系統(tǒng)開(kāi)發(fā),方便快捷。QuartusII還內(nèi)嵌SOPCBuilder,可實(shí)現(xiàn)

SOPC系統(tǒng)的開(kāi)發(fā)。QuartusII

9.0主界面如圖

6示。

圖64.2

各模塊時(shí)序仿真結(jié)果4.2.1

數(shù)控分頻模塊數(shù)控分頻可根據(jù)D[3..0]的值來(lái)設(shè)置頻率的輸出,其時(shí)序仿真波形如圖7所示:圖7

數(shù)控分頻模塊時(shí)序仿真結(jié)果4.2.2

波形發(fā)生模塊波形發(fā)生模塊包括遞增鋸齒波、遞減鋸齒波、三角波、占空比可調(diào)方波、正弦波和標(biāo)準(zhǔn)方波、振幅鍵控(ASK-AmplitudeShiftKeying)、移頻鍵控(FSK-FrequencyShiftKeying)、移相鍵控(PSK-PhaseShiftKeying)、任意波,階梯遞增波等11種波形,并且頻率可調(diào),其時(shí)序仿真結(jié)果如圖8所示:圖8

波形發(fā)生模塊時(shí)序仿真結(jié)果4.2.3

多路選擇器模塊多路選擇器電路用于選擇輸出的波形的類(lèi)型,其時(shí)序仿真結(jié)果如圖9所示:圖9

多路選擇器模塊時(shí)序仿真結(jié)果4.3

硬件測(cè)試在硬件調(diào)試過(guò)程中,運(yùn)用DAC0832完成數(shù)字信號(hào)到模擬信號(hào)的轉(zhuǎn)換,用數(shù)字示波器觀(guān)察產(chǎn)生的各種波形,并且時(shí)鐘源頻率都是可調(diào)的,其波形如圖11、12、13、14、15、21所示:圖10

正弦波信號(hào)圖11

遞增鋸齒波信號(hào)圖12

遞減鋸齒波信號(hào)

圖13

三角波信號(hào)圖14

標(biāo)準(zhǔn)方波信號(hào)圖15

占空比可調(diào)方波信號(hào)在設(shè)計(jì)上不僅實(shí)現(xiàn)了各種波形的頻率調(diào)節(jié),還實(shí)現(xiàn)了方波占空比的調(diào)節(jié)。圖16

階梯遞增波圖17振幅鍵控(ASK-AmplitudeShiftKeying)圖18移頻鍵控(FSK-FrequencyShiftKeying)圖19移相鍵控(PSK-PhaseShift

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論