【正文】
A。EVENT AND CLK=39。 THEN 檢測(cè)時(shí)鐘上升沿 IF RST=39。 THEN Q=(OTHERS =39。)。139。039。 允許加載 ELSE IF Q12 THEN Q=Q+1。039。 大于等于 9 時(shí),計(jì)數(shù)值清零 END IF。 END IF。 END IF。 COM: PROCESS(Q) BEGIN IF Q=12 THEN COUT=39。 計(jì)數(shù)大于 9,輸出進(jìn)位信號(hào) ELSE COUT=39。 END IF。 將計(jì)數(shù)值向端口輸出 END PROCESS。 35 設(shè)計(jì)含有異步清零和計(jì)數(shù)使能的 16 位二進(jìn)制加減可控計(jì)數(shù)器。 LIBRARY IEEE。 USE 。 CQ : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) 。 END ENTITY ADD_SUB_16。 BEGIN IF RST = 39。 THEN CQI:=(OTHERS = 39。)。EVENT AND CLK=39。 THEN 檢測(cè)時(shí)鐘上升沿 IF ADD_EN=39。THEN 檢測(cè)是否允許計(jì)數(shù) (同步他能 ) IF CQI16FFFF THEN CQI:=CQI+1。039。 大于 65535,計(jì)數(shù)值清零 END IF。139。039。 END IF。139。 允許計(jì)數(shù) ,檢測(cè)是否小于 65535 ELSE CQI:=(OTHERS = 39。)。 IF CQI=0 THEN COUT=39。 計(jì)數(shù)大于 9,輸出進(jìn)位信號(hào) ELSE COUT = 39。 END IF。 END IF。 將計(jì)數(shù)值向端口輸出 END PROCESS。 36 圖 318 是一個(gè)含有上升沿觸發(fā)的 D 觸發(fā)器的時(shí)序電路 (sxdl),試寫出此電路的 VHDL設(shè)計(jì)文件。 USE 。 OUT1: OUT STD_LOGIC)。 ARCHITECTURE sxdl OF t4_19 IS 時(shí)序電路 sxdl SIGNAL Q : STD_LOGIC。EVENT AND CLK0=39。 THEN 檢測(cè)時(shí)鐘上升沿 Q = NOT(Q OR CL)。 END PROCESS。 END ARCHITECTURE sxdl。要求 : 1)首先設(shè)計(jì) 1 位半減器 ,然后用例化語(yǔ)句將它們連接起來(lái) ,圖 420 中 h_suber 是半減器 ,diff 是輸出差 (diff=xy),s_out 是借位輸出 (s_out=1,xy),sub_in 是借位輸入。 半減器描述 (1):布爾方程描述方法 USE 。 diff,s_out: OUT STD_LOGIC)。 ARCHITECTURE hs1 OF h_suber IS BEGIN Diff = x XOR (NOT y)。 END ARCHITECTURE hs1。 1 位二進(jìn)制全減器順層設(shè)計(jì)描述 USE 。 sub_out,diff_out: OUT STD_LOGIC)。 ARCHITECTURE fs1 OF f_suber IS COMPONENT h_suber 調(diào)用半減器聲明語(yǔ)句 PORT(x, y: IN STD_LOGIC。 END COMPONENT。 定義 1 個(gè)信號(hào)作為 內(nèi)部的連接線。 u2: h_suber PORT MAP(x=a, y=sub_in, diff=diff_out,s_out=c)。 END ARCHITECTURE fs1。 解 (2):采用例化方法,以 1 位全減器為基本硬件;實(shí)現(xiàn)串行借位的 8 位減法器 (上圖所示 )。 USE 。 y0,y1,y2,y3,y4,y5,y6,y7,sin: IN STD_LOGIC。 diff4,diff5,diff6,diff7,sout: OUT STD_LOGIC)。 ARCHITECTURE s8 OF suber_8 IS COMPONENT f_suber 調(diào)用全減器聲明語(yǔ)句 PORT(xin,yin,sub_in: IN STD_LOGIC。 END COMPONENT。 定義 1 個(gè)信號(hào)作為內(nèi)部的連接線。 u1:f_suber PORT MAP(xin=x1,yin=y1,diff_out=diff1,sub_in=a0,sub_out=a1)。 u3:f_suber PORT MAP(xin=x3,yin=y3,diff_out=diff3,sub_in=a2,sub_out=a3)。 u5:f_suber PORT MAP(xin=x5,yin=y5,diff_out=diff5,sub_in=a4,sub_out=a5)。 u7:f_suber PORT MAP(xin=x7,yin=y7,diff_out=diff7,sub_in=a6,sub_out=sout)。 38 給出一個(gè) 4 選 1 多路選擇器的 VHDL 描述。當(dāng)且僅當(dāng) S0=0 時(shí) :Y=A; S1=0 時(shí) :Y=B; S2=0 時(shí) :Y=C; S3=0 時(shí) :Y=D。 LIBRARY IEEE。 ENTITY mux41a IS PORT( A,B,C,D : IN STD_LOGIC。 Y : OUT STD_LOGIC)。 ARCHITECTURE one OF mux41a IS SIGNAL S0_3 : STD_LOGIC_VECTOR(3 DOWNTO 0)。S1amp。S3。Z39。 39 分頻方法有多種,最簡(jiǎn)單的是二分頻和偶數(shù)分頻甚至奇數(shù)分頻,這用觸發(fā)器或指定計(jì)數(shù)模的計(jì)數(shù)器即可辦到。 試對(duì)例 320 的設(shè)計(jì)稍作修改,將其進(jìn)位輸出 COUT 與異步加載控制 LOAD 連在一起,構(gòu)成一個(gè)自動(dòng)加載型 16 位二進(jìn)制數(shù)計(jì)數(shù)器,也即一個(gè) 16 位可控的分頻器,給出其 VHDL表述,并說明工作原理。 1Hz(允許誤差177。 USE 。 ENTITY DVF16 IS PORT(CLK : IN STD_LOGIC。 FOUT : OUT STD_LOGIC)。 ARCHITECTURE one OF DVF16 IS SIGNAL FULL : STD_LOGIC。 BEGIN IF CLK39。139。當(dāng) CNT8 計(jì)數(shù)歸 0 時(shí),預(yù)置 CNT8=D1。139。039。 D(15 DOWNTO 1)) THEN CNT8 :=(39。 amp。當(dāng) CNT8=n/2 取整時(shí),預(yù)置 CNT8=D/2 取整 1。139。 否則繼續(xù)作加 1 計(jì)數(shù) FULL = 39。 且輸出溢出標(biāo)志信號(hào) FULL 為低電平 END IF。 END PROCESS P_REG 。 BEGIN IF FULL39。139。如果溢出標(biāo)志信號(hào) FULL 為高電平, D 觸發(fā)器輸出取反 IF CNT2 = 39。 THEN FOUT = 39。 ELSE FOUT = 39。 END IF。 END PROCESS P_DIV。 310 用 VHDL 設(shè)計(jì)一個(gè)功能類似 74LS160 的計(jì)數(shù)器。 LIBRARY IEEE。 USE 。 DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。計(jì)數(shù)值輸出 COUT : OUT STD_LOGIC)。 ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK,RST,EN,LOAD) VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0)。039。039。 計(jì)數(shù)器異步復(fù)位 ELSIF CLK39。139。139。039。 允許加載 ELSE IF Q9 THEN Q:=Q+1。039。 大于等于 9 時(shí),計(jì)數(shù)值清零 END IF。 END IF。 IF Q=9 THEN COUT=39。 計(jì)數(shù)大于 9,輸出進(jìn)位信號(hào) ELSE COUT=39。 END IF。 將計(jì)數(shù)值向端口輸出 END PROCESS。 311 給出含有異步清零和計(jì)數(shù)使能的 16 位二進(jìn)制加減可控計(jì)數(shù)器的 VHDL 描述。 用 VHDL 實(shí)現(xiàn)含有異步清零和計(jì)數(shù)使能的 16 位二進(jìn)制加減可控計(jì)數(shù)器。 USE 。 ENTITY ADD_SUB_LOAD_16 IS PORT (CLK,RST,ADD_EN,SUB_EN,LOAD : IN STD_LOGIC。 CQ : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)。 END ENTITY ADD_SUB_LOAD_16。 VARIABLE LS_LOAD : STD_LOGIC。 IF RST = 39。 THEN CQI:=(OTHERS = 39。)。139。 LS_LOAD:=39。 計(jì)數(shù)器異步復(fù)位 ELSIF CLK39。139。139。 允許計(jì)數(shù) ,檢測(cè)是否小于 65535 ELSE CQI:=(OTHERS = 39。)。 IF CQI=16FFFF THEN COUT=39。 計(jì)數(shù)大于 9,輸出進(jìn)位信號(hào) ELSE COUT = 39。 END IF。 IF SUB_EN=39。THEN 檢測(cè)是否允許計(jì)數(shù) (同步他能 ) IF CQI0 THEN CQI:=CQI1。139。 大于 65535,計(jì)數(shù)值清零 END IF。139。039。 END IF。 CQ=CQI。 END ARCHITECTURE A_S_16。 圖 320 RTL 圖 圖 320 RTL 圖( a) 解:實(shí)現(xiàn)圖 320(a)RTL 圖的 VHDL 程序 LIBRARY IEEE。 ENTITY t3_12_a IS PORT (CL,CLK0: IN STD_LOGIC。 END ENTITY t3_12_a。 BEGIN PROCESS(CLK0) BEGIN IF CLK039。139。 END IF。 OUT1 = NOT Q。 圖 320 RTL 圖( b) 解:實(shí)現(xiàn)圖 320(b)RTL 圖的 VHDL 程序 LIBRARY IEEE。 ENTITY t3_12_b IS PORT (A,B,C,D: IN STD_LOGIC。 END ENTITY t3_12_b。 BEGIN PROCESS(A,B,C,D,AB,CD,ABCD) BEGIN AB=A AND B。 ABCD=AB XOR CD。039。 WHEN 39。 = Y = ABCD。 END CASE。 END ARCHITECTURE sxdl。 用 (WHEN_ELSE)實(shí)現(xiàn) 2 選 1 多路選擇器 程序 ()。 USE 。 s : IN STD_LOGIC。 END ENTITY mux21a。039。 END ARCHITECTURE one。 電平觸發(fā) D 型觸發(fā)器程序 () LIBRARY IEEE。 ENTITY DFF6 IS PORT(CLK: IN STD_LOGIC。 Q:OUT STD_LOG