VHDL語(yǔ)言入門教程ppt課件_第1頁(yè)
VHDL語(yǔ)言入門教程ppt課件_第2頁(yè)
VHDL語(yǔ)言入門教程ppt課件_第3頁(yè)
VHDL語(yǔ)言入門教程ppt課件_第4頁(yè)
VHDL語(yǔ)言入門教程ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩107頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3 VHDL語(yǔ)言語(yǔ)言VHDL: VHSIC Hardware Description Language.3.1 VHDL語(yǔ)言基礎(chǔ)語(yǔ)言基礎(chǔ)3.2 VHDL基本結(jié)構(gòu)基本結(jié)構(gòu)3.3 VHDL語(yǔ)句語(yǔ)句3.4 狀態(tài)機(jī)在狀態(tài)機(jī)在VHDL中的實(shí)現(xiàn)中的實(shí)現(xiàn)3.5 常用電路常用電路VHDL程序程序3.6 VHDL仿真仿真3.7 VHDL綜合綜合HDL-Hardware Description Language 一種用于描述數(shù)字電路的功能或行為的語(yǔ)言。目的是提為電路設(shè)計(jì)效率,縮一種用于描述數(shù)字電路的功能或行為的語(yǔ)言。目的是提為電路設(shè)計(jì)效率,縮短設(shè)計(jì)周期,減小設(shè)計(jì)成本,可在芯片制造前進(jìn)行有效的仿真和錯(cuò)誤檢測(cè)。短設(shè)計(jì)

2、周期,減小設(shè)計(jì)成本,可在芯片制造前進(jìn)行有效的仿真和錯(cuò)誤檢測(cè)。 優(yōu)點(diǎn):優(yōu)點(diǎn): HDL設(shè)計(jì)的電路能獲得非常抽象級(jí)的描述。如基于設(shè)計(jì)的電路能獲得非常抽象級(jí)的描述。如基于RTL(Register Transfer Level)描述的描述的IC,可用于不同的工藝。,可用于不同的工藝。 HDL設(shè)計(jì)的電路,在設(shè)計(jì)的前期,就可以完成電路的功能級(jí)的驗(yàn)證。設(shè)計(jì)的電路,在設(shè)計(jì)的前期,就可以完成電路的功能級(jí)的驗(yàn)證。 HDL設(shè)計(jì)的電路類似于計(jì)算機(jī)編程。設(shè)計(jì)的電路類似于計(jì)算機(jī)編程。 常用的常用的HDL語(yǔ)言:語(yǔ)言:VHDL 、Verilog HDL VHDL是美國(guó)國(guó)防部在是美國(guó)國(guó)防部在20世紀(jì)世紀(jì)80年代初為實(shí)現(xiàn)其高速集成

3、電路年代初為實(shí)現(xiàn)其高速集成電路硬件硬件VHSIC計(jì)劃提出的描述語(yǔ)言計(jì)劃提出的描述語(yǔ)言; IEEE從從1986年開(kāi)始致力于年開(kāi)始致力于VHDL標(biāo)準(zhǔn)化工作,融合了其它標(biāo)準(zhǔn)化工作,融合了其它ASIC芯片制造商開(kāi)發(fā)的硬件描述語(yǔ)言的優(yōu)點(diǎn),于芯片制造商開(kāi)發(fā)的硬件描述語(yǔ)言的優(yōu)點(diǎn),于93年形成了標(biāo)年形成了標(biāo)準(zhǔn)版本準(zhǔn)版本IEEE.std_1164)。)。 2019年,我國(guó)國(guó)家技術(shù)監(jiān)督局推薦年,我國(guó)國(guó)家技術(shù)監(jiān)督局推薦VHDL做為電子設(shè)計(jì)自動(dòng)化做為電子設(shè)計(jì)自動(dòng)化硬件描述語(yǔ)言的國(guó)家標(biāo)準(zhǔn)。硬件描述語(yǔ)言的國(guó)家標(biāo)準(zhǔn)。 VHDL 概述:概述:VHDL VHSIC Hardwarter Description Language

4、 Very High speed integrated circuitVHSIC 覆蓋面廣,系統(tǒng)硬件描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言覆蓋面廣,系統(tǒng)硬件描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言; VHDL語(yǔ)言具有良好的可讀性,既可以被計(jì)算機(jī)接受,也容易被人們語(yǔ)言具有良好的可讀性,既可以被計(jì)算機(jī)接受,也容易被人們所理解所理解; VHDL語(yǔ)言可以與工藝無(wú)關(guān)編程語(yǔ)言可以與工藝無(wú)關(guān)編程; VHDL語(yǔ)言已做為一種語(yǔ)言已做為一種IEEE的工業(yè)標(biāo)準(zhǔn),便于使用、交流和推廣。的工業(yè)標(biāo)準(zhǔn),便于使用、交流和推廣。 VHDL語(yǔ)言的不足之處: VHDL優(yōu)點(diǎn)優(yōu)點(diǎn): 設(shè)計(jì)的最終實(shí)現(xiàn)取決于針對(duì)目標(biāo)器件的編程器,工具的不同會(huì)

5、導(dǎo)致綜設(shè)計(jì)的最終實(shí)現(xiàn)取決于針對(duì)目標(biāo)器件的編程器,工具的不同會(huì)導(dǎo)致綜合質(zhì)量不一樣。合質(zhì)量不一樣。3.1.1 標(biāo)識(shí)符標(biāo)識(shí)符Identifiers)要求:要求: 首字符必須是字母首字符必須是字母 末字符不能為下劃線末字符不能為下劃線 不允許出現(xiàn)兩個(gè)連續(xù)的下劃線不允許出現(xiàn)兩個(gè)連續(xù)的下劃線 不區(qū)分大小寫(xiě)不區(qū)分大小寫(xiě) VHDL定義的保留字關(guān)鍵字),不能用作標(biāo)識(shí)符定義的保留字關(guān)鍵字),不能用作標(biāo)識(shí)符 標(biāo)識(shí)符字符最長(zhǎng)可以是標(biāo)識(shí)符字符最長(zhǎng)可以是32個(gè)字符。個(gè)字符。注釋由兩個(gè)連續(xù)的虛線()引導(dǎo)。注釋由兩個(gè)連續(xù)的虛線()引導(dǎo)。3.1 VHDL語(yǔ)言基礎(chǔ)語(yǔ)言基礎(chǔ) 標(biāo)識(shí)符用來(lái)定義常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字

6、,標(biāo)識(shí)符用來(lái)定義常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字,由字母由字母AZ,az)、數(shù)字)、數(shù)字09和下劃線和下劃線_字符組成。字符組成。例如:例如:ABS, ACCESS,AFTER,ALL,AND,ARCHITECTURE,ARRAY,ATTRIBUTE,BEGIN,BODY,BUFFER,BUS,CASE ,COMPONENT,CONSTANT,DISCONNECT,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,F(xiàn)ILE,F(xiàn)OR,F(xiàn)UNCTION,GENERIC,GROUP,IF,INPURE,IN,INOUT,IS,LABEL,LIBRARY,LINKAGE,L

