【正文】
PROCESS(clk,reset) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0)。 VARIABLE a:STD_LOGIC。 BEGIN IF reset=39。039。 THEN tmp:=00000000。復(fù)位信號(hào)為 0,置最小值 ELSIF clk39。EVENT AND clk=39。139。 THEN檢測時(shí)鐘上升沿 IF a=39。039。 THEN IF tmp=11111110 THEN tmp:=11111111。 置最大值 a:=39。139。 ELSE 不是最大值時(shí)遞增 tmp:=tmp+1。遞增運(yùn)算 END IF。 ELSE IF tmp =00000001 THEN tmp:=00000000。 置最小值 a:=39。039。 ELSE a 為 1 時(shí),執(zhí)行遞減運(yùn)算 tmp:=tmp1。遞減運(yùn)算 END IF。 END IF。 END IF。 q=tmp。 END PROCESS。 END behave。 階梯波形程序源程序 LIBRARY IEEE。 USE 。 USE 。 ENTITY ladder IS PORT(clk,reset:IN STD_LOGIC。 q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END ladder。 ARCHITECTURE behave OF ladder IS BEGIN PROCESS(clk,reset) 15 VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0)。 定義內(nèi)部變量 VARIABLE a: STD_LOGIC。 BEGIN IF reset=39。039。 THEN tmp:=00000000。復(fù)位信號(hào)為 0,置最小值 ELSIF clk39。EVENT AND clk=39。139。 THEN檢測時(shí)鐘上升沿 IF a=39。039。 THEN判斷 a 數(shù)值,計(jì)數(shù)。 IF tmp=11111111 THEN tmp:=00000000。 計(jì)數(shù)到最大清零 a:=39。139。 ELSE tmp:=tmp+16。階梯常數(shù)為 16,可修改 a:=39。139。 END IF。 ELSE a:=39。039。循環(huán)計(jì)數(shù) END IF。 END IF。 q=tmp。 END PROCESS。 END behave。 正弦波源程序 LIBRARY IEEE。 USE 。 USE 。 ENTITY sin IS PORT(clk,clr:IN STD_LOGIC。 d: OUT INTEGER RANGE 0 TO 255)。 END sin 。 ARCHITECTURE behave OF sin IS BEGIN PROCESS(clk,clr) VARIABLE tmp: INTEGER RANGE 0 TO 63。 BEGIN IF clr=39。039。THEN d=0。 ELSIF clk39。EVENT AND clk=39。139。THEN IF tmp=63 THEN tmp:=0。 ELSE tmp:=tmp+1。 END IF。 16 CASE tmp IS WHEN 00=d=255。WHEN 01=d=254。WHEN 02=d=252。 WHEN 03=d=249。WHEN 04=d=245。WHEN 05=d=239。 WHEN 06=d=233。WHEN 07=d=225。WHEN 08=d=217。 WHEN 09=d=207。WHEN 10=d=197。WHEN 11=d=186。 WHEN 12=d=174。WHEN 13=d=162。WHEN 14=d=150。 WHEN 15=d=137。WHEN 16=d=124。WHEN 17=d=112。 WHEN 18=d=99。 WHEN 19=d=87。 WHEN 20=d=75。 WHEN 21=d=64。 WHEN 22=d=53。 WHEN 23=d=43。 WHEN 24=d=34。 WHEN 25=d=26。 WHEN 26=d=19。 WHEN 27=d=13。 WHEN 28=d=8。 WHEN 29=d=4。 WHEN 30=d=1。 WHEN 31=d=0。 WHEN 32=d=0。 WHEN 33=d=1。 WHEN 34=d=4。 WHEN 35=d=8。 WHEN 36=d=13。 WHEN 37=d=19。 WHEN 38=d=26。 WHEN 39=d=34。 WHEN 40=d=43。 WHEN 41=d=53。 WHEN 42=d=64。 WHEN 43=d=75。 WHEN 44=d=87。 WHEN 45=d=99。 WHEN 46=d=112。WHEN 47=d=124。 WHEN 48=d=137。WHEN 49=d=150。WHEN 50=d=162。 WHEN 51=d=174。WHEN 52=d=186。WHEN 53=d=197。 WHEN 54=d=207。WHEN 55=d=217。WHEN 56=d=225。 WHEN 57=d=233。WHEN 58=d=239。WHEN 59=d=245。 WHEN 60=d=249。WHEN 61=d=252。WHEN 62=d=254。 WHEN 63=d=255。 WHEN OTHERS=NULL。 END CASE。 END IF。 END PROCESS。 END behave。 方波源程序 LIBRARY IEEE。 USE 。 ENTITY square IS PORT(clk,clr:IN STD_LOGIC。 q:OUT INTEGER RANGE 0 TO 255)。 END square。 ARCHITECTURE behave OF square IS SIGNAL a:BIT。 BEGIN PROCESS(clk,clr) VARIABLE t:INTEGER。 定義內(nèi)部整數(shù)變量 BEGIN IF clr=39。039。 THEN 17 a=39。039。 ELSIF clk39。EVENT AND clk=39。139。 THEN檢測時(shí)鐘上升沿 IF t63 THEN計(jì)數(shù) 64 個(gè)點(diǎn) t:=t+1。計(jì)數(shù) ELSE t:=0。 當(dāng)計(jì)數(shù)的值大于 64 時(shí),清零。 a=NOT a。 對(duì)內(nèi)部 a 變量取反, a 變化已啟動(dòng)進(jìn)程 END PROCESS。 END IF。 END IF。 END PROCESS。 PROCESS(clk,a) BEGIN IF clk39。EVENT AND clk=39。139。 THEN IF a=39。139。 THEN q=255。 a=1,輸出一個(gè)波形周期內(nèi)的高電平 ELSE q=0。 a=0,輸出一個(gè)波形周期的低電平。 END IF。 END IF。 END PROCESS。 END behave。 波形選擇模塊源程序 LIBRARY IEEE。 USE 。 ENTITY ch61a IS PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 d0,d1,d2,d3,d4,d5:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END ch61a。 ARCHITECTURE behave OF ch61a IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN000=q=d0。遞增波形輸出 WHEN001=q=d1。遞減波形輸出 WHEN010=q=d2。三角波形輸出 WHEN011=q=d3。階梯波形輸出 WHEN100=q=d4。正弦波形輸出 WHEN101=q=d5。方波輸出 WHEN OTHERS=NULL。 END CASE。 18 END PROCESS。 END behave。