【正文】
D(7 DOWNTO 0)。 REG(6 DOWNTO 0) = REG(7 DOWNTO 1)。 REG(6 DOWNTO 0) = REG(7 DOWNTO 1)。 REG(7 DOWNTO 1) = REG(6 DOWNTO 0)。 CY=REG(7)。 BEGIN PROCESS (CLK,MD,C0) BEGIN IF CLK‘EVENT AND CLK = ’1‘ THEN 接下頁(yè) CASE MD IS WHEN 001 = REG(0) = C0 。 ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0)。 移位數(shù)據(jù)輸出 CN : OUT STD_LOGIC)。 移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 ENTITY SHIFT IS PORT (CLK,C0 : IN STD_LOGIC。 圖 316 例 328的 RTL電路 圖 317 例 329的 RTL電路 數(shù)據(jù)對(duì)象 進(jìn)程中的信號(hào)賦值與變量賦值 圖 318 例 328中錯(cuò)誤的工作時(shí)序 數(shù)據(jù)對(duì)象 進(jìn)程中的信號(hào)賦值與變量賦值 圖 319 例 329中正確的工作時(shí)序 【 例 330】 Library IEEE。 end process。 when others = null。 when 2 = q = i2。 case muxval is when 0 = q = i0。) then muxval := muxval + 2。 if (b = 39。) then muxval := muxval + 1。 if (a = 39。 ARCHITECTURE body_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval : integer range 7 downto 0。 q : OUT STD_LOGIC)。 USE 。 END body_mux4。 end case。 when 3 = q = i3。 when 1 = q = i1。 end if。139。 end if。139。 BEGIN process(i0,i1,i2,i3,a,b) begin muxval = 0。 END mux4。 ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC。 【 例 328】 LIBRARY IEEE。 THEN . . . – 第 15+n 行 ... c1 := 0011 ; – 第 30+m 行 ... END IF。 THEN ... – 第 1 行 e1 = 1010 ; – 第 2 行 ... IF in2 = 39。 BEGIN IF in1 = 39。 數(shù)據(jù)對(duì)象 進(jìn)程中的信號(hào)賦值與變量賦值 D QD Q D QD QD1 Q1D1 Q1CLKCLK 圖 315 例 326的 RTL電路 圖 316 D觸發(fā)器電路 數(shù)據(jù)對(duì)象 【 例 327】 SIGNAL in1, in2, e1, ... : STD_LOGIC 。 END PROCESS 。 Q1 = B 。 THEN A := D1 。EVENT AND CLK = 39。 ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A,B : STD_LOGIC 。 Q1 : OUT STD_LOGIC ) 。 USE 。 END 。 END IF。 B = A 。139。 BEGIN PROCESS (CLK) BEGIN IF CLK39。 END 。 ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC 。 數(shù)據(jù)對(duì)象 【 例 325】 LIBRARY IEEE 。 Q1 = 。 END IF。139。 BEGIN PROCESS (CLK) BEGIN IF CLK39。 END 。 END PROCESS 。 THEN := D1 。EVENT AND CLK = 39。 數(shù)據(jù)對(duì)象 進(jìn)程中的信號(hào)賦值與變量賦值 信號(hào) SIGNAL 變量 VARIABLE 基本用法 用于作為電路中的信號(hào)連線 用于作為進(jìn)程中局部數(shù)據(jù)存儲(chǔ)單元 適用范圍 在整個(gè)結(jié)構(gòu)體內(nèi)的任何地方都能適用 只能在所定義的進(jìn)程中使用 行為特性 在進(jìn)程的最后才對(duì)信號(hào)賦值 立即賦值 表 31 信號(hào)與變量賦值語(yǔ)句功能的比較 數(shù)據(jù)對(duì)象 進(jìn)程中的信號(hào)賦值與變量賦值 【 例 323】 ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE : STD_LOGIC 。 z = c – a 。 數(shù)據(jù)對(duì)象 信號(hào) SIGNAL 信號(hào)名: 數(shù)據(jù)類型 := 初始值 ; 目標(biāo)信號(hào)名 = 表達(dá)式 AFTER 時(shí)間量 。 y := 2 + x 。分別定義變量 x和 y為整數(shù)類型 VARIABLE a, b : STD_LOGIC_VECTOR(7 DOWNTO 0) 。 變量 a定義為標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型 ,初始值是 1 目標(biāo)變量名 := 表達(dá)式 。 VARIABLE a : INTEGER RANGE 0 TO 15 。 標(biāo)準(zhǔn)位矢類型 CONSTANT DATAIN : INTEGER := 15 。 END behav。 QB = REG8(0)。 END IF。139。 THEN REG8 := DIN。 THEN IF LOAD = 39。EVENT AND CLK = 39。 ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0)。 QB : OUT STD_LOGIC )。 ENTITY SHFRT IS 8位右移寄存器 PORT ( CLK, LOAD : IN STD_LOGIC。 一般計(jì)數(shù)器的 VHDL設(shè)計(jì)方法 程序功能分析 圖 311 例 321的 RTL電路( Synplify綜合) 一般計(jì)數(shù)器的 VHDL設(shè)計(jì)方法 程序功能分析 圖 312 例 321的工作時(shí)序 一般計(jì)數(shù)器的 VHDL設(shè)計(jì)方法 移位寄存器設(shè)計(jì) 【 例 322】 LIBRARY IEEE。 e(3) amp。 e(5) amp。) ; d1 = (1=e(3),3=e(5), OTHERS=e(1) )。); a1 := (OTHERS=39。 ... d1 = (OTHERS=39。 一般計(jì)數(shù)器的 VHDL設(shè)計(jì)方法 相關(guān)語(yǔ)法 SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0)。 將計(jì)數(shù)值向端口輸出 END PROCESS。 END IF。 計(jì)數(shù)大于 9,輸出進(jìn)位信號(hào) ELSE COUT = 39。 IF CQI = 9 THEN COUT = 39。 END IF。)。 允許計(jì)數(shù) , 檢測(cè)是否小于 9 ELSE CQI := (OTHERS =39。139。139。 計(jì)數(shù)器異步復(fù)位 ELSIF CLK39。039。139。 ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0)。 COUT : OUT STD_LOGIC )。 ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC。 USE 。 END bhv。 END PROCESS 。 THEN Q1 = Q1 + 1 。EVENT AND CLK = 39。 ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0)。 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) 。 USE 。 計(jì)數(shù)器設(shè)計(jì) 3.計(jì)數(shù)器的其他表述方法 【 例 320】 LIBRARY IEEE 。 計(jì)數(shù)器設(shè)計(jì) 1.程序說(shuō)明 表式 Q = Q + 1的右項(xiàng)與左項(xiàng)并非處于相同的時(shí)刻內(nèi),對(duì)于時(shí)序電路,除了傳輸延時(shí)外,前者的結(jié)果出現(xiàn)于當(dāng)前時(shí)鐘周期;后者,即左項(xiàng)要獲得當(dāng)前的 Q + 1,需等待下一個(gè)時(shí)鐘周期。 END PROCESS 。 THEN Q = Q + 1 。EVENT AND CLK = 39。 END 。 計(jì)數(shù)器設(shè)計(jì) 【 例 319】 ENTITY CNT4 IS PORT ( CLK : IN BIT 。 e, f : OUT STD_LOGIC)。 。?d(1)?39。?39。 ... a = 39。 B(6)等于 A(2) SIGNAL C : BIT_VECTOR(3 DOWNTO 0); B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或 SIGNAL A : STD_LOGIC_VECTOR(1 TO 4) 全加器的 VHDL描述 3. 并置操作符 ? SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) 。139。 B(4 DOWNTO 1) = 1101 。 B(7)為 39。 順