7、OOP,MAP,MOD,NAND,NEW,NEXT,NOR ,NOT,NULL,OF,ON,OPEN ,OR ,OTHERS,OUT,PACKAGE,POUT,PROCEDURE ,PROCESS,PURE,RANGE ,RECODE,REM,REPORT,RETURN,ROL,ROR,SELECT,SHARED,SIGNAL,SLA,SLL,SRA,SUBTYPE,THEN,TRANSPORT,TO,TYPE ,UNAFFECTED,UNITS,UNTIL,USE,VARIABLE,WAIT,WHEN,WHILE,WITH,XOR ,XNOR 關(guān)鍵字保留字):關(guān)鍵字保留字): 關(guān)鍵字關(guān)鍵字k

8、eyword是是VHDL中具有特別含義的單詞,只中具有特別含義的單詞,只能做為固定的用途,用戶不能用其做為標(biāo)識(shí)符。能做為固定的用途,用戶不能用其做為標(biāo)識(shí)符。3.1.2 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象Date Objects) 常量常量ConstantConstant bus_width: integer := 8; -定義總線寬度為常數(shù)定義總線寬度為常數(shù)8 數(shù)據(jù)對(duì)象包括常量、變量、信號(hào)和文件四種類型。數(shù)據(jù)對(duì)象包括常量、變量、信號(hào)和文件四種類型。 常量是對(duì)某一常量名賦予一個(gè)固定的值,而且只能賦值一次。通常賦常量是對(duì)某一常量名賦予一個(gè)固定的值,而且只能賦值一次。通常賦值在程序開(kāi)始前進(jìn)行,該值的數(shù)據(jù)類型則在說(shuō)明語(yǔ)

9、句中指明。值在程序開(kāi)始前進(jìn)行,該值的數(shù)據(jù)類型則在說(shuō)明語(yǔ)句中指明。Constant 常數(shù)名:數(shù)據(jù)類型:表達(dá)式常數(shù)名:數(shù)據(jù)類型:表達(dá)式Constant Vcc:real:=5.0; -定義定義Vcc的數(shù)據(jù)類型是實(shí)數(shù),賦值為的數(shù)據(jù)類型是實(shí)數(shù),賦值為5.0V常量所賦的值應(yīng)和定義的數(shù)據(jù)類型一致;常量所賦的值應(yīng)和定義的數(shù)據(jù)類型一致;常量在程序包、實(shí)體、構(gòu)造體或進(jìn)程的說(shuō)明性區(qū)域內(nèi)必須加以說(shuō)明。定義在程序包常量在程序包、實(shí)體、構(gòu)造體或進(jìn)程的說(shuō)明性區(qū)域內(nèi)必須加以說(shuō)明。定義在程序包內(nèi)的常量可供所含的任何實(shí)體、構(gòu)造體所引用,定義在實(shí)體說(shuō)明內(nèi)的常量只能在該內(nèi)的常量可供所含的任何實(shí)體、構(gòu)造體所引用,定義在實(shí)體說(shuō)明內(nèi)的常

10、量只能在該實(shí)體內(nèi)可見(jiàn),定義在進(jìn)程說(shuō)明性區(qū)域中的常量只能在該進(jìn)程內(nèi)可見(jiàn)。實(shí)體內(nèi)可見(jiàn),定義在進(jìn)程說(shuō)明性區(qū)域中的常量只能在該進(jìn)程內(nèi)可見(jiàn)。Variable 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 :初始值初始值;Variable count: integer 0 to 255:=20 ; - 定義定義count整數(shù)變量,變化整數(shù)變量,變化 范圍范圍0255,初始值為,初始值為20。 變量變量Variable 變量只能在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句和過(guò)程語(yǔ)句結(jié)構(gòu)中使用。變變量只能在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句和過(guò)程語(yǔ)句結(jié)構(gòu)中使用。變量的賦值是直接的,非預(yù)設(shè)的,分配給變量的值立即成為當(dāng)前值,量的賦值是直接的,非預(yù)設(shè)的,分配給變量的

11、值立即成為當(dāng)前值,變量不能表達(dá)變量不能表達(dá)“連線或存儲(chǔ)元件,不能設(shè)置傳輸延遲量。連線或存儲(chǔ)元件,不能設(shè)置傳輸延遲量。變量賦值語(yǔ)句:變量賦值語(yǔ)句: 目標(biāo)變量名目標(biāo)變量名 := 表達(dá)式表達(dá)式;變量定義語(yǔ)句:變量定義語(yǔ)句:x:=10.0; - 實(shí)數(shù)變量賦值為實(shí)數(shù)變量賦值為10.0Y:=1.5+x; - 運(yùn)算表達(dá)式賦值,注意表達(dá)式必須與目標(biāo)變量的數(shù)據(jù)類型相同運(yùn)算表達(dá)式賦值,注意表達(dá)式必須與目標(biāo)變量的數(shù)據(jù)類型相同A(3 to 6):=(“1101”); -位矢量賦值位矢量賦值Signal 信號(hào)名信號(hào)名: 數(shù)據(jù)類型數(shù)據(jù)類型 :初始值初始值Signal clock:bit :=; -定義時(shí)鐘信號(hào)類型,初始值

12、為定義時(shí)鐘信號(hào)類型,初始值為0 信號(hào)信號(hào)Signal 信號(hào)表示邏輯門的輸入或輸出,類似于連接線,也可以表達(dá)存信號(hào)表示邏輯門的輸入或輸出,類似于連接線,也可以表達(dá)存儲(chǔ)元件的狀態(tài)。信號(hào)通常在構(gòu)造體、程序包和實(shí)體中說(shuō)明。儲(chǔ)元件的狀態(tài)。信號(hào)通常在構(gòu)造體、程序包和實(shí)體中說(shuō)明。信號(hào)定義語(yǔ)句:信號(hào)定義語(yǔ)句:Signal count:BIT_VECTOR(3 DOWNTO 0); -定義定義count為為4位位矢量位位矢量信號(hào)賦值語(yǔ)句:信號(hào)賦值語(yǔ)句: 目標(biāo)信號(hào)名目標(biāo)信號(hào)名 = 表達(dá)式表達(dá)式; x=9;Z=x after 5 ns; - 在在5ns后將后將x的值賦予的值賦予z3.1.2 數(shù)據(jù)類型數(shù)據(jù)類型l 布爾

13、:布爾:(Boolean)l 位位: ( Bit )l TYPE BIT IS (0,1); -取值為取值為0和和1,用于邏輯運(yùn)算,用于邏輯運(yùn)算 l 位矢量位矢量: ( Bit_Vector )l TYPE BIT_VECTOR IS ARRAY (Natural range) OF BIT; - 基于基于Bit類型的數(shù)類型的數(shù)l 組,用組,用于邏輯運(yùn)算于邏輯運(yùn)算 l SIGNAL a:Bit_Vector(0 TO 7); SIGNAL a:Bit_Vector ( 7 DOWNTO 0) VHDL的預(yù)定義數(shù)據(jù)類型的預(yù)定義數(shù)據(jù)類型 在在VHDL標(biāo)準(zhǔn)程序包標(biāo)準(zhǔn)程序包STANDARD中定義好,實(shí)

