【正文】
END LOOP L1。 END PROCESS。 BEGIN PROCESS (a) BEGIN tmp = ?0?。 ENTITY JIOU IS PORT (a : IN STD_LOGIC_VECTOR(7DOWNTO 0)。 EXIT L2 WHEN a 10。 7 when “1000“ = Y= “1111111 ”。3 when 0100“ = Y= 1100110” 。 Architecture a1 of btod is Begin Process(d) Begin Case A is when 0000“ = Y= 0111111”。 Use 。 3. IF語句可實(shí)現(xiàn)優(yōu)先級(jí), CASE語句則不可以。 WHEN 4 = Z3=?1?。 END activ。 WHEN “11”= z=d。 BEGIN S= s1amp。 END IF。 s2 PROCESS (s1,s2,a,b,c,d) BEGIN IF s =“00” then z=a。 END PROCESS。 WHEN “10”= z=c。 ARCHITECTURE activ OF mux41 IS SIGNAL s :std_logic_vector(1 downto 0)。 USE ENTITY mux41 IS PORT ( s1, s2 : in std_logic。 結(jié) 構(gòu) 體 設(shè) 計(jì) 功能:描述輸入和輸出之間的邏輯關(guān)系 END IF。 ELSIF A=“101” THEN Y=“00100000”。 ELSIF A=“001” THEN Y=“00000010”。 USE 。 ELSE Y=“000”。 ELSIF (I(4)=?1?) THEN Y=“100”。 END coder 。 END IF。 語句格式 例題 1: Signal a,b,c,p1,p2,z : bit。 Elsif 條件句 Then 順序語句 。 sec(4) = v1; sec(5) = v2; sec(6) = s1; sec(7) = s2; END PROCESS “ 0100 0111 ” 一、 第一種 IF語句 IF 條件句 THEN 順序語句 END IF 例題 語句格式 IF ( a b ) THEN out= ?1?; END IF。 sec(3) = s2。 s2 = ?1?。 Process (s1 , s2) Variable v1,v2 : std_logic。 ?在第二個(gè)進(jìn)程中 , 無論什么情況 , f=x1, 而在第一個(gè)進(jìn)程中 ,只有信號(hào) sel /=1時(shí) , f=x1。 Process(sel,x1,x2) Begin If sel=1 then f=x2。 (1) 進(jìn)程語句 ( Process 語句) Process(sel,x1,x2) Begin f=x1。 順序語句只能出現(xiàn)在進(jìn)程( Process)和子程序中, 子程序包括函數(shù)( Function)和過程( Procedure)。 ? END PROCEDURE。 FAS3A3 B3FAS2A2 B2FAS1A1 B1FAS0A0 B0C4C inC1C2C3C3C0U4: fulladder Port map(ci=c(3),a=x(3),b=y(3),s=sum(3),co=c(4))。 End a。 U2: fulladder Port map(c(1),x(1),y(1),sum(1),c(2))。 s,co : out std_logic)。 Cout : out std_logic)。 Use 。 U1 : nd2 port map(a1,b1,x)。 元件端口信息,與該元件 實(shí)現(xiàn)時(shí)的實(shí)體的 port部分相 同并 在結(jié)構(gòu)體開始之前進(jìn) 行聲明 第二步:元件例化 例化名 : 元件名 Port Map(端口映射) 。 end m3。 architecture m3 of exam1 is begin Process (a, b) begin c=a and b。 ≥ 1&ABCDarchitecture m2 of exam1 is begin Process (a, b) begin c=a and b。 architecture m2 of exam1 is begin Process (a, b) begin c=a and b。 End exam1。 下面舉一個(gè)應(yīng)用示例,如下面電路: ≥ 1&ABCD用用不同 VHDL語句 對(duì)電路的描述如下: library ieee。 a WithselectWhen語句中 When后的 constant_value必須 是互不相同的; b 而 Whenelse語句中 When后的 logic_expression則不需要這樣 的嚴(yán)格條件 , 因?yàn)槠?When后的 logic_expression的優(yōu)先權(quán)次序 為由先到后排列 。 With tmp select f=?1? when “11”。 選擇 式信號(hào)設(shè)置語句本身不能在進(jìn)程中應(yīng)用其功能與進(jìn)程中 的 CASE語句相同。 End and2。 Library ieee。 op : out std_logic)。 在結(jié)構(gòu)體中的條件賦值語句的功能與在進(jìn)程中的 IF語句相同,在 執(zhí)行條件信號(hào)語句時(shí),每一賦值條件是按書寫的先后關(guān)系測(cè)定 的。 f := ?1? 。 位置關(guān)聯(lián) Variable e,f : std_logic。 c(1 to 2) =?10?; c(1 to 4) =?1010?; 3. 塊賦值 Signal a,b,c,d : std_logic。 a: = ?1?。 B=(?1?,others=?0?)。 A=”0000000”。 變量賦值目標(biāo) := 賦值源 信號(hào)賦值目標(biāo) = 賦值源 在同一進(jìn)程中,同一信號(hào)賦值目標(biāo)有多個(gè)賦值源時(shí),信號(hào)賦值目標(biāo)獲 得的是最后一個(gè)賦值源的值,其前面相同的賦值目標(biāo)不做任何變化。 若常數(shù)定義在結(jié)構(gòu)體中,適用范圍就是本結(jié)構(gòu)體。 Variable A: std_logic_vector(7 downto 0)。 數(shù)據(jù)對(duì)象小結(jié) 變量 常定義在進(jìn)程與子程序中,用于保存運(yùn)算的中間臨時(shí)數(shù) 據(jù),或作為循環(huán)語句中的循環(huán)變量,其 賦值立即發(fā)生 。 進(jìn)程對(duì) 信號(hào) 敏感,對(duì) 變量 不敏感。 信號(hào)與變量的比較 信號(hào) 是實(shí)體間動(dòng)態(tài)交換數(shù)據(jù)的手段,用 信號(hào) 對(duì)象把實(shí)體連接在 一起形成模塊;實(shí)體說明,結(jié)構(gòu)體說明都能說明信號(hào)。 此例也為 6分頻器 。 end if。139。 end frequencies。 library ieee。 end behav。039。 if time=6 then q=39。 q:out std_logic)。 “ =” 表示信號(hào)的代入賦值, 有延時(shí) 。 格式 : VARIABLE 變量名 :數(shù)據(jù)類型 :=初始值 用途: 在 PROCESS、 FUNCTION、 PROCEDURE用于計(jì)算或暫存中間數(shù)據(jù),是一個(gè) 局部量 。 與其他計(jì)算機(jī)高級(jí)語言一樣要注意各運(yùn)算符的優(yōu)先級(jí) VHDL 數(shù)據(jù)對(duì)象 在 VHDL語言中,可以 賦值 的客體稱為 對(duì)象 。 A := “10110001”。 Signal a : std_logic_vector(4 downto 0)。 二、關(guān)系運(yùn)算符 =(等于), /=(不等于), (小于), (大于), =(小于等于,和信號(hào)的賦值符號(hào)相同), =(大于等于)。 ENTITY my1 is PORT(a,b : in bit_vector(0 to 3) m : out boolean ) 。(整數(shù),枚舉型) 3. =、 /= 在實(shí)現(xiàn)硬件電路時(shí)比其它的關(guān)系運(yùn)算符對(duì)芯片的利用率 要高 ENTITY my1 is PORT(a,b : in bit_vector(0 to 3) m : out boolean ) 。 1=1amp。 ACHITECTURE AA1 OF liti IS BEGIN e=(a and b) or tmp 。 ENTITY liti IS 。 h=e nor f nor g。 Signal e,f,g,h: std_logic_vector(1 downto 0)。 Signal c,d,z: integer。 a1= 1100 a1 ROL 1 。 a = b ? c VHDL 運(yùn)算符 2. 移位運(yùn)算符 移位運(yùn)算所對(duì)應(yīng)的數(shù)據(jù)類型為一維數(shù)組,其中的元素維 bit、 boolean 例: Variable a1 : std_logic_vector(3 to 0)。 d := e – f 。 VHDL 數(shù)據(jù)類型 VHDL中的數(shù)據(jù)類型可以通過 IEEE庫(kù)中的類型轉(zhuǎn)換函數(shù)進(jìn)行 強(qiáng)制性 轉(zhuǎn)換。 即數(shù)值范 圍為 231~231。 使用這類數(shù)據(jù)信號(hào),必須包含下面兩條聲明語句: Library IEEE。 例 : Signal A: bit_vector(0 to 7)。 數(shù)據(jù)類型 數(shù)據(jù)類型分類:邏輯信號(hào)類型和數(shù)值信號(hào)類型。 End Nb。 End and2。 Use 。 ENTITY AND2 IS GENERIC(RISEW: TIME:=1 ns; FALLW: TIME:=1 ns); PORT( A1: IN STD_LOGIC; A0: IN STD_LOGIC; Z0: OUT STD_LOGIC); END ENTITY AND2; 這是一個(gè)準(zhǔn)備作為 2輸入與門的設(shè)計(jì)實(shí)體的實(shí)體描述,在類屬說明中定義參數(shù) RISEW為上沿寬度, FALLW為下沿寬度,它們分別為 1 ns,這兩個(gè)參數(shù)用于仿真模塊的設(shè)計(jì)。 使用格式: LIBRARY 庫(kù)名; USE 庫(kù)名 . 程序包名 . All; ( ) ENTITY定義 作用:定義本設(shè)計(jì)的輸入 /出端口 , 即定義電路的外觀 , 即 I/O接口的類型和數(shù)量使用格式: … 端口名 :端口模式 數(shù)據(jù)類型; ); ENTITY 實(shí)體名 Is End 實(shí)體名; 格式 : Port ( 端口名 :端口模式 數(shù)據(jù)類型; 端口模式說明 端口模式 端口模式說明 ( 以設(shè)計(jì)實(shí)體為主體 ) IN 輸入,只讀模式,將變量或信號(hào)信息通過該端口讀入 OUT 輸出,單向賦值模式,將信號(hào)通過該端口輸出 BU F F E R 具有讀功能的輸出模式,可以讀或?qū)?,只能有一個(gè)驅(qū)動(dòng)源 IN O U T 雙向,可以通過該端口讀入或?qū)懗鲂畔? IN O U T B U F F ER I N O U T 2. 類屬 (GENERIC)說明語句 類屬 (GENERIC)參量是一種端口界面常數(shù),常以一種說明的形式放在實(shí)體或塊結(jié)構(gòu)體前的說明部分。 END PROCESS。 ARCHITECTURE behav OF MUX2 IS BEGIN PROCESS (d0,d1,sel) BEGIN IF sel=‘0’ THEN q=d0。 ENTITY MUX2 IS PORT (d0,d1:IN std_logic。根據(jù)需要,實(shí)體還可以有配置說明語句。之后,又有 。蔡劍華 數(shù)字系統(tǒng)設(shè)計(jì)與 VHDL實(shí)踐 第 2章 VHDL語言基礎(chǔ) VHDL簡(jiǎn)介 VHDL是 Very High speed Integrated Circuit Hardware Description Language ( 非常高速集成電路硬件描述語言)的英文縮寫。 硬件描述語言特點(diǎn)