【正文】
jiaobo isbeginprocess(clk)variable up:integer range 0 to 1。begin if reset=39。039。 then t=00000000。 elsif rising_edge(clk) then if up=1 then if t=11111111 then up:=0。 t=11111110。 else t=t+1。 end if。 else if t=00000000then up:=1。 t=00000001。 else t=t1。 end if。 end if。end if。end process。end one。(6)、分頻器數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時,將對輸入的時鐘信號有不同的分頻比。用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成,方法是將計(jì)數(shù)溢出位與預(yù)置數(shù)加載輸入信號相接即可。本次設(shè)計(jì)采用八位的數(shù)控分頻器。LIBRARY IEEE。分頻器USE 。USE 。ENTITY PULSE ISPORT ( CLK: in std_logic。 D:in std_logic_vector(7 downto 0)。 FOUT:out std_logic)。END ENTITY PULSE。ARCHITECTURE behave OF PULSE IS SIGNAL FULL:STD_LOGIC。BEGIN P_REG:PROCESS(CLK) VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0)。 BEGIN IF CLK39。EVENT AND CLK=39。139。 THEN IF CNT8=11111111 THEN CNT8:=D。 FULL=39。139。 ELSE CNT8:=CNT8+1。 FULL=39。039。 END IF。 END IF。 END PROCESS P_REG。 P_DIV:PROCESS(FULL) VARIABLE CNT2:STD_LOGIC。 BEGIN IF FULL39。EVENT AND FULL=39。139。 THEN CNT2:=NOT CNT2。 IF CNT2=39。139。 THEN FOUT=39。139。 ELSE FOUT=39。039。 END IF。 END IF。 END PROCESS P_DIV。END ARCHITECTURE behave。(7)、選擇器LIBRARY IEEE。選擇器USE 。USE 。ENTITY Xuanzeqi ISPORT ( address: in std_logic_vector(2 downto 0)。 d1,d2,d3,d4,d5,d6:in std_logic_vector(7 downto 0)。 q:out std_logic_vector(7 downto 0))。END ENTITY Xuanzeqi。ARCHITECTURE behave OF Xuanzeqi ISBEGINPROCESS(sel)BEGINCASE sel ISWHEN 001=q=d1。 方波WHEN 010=q=d2。 階梯?WHEN 011=q=d3。 鋸齒波遞WHEN 100=q=d4。 三角波WHEN 101=q=d5。 正弦波WHEN OTHERS=NULL。END CASE。END PROCESS。 END ARCHITECTURE behave。頂層設(shè)計(jì) 函數(shù)發(fā)生器頂層設(shè)計(jì)MAX+PLUSII仿真結(jié)果(1)、當(dāng)選擇開關(guān)S為001時輸出方波 方波仿真圖(2)、當(dāng)選擇開關(guān)S為010時輸出階梯波 階梯波仿真圖當(dāng)選擇開關(guān)S為011時輸出鋸齒波 鋸齒波仿真圖(4)、當(dāng)選擇開關(guān)S為100時輸出三角波 三角波仿真圖(5)、當(dāng)選擇開關(guān)S為100時輸出為正弦波 正弦波仿真圖