14、際使用過(guò)程中,已中定義好,實(shí)際使用過(guò)程中,已自動(dòng)包含進(jìn)自動(dòng)包含進(jìn)VHDL源文件中,不需要通過(guò)源文件中,不需要通過(guò)USE語(yǔ)句顯式調(diào)用。語(yǔ)句顯式調(diào)用。 TYPE BOOLEAN IS (FALSE, TRUE); - 取值為取值為FALSE和和TRUE,不是數(shù)值,不,不是數(shù)值,不 能運(yùn)算,一般用于關(guān)系運(yùn)算符能運(yùn)算,一般用于關(guān)系運(yùn)算符l 整數(shù):整數(shù):(Integer)l 取值范圍取值范圍 -(231-1) (231-1),可用,可用32位有符號(hào)的二進(jìn)制數(shù)表示位有符號(hào)的二進(jìn)制數(shù)表示l variable a:integer range -63 to 63l 在實(shí)際應(yīng)用中,在實(shí)際應(yīng)用中,VHDL仿真器將仿

15、真器將Integer做為有符號(hào)數(shù)處理,而做為有符號(hào)數(shù)處理,而VHDL綜合器將綜合器將Integer做為無(wú)符號(hào)數(shù)處理;做為無(wú)符號(hào)數(shù)處理;l 要求用要求用RANGE子句為所定義的數(shù)限定范圍,以便根據(jù)范圍來(lái)決子句為所定義的數(shù)限定范圍,以便根據(jù)范圍來(lái)決定表示此信號(hào)或變量的二進(jìn)制數(shù)的位數(shù)。定表示此信號(hào)或變量的二進(jìn)制數(shù)的位數(shù)。 l 字符:字符:(Character)l TYPE CHARACTER IS (NUL, SOH,STX, , , !,); -通常用通常用引起引起 l 來(lái),區(qū)分來(lái),區(qū)分大小寫(xiě);大小寫(xiě);l 字符串:字符串:(String)lVARIABLE string_var: STRING (

16、1 TO 7);lstring_var:=“A B C D” ; - 通常用通常用“”“”引起來(lái),區(qū)分大小寫(xiě);引起來(lái),區(qū)分大小寫(xiě);l 實(shí)數(shù):實(shí)數(shù):(Real)l 取值范圍取值范圍 -1.0E38 +1.0E38,僅用于仿真不可綜合,僅用于仿真不可綜合l 1.0 -十進(jìn)制浮點(diǎn)數(shù)十進(jìn)制浮點(diǎn)數(shù)l 843.6e+4 -八進(jìn)制浮點(diǎn)數(shù)八進(jìn)制浮點(diǎn)數(shù)l 43.6E-4 -十進(jìn)制浮點(diǎn)數(shù)十進(jìn)制浮點(diǎn)數(shù)l 時(shí)間:時(shí)間:(Time)l 物理量數(shù)據(jù),完整的包括整數(shù)和單位兩個(gè)部分,用至少一個(gè)空格物理量數(shù)據(jù),完整的包括整數(shù)和單位兩個(gè)部分,用至少一個(gè)空格隔開(kāi),僅用于仿真不可綜合;隔開(kāi),僅用于仿真不可綜合;l fs,ps,ns,

