【正文】
線 3線優(yōu)先編碼器的設(shè)計(jì)。 LIBRARY IEEE。 USE 。 ENTITY coder IS PORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 y:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 END coder。 ARCHITECTURE example6 OF coder IS BEGIN PROCESS(a) BEGIN IF (a(7)=‘ 0’ ) THEN y=“ 111” 。 ELSEIF (a(7)=‘ 0’ ) THEN y=“ 111” 。 ELSEIF (a(6)=‘ 0’ ) THEN y=“ 110” 。 ELSEIF (a(5)=‘ 0’ ) THEN y=“ 101” 。 ELSEIF (a(4)=‘ 0’ ) THEN y=“ 100” 。 ELSEIF (a(3)=‘ 0’ ) THEN y=“ 011” 。 ELSEIF (a(2)=‘ 0’ ) THEN y=“ 010” 。 ELSEIF (a(1)=‘ 0’ ) THEN y=“ 001” 。 ELSEIF (a(0)=‘ 0’ ) THEN y=“ 000” 。 ELSE y=“ 000” 。 END IF。 END PROCESS。 END example6。 用 CASE語句描述 4選 1數(shù)據(jù)選擇器 LIBRARY IEEE。 USE 。 ENTITY mux41 IS PORT( s1,s2:IN STD_LOGIC。 a,b,c,d:IN STD_LOGIC。 z:OUT STD_LOGIC)。 END mux41。 ARCHITECTURE example7 OF mux41 IS SIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0)。 BEGIN s=s1s2。 將 s1和 s2合并為 s PROCESS(s1,s2,a,b,c,d) BEGIN CASE s IS WHEN” 00” =z=a。 WHEN” 01” =z=b。 WHEN” 10” =z=c。 WHEN” 11” =z=d。 條件句中的” =”不是操作符,起到“ THEN”的作用。 WHEN OTHERS=z=‘ X’ 。 當(dāng) s的值不是選擇值時(shí), z做未知處理 END CASE。 END PROCESS。 END example7。 s1 s2 z 0 0 0 1 1 0 1 1 a b c d LOOP是循環(huán)語句,可以使一組順序語句重復(fù)執(zhí)行,執(zhí)行的次數(shù)由設(shè)定的循環(huán)參數(shù)確定。 LOOP語句有 3種格式,每種格式都可以用“標(biāo)號(hào)”來給語句定位,但也可以不使用,用方括號(hào)將“標(biāo)號(hào)”括起來,表示它為任選項(xiàng)。 ( 1) FOR_LOOP語句 例: 8位奇偶校驗(yàn)器的描述 LIBRARY IEEE。 USE 。 ENTITY p_check IS PORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 y:OUT STD_LOGIC)。 END p_check 。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 BEGIN temp:=‘ 0’ 。 FOR n IN 0 TO 7 LOOP temp:=temp XOR a(n)。 END LOOP。 y=temp。 END PROCESS。 END example8。 (2)WHILE_LOOP語句 LIBRARY IEEE。 USE 。 ENTITY p_check_1 IS PORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 y:OUT STD_LOGIC)。 END p_check_1 。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 VARIABLE n:INTEGER。 BEGIN temp:=‘ 0’ 。 n:=0。 WHILE n8 LOOP temp:=temp XOR a(n)。 n:=n+1。 END LOOP。 y=temp。 END PROCESS。 END example8。 ? 1.時(shí)鐘信號(hào)的 VHDL描述 ? 時(shí)鐘信號(hào)的描述如圖 ,時(shí)鐘上升沿和下降沿的到來表示發(fā)生了一個(gè)事件,用 cp’ EVENT表示,時(shí)鐘的邊沿變化可以用條件語句描述。例如: ? 時(shí)鐘上升沿的到來可以寫為“ IF CLK39。EVENT AND CLK=39。139。THEN”; ? 時(shí)鐘下降沿的到來可以寫為“ IF CLK39。EVENT AND CLK=39。039。THEN”。 ? 也可以寫做: ? 時(shí)鐘上升沿“ IF CLK=’ 1’ AND CLK’ LAST_VALUE=’ 0’ AND CLK’ EVENT”; ? 時(shí)鐘下降沿“ IF CLK=’ 0’ AND CLK’ LAST_VALUE=’ 1’ AND CLK’ EVENT”。 ? 圖 時(shí)鐘脈沖的 VHDL描述 ? 2.時(shí)序邏輯電路的 VHDL描述 ? 例 帶有異步復(fù)位、置位端的上升沿觸發(fā)的 D觸發(fā)器。 ? LIBRARY IEEE。 ? USE 。 ? ENTITY DFF IS ? PORT( CLK,D,SET,RESET: IN BIT。 ? Q: OUT BIT)。 ? END DFF。 ? ARCHITECTURE ONE OF DFF IS ? BEGIN ? PROCESS(CLK,SET,RESET) ? BEGIN ? IF SET=39。039。 THEN Q=39。139。 ? ELSIF RESET=39。039。 THEN Q=39。039。 ? ELSIF CLK39。EVENT AND CLK=39。139。THEN ? Q=D。 ? END IF。 ? END PROCESS。 ? END ARCHITECTURE ONE。 ? 例 4位雙向移位寄存器的 VHDL程序,具有 4種工作方式:數(shù)據(jù)保持、左移、右移和并行輸入。 ? LIBRARY IEEE。 ? USE 。 ? ENTITY reg4 IS ? PORT( clk: IN BIT。 ? din:IN BIT_VECTOR(3 DOWNTO 0)。 并行輸入數(shù)據(jù) ? sin: IN BIT。 串行輸入數(shù)據(jù) ? mode:IN INTEGER RANGE 0 TO 3。 ? 工作模式為 0保持, 1右移, 2左移, 3并入 ? Q: OUT BIT_VECTOR(3 DOWNTO 0))。 ? 寄存器并行輸出 ? END reg4。 ? ARCHITECTURE ONE OF reg4 IS ? SIGNAL FF:BIT_VECTOR(3 DOWNTO 0)。 ? BEGIN ? PROCESS(CLK) ? BEGIN ? IF clk39。EVENT AND clk=39。139。THEN ? CASE mode IS ? WHEN 0=FF=FF。 保持?jǐn)?shù)據(jù) ? WHEN 1=FF(2 DOWNTO 0)=FF(3 DOWNTO 1)。 右移 ? FF(3)=sin。 ? WHEN 2=FF(3 DOWNTO 1)=FF(2 DOWNTO 0)。 左移 ? FF(0)=sin。 ? WHEN OTHERS=FF=din。 并行輸入 ? END CASE。 ? END IF。 ? END PROCESS。 ? Q=FF。 寄存器輸出更新 ? END ARCHITECTURE ONE。 互動(dòng)搶答 VHDL程序應(yīng)包括三個(gè)基本組成部分,哪三個(gè)?說出名稱和意義。 19頁 COMPONENT h_adder 這個(gè)語句是什么含意?作用? 14頁 實(shí)體 (ENTITY)是什么?由哪兩部分組成? 22頁 實(shí)體聲明包含哪兩部分?哪一個(gè)在前面? 23頁 結(jié)構(gòu)體由幾部分組成?功能是什么?在同一個(gè)實(shí)體中可以包含多個(gè)結(jié)構(gòu)體嗎? 2 29頁 互動(dòng)搶答 打開 bpac1程序包的語句是什么?放在程序的什么位置? 變量一個(gè)全局量,正確嗎?能夠在哪里聲明和使用? 48頁 信號(hào)描述的是什么?類似于 Verilog HDL語言中哪個(gè)量?信號(hào)與變量區(qū)別是什么? 49頁 BIT數(shù)據(jù)類型和 BIT_VECTOR區(qū)別是什么? 50頁 算術(shù)操作符、關(guān)系操作符和邏輯操作符對(duì)數(shù)據(jù)類型的要求有什么不同? VHDL的順序語句 只能出現(xiàn)在什么 中?順序語句可以描述數(shù)字邏輯系統(tǒng)中 邏輯電路? VHDL的順序語句有哪六類? 56頁 VHDL設(shè)計(jì)流程