【正文】
ELSE 順序語句; END IF。 例:圖示硬件電路的 VHDL語言描述: LIBRARY IEEE。 END control1。 END IF。 Y=a’c+ab 輸入 輸出 a0 a1 a2 a3 a4 a5 a6 a7 y2 y1 y0 x x x x x x x 0 x x x x x x 0 1 x x x x x 0 1 1 x x x x 0 1 1 1 x x x 0 1 1 1 1 x x 0 1 1 1 1 1 x 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 例: 8線 3線優(yōu)先編碼器的設(shè)計(jì)。 y:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 ELSEIF (a(6)=?0?) THEN y=“110”。 ELSEIF (a(2)=?0?) THEN y=“010”。 END IF。 USE 。 END mux41。 將 s1和 s2合并為 s PROCESS(s1,s2,a,b,c,d) BEGIN CASE s IS WHEN”00”=z=a。 條件句中的” =”不是操作符,起到“ THEN”的作用。 END example7。 USE 。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 y=temp。 USE 。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 WHILE n8 LOOP temp:=temp XOR a(n)。 END PROCESS。EVENT AND CLK=39。039。 ? LIBRARY IEEE。 ? END DFF。139。039。THEN ? Q=D。 ? 例 4位雙向移位寄存器的 VHDL程序,具有 4種工作方式:數(shù)據(jù)保持、左移、右移和并行輸入。 ? din:IN BIT_VECTOR(3 DOWNTO 0)。 ? 寄存器并行輸出 ? END reg4。139。 ? WHEN 2=FF(3 DOWNTO 1)=FF(2 DOWNTO 0)。 ? END IF。 互動(dòng)搶答 VHDL程序應(yīng)包括三個(gè)基本組成部分,哪三個(gè)?說出名稱和意義。 ? Q=FF。 ? WHEN OTHERS=FF=din。 保持?jǐn)?shù)據(jù) ? WHEN 1=FF(2 DOWNTO 0)=FF(3 DOWNTO 1)。 ? BEGIN ? PROCESS(CLK) ? BEGIN ? IF clk39。 串行輸入數(shù)據(jù) ? mode:IN INTEGER RANGE 0 TO 3。 ? USE 。 ? END PROCESS。EVENT AND CLK=39。039。039。 ? ENTITY DFF IS ? PORT( CLK,D,SET,RESET: IN BIT。 ? 也可以寫做: ? 時(shí)鐘上升沿“ IF CLK=?1?AND CLK?LAST_VALUE=?0? AND CLK?EVENT”; ? 時(shí)鐘下降沿“ IF CLK=?0?AND CLK?LAST_VALUE=?1? AND CLK?EVENT”。THEN”; ? 時(shí)鐘下降沿的到來可以寫為“ IF CLK39。 ? 1.時(shí)鐘信號(hào)的 VHDL描述 ? 時(shí)鐘信號(hào)的描述如圖 ,時(shí)鐘上升沿和下降沿的到來表示發(fā)生了一個(gè)事件,用 cp?EVENT表示,時(shí)鐘的邊沿變化可以用條件語句描述。 END LOOP。 BEGIN temp:=?0?。 y:OUT STD_LOGIC)。 END example8。 FOR n IN 0 TO 7 LOOP temp:=temp XOR a(n)。 y:OUT STD_LOGIC)。 LOOP語句有 3種格式,每種格式都可以用“標(biāo)號(hào)”來給語句定位,但也可以不使用,用方括號(hào)將“標(biāo)號(hào)”括起來,表示它為任選項(xiàng)。 當(dāng) s的值不是選擇值時(shí), z做未知處理 END CASE。 WHEN”10”=z=c。 BEGIN s=s1amp。 a,b,c,d:IN STD_LOGIC。 END example6。 ELSEIF (a(0)=?0?) THEN y=“000”。 ELSEIF (a(4)=?0?) THEN y=“100”。 ARCHITECTURE example6 OF coder IS BEGIN PROCESS(a) BEGIN IF (a(7)=?0?) THEN y=“111”。 USE 。 END PROCESS。 BEGIN IF a THEN n:=b。 ENTITY control1 IS PORT( a,b,c:IN BOOLEAN。 IF語句中至少應(yīng)有 1個(gè)條件語句,條件句必須由 BOOLEAN表達(dá)式構(gòu)成。 流程控制語句 流程控制語句有 IF語句、CASE語句、 LOOP語句、NEXT語句和 EXIT語句五種。 信號(hào)賦值語句可以出現(xiàn)在進(jìn)程或結(jié)構(gòu)體中,若出現(xiàn)在進(jìn)程或子程序中則是順序語句,若出現(xiàn)在結(jié)構(gòu)體中則是并行語句。順序語句可以描述數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時(shí)序邏輯電路。例如,將一維數(shù)組 s1, s2擴(kuò)展為二維數(shù)組的語句是: s=s1amp。 ( 2)要遵循操作數(shù)的數(shù)據(jù)類型必須與操作符要求的數(shù)據(jù)類型完全一致。它們?cè)赟TD_LOGIC_1164程序包中的定義語句: TYPE STD_LOGIC_VECTOR IS ARRAY(Natural Range ) OF STD_LOGIC。定義語句為: TYPE TIME IS RANGE 2147483647 TO 2147483647 IEEE預(yù)定義的標(biāo)準(zhǔn)邏輯位和矢量 (標(biāo)準(zhǔn)邏輯位)數(shù)據(jù)類型 在 VHDL中,標(biāo)準(zhǔn)邏輯位數(shù)據(jù)有九種邏輯值: ‘ U?(未初始化的)、 ‘ X?(強(qiáng)未知的)、 ‘ 0?(強(qiáng) 0)、 ‘ 1?(強(qiáng) 1)、 ‘ Z?(高阻態(tài))、 ‘ W?(弱未知的)、 ‘ L?(弱 0)、 ‘ H?(弱 1)和’ ?(忽略)。 (實(shí)數(shù))數(shù)據(jù)類型 實(shí)數(shù)由正、負(fù)、小數(shù)點(diǎn)和數(shù)字組成,例如, ,+,。 (字符)數(shù)據(jù)類型 字符是用單引號(hào)括起來的 ASCII碼字符,如‘ A?,‘ a?,定義語句為: Z TYPE CHARACTER IS (NUL,SOH,…)。 位矢量是用雙引號(hào)括起來的數(shù)字序列,如“ 0011”, X”00FD”等。 CONSTANT Vcc:REAL:=。變量在進(jìn)程、函數(shù)和過程中聲明,信號(hào)在結(jié)構(gòu)體中聲明。 flaga,flagb為位信號(hào) SIGNAL data:STD_LOGIC_VECTOR(15 DOWNTO 0)。 信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象。 x:=100。 變量要聲明后才能使用,變量聲明的語法格式為: VARIABLE 變量名:數(shù)據(jù)類型 [: =初始值 ]; 例: VARIABLE a:INTEGER。 變量 (VARIABLE)是一個(gè)局部量。 段名是多個(gè)下標(biāo)名的組合。標(biāo)識(shí)符的命名規(guī)則是:以字母開頭,后跟若干字母、數(shù)字或單個(gè)下劃線構(gòu)成,但最后不能為下劃線。 二進(jìn)制數(shù)數(shù)組,位矢量組長(zhǎng)度是 9 O”15”。包括文字字符串和數(shù)值字符串。 八進(jìn)制數(shù)字 ( 4)物理量文字 表示時(shí)間、長(zhǎng)度等物理量。 例: , (88,670,909) ( 3)以數(shù)字基數(shù)表示的文字 以數(shù)字基數(shù)表示的文字的格式為: 數(shù)制 數(shù)值 例: 10170。 混合關(guān)聯(lián)方式 END ord41behv。 ARCHITECTURE ord41behv OF ord41 IS 元件例化 SIGNAL x,y:STD_LOGIC。 USE 。 END ponent nd2 。 第二步 將設(shè)計(jì)的元件聲明裝入 my_pkg程序包中 LIBRARY IEEE。 c:OUT STD_LOGIC)。 打開 bpac1程序包的語句為: USE 放在實(shí)體聲明前面 函數(shù)調(diào)用語句 函數(shù)名 (關(guān)聯(lián)參數(shù)表) 例如,調(diào)用求最大值函數(shù)的語句為: peak=max(data,peak)。 END bpac1。 PACKAGE BODY bpac1 IS FUNCTION max ( a,b:IN STD_LOGIC_VECTOR) 聲明函數(shù)體 RETURN STD_LOGIC_VECTOR IS BEGIN IF (ab) THEN RETURN a。 例 7 求最大值