17、us,ms,sec,min,hrl 錯(cuò)誤等級(jí)錯(cuò)誤等級(jí)Severity Level) :l 表示系統(tǒng)狀態(tài),僅用于仿真不可綜合;表示系統(tǒng)狀態(tài),僅用于仿真不可綜合;lTYPE severity_level IS (NOTE、WARNING、ERROR、FAILURE); IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量l 標(biāo)準(zhǔn)邏輯位標(biāo)準(zhǔn)邏輯位Std_Logic)l 標(biāo)準(zhǔn)邏輯位矢量(標(biāo)準(zhǔn)邏輯位矢量( Std_Logic_vector)基于基于Std_Logic類型的數(shù)組;類型的數(shù)組; 使用使用Std_Logic和和 Std_Logic_Vector要調(diào)用要調(diào)用IEEE庫(kù)中的庫(kù)中的Std_Logic

18、_1164 程序包;就綜合而言,能夠在數(shù)字器件中實(shí)現(xiàn)的是程序包;就綜合而言,能夠在數(shù)字器件中實(shí)現(xiàn)的是“、0、1、Z四種狀態(tài)。四種狀態(tài)。 在條件語(yǔ)句中,必須要全面考慮在條件語(yǔ)句中,必須要全面考慮Std_Logic的所有可能取值情況,否則綜的所有可能取值情況,否則綜合器可能會(huì)插入不希望的鎖存器。合器可能會(huì)插入不希望的鎖存器。U:Uninitialized; X:Forcing Unkown; 0: Forcing 0 1: Forcing 1 Z:High Impedance W:Weak UnknownL: Weak 0 H: Weak 1 :Dont care枚舉:枚舉:type states

19、 is (idle,decision,read,write); type boolean is (false,true); type bit is (0,1);數(shù)組:數(shù)組:type value_type is array (127 downto 0) of integer; type matrix_type is array (0 to 15, 0 to 31) of std_logic; 用戶自定義用戶自定義l TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 OF 基本數(shù)據(jù)類型基本數(shù)據(jù)類型l 或或 TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義l SUBTYP

20、E 子類型名子類型名 IS 基本數(shù)據(jù)類型定義基本數(shù)據(jù)類型定義 RANGE 約束范圍約束范圍subtype digit is integer range 0 to 9;3.1.3 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換VHDL為強(qiáng)定義類型語(yǔ)言,不同類型的數(shù)據(jù)不能進(jìn)行運(yùn)算和直接賦值。為強(qiáng)定義類型語(yǔ)言,不同類型的數(shù)據(jù)不能進(jìn)行運(yùn)算和直接賦值。l 類型標(biāo)記法類型標(biāo)記法Variable A: integer; Variable B: real;A= integer (B); B=real (A);l 函數(shù)法函數(shù)法Conv_interger (A);-由由std_logic轉(zhuǎn)換為轉(zhuǎn)換為integer型,在型,在std_l

21、ogic_unsigned包。包。l 常數(shù)轉(zhuǎn)換法常數(shù)轉(zhuǎn)換法 / 常量轉(zhuǎn)換法常量轉(zhuǎn)換法Type conv_table is array(std_logic) of bit;Constant table: conv_table:=(0|L=0, 1|H=1, others=0);Signal a: bit; signal b: std_logic;A=table(b); - 將將std_logic型轉(zhuǎn)換為型轉(zhuǎn)換為bit型型具有轉(zhuǎn)換表性質(zhì)的常數(shù)具有轉(zhuǎn)換表性質(zhì)的常數(shù) 在在“STD_LOGIC_1164”、“STD_LOGIC_ARITH和和 “STD_LOGIC_UNSIGNED的程序包中提供的數(shù)據(jù)類

22、型變換函數(shù)。的程序包中提供的數(shù)據(jù)類型變換函數(shù)。 屬性屬性屬性提供的是關(guān)于信號(hào)、類型等的指定特性。屬性提供的是關(guān)于信號(hào)、類型等的指定特性。 event:若屬性對(duì)象有事件發(fā)生,則生成布爾值:若屬性對(duì)象有事件發(fā)生,則生成布爾值“true”,常用來(lái)檢查時(shí),常用來(lái)檢查時(shí)鐘邊沿是否有效。鐘邊沿是否有效。上升沿:上升沿:Clock EVENT AND Clock=1 range:生成一個(gè)限制性數(shù)組對(duì)象的范圍:生成一個(gè)限制性數(shù)組對(duì)象的范圍left:生成數(shù)據(jù)類型或數(shù)據(jù)子類型的左邊界值;:生成數(shù)據(jù)類型或數(shù)據(jù)子類型的左邊界值;right , high, low, lengthrange: “0 to n” ; re

23、verse_range:“n downto 0” 運(yùn)算符運(yùn)算符l 算術(shù)運(yùn)算符:,算術(shù)運(yùn)算符:, , *, / , MOD, REM ,SLL ,SRL ,SLA, SRA ,ROL ,ROR ,*,ABSl 關(guān)系運(yùn)算符:,關(guān)系運(yùn)算符:, /, , =l 邏輯運(yùn)算符:邏輯運(yùn)算符:AND,OR,NAND,NOR,XNOR,NOT,XORl 賦值運(yùn)算符:賦值運(yùn)算符:l 其他運(yùn)算符:,其他運(yùn)算符:, ,& 并置操作符并置操作符 SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; .a

24、= 10d(1)1 ; - 元素與元素并置,并置后的數(shù)組長(zhǎng)度為元素與元素并置,并置后的數(shù)組長(zhǎng)度為4 .IF a d = 101011 THEN . - 在在IF條件句中可以使用并置符條件句中可以使用并置符 運(yùn)算符優(yōu)先級(jí)別運(yùn)算符優(yōu)先級(jí)別邏輯、算術(shù)運(yùn)算符(邏輯、算術(shù)運(yùn)算符( NOT, *,ABS) 乘法運(yùn)算符(乘法運(yùn)算符(/ , MOD, REM, * ) 正負(fù)運(yùn)算符:,正負(fù)運(yùn)算符:, , 加減、并置運(yùn)算符:,加減、并置運(yùn)算符:, , & 關(guān)系運(yùn)算符:,關(guān)系運(yùn)算符:, /, , =邏輯運(yùn)算符:邏輯運(yùn)算符:AND,OR,NAND,NOR,XNOR,NOT,XOR 移位運(yùn)算符的左邊為一維數(shù)組,其類型必

25、須是移位運(yùn)算符的左邊為一維數(shù)組,其類型必須是BIT或或BOOLEAN,右邊必須是整數(shù)移位次數(shù)為整數(shù)的絕對(duì)值。右邊必須是整數(shù)移位次數(shù)為整數(shù)的絕對(duì)值。移位運(yùn)算符操作示意圖移位運(yùn)算符操作示意圖“1100SLL1 =“1000” “1100SRL1 =“0110” “1100SLA1 =“1000” “1100SRA1 =“1110” “1100ROL1 =“1001” “1100ROR1 =“0110” SLL:將位向量左移,右邊移空位補(bǔ)零;:將位向量左移,右邊移空位補(bǔ)零;SRL:將位向量右移,左邊移空位補(bǔ)零;:將位向量右移,左邊移空位補(bǔ)零;SLA:將位向量左移,右邊第一位的數(shù)值保持原值不變;:將位

26、向量左移,右邊第一位的數(shù)值保持原值不變;SRA:將位向量右移,左邊第一位的數(shù)值保持原值不變;:將位向量右移,左邊第一位的數(shù)值保持原值不變;ROL和和ROR:自循環(huán)左右移位。:自循環(huán)左右移位。取余運(yùn)算取余運(yùn)算a REM b的符號(hào)與的符號(hào)與a相同,其絕對(duì)值小于相同,其絕對(duì)值小于b的絕對(duì)值。的絕對(duì)值。 例如:(例如:(-5REM 2=(-1) 5 REM 2=(1) 取模運(yùn)算取模運(yùn)算a MOD b的符號(hào)與的符號(hào)與b相同,其絕對(duì)值小于相同,其絕對(duì)值小于b的絕對(duì)值。的絕對(duì)值。 例如:(例如:(-5MOD 2=1 5 MOD (- 2)=(-1)3.2 VHDL基本結(jié)構(gòu)基本結(jié)構(gòu) 實(shí)體實(shí)體Entity):描

27、述所設(shè)計(jì)的系統(tǒng)的外部接口信號(hào),定義電路設(shè)計(jì)中):描述所設(shè)計(jì)的系統(tǒng)的外部接口信號(hào),定義電路設(shè)計(jì)中所有的輸入和輸出端口;所有的輸入和輸出端口; 結(jié)構(gòu)體結(jié)構(gòu)體 (Architecture):描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為;:描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為; 包集合包集合 (Package):存放各設(shè)計(jì)模塊能共享的數(shù)據(jù)類型、常數(shù)和子程序等;:存放各設(shè)計(jì)模塊能共享的數(shù)據(jù)類型、常數(shù)和子程序等; 配置配置 (Configuration):指定實(shí)體所對(duì)應(yīng)的結(jié)構(gòu)體;:指定實(shí)體所對(duì)應(yīng)的結(jié)構(gòu)體; 庫(kù)庫(kù) (Library):存放已經(jīng)編譯的實(shí)體、結(jié)構(gòu)體、包集合和配置。:存放已經(jīng)編譯的實(shí)體、結(jié)構(gòu)體、包集合和配置。LIBRARY IE

28、EE; - 庫(kù)、程序包的說(shuō)明調(diào)用庫(kù)、程序包的說(shuō)明調(diào)用 USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider IS - 實(shí)體聲明實(shí)體聲明PORT(Clock: IN Std_logic; Clkout: OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS - 結(jié)構(gòu)體定義結(jié)構(gòu)體定義SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clko

29、ut=Clk;END;VHDL的基本設(shè)計(jì)單元結(jié)構(gòu):程序包說(shuō)明、實(shí)體說(shuō)明和結(jié)構(gòu)體說(shuō)明三部分。的基本設(shè)計(jì)單元結(jié)構(gòu):程序包說(shuō)明、實(shí)體說(shuō)明和結(jié)構(gòu)體說(shuō)明三部分。3.2.1 實(shí)體實(shí)體Entity)ENTITY 實(shí)體名實(shí)體名 IS GENERIC常數(shù)名:數(shù)據(jù)類型:設(shè)定值)常數(shù)名:數(shù)據(jù)類型:設(shè)定值)PORT( 端口名端口名1:端口方向:端口方向 端口類型;端口類型; 端口名端口名2:端口方向:端口方向 端口類型;端口類型; . . 端口名端口名n:端口方向:端口方向 端口類型端口類型);END 實(shí)體名實(shí)體名; 實(shí)體描述了設(shè)計(jì)單元的輸入輸出接口信號(hào)或引腳,是設(shè)計(jì)實(shí)體實(shí)體描述了設(shè)計(jì)單元的輸入輸出接口信號(hào)或引腳,是

30、設(shè)計(jì)實(shí)體經(jīng)封裝后對(duì)外的一個(gè)通信界面。經(jīng)封裝后對(duì)外的一個(gè)通信界面。ENTITY FreDevider ISPORT(Clock: IN Std_logic; Clokout: OUT Std_logic);END;實(shí)體名實(shí)體名最后一條端口聲明語(yǔ)句無(wú)分號(hào)最后一條端口聲明語(yǔ)句無(wú)分號(hào)端口方向端口方向端口類型端口類型端口名端口名 實(shí)體名由設(shè)計(jì)者自由命名,用來(lái)表示被設(shè)計(jì)電路芯片的名稱,實(shí)體名由設(shè)計(jì)者自由命名,用來(lái)表示被設(shè)計(jì)電路芯片的名稱,但是必須與但是必須與VHDL程序的文件名稱相同。要與文件名一致;程序的文件名稱相同。要與文件名一致;例如:例如: GENERICwide:integer:=32););

31、-說(shuō)明寬度為說(shuō)明寬度為32 GENERICtmp:integer:=1ns);); -說(shuō)明延時(shí)說(shuō)明延時(shí)1 ns 類屬說(shuō)明類屬說(shuō)明 類屬為設(shè)計(jì)實(shí)體與外界通信的靜態(tài)信息提供通道,用來(lái)規(guī)類屬為設(shè)計(jì)實(shí)體與外界通信的靜態(tài)信息提供通道,用來(lái)規(guī)定端口的大小、實(shí)體中子元件的數(shù)目和實(shí)體的定時(shí)特性等。定端口的大小、實(shí)體中子元件的數(shù)目和實(shí)體的定時(shí)特性等。格式:格式: GENERIC常數(shù)名:數(shù)據(jù)類型:設(shè)定值;常數(shù)名:數(shù)據(jù)類型:設(shè)定值; 常數(shù)名:數(shù)據(jù)類型:設(shè)定值);常數(shù)名:數(shù)據(jù)類型:設(shè)定值); 端口方向:端口方向:IN, OUT,INOUT,BUFFERINOUTINOUTBUFFER“OUT和和“BUFFER都可定義

