【正文】
互動搶答 VHDL程序應(yīng)包括三個基本組成部分,哪三個?說出名稱和意義。 ? Q=FF。 ? END IF。 ? WHEN OTHERS=FF=din。 ? WHEN 2=FF(3 DOWNTO 1)=FF(2 DOWNTO 0)。 保持數(shù)據(jù) ? WHEN 1=FF(2 DOWNTO 0)=FF(3 DOWNTO 1)。139。 ? BEGIN ? PROCESS(CLK) ? BEGIN ? IF clk39。 ? 寄存器并行輸出 ? END reg4。 串行輸入數(shù)據(jù) ? mode:IN INTEGER RANGE 0 TO 3。 ? din:IN BIT_VECTOR(3 DOWNTO 0)。 ? USE 。 ? 例 4位雙向移位寄存器的 VHDL程序,具有 4種工作方式:數(shù)據(jù)保持、左移、右移和并行輸入。 ? END PROCESS。THEN ? Q=D。EVENT AND CLK=39。039。039。139。039。 ? END DFF。 ? ENTITY DFF IS ? PORT( CLK,D,SET,RESET: IN BIT。 ? LIBRARY IEEE。 ? 也可以寫做: ? 時鐘上升沿“ IF CLK=?1?AND CLK?LAST_VALUE=?0? AND CLK?EVENT”; ? 時鐘下降沿“ IF CLK=?0?AND CLK?LAST_VALUE=?1? AND CLK?EVENT”。039。THEN”; ? 時鐘下降沿的到來可以寫為“ IF CLK39。EVENT AND CLK=39。 ? 1.時鐘信號的 VHDL描述 ? 時鐘信號的描述如圖 ,時鐘上升沿和下降沿的到來表示發(fā)生了一個事件,用 cp?EVENT表示,時鐘的邊沿變化可以用條件語句描述。 END PROCESS。 END LOOP。 WHILE n8 LOOP temp:=temp XOR a(n)。 BEGIN temp:=?0?。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 y:OUT STD_LOGIC)。 USE 。 END example8。 y=temp。 FOR n IN 0 TO 7 LOOP temp:=temp XOR a(n)。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 y:OUT STD_LOGIC)。 USE 。 LOOP語句有 3種格式,每種格式都可以用“標號”來給語句定位,但也可以不使用,用方括號將“標號”括起來,表示它為任選項。 END example7。 當 s的值不是選擇值時, z做未知處理 END CASE。 條件句中的” =”不是操作符,起到“ THEN”的作用。 WHEN”10”=z=c。 將 s1和 s2合并為 s PROCESS(s1,s2,a,b,c,d) BEGIN CASE s IS WHEN”00”=z=a。 BEGIN s=s1amp。 END mux41。 a,b,c,d:IN STD_LOGIC。 USE 。 END example6。 END IF。 ELSEIF (a(0)=?0?) THEN y=“000”。 ELSEIF (a(2)=?0?) THEN y=“010”。 ELSEIF (a(4)=?0?) THEN y=“100”。 ELSEIF (a(6)=?0?) THEN y=“110”。 ARCHITECTURE example6 OF coder IS BEGIN PROCESS(a) BEGIN IF (a(7)=?0?) THEN y=“111”。 y:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 USE 。 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è)計。 END PROCESS。 END IF。 BEGIN IF a THEN n:=b。 END control1。 ENTITY control1 IS PORT( a,b,c:IN BOOLEAN。 例:圖示硬件電路的 VHDL語言描述: LIBRARY IEEE。 IF語句中至少應(yīng)有 1個條件語句,條件句必須由 BOOLEAN表達式構(gòu)成。 格式 2為: IF 條件句 Then 順序語句; ELSE 順序語句; END IF。 流程控制語句 流程控制語句有 IF語句、CASE語句、 LOOP語句、NEXT語句和 EXIT語句五種。 a=“1101” 為信號 a整體賦值 a(1 TO 2)=“10”。 信號賦值語句可以出現(xiàn)在進程或結(jié)構(gòu)體中,若出現(xiàn)在進程或子程序中則是順序語句,若出現(xiàn)在結(jié)構(gòu)體中則是并行語句。 賦值語句 變量賦值語句的格式為: 目標變量名 :=賦值源(表達式) 例如 x:=。順序語句可以描述數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時序邏輯電路。 VHDL的順序語句 VHDL的基本描述語句包括順序語句 (Sequential Statements)和并行語句 (Concurrent Statements)。例如,將一維數(shù)組 s1, s2擴展為二維數(shù)組的語句是: s=s1amp。例如 (a OR b)XOR c ( 4)在 VHDL中有并置運算操作符“ amp。 ( 2)要遵循操作數(shù)的數(shù)據(jù)類型必須與操作符要求的數(shù)據(jù)類型完全一致。 類型 操作符 功能 操作數(shù)數(shù)據(jù)類型 算 術(shù) 操 作 符 + 加 整數(shù) 減 整數(shù) amp。它們在STD_LOGIC_1164程序包中的定義語句: TYPE STD_LOGIC_VECTOR IS ARRAY(Natural Range ) OF STD_LOGIC。 注意: STD_LOGIC數(shù)據(jù)類型中的數(shù)據(jù)是用大寫字母定義的。定義語句為: TYPE TIME IS RANGE 2147483647 TO 2147483647 IEEE預(yù)定義的標準邏輯位和矢量 (標準邏輯位)數(shù)據(jù)類型 在 VHDL中,標準邏輯位數(shù)據(jù)有九種邏輯值: ‘ U?(未初始化的)、 ‘ X?(強未知的)、 ‘ 0?(強 0)、 ‘ 1?(強 1)、 ‘ Z?(高阻態(tài))、 ‘ W?(弱未知的)、 ‘ L?(弱 0)、 ‘ H?(弱 1)和’ ?(忽略)。例如,” A BOY.”,”1010011”等是字符串。 (實數(shù))數(shù)據(jù)類型 實數(shù)由正、負、小數(shù)點和數(shù)字組成,例如, ,+,。整數(shù)是 32位的帶符號數(shù)。 (字符)數(shù)據(jù)類型 字符是用單引號括起來的 ASCII碼字符,如‘ A?,‘ a?,定義語句為: Z TYPE CHARACTER IS (NUL,SOH,…)。 其中, 表示數(shù)據(jù)范圍未定界。 位矢量是用雙引號括起來的數(shù)字序列,如“ 0011”, X”00FD”等。 VHDL數(shù)據(jù)類型 (布爾 )數(shù)據(jù)類型 FALSE(假)和 TRUE(真),以枚舉類型預(yù)定義,定義語句為: TYPE BOOLEAN IS (FALSE,TRUE)。 CONSTANT Vcc:REAL:=。信號賦初值的符號是“ :=”。變量在進程、函數(shù)和過程中聲明,信號在結(jié)構(gòu)體中聲明。 z=x AFTER 5ns。 flaga,flagb為位信號 SIGNAL data:STD_LOGIC_VECTOR(15 DOWNTO 0)。 信號聲明語句的語法格式為: SIGNAL 信號名:數(shù)據(jù)類型 [: =初值 ]; SIGNAL temp:STD_LOGIC:=0。 信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象。 a(3 TO 6):=(?1?,?1?,?0?,?1?)。 x:=100。 b賦初值 2 變量賦值語句的語法格式為: 目標變量名: =表達式 例: VARIABLE a,b:BIT_VECTOR(0 TO 7)。 變量要聲明后才能使用,變量聲明的語法格式為: VARIABLE 變量名:數(shù)據(jù)類型 [: =初始值 ]; 例: VARIABLE a:INTEGER。變量不能將信息帶出對它定義的當前設(shè)計單元。 變