




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第第5 5章章 VDHLVDHL程序設(shè)計(jì)介紹程序設(shè)計(jì)介紹2 硬件描述語言(硬件描述語言(HDLHDL)是用來描述硬件電路的)是用來描述硬件電路的功能、信號(hào)連接關(guān)系及時(shí)功能、信號(hào)連接關(guān)系及時(shí)序關(guān)系序關(guān)系的語言,也是一種用形式化方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字系統(tǒng)的的語言,也是一種用形式化方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字系統(tǒng)的語言。常用的硬件描述語言有語言。常用的硬件描述語言有ABELABEL、AHDLAHDL、VHDLVHDL、Verilog HDLVerilog HDL、System-System-VerilogVerilog和和System CSystem C等等。等等。 VHDL -Very h
2、igh speed integrated circuit Hardware Description Language1.1.超高速集成電路(超高速集成電路(VHSICVHSIC)硬件描述語言)硬件描述語言 美國國防部在美國國防部在8080年代初研究年代初研究VHSICVHSIC計(jì)劃時(shí)組織開發(fā)的,并成功用于軍方計(jì)劃時(shí)組織開發(fā)的,并成功用于軍方的設(shè)計(jì)項(xiàng)目的設(shè)計(jì)項(xiàng)目. .2.IEEE 2.IEEE 標(biāo)準(zhǔn)標(biāo)準(zhǔn): IEEE Std 1076-1987 (called VHDL 1987)IEEE Std 1076-1987 (called VHDL 1987) IEEE Std 1076-1993 (c
3、alled VHDL 1993)IEEE Std 1076-1993 (called VHDL 1993) 由于當(dāng)時(shí)工業(yè)界的迫切需要,由于當(dāng)時(shí)工業(yè)界的迫切需要,IEEE標(biāo)準(zhǔn)化委員會(huì)于標(biāo)準(zhǔn)化委員會(huì)于1987年將其確定為年將其確定為標(biāo)準(zhǔn)硬件描述語言,標(biāo)準(zhǔn)硬件描述語言,1993年,又對(duì)此標(biāo)準(zhǔn)作了進(jìn)一步修定年,又對(duì)此標(biāo)準(zhǔn)作了進(jìn)一步修定.3(1 1)行為描述能力強(qiáng))行為描述能力強(qiáng) 描述簡單、方便描述簡單、方便(2 2)支持大規(guī)模設(shè)計(jì))支持大規(guī)模設(shè)計(jì) 實(shí)體、程序包、設(shè)計(jì)庫等是設(shè)計(jì)分解和并行工作的基礎(chǔ)實(shí)體、程序包、設(shè)計(jì)庫等是設(shè)計(jì)分解和并行工作的基礎(chǔ)(3 3)EDAEDA工具支持它的綜合、仿真和優(yōu)化工具支持它
4、的綜合、仿真和優(yōu)化 系統(tǒng)級(jí)、算法級(jí)、系統(tǒng)級(jí)、算法級(jí)、RTLRTL級(jí)、門級(jí)、電路級(jí)等級(jí)、門級(jí)、電路級(jí)等(4 4)對(duì)設(shè)計(jì)描述具有相對(duì)獨(dú)立性)對(duì)設(shè)計(jì)描述具有相對(duì)獨(dú)立性 與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān)與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān) (5 5)良好的可擴(kuò)展性)良好的可擴(kuò)展性 可輕易改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)可輕易改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)3. VHDL3. VHDL語言的主要特點(diǎn)語言的主要特點(diǎn)4 綜合綜合是進(jìn)行可編程邏輯器件設(shè)計(jì)的一個(gè)很重要的步驟。設(shè)是進(jìn)行可編程邏輯器件設(shè)計(jì)的一個(gè)很重要的步驟。設(shè)計(jì)過程中的每一步都可稱為一個(gè)綜合環(huán)節(jié)。計(jì)過程中的每一步都可稱為一個(gè)綜合環(huán)節(jié)。 (1) (1) 從自然語言轉(zhuǎn)換到從自然語言轉(zhuǎn)
5、換到VHDLVHDL語言算法表示,即語言算法表示,即自然語言綜合自然語言綜合; (2) (2) 從算法表示轉(zhuǎn)換到寄存器傳輸級(jí)從算法表示轉(zhuǎn)換到寄存器傳輸級(jí)(Register Transport Level(Register Transport LevelRTL)RTL),即從行為域到結(jié)構(gòu)域的綜合,即,即從行為域到結(jié)構(gòu)域的綜合,即行為綜合行為綜合; (3) (3) 從從RTLRTL級(jí)表示轉(zhuǎn)換到邏輯門級(jí)表示轉(zhuǎn)換到邏輯門( (包括觸發(fā)器包括觸發(fā)器) )的表示,即的表示,即邏輯綜合邏輯綜合; (4) (4) 從邏輯門表示轉(zhuǎn)換到版圖表示從邏輯門表示轉(zhuǎn)換到版圖表示(ASIC(ASIC設(shè)計(jì)設(shè)計(jì)) ),或轉(zhuǎn)換到
6、,或轉(zhuǎn)換到FPGAFPGA的的配置網(wǎng)表文件,可稱為版圖綜合或配置網(wǎng)表文件,可稱為版圖綜合或結(jié)構(gòu)綜合結(jié)構(gòu)綜合。有了版圖信息就可以。有了版圖信息就可以把芯片生產(chǎn)出來了。有了對(duì)應(yīng)的配置文件,就可以使對(duì)應(yīng)的把芯片生產(chǎn)出來了。有了對(duì)應(yīng)的配置文件,就可以使對(duì)應(yīng)的FPGAFPGA變變成具有專門功能的電路器件。成具有專門功能的電路器件。4. 4. 綜合綜合5C C、ASM.ASM.程序程序CPUCPU指令指令/ /數(shù)據(jù)代碼:數(shù)據(jù)代碼:010010 100010 1100010010 100010 1100軟件程序編譯器軟件程序編譯器 COMPILERCOMPILER編譯器和綜合功能比較編譯器和綜合功能比較HD
7、LHDL程序程序硬件描述語言硬件描述語言綜合器綜合器 SYNTHESIZERSYNTHESIZER為為ASICASIC設(shè)計(jì)提供的設(shè)計(jì)提供的 電路網(wǎng)表文件電路網(wǎng)表文件(a a)軟件語言設(shè)計(jì)目標(biāo)流程)軟件語言設(shè)計(jì)目標(biāo)流程(b b)硬件語言設(shè)計(jì)目標(biāo)流程)硬件語言設(shè)計(jì)目標(biāo)流程6設(shè)計(jì)輸入設(shè)計(jì)輸入l原理圖原理圖lHDLHDL文本文本綜綜 合合FPGA/CPLDFPGA/CPLD適配器適配器FPGA/CPLDFPGA/CPLD編程下載器編程下載器FPGA/CPLDFPGA/CPLD器件和電路系統(tǒng)器件和電路系統(tǒng)時(shí)序與功能時(shí)序與功能門級(jí)仿真門級(jí)仿真器器VHDLVHDL仿真器仿真器功能仿真功能仿真1 1、功能仿真
8、、功能仿真2 2、時(shí)序仿真、時(shí)序仿真5. 基于基于FPGA的的VHDL設(shè)計(jì)流程圖設(shè)計(jì)流程圖7時(shí)序仿真與功能仿真時(shí)序仿真與功能仿真時(shí)序仿真時(shí)序仿真功能仿真功能仿真 不僅對(duì)設(shè)計(jì)的功能進(jìn)行測(cè)試,而且仿真文不僅對(duì)設(shè)計(jì)的功能進(jìn)行測(cè)試,而且仿真文件中還包含了器件的硬件特性參數(shù),是接近真件中還包含了器件的硬件特性參數(shù),是接近真實(shí)器件運(yùn)行特性的仿真,因而,仿真精度高。實(shí)器件運(yùn)行特性的仿真,因而,仿真精度高。 是直接對(duì)是直接對(duì)VHDLVHDL、原理圖描述或其他描述形、原理圖描述或其他描述形式的邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的式的邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)要求的過程,仿真過程不功能
9、是否滿足原設(shè)計(jì)要求的過程,仿真過程不涉及任何具體器件的硬件特性。涉及任何具體器件的硬件特性。85.1 VHDL程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu) 設(shè)計(jì)設(shè)計(jì)實(shí)實(shí) 體外部端口描述體外部端口描述 (可視部分)(可視部分)結(jié)構(gòu)體內(nèi)部功能描述結(jié)構(gòu)體內(nèi)部功能描述 (不可視部分)(不可視部分) 在在VHDLVHDL設(shè)計(jì)中,實(shí)體是其最基本的結(jié)構(gòu)。設(shè)計(jì)中,實(shí)體是其最基本的結(jié)構(gòu)。 實(shí)體實(shí)體(ENTITY)(ENTITY)可以是任意系統(tǒng)的抽象,可以是任意系統(tǒng)的抽象,其電路意義相當(dāng)于器件。其電路意義相當(dāng)于器件。 一塊電路板、一個(gè)芯片、一個(gè)電路單元甚至一個(gè)門電路等都可看作一一塊電路板、一個(gè)芯片、一個(gè)電路單元甚至一個(gè)門電路等都
10、可看作一個(gè)實(shí)體。個(gè)實(shí)體。 分層設(shè)計(jì)時(shí)分層設(shè)計(jì)時(shí)-各層設(shè)計(jì)模塊都可作為實(shí)體。各層設(shè)計(jì)模塊都可作為實(shí)體。高層次的設(shè)計(jì)模塊高層次的設(shè)計(jì)模塊是高級(jí)實(shí)體,低層次的設(shè)計(jì)摸塊是低級(jí)實(shí)體,高級(jí)實(shí)體可將低一級(jí)實(shí)是高級(jí)實(shí)體,低層次的設(shè)計(jì)摸塊是低級(jí)實(shí)體,高級(jí)實(shí)體可將低一級(jí)實(shí)體當(dāng)作元件來調(diào)用。體當(dāng)作元件來調(diào)用。95.1.1 5.1.1 實(shí)體的描述實(shí)體的描述 實(shí)體使用實(shí)體使用實(shí)體說明實(shí)體說明來描述。實(shí)體說明描述的是一個(gè)設(shè)計(jì)的外貌,即描來描述。實(shí)體說明描述的是一個(gè)設(shè)計(jì)的外貌,即描述實(shí)體的外部接口情況以及實(shí)體內(nèi)的類屬參數(shù)等。述實(shí)體的外部接口情況以及實(shí)體內(nèi)的類屬參數(shù)等。absymux21mux21圖圖5.1.1 25.1.1
11、 2選選1 1數(shù)據(jù)選擇器數(shù)據(jù)選擇器例:例:2 2選選1 1數(shù)據(jù)選擇器的實(shí)體描述數(shù)據(jù)選擇器的實(shí)體描述【程序程序5.1.15.1.1】ENTITY mux21 IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT) ;END ENTITY mux21 ; 實(shí)體說明的格式:實(shí)體說明的格式: 參數(shù)說明部分參數(shù)說明部分 ;ENTITYENTITY ISIS 端口說明部分端口說明部分 ;END END ENTITYENTITY ; ;實(shí)體說明以實(shí)體說明以“ENTITY ENTITY IS IS” 開始,至開始,至 END ENTITY END ENTITY ”
12、結(jié)束。結(jié)束。10其中:其中:ENTITY mux21 ISENTITY mux21 IS PORT( a, b : IN BIT; PORT( a, b : IN BIT; s : IN BIT; s : IN BIT; y : OUT BIT); y : OUT BIT);END ENTITY mux21 ;END ENTITY mux21 ; (2)(2)端口模式端口模式:說明信號(hào)的方向,有以下幾種模式:說明信號(hào)的方向,有以下幾種模式: IN IN 輸入信號(hào);輸入信號(hào); OUT OUT 輸出信號(hào);輸出信號(hào); INOUT INOUT 雙向信號(hào);雙向信號(hào); BUFFER BUFFER 輸出信號(hào)
13、,但可在內(nèi)部反饋使用輸出信號(hào),但可在內(nèi)部反饋使用( (緩沖緩沖) ); BUFFERBUFFER是是INOUTINOUT的子集,但作輸入用時(shí),信號(hào)不是由外部驅(qū)動(dòng),而是從的子集,但作輸入用時(shí),信號(hào)不是由外部驅(qū)動(dòng),而是從輸出反饋得到。輸出反饋得到。 參數(shù)說明主要為設(shè)計(jì)實(shí)體指定參數(shù),如端口寬度、器件延遲時(shí)間等;參數(shù)說明主要為設(shè)計(jì)實(shí)體指定參數(shù),如端口寬度、器件延遲時(shí)間等; 端口說明描述的是設(shè)計(jì)實(shí)體和外部的接口,具體說就是對(duì)端口說明描述的是設(shè)計(jì)實(shí)體和外部的接口,具體說就是對(duì)端口名稱端口名稱、端端口模式口模式和和端口數(shù)據(jù)類型端口數(shù)據(jù)類型進(jìn)行說明。進(jìn)行說明。 (1)(1)端口名稱端口名稱:輸入輸出信號(hào)的名稱
14、,在實(shí)體中必須是唯一的。輸入輸出信號(hào)的名稱,在實(shí)體中必須是唯一的。11(3)(3)端口數(shù)據(jù)類型端口數(shù)據(jù)類型:端口信號(hào)的取值類型:端口信號(hào)的取值類型 明確地指定和嚴(yán)格地定義端口信號(hào)的取值類型是明確地指定和嚴(yán)格地定義端口信號(hào)的取值類型是VHDLVHDL的重要特點(diǎn)的重要特點(diǎn), , 即所謂的強(qiáng)數(shù)據(jù)類型,這是學(xué)習(xí)即所謂的強(qiáng)數(shù)據(jù)類型,這是學(xué)習(xí)VHDLVHDL應(yīng)特別注意之處應(yīng)特別注意之處ENTITY mux21 ISENTITY mux21 IS PORT ( a, b : IN BIT; PORT ( a, b : IN BIT; s : IN BIT; s : IN BIT; y : OUT BIT )
15、; y : OUT BIT );END ENTITY mux21 ;END ENTITY mux21 ;VHDL中常見的數(shù)據(jù)類型有以下幾種:中常見的數(shù)據(jù)類型有以下幾種: BITBIT 位類型,取值位類型,取值0 0、l l BIT_VECTORBIT_VECTOR 位向量類型,是位向量類型,是BITBIT的組合的組合 STD_LOGICSTD_LOGIC 工業(yè)標(biāo)準(zhǔn)的邏輯位類型,取值工業(yè)標(biāo)準(zhǔn)的邏輯位類型,取值0 0、1 1、X X、Z Z等九種等九種 STD_LOGIC_VECTORSTD_LOGIC_VECTOR 工業(yè)標(biāo)準(zhǔn)的邏輯位向量類型,是工業(yè)標(biāo)準(zhǔn)的邏輯位向量類型,是STD_ LOGICST
16、D_ LOGIC的組合的組合 INTEGERINTEGER 整數(shù)類型,可用作循環(huán)的指針或常數(shù)整數(shù)類型,可用作循環(huán)的指針或常數(shù) BOOLEANBOOLEAN 布爾類型,取值布爾類型,取值FALSEFALSE、TRUETRUE12例:用例:用VHDLVHDL描述圖描述圖5.1.25.1.2所示實(shí)體所示實(shí)體d15:0 q115:0d15:0 q115:0clk q215:0clk q215:0reset intreset intoe optoe opt圖圖5.1.2 example2 5.1.2 example2 實(shí)體端口實(shí)體端口 d15:0d15:0是是1616位輸人總線;位輸人總線; clkcl
17、k、resetreset、oeoe是輸入信號(hào);是輸入信號(hào);q115:Oq115:O是是1616位三態(tài)輸出總線;位三態(tài)輸出總線; q215:0q215:0是是1616位雙向總線;位雙向總線;intint是輸出信號(hào),也反饋到內(nèi)部使用;是輸出信號(hào),也反饋到內(nèi)部使用; optopt是三態(tài)輸出信號(hào)。是三態(tài)輸出信號(hào)。13Example Example 的實(shí)體說明如下:的實(shí)體說明如下:【程序程序5.1.25.1.2】 ENTITYENTITY example example ISIS END example; d15:0 q115:0d15:0 q115:0clk q215:0clk q215:0reset
18、 intreset intoe optoe opt PORTPORT ( d: ( d: ININ STD_ LOGIC_VECTER (15 STD_ LOGIC_VECTER (15 DOWNTODOWNTO 0); 0); clk, reset, oe: clk, reset, oe: ININ STD_LOGIC; STD_LOGIC; q1: q1: OUTOUT STD_LOGIC_VECTER (15 STD_LOGIC_VECTER (15 DOWNTODOWNTO 0); 0); q2: q2: INOUTINOUT STD_LOGIC_VECTER(15 STD_LOGIC
19、_VECTER(15 DOWNTODOWNTO 0); 0); int: int: BUFFERBUFFER STD_LOGIC; STD_LOGIC; opt: opt: OUTOUT STD_LOGIC ); STD_LOGIC );145.1.2 結(jié)構(gòu)體結(jié)構(gòu)體 1.1.結(jié)構(gòu)體的概念結(jié)構(gòu)體的概念 結(jié)構(gòu)體結(jié)構(gòu)體(Architecture )(Architecture )描述的是實(shí)體內(nèi)部的邏輯功能。描述的是實(shí)體內(nèi)部的邏輯功能。 在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu). . a ab bs sy ymux21mux21例:數(shù)據(jù)選擇器的結(jié)構(gòu)體描述例:數(shù)據(jù)選擇器的結(jié)構(gòu)體描述
20、【程序程序5.1.35.1.3】 ARCHITECTUREARCHITECTURE one one OFOF mux21 mux21 ISIS BEGINBEGIN y = a y = a WHENWHEN s = s = 0 0 ELSEELSE b; b;END ARCHITECTUREEND ARCHITECTURE one; one;15 結(jié)構(gòu)體說明部分結(jié)構(gòu)體說明部分 (1 1)OFOF后的實(shí)體名應(yīng)與實(shí)體說明中的實(shí)體名一致后的實(shí)體名應(yīng)與實(shí)體說明中的實(shí)體名一致結(jié)構(gòu)體的基本格式:結(jié)構(gòu)體的基本格式:(2 2)功能描述語句是結(jié)構(gòu)體中的主要部分,用于描述所實(shí)現(xiàn)實(shí)體的)功能描述語句是結(jié)構(gòu)體中的主要
21、部分,用于描述所實(shí)現(xiàn)實(shí)體的 功能四種不同類型的并行語句:功能四種不同類型的并行語句:(3 3)結(jié)構(gòu)體說明部分是對(duì)結(jié)構(gòu)體的功能描述語句中將要用到的信號(hào)、數(shù))結(jié)構(gòu)體說明部分是對(duì)結(jié)構(gòu)體的功能描述語句中將要用到的信號(hào)、數(shù) 據(jù)類型、常數(shù)、元件、函數(shù)和過程等加以說明據(jù)類型、常數(shù)、元件、函數(shù)和過程等加以說明進(jìn)程語句進(jìn)程語句信號(hào)賦值語句信號(hào)賦值語句子程序調(diào)用語句子程序調(diào)用語句元件例化語句元件例化語句ARCHITECTUREARCHITECTURE OFOF ISIS ENDEND ARCHITECTURE ARCHITECTURE ; ;BEGINBEGIN【程序程序4.1.34.1.3】 ARCHITECT
22、UREARCHITECTURE one one OFOF mux21 mux21 ISIS BEGINBEGIN y = a y = a WHENWHEN s = s = 0 0 ELSEELSE b; b;END ARCHITECTUREEND ARCHITECTURE one; one;162.2.結(jié)構(gòu)體的描述方式結(jié)構(gòu)體的描述方式(1 1)行為描述方式:)行為描述方式: 對(duì)設(shè)計(jì)實(shí)體的數(shù)學(xué)模型的描述,其抽象程度最高。對(duì)設(shè)計(jì)實(shí)體的數(shù)學(xué)模型的描述,其抽象程度最高。 類似于高級(jí)編程語言,無需知道電路的具體結(jié)構(gòu)。類似于高級(jí)編程語言,無需知道電路的具體結(jié)構(gòu)。 優(yōu)點(diǎn)是只需描述輸入與輸出的行為,不關(guān)注具體
23、的電路實(shí)現(xiàn)。優(yōu)點(diǎn)是只需描述輸入與輸出的行為,不關(guān)注具體的電路實(shí)現(xiàn)。(2 2)數(shù)據(jù)流描述方式)數(shù)據(jù)流描述方式:也稱寄存器傳輸描述:也稱寄存器傳輸描述 從信號(hào)到信號(hào)的數(shù)據(jù)流動(dòng)的路徑形式進(jìn)行描述。從信號(hào)到信號(hào)的數(shù)據(jù)流動(dòng)的路徑形式進(jìn)行描述。 設(shè)計(jì)人員對(duì)設(shè)計(jì)實(shí)體的功能實(shí)現(xiàn)要有一定的了解,有時(shí)還需對(duì)電路的具設(shè)計(jì)人員對(duì)設(shè)計(jì)實(shí)體的功能實(shí)現(xiàn)要有一定的了解,有時(shí)還需對(duì)電路的具體結(jié)構(gòu)有清楚的認(rèn)識(shí)。體結(jié)構(gòu)有清楚的認(rèn)識(shí)。 優(yōu)點(diǎn)是易于進(jìn)行邏輯綜合,綜合效率較高。優(yōu)點(diǎn)是易于進(jìn)行邏輯綜合,綜合效率較高。 在在VHDLVHDL中,允許設(shè)計(jì)人員采用不同的描述風(fēng)格來進(jìn)行設(shè)計(jì)實(shí)體中結(jié)中,允許設(shè)計(jì)人員采用不同的描述風(fēng)格來進(jìn)行設(shè)計(jì)實(shí)體中
24、結(jié)構(gòu)體的書寫,結(jié)構(gòu)體的描述方式通常有三種:構(gòu)體的書寫,結(jié)構(gòu)體的描述方式通常有三種:17(3 3)結(jié)構(gòu)描述方式:)結(jié)構(gòu)描述方式: 指在多層次的設(shè)計(jì)中,通過調(diào)用庫中的元件或是已設(shè)計(jì)好的模指在多層次的設(shè)計(jì)中,通過調(diào)用庫中的元件或是已設(shè)計(jì)好的模塊來完成實(shí)體功能的描述。塊來完成實(shí)體功能的描述。 結(jié)構(gòu)描述方式只表示元件(或模塊)和元件(或模塊)之間的結(jié)構(gòu)描述方式只表示元件(或模塊)和元件(或模塊)之間的互連,就像網(wǎng)表一樣?;ミB,就像網(wǎng)表一樣。 優(yōu)點(diǎn):可以使用已有的設(shè)計(jì)成果、提高設(shè)計(jì)效率。優(yōu)點(diǎn):可以使用已有的設(shè)計(jì)成果、提高設(shè)計(jì)效率。 對(duì)于可分解的大型設(shè)計(jì),結(jié)構(gòu)描述方式是首選方案。對(duì)于可分解的大型設(shè)計(jì),結(jié)構(gòu)描
25、述方式是首選方案。 另外也可以使用上述三種描述方式的組合來進(jìn)行結(jié)構(gòu)體另外也可以使用上述三種描述方式的組合來進(jìn)行結(jié)構(gòu)體的描述,即混合描述方式。的描述,即混合描述方式。18【程序程序5.1.4】ENTITY rsf IS PORT (set, reset:IN BIT; q,qb :BUFFER BIT);END rsf;下面以下面以 RS RS 觸發(fā)器為例說明三種描述方式的使用方法觸發(fā)器為例說明三種描述方式的使用方法RS觸發(fā)器觸發(fā)器setresetqqbR-SR-S觸發(fā)器的實(shí)體描述:觸發(fā)器的實(shí)體描述: & & q qb setreset19【程序程序5.1.5】ARCHITECT
26、URE rs_alg OF rsf IS BEGIN PROCESS(set, reset) - - 進(jìn)程進(jìn)程 VARIABLE last_state: BIT; - - 給輸出給輸出q一個(gè)狀態(tài)變量定義一個(gè)狀態(tài)變量定義 BEGIN IF set = 1 AND reset = 1 THEN Last_state : = last_state; ELSIF set = 0 AND reset = 1 THEN Last_state : = 1; ELSIF set = 1 AND reset = 0 THEN Last_state : = 0; END IF; q = last_state; -
27、 - 給輸出信號(hào)賦值給輸出信號(hào)賦值 qb = NOT (last_state); END PROCESS;END rs_alg; 行為描述方式:行為描述方式:進(jìn)程進(jìn)程20數(shù)據(jù)流描述方式:數(shù)據(jù)流描述方式:【程序程序5.1.6】 ARCHITECTURE rs_behav OF rsf IS BEGIN q = NOT( qb AND set ); qb set, b = qb, c = q); - - 描述連接關(guān)系描述連接關(guān)系 u2:nand2 port map(a = reset, b = q, c = qb); END rs_struc;結(jié)構(gòu)描述方式:結(jié)構(gòu)描述方式: & &
28、q qb setresetU1U1U2U2225.1.3 5.1.3 庫、程序包庫、程序包 VHDLVHDL的的基本結(jié)構(gòu)基本結(jié)構(gòu)由前述的由前述的設(shè)計(jì)實(shí)體設(shè)計(jì)實(shí)體和和結(jié)構(gòu)體結(jié)構(gòu)體組成,但實(shí)際組成,但實(shí)際中的中的VHDLVHDL程序除上述兩個(gè)基本部分以外通常還包括另外三個(gè)部程序除上述兩個(gè)基本部分以外通常還包括另外三個(gè)部分:分:庫、程序包和配置庫、程序包和配置 庫:主要用來存放已經(jīng)編譯的實(shí)體、結(jié)構(gòu)體、程序包等。庫:主要用來存放已經(jīng)編譯的實(shí)體、結(jié)構(gòu)體、程序包等。 程序包:主要用來存放各個(gè)設(shè)計(jì)都能共享的數(shù)據(jù)類型、子程序包:主要用來存放各個(gè)設(shè)計(jì)都能共享的數(shù)據(jù)類型、子程序、常數(shù)和元件等。程序、常數(shù)和元件等。
29、 23 VHDLVHDL一個(gè)庫中的設(shè)計(jì)單元可以用作其他設(shè)計(jì)的資源;一個(gè)設(shè)計(jì)一個(gè)庫中的設(shè)計(jì)單元可以用作其他設(shè)計(jì)的資源;一個(gè)設(shè)計(jì)可以使用多個(gè)庫中的設(shè)計(jì)單元。可以使用多個(gè)庫中的設(shè)計(jì)單元。 當(dāng)一個(gè)設(shè)計(jì)要使用當(dāng)一個(gè)設(shè)計(jì)要使用庫中庫中的的設(shè)計(jì)單元設(shè)計(jì)單元時(shí):時(shí): 首先要在每個(gè)設(shè)計(jì)的開頭說明要引用的首先要在每個(gè)設(shè)計(jì)的開頭說明要引用的庫庫; 然后指明要使用庫中的哪一個(gè)設(shè)計(jì)單元(然后指明要使用庫中的哪一個(gè)設(shè)計(jì)單元(程序包程序包)。)。(1 1)庫說明語句格式:)庫說明語句格式: librarylibrary ; 以以library library 開頭,后面緊跟著設(shè)計(jì)中要使用的庫的名字開頭,后面緊跟著設(shè)計(jì)中要使
30、用的庫的名字 庫說明語句使該庫對(duì)于設(shè)計(jì)可見庫說明語句使該庫對(duì)于設(shè)計(jì)可見(2 2)程序包語句說明格式:)程序包語句說明格式: useuse .allall; 庫名是前面庫說明語句中說明的庫庫名是前面庫說明語句中說明的庫 程序包名是設(shè)計(jì)中要使用的庫中的程序包程序包名是設(shè)計(jì)中要使用的庫中的程序包 allall表示使用該程序包中的所有項(xiàng)目表示使用該程序包中的所有項(xiàng)目1. 庫和程序包的語句格式庫和程序包的語句格式24 ENTITYENTITY example example ISIS PORTPORT ( d: ( d: ININ STD_ LOGIC_VECTER (15 DOWNTO 0); STD
31、_ LOGIC_VECTER (15 DOWNTO 0); clk, reset, oe: clk, reset, oe: ININ STD_LOGIC; STD_LOGIC; q1: q1: OUTOUT STD_LOGIC_VECTER (15 DOWNTO 0); STD_LOGIC_VECTER (15 DOWNTO 0); q2: q2: INOUTINOUT STD_LOGIC_VECTER (15 DOWNTO 0); STD_LOGIC_VECTER (15 DOWNTO 0); int: int: BUFFERBUFFER STD_LOGIC; STD_LOGIC; opt:
32、 opt: OUTOUT STD_LOGIC ); STD_LOGIC ); ENDEND example; example; LIBRARYLIBRARY IEEE; IEEE;USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ; 【程序程序5.1.85.1.8】25 VHDL VHDL程序設(shè)計(jì)時(shí)可使用的庫主要有兩類:程序設(shè)計(jì)時(shí)可使用的庫主要有兩類:設(shè)計(jì)庫設(shè)計(jì)庫和和資源庫。資源庫。 設(shè)計(jì)庫對(duì)當(dāng)前設(shè)計(jì)是可見的,使用時(shí)無需進(jìn)行說明。設(shè)計(jì)庫對(duì)當(dāng)前設(shè)計(jì)是可見的,使用時(shí)無需進(jìn)行說明。 資源庫是對(duì)當(dāng)前設(shè)計(jì)不可見,使用時(shí)首先要進(jìn)行說明。資源庫是
33、對(duì)當(dāng)前設(shè)計(jì)不可見,使用時(shí)首先要進(jìn)行說明。 v STDSTD庫:庫:VHDLVHDL的標(biāo)準(zhǔn)庫,該庫定義了兩個(gè)標(biāo)準(zhǔn)程序包:的標(biāo)準(zhǔn)庫,該庫定義了兩個(gè)標(biāo)準(zhǔn)程序包: standardstandard中定義了中定義了bitbit、bit_vectorbit_vector、charactercharacter和和timetime等數(shù)據(jù)類等數(shù)據(jù)類型。型。 textiotextio中主要包括了對(duì)文本文件進(jìn)行讀寫操作的過程和函數(shù)。中主要包括了對(duì)文本文件進(jìn)行讀寫操作的過程和函數(shù)。(1 1)設(shè)計(jì)庫:包括)設(shè)計(jì)庫:包括STDSTD庫庫和和WORKWORK庫庫。v WORKWORK庫:庫:VHDLVHDL的工作庫。的工作
34、庫。 主要用于存放用戶設(shè)計(jì)和定義的一些設(shè)計(jì)單元和程序包。主要用于存放用戶設(shè)計(jì)和定義的一些設(shè)計(jì)單元和程序包。 該庫是用戶的臨時(shí)倉庫,用戶設(shè)計(jì)項(xiàng)目的半成品、成品以及先期該庫是用戶的臨時(shí)倉庫,用戶設(shè)計(jì)項(xiàng)目的半成品、成品以及先期設(shè)計(jì)的元件都放在該庫中。設(shè)計(jì)的元件都放在該庫中。2. 庫的種類及作用范圍庫的種類及作用范圍26(3 3)ASICASIC庫:由相關(guān)公司提供,用于庫:由相關(guān)公司提供,用于ASICASIC設(shè)計(jì)的門級(jí)仿真,例:設(shè)計(jì)的門級(jí)仿真,例: library altera; library altera; use altera.quartusII.all;use altera.quartusII
35、.all; library lpmlibrary lpm; use lpm.lpm_components.all; use lpm.lpm_components.all;(2 2)資源庫:)資源庫: 在資源庫中,在資源庫中,IEEE庫是最常用的一個(gè),該庫中含有庫是最常用的一個(gè),該庫中含有 std_logic_1164、numeric_bit、numeric_std等程序包,還包括等程序包,還包括std_logic_signed、std_logic_unsigned 和和 std_logic_arith等非等非IEEE標(biāo)準(zhǔn)的程序包。標(biāo)準(zhǔn)的程序包。(4 4)庫說明的作用范圍:)庫說明的作用范圍:
36、從一個(gè)實(shí)體開始,到它所屬的結(jié)構(gòu)體和配置為止,或者從一個(gè)程序從一個(gè)實(shí)體開始,到它所屬的結(jié)構(gòu)體和配置為止,或者從一個(gè)程序包的說明開始,到該程序包定義結(jié)束為止。包的說明開始,到該程序包定義結(jié)束為止。 當(dāng)一個(gè)源程序中出現(xiàn)兩個(gè)以上的實(shí)體時(shí),庫說明語句應(yīng)在每個(gè)實(shí)體說當(dāng)一個(gè)源程序中出現(xiàn)兩個(gè)以上的實(shí)體時(shí),庫說明語句應(yīng)在每個(gè)實(shí)體說明語句前重復(fù)書寫。明語句前重復(fù)書寫。273.程序包的種類程序包的種類預(yù)定義的程序包預(yù)定義的程序包STD_LOGIC_1164STD_LOGIC_1164程序包程序包STD_LOGIC_ARITHSTD_LOGIC_ARITH程序包程序包STD_LOGIC_UNSIGNEDSTD_LOG
37、IC_UNSIGNED和和STD_LOGIC_SIGNEDSTD_LOGIC_SIGNED程序包程序包STANDARDSTANDARD和和TEXTIOTEXTIO程序包程序包程序包:預(yù)定義程序包和自定義程序包程序包:預(yù)定義程序包和自定義程序包v STD_LOGIC_1164 STD_LOGIC_1164程序包:程序包: 是是IEEEIEEE庫中最常用的程序包,其中包含了一些數(shù)據(jù)類型、庫中最常用的程序包,其中包含了一些數(shù)據(jù)類型、子類型和函數(shù)的定義。這些定義將子類型和函數(shù)的定義。這些定義將VHDLVHDL擴(kuò)展成一個(gè)可以描述多擴(kuò)展成一個(gè)可以描述多值邏輯的硬件描述語言。該程序包中最常用的兩個(gè)數(shù)據(jù)類型是
38、:值邏輯的硬件描述語言。該程序包中最常用的兩個(gè)數(shù)據(jù)類型是:STD_LOGICSTD_LOGIC和和STD_LOGIC_VECTORSTD_LOGIC_VECTOR。28v STANDARD STANDARD和和TEXTIOTEXTIO程序包:程序包: StandardStandard和和textiotextio程序包是程序包是stdstd庫中的預(yù)編譯程序包。庫中的預(yù)編譯程序包。 StandardStandard中定義了許多基本的數(shù)據(jù)類型等。中定義了許多基本的數(shù)據(jù)類型等。TextioTextio程序包主要程序包主要供仿真器使用??梢杂梦谋揪庉嬈鹘⒁粋€(gè)數(shù)據(jù)文件,文件中供仿真器使用。可以用文本編輯
39、器建立一個(gè)數(shù)據(jù)文件,文件中包含仿真時(shí)需要的數(shù)據(jù),仿真時(shí)用包含仿真時(shí)需要的數(shù)據(jù),仿真時(shí)用textiotextio程序包的子程序存取程序包的子程序存取這些數(shù)據(jù)。這些數(shù)據(jù)。v STD_LOGIC_UNSIGNED STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNEDSTD_LOGIC_SIGNED程序包:程序包: Std_logic_unsignedStd_logic_unsigned和和std_logic_signedstd_logic_signed程序包都是程序包都是SynopsysSynopsys公司的程序包,預(yù)先編譯在公司的程序包,預(yù)先編譯在IEEEIEEE庫中。此程序包
40、定義庫中。此程序包定義了可用于了可用于IntegerInteger型及型及Std_logicStd_logic和和std_logic_vectorstd_logic_vector型混合運(yùn)型混合運(yùn)算的運(yùn)算符。還定義了一個(gè)從算的運(yùn)算符。還定義了一個(gè)從std_logic_vectorstd_logic_vector到到integerinteger型的型的轉(zhuǎn)換函數(shù)。轉(zhuǎn)換函數(shù)。v STD_LOGIC_ARITH STD_LOGIC_ARITH程序包:程序包: STD_LOGIC_ARITHSTD_LOGIC_ARITH程序包預(yù)先編譯在程序包預(yù)先編譯在IEEEIEEE庫中,是庫中,是SynopsysSyn
41、opsys公司的程序包。此程序包在公司的程序包。此程序包在STD_LOGIC_1164STD_LOGIC_1164程序包的基礎(chǔ)上擴(kuò)程序包的基礎(chǔ)上擴(kuò)展了展了3 3個(gè)數(shù)據(jù)類型,個(gè)數(shù)據(jù)類型,UNSIGNEDUNSIGNED、SIGNEDSIGNED和和SMALL_INT,SMALL_INT,并為其定義并為其定義了相關(guān)的算術(shù)運(yùn)算符和轉(zhuǎn)換函數(shù)。了相關(guān)的算術(shù)運(yùn)算符和轉(zhuǎn)換函數(shù)。295.1.4 5.1.4 配置配置配置可以把特定的配置可以把特定的結(jié)構(gòu)體指定給一個(gè)確定的實(shí)體。結(jié)構(gòu)體指定給一個(gè)確定的實(shí)體。 例如當(dāng)對(duì)實(shí)體進(jìn)行仿真時(shí)可為同一實(shí)體配置不同的結(jié)構(gòu)體例如當(dāng)對(duì)實(shí)體進(jìn)行仿真時(shí)可為同一實(shí)體配置不同的結(jié)構(gòu)體以比較其
42、差別。以比較其差別。配置語句的一般格式如下:配置語句的一般格式如下:CONFIGURATIONCONFIGURATION OFOF ISIS FORFOR END FOREND FOR; ;ENDEND ; ;30例題:例題:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nand IS PORT (a,b:IN STD_LOGIC; c:OUT STD_LOGIC);END ENTITY nand; ARCHITECTURE two OF nand IS BEGIN c=1WHEN (a=0) AND (b=0) ELSE 1WHEN (a=0
43、) AND (b=1) ELSE 1WHEN (a=1) AND (b=0) ELSE 0WHEN (a =1) AND (b=1) ELSE 0; END ARCHITECTURE two;ARCHITECTURE one OF nand IS BEGIN c = NOT(a AND b);END ARCHITECTURE one;CONFIGRATION second OF nand IS FOR two END FOR;END second;CONFIGRATION first OF nand IS FOR one END FOR;END first;-31VHDLVHDL程序結(jié)構(gòu)程序結(jié)
44、構(gòu)配 置結(jié) 構(gòu) 體實(shí) 體庫、程序包32VHDLVHDL語法小結(jié)語法小結(jié) VHDL VHDL 庫庫: : 使用使用LIBRARYLIBRARY語句打開語句打開 常用的有:常用的有:IEEEIEEE、STDSTD、WORKWORK等等 程程 序序 包包:需要時(shí)可使用:需要時(shí)可使用USEUSE語句打開,常用的包括:語句打開,常用的包括: STANDARDSTANDARD、TEXTIOTEXTIO、STD_LOGIC_1164STD_LOGIC_1164、 STD_LOGIC_ARITHSTD_LOGIC_ARITH、STD_LOGIC_SIGNEDSTD_LOGIC_SIGNED、 STD_LOGI
45、C_UNSIGNED STD_LOGIC_UNSIGNED 等等 實(shí)實(shí) 體體: ENTITY name is : ENTITY name is END ENTITY name; END ENTITY name; 結(jié)結(jié) 構(gòu)構(gòu) 體體: ARCHITECTURE name OF entity_ name is: ARCHITECTURE name OF entity_ name is END ARCHITECTURE name END ARCHITECTURE name 端口模式端口模式: IN: IN、OUTOUT、INOUTINOUT、BUFFERBUFFER 數(shù)據(jù)類型數(shù)據(jù)類型: bit、std
46、_logic、integer、boolean等等335.2 VHDL5.2 VHDL語言要素語言要素 5.2.1 VHDL5.2.1 VHDL的文字規(guī)則的文字規(guī)則 與其他計(jì)算機(jī)高級(jí)語言一樣,與其他計(jì)算機(jī)高級(jí)語言一樣,VHDLVHDL也有自己的文字規(guī)則也有自己的文字規(guī)則 VHDLVHDL文字主要包括文字主要包括數(shù)字、標(biāo)識(shí)符、字符數(shù)字、標(biāo)識(shí)符、字符和和字符串字符串等。等。1. 1.標(biāo)識(shí)符標(biāo)識(shí)符 標(biāo)識(shí)符主要用來為常數(shù)、變量、信號(hào)、端口、子程序和參數(shù)等命名。標(biāo)識(shí)符主要用來為常數(shù)、變量、信號(hào)、端口、子程序和參數(shù)等命名。 有效的字符:有效的字符:包括包括2626個(gè)大小寫英文字母,數(shù)字包括個(gè)大小寫英文字母,
47、數(shù)字包括0 09 9 以及下劃線以及下劃線“_ _” 任何標(biāo)識(shí)符必須以英文字母開頭任何標(biāo)識(shí)符必須以英文字母開頭 下劃線下劃線“_ _”的前后必須有英文字母或數(shù)字的前后必須有英文字母或數(shù)字 標(biāo)識(shí)符中的英語字母不分大小寫標(biāo)識(shí)符中的英語字母不分大小寫例:例: Decoder_1 , FFT, sig_n, Not_ACK Decoder_1 , FFT, sig_n, Not_ACK 是正確的是正確的 而而 _Decoder_1 , 2FFT, sig_#n_Decoder_1 , 2FFT, sig_#n,return return 是錯(cuò)誤的是錯(cuò)誤的其規(guī)則如下:其規(guī)則如下:342. 2. 數(shù)字?jǐn)?shù)字
48、 (1 1)整數(shù))整數(shù):整數(shù)都是十進(jìn)制的數(shù),整數(shù)都是十進(jìn)制的數(shù), 如:如:5 5,678678,0 0,156E2(=15600)156E2(=15600),45_234_287 (=45234287)45_234_287 (=45234287) (2 2)實(shí)數(shù))實(shí)數(shù):實(shí)數(shù)也都是十進(jìn)制的數(shù),但必須帶有小數(shù)點(diǎn),實(shí)數(shù)也都是十進(jìn)制的數(shù),但必須帶有小數(shù)點(diǎn), 如:如:1.3351.335, 88_670_551.453_909(=88670551.453909)88_670_551.453_909(=88670551.453909),1.01.0,44.99E-44.99E-2(=0.4499)2(=0
49、.4499) (3 3)以數(shù)值基數(shù)表示的數(shù):)以數(shù)值基數(shù)表示的數(shù): 用這種方式表示的數(shù)由五部分組成:用這種方式表示的數(shù)由五部分組成:基基 # # 整數(shù)整數(shù) # # 指數(shù)指數(shù) 第一部分:用十進(jìn)制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù);第一部分:用十進(jìn)制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù); 第二部分:數(shù)值隔離符第二部分:數(shù)值隔離符“# #”; 第三部分:表達(dá)的數(shù)值;第三部分:表達(dá)的數(shù)值; 第四部分:指數(shù)隔離符第四部分:指數(shù)隔離符“# #” ; 第五部分:用十進(jìn)制數(shù)表示的指數(shù)部分,若為第五部分:用十進(jìn)制數(shù)表示的指數(shù)部分,若為0 0可省略不寫??墒÷圆粚憽?5例如:例如:10#170# ; 10#170# ; - (- (表示表示第
50、三第三部分為部分為十進(jìn)制十進(jìn)制數(shù)數(shù),等于,等于 170)170)16#FE#; 16#FE#; - (- (表示表示第三第三部分部分十六進(jìn)制十六進(jìn)制數(shù)數(shù) ,等于,等于 254)254)2#1111_1110#;2#1111_1110#;- (- (表示表示第三第三部分為部分為二進(jìn)制二進(jìn)制數(shù)數(shù),等于,等于 254)254)8#376#; 8#376#; - (- (表示表示第三第三部分為部分為八進(jìn)制八進(jìn)制數(shù)數(shù),等于,等于 254) 254)16#E#E1 ; 16#E#E1 ; - (- (表示十六進(jìn)制表示十六進(jìn)制數(shù)數(shù),等于,等于141416161 1,等于,等于224)224) 3. 3. 字
51、符和字符串字符和字符串(1 1) 字符是用單引號(hào)括起來的字符是用單引號(hào)括起來的ASCASC碼碼 一般情況下一般情況下VHDLVHDL對(duì)字母的大小寫不敏感,但對(duì)字符的大小寫是敏感對(duì)字母的大小寫不敏感,但對(duì)字符的大小寫是敏感 的,例:的,例:A A 和和 a a 是不同的。是不同的。(2 2) 字符串是用雙引號(hào)括起來的字符序列字符串是用雙引號(hào)括起來的字符序列 在在VHDLVHDL中字符串常用來作為說明文字出現(xiàn)。中字符串常用來作為說明文字出現(xiàn)。 例:例:“it is time outit is time out”, , “ ERROR ERROR”, “Both S and Q equal to 1
52、Both S and Q equal to 1” 注意:注意:“a a” 和和 a a是不同的是不同的36B B:二進(jìn)制基數(shù)符號(hào):二進(jìn)制基數(shù)符號(hào)O O:八進(jìn)制基數(shù)符號(hào):八進(jìn)制基數(shù)符號(hào)X X:十六進(jìn)制基數(shù)符號(hào):十六進(jìn)制基數(shù)符號(hào)(0(0F)F)采用位串的優(yōu)點(diǎn)是為了增加源代碼的可讀性。采用位串的優(yōu)點(diǎn)是為了增加源代碼的可讀性。例:例:B1_1101_1110 B1_1101_1110 - - 二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是9 9 O15 O15 - - 八進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是八進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是6 6 X X“AD0AD0” - - 十六進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度
53、是十六進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是1212 B101_010_101_010 - B101_010_101_010 - 二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是1212 0AD0 0AD0 - 表達(dá)錯(cuò)誤,缺表達(dá)錯(cuò)誤,缺X X4.4.位串位串位串是用雙引號(hào)括起來的數(shù)字序列,數(shù)字序列前面加上一個(gè)基數(shù)說明符:位串是用雙引號(hào)括起來的數(shù)字序列,數(shù)字序列前面加上一個(gè)基數(shù)說明符:5.5.注釋注釋 注釋語句用注釋語句用“”開始到本行結(jié)束的一段文字來進(jìn)行一段的描述開始到本行結(jié)束的一段文字來進(jìn)行一段的描述 注釋不是設(shè)計(jì)功能描述的一部分,所以不會(huì)被編譯。注釋不是設(shè)計(jì)功能描述的一部分,所以不會(huì)被編譯。
54、375.2.2 5.2.2 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象(DATA OBJECTS)(DATA OBJECTS) VHDL VHDL是一種硬件描述語言,硬件電路的工作過程實(shí)際上是信號(hào)的傳輸、是一種硬件描述語言,硬件電路的工作過程實(shí)際上是信號(hào)的傳輸、存儲(chǔ)和處理的過程,所以存儲(chǔ)和處理的過程,所以VHDLVHDL最基本的描述對(duì)象是常量和信號(hào)。為了便于描最基本的描述對(duì)象是常量和信號(hào)。為了便于描述,還定義了另外一類數(shù)據(jù)對(duì)象:述,還定義了另外一類數(shù)據(jù)對(duì)象:變量變量。1. 1. 常量(常量(CONSTANTCONSTANT) 常量是指在設(shè)計(jì)實(shí)體中不會(huì)發(fā)生變化的值常量是指在設(shè)計(jì)實(shí)體中不會(huì)發(fā)生變化的值 常量定義的一般表述:
55、常量定義的一般表述: CONSTANT CONSTANT 常量名:數(shù)據(jù)類型常量名:數(shù)據(jù)類型 := := 表達(dá)式表達(dá)式 ; 例如:例如: constant aconstant a,b b : INTEGER := 2INTEGER := 2; constant VCC constant VCC : REAL :REAL : 3.33.3;注意:注意:v 常量一旦被賦值就不能再改變常量一旦被賦值就不能再改變v 常量可以在程序包、實(shí)體說明、結(jié)構(gòu)體和進(jìn)程的說明區(qū)域進(jìn)行說明常量可以在程序包、實(shí)體說明、結(jié)構(gòu)體和進(jìn)程的說明區(qū)域進(jìn)行說明v 常量所賦的值應(yīng)與其所定義的數(shù)據(jù)類型一致,否則出錯(cuò)常量所賦的值應(yīng)與其所定
56、義的數(shù)據(jù)類型一致,否則出錯(cuò)382. 2. 變量(變量(VARIABLEVARIABLE) 變量主要用于對(duì)暫時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ),它不能將信息帶出對(duì)變量主要用于對(duì)暫時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ),它不能將信息帶出對(duì)它作出定義的當(dāng)前單元。它作出定義的當(dāng)前單元。 (1 1)變量定義的一般格式:)變量定義的一般格式: VARIABLE VARIABLE 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 := := 初始值初始值; ; 例:例:VARIABLE a : std_logic;VARIABLE a : std_logic; VARIABLE b ,c : integer := 2; VARIABLE b ,c : integer
57、 := 2; VARIABLE count1,count2,count3 : integer range 0 VARIABLE count1,count2,count3 : integer range 0 to 255 := 0; to 255 := 0; 例中定義例中定義a a為標(biāo)準(zhǔn)邏輯位變量,為標(biāo)準(zhǔn)邏輯位變量,b, cb, c為整數(shù)型變量,初始為整數(shù)型變量,初始值為值為2 2等。等。 39注意:注意: (1 1)賦值語句右邊的表達(dá)式必須是一個(gè)與目標(biāo)變量具有)賦值語句右邊的表達(dá)式必須是一個(gè)與目標(biāo)變量具有相同數(shù)據(jù)類型相同數(shù)據(jù)類型的數(shù)值。的數(shù)值。 (2 2)變量是一個(gè))變量是一個(gè)局部量局部量,只
58、能在進(jìn)程和子程序中使用。,只能在進(jìn)程和子程序中使用。 (3 3)變量的賦值是一種理想化的數(shù)據(jù)傳輸,是)變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生立即發(fā)生的,不存在任的,不存在任何延時(shí)的行為。何延時(shí)的行為。 (2)變量的賦值)變量的賦值 變量可以被連續(xù)地進(jìn)行賦值,變量的賦值采用的符號(hào)是變量可以被連續(xù)地進(jìn)行賦值,變量的賦值采用的符號(hào)是 “:=”,格式,格式如下:如下: 變量名變量名 := := 表達(dá)式;表達(dá)式; 例:例:a := a := “10101011010101” ; - ; -位矢量賦值位矢量賦值 b := b := 0 0 ; - ; -位賦值位賦值 x := 100.0 ; -x
59、:= 100.0 ; -實(shí)數(shù)賦值實(shí)數(shù)賦值403. 3. 信號(hào)(信號(hào)(SIGNALSIGNAL) 信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它是設(shè)計(jì)實(shí)體中并信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它是設(shè)計(jì)實(shí)體中并行語句模塊間動(dòng)態(tài)交換數(shù)據(jù)的手段。在物理上信號(hào)對(duì)應(yīng)著硬件設(shè)行語句模塊間動(dòng)態(tài)交換數(shù)據(jù)的手段。在物理上信號(hào)對(duì)應(yīng)著硬件設(shè)計(jì)中的一條連接線。計(jì)中的一條連接線。 (1) (1) 信號(hào)定義語句格式:信號(hào)定義語句格式: SIGNAL SIGNAL 信號(hào)名:信號(hào)名: 數(shù)據(jù)類型數(shù)據(jù)類型 := := 初始值初始值 ; 例:例:SIGNAL clk : std_logic := SIGNAL clk : std_logic
60、:= 0 0; ; SIGNAL a : integer range 0 to 15; SIGNAL a : integer range 0 to 15; SIGNAL data : std_logic_vector(15 downto 0); SIGNAL data : std_logic_vector(15 downto 0); 信號(hào)的初始值不是必須的,而且僅在信號(hào)的初始值不是必須的,而且僅在VHDLVHDL的行為仿真中的行為仿真中有效,信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包有效,信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包41 (2)信號(hào)賦值格式信號(hào)賦值格式: : 信號(hào)名信號(hào)名 = = 表達(dá)式;表達(dá)式; 例:例:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃戶外廣告牌合同
- 市場(chǎng)推廣與渠道分銷協(xié)議書
- AI輔助醫(yī)生診斷系統(tǒng)研發(fā)合作協(xié)議
- 企業(yè)客戶關(guān)系管理系統(tǒng)績效評(píng)估協(xié)議
- 養(yǎng)殖業(yè)行業(yè)知識(shí)培訓(xùn)課件
- 高考語文答題技巧及方法
- 物流倉儲(chǔ)安全管理規(guī)范
- 企業(yè)危機(jī)公關(guān)處理與媒體應(yīng)對(duì)預(yù)案
- 高考英語題型 組合規(guī)范練習(xí)
- 餐飲服務(wù)提供合同細(xì)節(jié)
- 工業(yè)項(xiàng)目投資估算及財(cái)務(wù)評(píng)價(jià)附表(有計(jì)算公式)
- 北京市2024年中考英語真題【附參考答案】
- 某大學(xué)中醫(yī)學(xué)(專升本)學(xué)士學(xué)位考試復(fù)習(xí)題
- 縣醫(yī)院聘請(qǐng)社會(huì)監(jiān)督員實(shí)施方案(經(jīng)典版)
- 江西省數(shù)字產(chǎn)業(yè)集團(tuán)有限公司招聘筆試真題2023
- DL-T+5174-2020燃?xì)?蒸汽聯(lián)合循環(huán)電廠設(shè)計(jì)規(guī)范
- 弟子規(guī)帶拼音全文課件省公共課一等獎(jiǎng)全國賽課獲獎(jiǎng)?wù)n件
- 2024年揚(yáng)州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫附答案
- 猜猜我有多愛你-繪本故事
- 人教版pep小學(xué)四年級(jí)英語下冊(cè)全冊(cè)完整
- 人教部編版《道德與法治》六年級(jí)下冊(cè)第9課《日益重要的國際組織》精美課件
評(píng)論
0/150
提交評(píng)論