32、輸出端口都可定義輸出端口;若實(shí)體內(nèi)部需要反饋輸出若實(shí)體內(nèi)部需要反饋輸出信號(hào),則輸出端口必須被信號(hào),則輸出端口必須被設(shè)置為設(shè)置為“BUFFER”,而不,而不能為能為“OUT”。 同方向、同類型的端口可放在同一個(gè)說(shuō)明語(yǔ)句中。同方向、同類型的端口可放在同一個(gè)說(shuō)明語(yǔ)句中。ENTITY Full_adder IS PORT( a, b, c: IN BIT; sum, carry: OUT BIT ); END Full_adder;3.2.2 結(jié)構(gòu)體結(jié)構(gòu)體 (Architecture)ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 聲明語(yǔ)句聲明語(yǔ)句BEGIN 功能描述語(yǔ)句功能描述

33、語(yǔ)句END 結(jié)構(gòu)體名結(jié)構(gòu)體名;用于聲明該結(jié)構(gòu)體將用到的信號(hào)、數(shù)據(jù)類型、常數(shù)、子程用于聲明該結(jié)構(gòu)體將用到的信號(hào)、數(shù)據(jù)類型、常數(shù)、子程序和元件等。聲明的內(nèi)容是局部的。序和元件等。聲明的內(nèi)容是局部的。具體描述結(jié)構(gòu)體的功能和行為。具體描述結(jié)構(gòu)體的功能和行為。 結(jié)構(gòu)體定義了設(shè)計(jì)單元具體的功能,描述了該基本設(shè)計(jì)單元的結(jié)構(gòu)體定義了設(shè)計(jì)單元具體的功能,描述了該基本設(shè)計(jì)單元的行為、元件和內(nèi)部的連接關(guān)系。行為、元件和內(nèi)部的連接關(guān)系。 一個(gè)實(shí)體可對(duì)應(yīng)多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體代表該實(shí)體功能的不同實(shí)現(xiàn)方案或不同一個(gè)實(shí)體可對(duì)應(yīng)多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體代表該實(shí)體功能的不同實(shí)現(xiàn)方案或不同實(shí)現(xiàn)方式。同一時(shí)刻只有一個(gè)結(jié)構(gòu)體起作用,通

34、過(guò)實(shí)現(xiàn)方式。同一時(shí)刻只有一個(gè)結(jié)構(gòu)體起作用,通過(guò)CONFIGURATION決定用哪個(gè)結(jié)構(gòu)決定用哪個(gè)結(jié)構(gòu)體進(jìn)行仿真或綜合。體進(jìn)行仿真或綜合。 在結(jié)構(gòu)體描述中,具體給出了輸入、輸出信號(hào)之間的邏輯關(guān)系。在結(jié)構(gòu)體描述中,具體給出了輸入、輸出信號(hào)之間的邏輯關(guān)系。ARCHITECTURE Behavior OF FreDevider IS - 結(jié)構(gòu)體定義結(jié)構(gòu)體定義SIGNAL Clk:Std_Logic; -信號(hào)聲明信號(hào)聲明BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=C

35、lk;END;功能描述語(yǔ)句功能描述語(yǔ)句進(jìn)程進(jìn)程順序順序語(yǔ)句語(yǔ)句3.2.3 庫(kù)、程序包的調(diào)用庫(kù)、程序包的調(diào)用LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;LIBRARY 庫(kù)名庫(kù)名;USE 庫(kù)名庫(kù)名.程序包名程序包名.項(xiàng)目名;項(xiàng)目名;調(diào)用此程序包中所有的資源調(diào)用此程序包中所有的資源LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_Arith.ALL;USE IEEE.Std_Logic_Unsigned.ALL;3.3 VHDL語(yǔ)句語(yǔ)句3.3.1 并行語(yǔ)句并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行是同時(shí)進(jìn)行

36、,執(zhí)行順序與書(shū)寫(xiě)順序無(wú)關(guān)。在結(jié)構(gòu)體中的執(zhí)行是同時(shí)進(jìn)行,執(zhí)行順序與書(shū)寫(xiě)順序無(wú)關(guān)。 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句l 簡(jiǎn)單賦值語(yǔ)句簡(jiǎn)單賦值語(yǔ)句目標(biāo)信號(hào)名目標(biāo)信號(hào)名 = 表達(dá)式表達(dá)式目標(biāo)信號(hào)的數(shù)據(jù)類型與右邊表達(dá)式一致目標(biāo)信號(hào)的數(shù)據(jù)類型與右邊表達(dá)式一致ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=Clk;l 選擇信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句WIT

