【正文】
IC)。 END ponent nd2 。 ARCHITECTURE ord41behv OF ord41 IS 元件例化 SIGNAL x,y:STD_LOGIC。 例: , (88,670,909) ( 3)以數(shù)字基數(shù)表示的文字 以數(shù)字基數(shù)表示的文字的格式為: 數(shù)制 數(shù)值 例: 10170。包括文字字符串和數(shù)值字符串。標(biāo)識符的命名規(guī)則是:以字母開頭,后跟若干字母、數(shù)字或單個下劃線構(gòu)成,但最后不能為下劃線。 變量 (VARIABLE)是一個局部量。 x:=100。 flaga,flagb為位信號 SIGNAL data:STD_LOGIC_VECTOR(15 DOWNTO 0)。 CONSTANT Vcc:REAL:=。 (字符)數(shù)據(jù)類型 字符是用單引號括起來的 ASCII碼字符,如‘ A?,‘ a?,定義語句為: Z TYPE CHARACTER IS (NUL,SOH,…)。定義語句為: 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?(強未知的)、 ‘ 0?(強 0)、 ‘ 1?(強 1)、 ‘ Z?(高阻態(tài))、 ‘ W?(弱未知的)、 ‘ L?(弱 0)、 ‘ H?(弱 1)和’ ?(忽略)。 ( 2)要遵循操作數(shù)的數(shù)據(jù)類型必須與操作符要求的數(shù)據(jù)類型完全一致。順序語句可以描述數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時序邏輯電路。 流程控制語句 流程控制語句有 IF語句、CASE語句、 LOOP語句、NEXT語句和 EXIT語句五種。 ENTITY control1 IS PORT( a,b,c:IN BOOLEAN。 END PROCESS。 ARCHITECTURE example6 OF coder IS BEGIN PROCESS(a) BEGIN IF (a(7)=?0?) THEN y=“111”。 ELSEIF (a(0)=?0?) THEN y=“000”。 a,b,c,d:IN STD_LOGIC。 WHEN”10”=z=c。 LOOP語句有 3種格式,每種格式都可以用“標(biāo)號”來給語句定位,但也可以不使用,用方括號將“標(biāo)號”括起來,表示它為任選項。 FOR n IN 0 TO 7 LOOP temp:=temp XOR a(n)。 y:OUT STD_LOGIC)。 END LOOP。THEN”; ? 時鐘下降沿的到來可以寫為“ IF CLK39。 ? ENTITY DFF IS ? PORT( CLK,D,SET,RESET: IN BIT。039。 ? END PROCESS。 串行輸入數(shù)據(jù) ? mode:IN INTEGER RANGE 0 TO 3。 保持數(shù)據(jù) ? WHEN 1=FF(2 DOWNTO 0)=FF(3 DOWNTO 1)。 ? Q=FF。 ? END IF。139。 ? din:IN BIT_VECTOR(3 DOWNTO 0)。THEN ? Q=D。139。 ? LIBRARY IEEE。EVENT AND CLK=39。 WHILE n8 LOOP temp:=temp XOR a(n)。 USE 。 ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC。 END example7。 將 s1和 s2合并為 s PROCESS(s1,s2,a,b,c,d) BEGIN CASE s IS WHEN”00”=z=a。 USE 。 ELSEIF (a(2)=?0?) THEN y=“010”。 y:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 END IF。 例:圖示硬件電路的 VHDL語言描述: LIBRARY IEEE。 a=“1101” 為信號 a整體賦值 a(1 TO 2)=“10”。 VHDL的順序語句 VHDL的基本描述語句包括順序語句 (Sequential Statements)和并行語句 (Concurrent Statements)。 類型 操作符 功能 操作數(shù)數(shù)據(jù)類型 算 術(shù) 操 作 符 + 加 整數(shù) 減 整數(shù) amp。例如,” A BOY.”,”1010011”等是字符串。 其中, 表示數(shù)據(jù)范圍未定界。信號賦初值的符號是“ :=”。 信號聲明語句的語法格式為: SIGNAL 信號名:數(shù)據(jù)類型 [: =初值 ]; SIGNAL temp:STD_LOGIC:=0。 b賦初值 2 變量賦值語句的語法格式為: 目標(biāo)變量名: =表達式 例: VARIABLE a,b:BIT_VECTOR(0 TO 7)。 可表示數(shù)據(jù)總線 D7— D0 D(0 TO 7)。 十六進制數(shù)數(shù)組,等效 B”101011010000”,位矢量組長度是 12 B、 O、 X分別是二進制、八進制、十六進制基數(shù)符號。 字符串文字包括字符和字符串。下劃線用來將數(shù)字分組,便于讀出。 z1:OUT STD_LOGIC)。 PACKAGE my_pkg IS ponent nd2 元件聲明 PORT (a,b:IN STD_LOGIC。 USE 。 END IF。 END PROCESS。 y:OUT STD_LOGIC)。 WHEN 1111=LED7S=01110001。 WHEN 0111=LED7S=00000111。 END。 END IF。THEN IF q=15 THEN q=0。 cout:OUT STD_LOGIC。139。 END ARCHITECTURE ONE。 USE 。 USE 。在每一語句結(jié)構(gòu)的內(nèi)部可能含有并行運行的邏輯描述語句或順序運行的邏輯描述語句。 進程語句塊語句體結(jié)構(gòu)明說體構(gòu)結(jié)述能描功體構(gòu)結(jié)元件例化語句子程序調(diào)用語句信號賦值語句常數(shù)說明數(shù)據(jù)類型說明信號說明例化元件說明子程序說明結(jié) 構(gòu) 體 構(gòu) 造 圖 1. 結(jié)構(gòu)體的一般語句格式 結(jié)構(gòu)體的語句格式如下: ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [信號聲明語句 ]; 為內(nèi)部信號名稱及類型聲明 BEGIN [功能描述語句 ] END ARCHITECTURE 結(jié)構(gòu)體名; 其中,實體名必須是所在設(shè)計實體的名字,而結(jié)構(gòu)體名可以由設(shè)計者自己選擇,但當(dāng)一個實體具有多個結(jié)構(gòu)體時,結(jié)構(gòu)體的取名不可重復(fù)。實體與外界交流的信息必須通過端口通道流入或流出。 ENTITY and2 IS GENERIC(RISEW: TIME:=1ns; FALLW: TIME:=1ns); PORT( a1: IN STD_LOGIC; a0: IN STD_LOGIC; z0: OUT STD_LOGIC); END ENTITY and2; 這是一個準(zhǔn)備作為 2輸入與門的設(shè)計實體的實體描述,在類屬說明中定義參數(shù) RISEW為上沿寬度, FALLW為下沿寬度,它們分別為 1ns,這兩個參數(shù)用于仿真模塊的設(shè)計。由 VHDL語句構(gòu)成,是外界看不到的部分。例如 LIBRARY IEEE。 庫、程序包使用說明用于打開本設(shè)計實體將要用到的庫、程序包; 實體說明用于描述該設(shè)計實體與外界的接口信號說明,是可視部分; 結(jié)構(gòu)體說明用于描述該設(shè)計實體內(nèi)部工作的邏輯關(guān)系。符號 “ =”表示信號連接。 (4) 在全加器接口邏輯 VHDL描述中, 1位二進制全加器f_adder的原理圖,實體 f_adder定義了引腳的端口信號屬性和數(shù)據(jù)類型。 END ARCHITECTURE art3。 END COMPONENT h_adder。 END ARCHITECTURE art2。 END ARCHITECTURE art1。 1位半加器的端口信號 A 和 B分別是 2位相加的二進制輸入信號, SO是相加和的輸出信號, CO是進位輸出信號,左邊的門電路結(jié)構(gòu)構(gòu)成了右邊的半加器 H_ADDER。 實體描述器件的輸入、輸出端口和數(shù)據(jù)類型用的程序包 ? ENTITY OR2 IS 實體 OR2的說明 ? PORT(A,B: STD_LOGIC。 (2) 對于 VHDL的編譯器和綜合器來說,程序文字的大小寫是不加區(qū)分的。是標(biāo)準(zhǔn)化程度最高的硬件描述語言。 (4) 為了便于程序的閱讀與調(diào)試,書寫和輸入程序時,使用層次縮進格式,同一層次的對齊,低層次的較高層次的縮進兩個字符。 ? ARCHITECTURE ONE OF OR2 IS 實體 OR2的結(jié)構(gòu)體 ONE 的說明 ? BEGIN ? C=A OR B。 IEEE庫的使用說明 USE 。 ENTITY h_adder IS 實體 h_adder的說明 PORT(a,b:IN STD_LOGIC。 ENTITY f_adder IS 實體 f_adder的說明 PORT(ain,bin,cin:IN STD_LOGIC。 END COMPONENT or2。這三個設(shè)計實體既可以作為一