【正文】
END PROCESS。 q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 方波輸出WHEN OTHERS=NULL。(3)第三次sel的值設(shè)為2,輸出為三角波,其仿真波形如下圖所示,輸出波形線性增大到最大后,再線性減小。本設(shè)計(jì)的函數(shù)信號(hào)發(fā)生器在設(shè)計(jì)上由于設(shè)計(jì)時(shí)考慮的不夠全面雖然完成了函數(shù)信號(hào)的產(chǎn)生,但不夠完善。 16。結(jié)合FPGA的開(kāi)發(fā)集成環(huán)境Quartus2軟件,產(chǎn)生了函數(shù)信號(hào)發(fā)生器的各種信號(hào),同時(shí)完成了時(shí)序和功能仿真。調(diào)試整個(gè)系統(tǒng)了原理圖如下圖所示::(復(fù)位信號(hào)reset高電平,低電平為不輸出)(1)第一次sel選擇值設(shè)為0,輸出為遞增波,從圖中可以看出,輸出的波形成線性遞增,結(jié)果正確。 階梯波形輸出WHEN100=q=d4。 ENTITY ch61a ISPORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 END IF。 PROCESS(clk,a)BEGINIF clk39。 THEN 檢測(cè)時(shí)鐘上升沿IF t63 THEN 計(jì)數(shù)64個(gè)點(diǎn)t:=t+1。BEGINPROCESS(clk,clr)VARIABLE t:INTEGER。圖6 方波模塊仿真圖方波模塊的設(shè)計(jì)是當(dāng)內(nèi)部計(jì)數(shù)t達(dá)到64時(shí),根據(jù)輸出標(biāo)志a的數(shù)值輸出對(duì)應(yīng)的數(shù)值,當(dāng)a=0輸出0,也即是方波周期中的低電平,當(dāng)a=1,輸出255,也即是方波周期中的高電平。139。architecture bhv of t is begin process(clk,clr)variable cqi:std_logic_vector(5 downto 0)。END SYN。 width_a : NATURAL。 intended_device_family : STRING。USE 。結(jié)構(gòu)圖如下圖所示:8位波形數(shù)據(jù)輸出上圖所示的信號(hào)發(fā)生結(jié)構(gòu)中圖中,包含兩個(gè)部分:ROM的地址信號(hào)發(fā)生器,由6位計(jì)數(shù)器擔(dān)任;一個(gè)正弦數(shù)據(jù)ROM,由LPM_ROM模塊構(gòu)成,6位地址線,8位數(shù)據(jù)線,一個(gè)周期含有64個(gè)8位數(shù)據(jù)。 ELSEa:=39。 THEN 判斷a數(shù)值,計(jì)數(shù)。 BEGINIF reset=39。模塊程序如下:LIBRARY IEEE。 遞減運(yùn)算 END IF。 置最大值a:=39。039。 USE 。END PROCESS。 復(fù)位信號(hào)置最大值ELSIF clk39。USE 。 END behave。EVENT AND clk=39。 ENTITY icrs IS PORT(clk,reset: IN STD_LOGIC。遞增斜波模塊遞增斜波icrs的VHDL程序如附錄所示,其中clk是輸入時(shí)鐘端口,reset為輸入復(fù)位端口,q為八位二進(jìn)制輸出端口。方案二完全可以得到方案一的設(shè)計(jì)要求,而且只需一個(gè)D/A轉(zhuǎn)換器就可以。二、題目分析要求設(shè)計(jì)一個(gè)函數(shù)發(fā)生器,該函數(shù)發(fā)生器能夠產(chǎn)生遞增斜波、遞減斜波、方波、三角波、正弦波、及階梯波,并且可以通過(guò)選擇開(kāi)關(guān)選擇相應(yīng)的波形輸出;系統(tǒng)具有復(fù)位的功能;通過(guò)按鍵確定輸出的波形及確定是否輸出波形。本設(shè)計(jì)是一個(gè)基于VHDL的采用自頂向下設(shè)計(jì)方法實(shí)現(xiàn)的信號(hào)發(fā)生器,該設(shè)計(jì)方法具有外圍電路簡(jiǎn)單,程序修改靈活和調(diào)試容易等特點(diǎn),并通過(guò)計(jì)算機(jī)仿真證明了設(shè)計(jì)的正確性。波形函數(shù)輸出控制方式選擇利用VHDL語(yǔ)言寫(xiě)出數(shù)據(jù)選擇器,然后每種函數(shù)發(fā)生器的輸出和數(shù)據(jù)選擇器輸入相連接,通過(guò)控制開(kāi)關(guān)選擇對(duì)應(yīng)的波形輸出。明確每個(gè)模塊的功能以后,開(kāi)始編寫(xiě)各個(gè)模塊的程序。 USE 。 復(fù)位信號(hào)清零ELSIF clk39。 END PROCESS。 USE 。 THEN tmp:=11111111。q=tmp。模塊程序如下:LIBRARY IEEE。 BEGINIF reset=39。 THEN IF tmp=11111110 THENtmp:=11111111。 ELSE a為1時(shí),執(zhí)行遞減運(yùn)算tmp:=tmp1。階梯波設(shè)計(jì)的是數(shù)據(jù)的遞增是以一定的階梯常數(shù)向上增加,所以輸出的波形呈現(xiàn)是成階梯狀的,而不是,完全呈現(xiàn)是直線增長(zhǎng)。 定義內(nèi)部變量VARIABLE a: STD_LOGIC。039。 END IF。正弦波模塊正弦波模塊由三個(gè)部分組成:6位地址發(fā)生器、正弦信號(hào)數(shù)據(jù)ROM和原理圖頂層設(shè)計(jì)文件。LIBRARY a