37、H 選擇表達(dá)式選擇表達(dá)式 SELECT賦值目標(biāo)信號(hào)賦值目標(biāo)信號(hào) = 表達(dá)式表達(dá)式1 WHEN 選擇值選擇值1, 表達(dá)式表達(dá)式2 WHEN 選擇值選擇值1, 表達(dá)式表達(dá)式n WHEN OTHERS; 選擇值要覆蓋所有可能情況,若不能一一指定,用選擇值要覆蓋所有可能情況,若不能一一指定,用OTHERS為其他情為其他情況找個(gè)出口;況找個(gè)出口; 選擇值必須互斥,不能出現(xiàn)條件重復(fù)或重疊的情況。選擇值必須互斥,不能出現(xiàn)條件重復(fù)或重疊的情況。LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY MUX ISPORT( Data0,Data1,Data2,Data3:

38、IN Std_Logic_VECTOR(7 DOWNTO 0); Sel:IN Std_Logic_Vector(1 DOWNTO 0); DOUT:OUT Std_Logic_Vector(7 DOWNTO 0);END;ARCHITECTURE DataFlow OF MUX ISBEGIN WITH Sel SELECT DOUT= Data0 WHEN “00”, Data1 WHEN “01”, Data2 WHEN “10”, Data3 WHEN “11”,“00000000” WHEN OTHERS;END;地址選線地址選線Sel輸出輸出DOUT00Data001Data110

39、Data211Data34X1多路選擇器多路選擇器l 條件信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句賦值目標(biāo)信號(hào)賦值目標(biāo)信號(hào) = 表達(dá)式表達(dá)式1 WHEN 賦值條件賦值條件1 ELSE 表達(dá)式表達(dá)式2 WHEN 賦值條件賦值條件2 ELSE 表達(dá)式表達(dá)式n WHEN 賦值條件賦值條件n ELSE 表達(dá)式;表達(dá)式;各賦值語(yǔ)句有優(yōu)先級(jí)的差別,按書(shū)寫(xiě)順序從高到低排列;各賦值語(yǔ)句有優(yōu)先級(jí)的差別,按書(shū)寫(xiě)順序從高到低排列;各賦值條件可以重疊。各賦值條件可以重疊。8輸入優(yōu)先編碼器輸入優(yōu)先編碼器I7I6I5 A2I4 A1I3 A0 I2I1I0高高低低優(yōu)優(yōu)先先級(jí)級(jí)LIBRARY IEEE;USE IEEE.Std_Log

40、ic_1164.ALL;ENTITY Priority_Encoder ISPORT( I:IN Std_Logic_VECTOR(7 DOWNTO 0); A:OUT Std_Logic_Vector(2 DOWNTO 0);END;ARCHITECTURE DataFlow OF Priority_Encoder ISBEGIN A=“111” WHEN I(7)=1 ELSE “110” WHEN I(6)=1 ELSE “101” WHEN I(5)=1 ELSE “100” WHEN I(4)=1 ELSE “011” WHEN I(3)=1 ELSE “010” WHEN I(2)

41、=1 ELSE “001” WHEN I(1)=1 ELSE “000” WHEN I(0)=1 ELSE “111”;END; 進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句l 進(jìn)程本身是并行語(yǔ)句,但內(nèi)部是順序語(yǔ)句;進(jìn)程本身是并行語(yǔ)句,但內(nèi)部是順序語(yǔ)句;l 進(jìn)程只有在特定的時(shí)刻敏感信號(hào)發(fā)生變化才會(huì)被激活。進(jìn)程只有在特定的時(shí)刻敏感信號(hào)發(fā)生變化才會(huì)被激活。 進(jìn)程標(biāo)號(hào):進(jìn)程標(biāo)號(hào): PROCESS (敏感信號(hào)參數(shù)表)(敏感信號(hào)參數(shù)表) 聲明區(qū);聲明區(qū); BEGIN 順序語(yǔ)句順序語(yǔ)句END PROCESS 進(jìn)程標(biāo)號(hào);進(jìn)程標(biāo)號(hào);在進(jìn)程中起作用的局部變量在進(jìn)程中起作用的局部變量 一個(gè)進(jìn)程可以有多個(gè)敏感信號(hào),任一個(gè)進(jìn)程可以有多個(gè)敏感信號(hào)

42、,任一敏感信號(hào)發(fā)生變化都會(huì)激活進(jìn)程一敏感信號(hào)發(fā)生變化都會(huì)激活進(jìn)程 進(jìn)程語(yǔ)句定義順序語(yǔ)句模塊,用于將從外部獲得的信號(hào)值,進(jìn)程語(yǔ)句定義順序語(yǔ)句模塊,用于將從外部獲得的信號(hào)值,或內(nèi)部的運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值?;騼?nèi)部的運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值。l 進(jìn)程的工作原理進(jìn)程的工作原理當(dāng)某個(gè)敏感信號(hào)的值發(fā)生當(dāng)某個(gè)敏感信號(hào)的值發(fā)生變化時(shí),每個(gè)進(jìn)程語(yǔ)句立變化時(shí),每個(gè)進(jìn)程語(yǔ)句立即完成進(jìn)程內(nèi)順序語(yǔ)句所即完成進(jìn)程內(nèi)順序語(yǔ)句所定義的功能行為。定義的功能行為。執(zhí)行過(guò)程終止執(zhí)行過(guò)程終止 順序語(yǔ)句所定義的功順序語(yǔ)句所定義的功能行為的結(jié)果可以賦值給能行為的結(jié)果可以賦值給信號(hào),并通過(guò)信號(hào)被其他信號(hào),并通過(guò)信號(hào)被其他的進(jìn)程讀

43、取或賦值。的進(jìn)程讀取或賦值。l 進(jìn)程與時(shí)鐘進(jìn)程與時(shí)鐘在每個(gè)上升沿啟動(dòng)一次進(jìn)程執(zhí)行進(jìn)程內(nèi)所有的語(yǔ)句)。在每個(gè)上升沿啟動(dòng)一次進(jìn)程執(zhí)行進(jìn)程內(nèi)所有的語(yǔ)句)。上升沿描述:上升沿描述:Clock EVENT AND Clock=1下降沿描述:下降沿描述:Clock EVENT AND Clock=0上升沿描述:上升沿描述: rising_edge (Clock)下降沿描述:下降沿描述: falling_edge (Clock)LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT( Clock: IN Std_logic; Cl

44、kout: OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk: Std_Logic;BEGIN PROCESS (Clock) 將時(shí)鐘作為進(jìn)程的敏感信號(hào)將時(shí)鐘作為進(jìn)程的敏感信號(hào)BEGIN IF rising_edge (Clock) THEN Clk=NOT Clk; 在時(shí)鐘上升沿執(zhí)行在時(shí)鐘上升沿執(zhí)行Clk=NOT Clk END IF;END PROCESS;Clkout=Clk;END;LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY Counter IS

45、PORT( RESET:IN Std_Logic; 異步復(fù)位信號(hào)異步復(fù)位信號(hào) Clock: IN Std_logic; 時(shí)鐘信號(hào)時(shí)鐘信號(hào) NUM: BUFFER Integer RANGE 0 TO 3); 計(jì)數(shù)器輸出值計(jì)數(shù)器輸出值END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (RESET, Clock) 將復(fù)位、時(shí)鐘作為進(jìn)程的敏感信號(hào)將復(fù)位、時(shí)鐘作為進(jìn)程的敏感信號(hào)BEGIN IF RESET=1 THEN Num=0; 復(fù)位時(shí)復(fù)位時(shí)Num清清0 ELSIF rising_edge (Clock) THEN IF Num=3 THE

46、N Num=0; 如果如果Num3就清就清0 ELSE Num=Num+1; 否則自加否則自加1 END IF; END IF;END PROCESS;END;仿真波形:仿真波形:LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_unsigned.ALL;ENTITY Counter ISPORT( clr :IN Std_Logic; inl: in std_logic_vector(3 downto 0); outl: out std_logic_vector(3 downto 0) 計(jì)數(shù)器輸出值計(jì)數(shù)器輸出值);END

47、;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (clr, inl) 進(jìn)程的敏感信號(hào)進(jìn)程的敏感信號(hào)BEGIN IF (clr=1 or inl=“1001”) THEN outl=“0000”; ELSE outl=inl+1; END IF;END PROCESS;END;重載符號(hào),在庫(kù)重載符號(hào),在庫(kù)IEEE.Std_Logic_unsigned中預(yù)先聲明中預(yù)先聲明LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_unsigned.ALL;ENTITY Counter

48、 ISPORT( clr,clk:IN Std_Logic; cnt: buffer std_logic_vector(3 downto 0) 計(jì)數(shù)器輸出值計(jì)數(shù)器輸出值);END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS BEGINWait until clkevent and clk=1; IF (clr=1 or cnt=9) THEN cnt=“0000”; ELSE cnt output output output output = s1; END CASE; END IF;END PROCESS;END;l 進(jìn)程注意事項(xiàng):進(jìn)程

49、注意事項(xiàng):l 進(jìn)程本身是并行語(yǔ)句,但內(nèi)部為順序語(yǔ)句;進(jìn)程本身是并行語(yǔ)句,但內(nèi)部為順序語(yǔ)句;l 進(jìn)程在敏感信號(hào)發(fā)生變化時(shí)被激活,在使用了敏感表的進(jìn)程中不能進(jìn)程在敏感信號(hào)發(fā)生變化時(shí)被激活,在使用了敏感表的進(jìn)程中不能含含wait語(yǔ)句;語(yǔ)句;l 在同一進(jìn)程中對(duì)同一信號(hào)多次賦值,只有最后一次生效;在同一進(jìn)程中對(duì)同一信號(hào)多次賦值,只有最后一次生效;l 在不同進(jìn)程中,不可對(duì)同一信號(hào)進(jìn)行賦值;在不同進(jìn)程中,不可對(duì)同一信號(hào)進(jìn)行賦值;l 一個(gè)進(jìn)程不可同時(shí)對(duì)時(shí)鐘上、下沿敏感。一個(gè)進(jìn)程不可同時(shí)對(duì)時(shí)鐘上、下沿敏感。l 進(jìn)程中的信號(hào)賦值是在進(jìn)程掛起時(shí)生效的,而變量賦值是即時(shí)生效。進(jìn)程中的信號(hào)賦值是在進(jìn)程掛起時(shí)生效的,而變

50、量賦值是即時(shí)生效。l 相對(duì)于結(jié)構(gòu)體而言,信號(hào)具有全局性,是進(jìn)程間進(jìn)行并行聯(lián)系的重相對(duì)于結(jié)構(gòu)體而言,信號(hào)具有全局性,是進(jìn)程間進(jìn)行并行聯(lián)系的重要途徑。要途徑。l 進(jìn)程為綜合器支持,且其建模方式直接影響仿真和綜合結(jié)果,綜合進(jìn)程為綜合器支持,且其建模方式直接影響仿真和綜合結(jié)果,綜合后對(duì)應(yīng)于進(jìn)程的硬件結(jié)構(gòu)對(duì)進(jìn)程中所有可讀入信號(hào)都是敏感的。后對(duì)應(yīng)于進(jìn)程的硬件結(jié)構(gòu)對(duì)進(jìn)程中所有可讀入信號(hào)都是敏感的。SIGNAL A,B: Integer RANGE 0 TO 7; : PROCESS (Clock) BEGIN IF rising_edge (Clock) THEN : B=A+1; B連接端口名連接端口名

51、, );要插在電路系統(tǒng)板上的芯片要插在電路系統(tǒng)板上的芯片較大的電路系統(tǒng)較大的電路系統(tǒng)電路板上準(zhǔn)備接受芯片的插座電路板上準(zhǔn)備接受芯片的插座元件定元件定義語(yǔ)句義語(yǔ)句元件例元件例化語(yǔ)句化語(yǔ)句列出對(duì)外通信的各端口名列出對(duì)外通信的各端口名 當(dāng)前系統(tǒng)與準(zhǔn)備接當(dāng)前系統(tǒng)與準(zhǔn)備接入的元件對(duì)應(yīng)端口相連入的元件對(duì)應(yīng)端口相連的通信端口。的通信端口。名字關(guān)聯(lián)方式:名字關(guān)聯(lián)方式:port map語(yǔ)句中位置可以任意;語(yǔ)句中位置可以任意;位置關(guān)聯(lián)方式:端口名和關(guān)聯(lián)連接符號(hào)可省去,連位置關(guān)聯(lián)方式:端口名和關(guān)聯(lián)連接符號(hào)可省去,連接端口名的排列方式與所需例化的元件端口定義中接端口名的排列方式與所需例化的元件端口定義中的端口名相對(duì)應(yīng)

52、。的端口名相對(duì)應(yīng)。LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY nd2 ISPORT( a, b:IN Std_Logic; c: out std_logic);END;ARCHITECTURE nd2behv OF nd2 IS BEGIN yc1, c=y, b=d1); 名字關(guān)聯(lián)方式名字關(guān)聯(lián)方式u3:nd2 PORT MAP( x, y, c=z1); 混和關(guān)聯(lián)方式混和關(guān)聯(lián)方式END;元件例化:元件例化:1位二進(jìn)制全加器位二進(jìn)制全加器內(nèi)部端口外部端口外部端口內(nèi)部端口端口連線3.3.2 順序語(yǔ)句順序語(yǔ)句 順序語(yǔ)句僅出現(xiàn)在進(jìn)程和子程序中。順

53、序語(yǔ)句僅出現(xiàn)在進(jìn)程和子程序中。 順序語(yǔ)句綜合后,映射為實(shí)際的門電路,系統(tǒng)一上電,門電路開(kāi)始工順序語(yǔ)句綜合后,映射為實(shí)際的門電路,系統(tǒng)一上電,門電路開(kāi)始工作。電路可實(shí)現(xiàn)邏輯上的順序執(zhí)行,實(shí)際上所有門電路是并行工作的。作。電路可實(shí)現(xiàn)邏輯上的順序執(zhí)行,實(shí)際上所有門電路是并行工作的。l 賦值語(yǔ)句賦值語(yǔ)句l 流程控制語(yǔ)句流程控制語(yǔ)句l 空操作語(yǔ)句空操作語(yǔ)句l 等待語(yǔ)句等待語(yǔ)句l 子程序調(diào)用語(yǔ)句子程序調(diào)用語(yǔ)句l 返回語(yǔ)句返回語(yǔ)句 賦值語(yǔ)句賦值語(yǔ)句ENTITY TEST_Signal ISPORT( Reset, Clock: IN Std_logic; NumA, NumB: OUT Integer RA

54、NGE 0 TO 255);END;ARCHITECTURE TEST OF TEST_Signal IS SIGNAL A, B: Integer RANGE 0 TO 255; BEGIN PROCESS (RESET,Clock) VARIABLE C: Integer RANGE 0 TO 255; BEGIN IF RESET=1 THEN A=0; B=2;C:=0; ELSEIF rising_edge(Clock) THEN C:=C+1;A=C+1;B=A+2; END IF; END PROCESS; Num A=A; NumB=B;END; 流程控制語(yǔ)句流程控制語(yǔ)句l I

55、F語(yǔ)句:語(yǔ)句:IF 條件式條件式 THEN 順序語(yǔ)句順序語(yǔ)句END IF;IF 條件式條件式 THEN 順序語(yǔ)句順序語(yǔ)句ELSE 順序語(yǔ)句順序語(yǔ)句END IF;IF 條件式條件式 THEN 順序語(yǔ)句順序語(yǔ)句ELSEIF 條件式條件式2 THEN 順序語(yǔ)句順序語(yǔ)句 ELSE 順序語(yǔ)句順序語(yǔ)句END IF;有優(yōu)先級(jí)有優(yōu)先級(jí) 用用IF語(yǔ)句描述組合邏輯電路時(shí),務(wù)必涵蓋所有的情況,否則語(yǔ)句描述組合邏輯電路時(shí),務(wù)必涵蓋所有的情況,否則綜合后將引入鎖存器!綜合后將引入鎖存器!ENTITY Encoder ISPORT( En: IN Std_logic; I: IN Std_logic_Vetor(7 DO

56、WNTO 0); A: OUT Std_logic_Vetor(2 DOWNTO 0); Idle: OUT Std_logic);END;ARCHITECTURE Behavior OF Encoder IS BEGIN PROCESS (En, I)BEGIN IF En=1 THEN IF I(7)=1 THEN A=“111”; Idle=0; ELSIF IF I(6)=1 THEN A=“110”; Idle=0; ELSIF IF I(5)=1 THEN A=“101”; Idle=0; ELSIF IF I(4)=1 THEN A=“100”; Idle=0; ELSIF IF

57、 I(3)=1 THEN A=“011”; Idle=0; ELSIF IF I(2)=1 THEN A=“010”; Idle=0; ELSIF IF I(1)=1 THEN A=“001”; Idle=0; ELSIF IF I(0)=1 THEN A=“000”; Idle=0; ELSE A=“000”; Idle b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 順序語(yǔ)句順序語(yǔ)句; WHEN 選擇值選擇值|選擇值選擇值 =順序語(yǔ)句順序語(yǔ)句; WHEN OTHERS=順序語(yǔ)句順序語(yǔ)句;END CASE;l 選擇值

58、不可重復(fù)或重疊選擇值不可重復(fù)或重疊;l 當(dāng)當(dāng)CASE語(yǔ)句的選擇值無(wú)法覆蓋所有的情況時(shí)語(yǔ)句的選擇值無(wú)法覆蓋所有的情況時(shí),要用要用OTHERS指定指定未能列出的其他所有情況的輸出值未能列出的其他所有情況的輸出值;LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY MUX ISPORT( Data0,Data1,Data2,Data3:IN Std_Logic_VECTOR(7 DOWNTO 0); Sel:IN Std_Logic_Vector(1 DOWNTO 0); DOUT:OUT Std_Logic_Vector(7 DOWNTO 0);END;

59、 ARCHITECTURE DataFlow OF MUX IS BEGIN CASE Sel IS WHEN “00”= DOUT DOUT DOUT DOUT DOUTNULL; END CASE; END IF;END PROCESS; WAIT語(yǔ)句語(yǔ)句 在進(jìn)程或過(guò)程中執(zhí)行到在進(jìn)程或過(guò)程中執(zhí)行到WAIT語(yǔ)句時(shí),程序?qū)⒈粧炱?,并設(shè)語(yǔ)句時(shí),程序?qū)⒈粧炱?,并設(shè)置好再次執(zhí)行的條件。置好再次執(zhí)行的條件。WAIT ON 信號(hào)表信號(hào)表UNTIL 條件表達(dá)式條件表達(dá)式FOR 時(shí)間表達(dá)式時(shí)間表達(dá)式;WAIT ;未設(shè)置停止掛起的條件,表示永遠(yuǎn)掛起。;未設(shè)置停止掛起的條件,表示永遠(yuǎn)掛起。WAIT ON 信號(hào)表

60、;敏感信號(hào)等待語(yǔ)句,敏感信號(hào)的變化將結(jié)束信號(hào)表;敏感信號(hào)等待語(yǔ)句,敏感信號(hào)的變化將結(jié)束掛起,再次啟動(dòng)進(jìn)程。掛起,再次啟動(dòng)進(jìn)程。WAIT UNTIL 條件表達(dá)式;條件表達(dá)式為中所含的信號(hào)發(fā)生變化,條件表達(dá)式;條件表達(dá)式為中所含的信號(hào)發(fā)生變化,且滿足且滿足WAIT語(yǔ)句所設(shè)條件,則結(jié)束掛起,再次啟動(dòng)進(jìn)程。語(yǔ)句所設(shè)條件,則結(jié)束掛起,再次啟動(dòng)進(jìn)程。WAIT FOR 時(shí)間表達(dá)式;超時(shí)等待語(yǔ)句,從執(zhí)行當(dāng)前的時(shí)間表達(dá)式;超時(shí)等待語(yǔ)句,從執(zhí)行當(dāng)前的WAIT語(yǔ)語(yǔ)句開(kāi)始,在此時(shí)間段內(nèi),進(jìn)程處于掛起狀態(tài),超過(guò)這一時(shí)間段后,程句開(kāi)始,在此時(shí)間段內(nèi),進(jìn)程處于掛起狀態(tài),超過(guò)這一時(shí)間段后,程序自動(dòng)恢復(fù)執(zhí)行。序自動(dòng)恢復(fù)執(zhí)行。C

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論