電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)課件_第1頁(yè)
電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)課件_第2頁(yè)
電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)課件_第3頁(yè)
電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)課件_第4頁(yè)
電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)課件_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)1.1 實(shí)體實(shí)體1.2 結(jié)構(gòu)體結(jié)構(gòu)體1.3 塊、子程序和進(jìn)程塊、子程序和進(jìn)程 1.4 庫(kù)和程序包庫(kù)和程序包 1.5 配置配置 第一章第一章 VHDLVHDL基本結(jié)構(gòu)基本結(jié)構(gòu) 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 一個(gè)完整的一個(gè)完整的VHDL程序或設(shè)計(jì)實(shí)體,要求能為程序或設(shè)計(jì)實(shí)體,要求能為VHDL綜合器所支持,并能作為一個(gè)獨(dú)立的設(shè)計(jì)單元,綜合器所支持,并能作為一個(gè)獨(dú)立的設(shè)計(jì)單元,即元件的形式而存在的即元件的形式而存在的VHDL程序。程序。 實(shí)體實(shí)體和和結(jié)構(gòu)體結(jié)構(gòu)體是必需的是必需的可構(gòu)成最簡(jiǎn)單可構(gòu)成最簡(jiǎn)單VHDL程序。程序。 通常通常VHDL程序包含五個(gè)部分:程

2、序包含五個(gè)部分:(1)實(shí)體()實(shí)體(ENTITY)(2)結(jié)構(gòu)體()結(jié)構(gòu)體(ARCHITECTURE)(3)包集合()包集合(PACKAGE)(4)庫(kù)()庫(kù)(LIBRARY)(5)配置()配置(CONFIGURATION)電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 實(shí)體實(shí)體是是VHDL語(yǔ)言設(shè)計(jì)的基本單元。語(yǔ)言設(shè)計(jì)的基本單元。1.1 實(shí)體實(shí)體 實(shí)體說(shuō)明實(shí)體說(shuō)明是對(duì)設(shè)計(jì)實(shí)體與外部電路的是對(duì)設(shè)計(jì)實(shí)體與外部電路的接口描述接口描述,它規(guī)定了設(shè)計(jì)單元的它規(guī)定了設(shè)計(jì)單元的輸入輸出接口信號(hào)或引腳輸入輸出接口信號(hào)或引腳,是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面。是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面。 結(jié)構(gòu)體結(jié)構(gòu)體用于描述此設(shè)計(jì)實(shí)體的用于描

3、述此設(shè)計(jì)實(shí)體的邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)和和邏輯功能邏輯功能。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)【例1】ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;實(shí)體說(shuō)明結(jié)構(gòu)體1.1 設(shè)計(jì)實(shí)體設(shè)計(jì)實(shí)體圖圖1-1 mux21a實(shí)體實(shí)體圖圖1-2 mux21a結(jié)構(gòu)體結(jié)構(gòu)體設(shè)計(jì)實(shí)體總由設(shè)計(jì)實(shí)體總由和和兩部分構(gòu)成兩部分構(gòu)成2選選1多路選

4、擇器的多路選擇器的VHDL描述描述電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)實(shí)體語(yǔ)句結(jié)構(gòu)如下:實(shí)體語(yǔ)句結(jié)構(gòu)如下:例:例:ENTITY or2 IS PORT(a,b:IN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY or2; ENTITY 實(shí)體名實(shí)體名 IS GENERIC(類(lèi)屬表);(類(lèi)屬表); PORT(端口表);(端口表);END ENTITY 實(shí)體名;實(shí)體名;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 在層次化系統(tǒng)中,實(shí)體說(shuō)明是整個(gè)模塊在層次化系統(tǒng)中,實(shí)體說(shuō)明是整個(gè)模塊或整個(gè)系統(tǒng)的輸入輸出(或整個(gè)系統(tǒng)的輸入輸出(I/O)接口)接口 在器件級(jí)設(shè)計(jì)中實(shí)體說(shuō)明是芯片

5、的輸入在器件級(jí)設(shè)計(jì)中實(shí)體說(shuō)明是芯片的輸入輸出(輸出(I/O)電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 1.1.1 1.1.1類(lèi)屬參量類(lèi)屬參量(GENERIC) 類(lèi)屬參量是實(shí)體說(shuō)明組織中的可選項(xiàng),類(lèi)屬參量是實(shí)體說(shuō)明組織中的可選項(xiàng),放在端口說(shuō)明之前,其一般格式為:放在端口說(shuō)明之前,其一般格式為:GENERIC CONSTANT 名字表:名字表:IN 子類(lèi)型標(biāo)識(shí)子類(lèi)型標(biāo)識(shí) := 靜態(tài)表達(dá)式靜態(tài)表達(dá)式, 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 1.1.1 1.1.1類(lèi)屬參量類(lèi)屬參量(GENERIC)w類(lèi)屬參量類(lèi)屬參量是實(shí)體說(shuō)明組織中的是實(shí)體說(shuō)明組織中的可選項(xiàng)可選項(xiàng),放在端口說(shuō)明之前,其一般格式為:放在端口說(shuō)

6、明之前,其一般格式為:wGENERIC CONSTANT 名字表:名字表:IN 子類(lèi)型標(biāo)識(shí)子類(lèi)型標(biāo)識(shí) := 靜態(tài)表達(dá)式靜態(tài)表達(dá)式, 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 類(lèi)屬參量類(lèi)屬參量用來(lái)規(guī)定用來(lái)規(guī)定端口的大小端口的大小、實(shí)體、實(shí)體中中子元件數(shù)目子元件數(shù)目及實(shí)體的及實(shí)體的定時(shí)特性定時(shí)特性等。等。 它和常數(shù)不同,它和常數(shù)不同,常數(shù)常數(shù)只能從設(shè)計(jì)實(shí)體的只能從設(shè)計(jì)實(shí)體的內(nèi)部?jī)?nèi)部得到賦值且不能改變得到賦值且不能改變;而類(lèi)屬參量的值可由設(shè)計(jì);而類(lèi)屬參量的值可由設(shè)計(jì)實(shí)體的外部提供。實(shí)體的外部提供。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 這里類(lèi)屬參量中參數(shù)這里類(lèi)屬參量中參數(shù)trise為上升沿寬度,為上升沿

7、寬度,tfall為下為下降沿寬度,用于仿真模塊的設(shè)計(jì);降沿寬度,用于仿真模塊的設(shè)計(jì); 定義地址總線(xiàn)的寬度為定義地址總線(xiàn)的寬度為Addrwidth位,類(lèi)屬值位,類(lèi)屬值A(chǔ)ddrwidth的改變將使結(jié)構(gòu)體中所有相關(guān)的總線(xiàn)定義同的改變將使結(jié)構(gòu)體中所有相關(guān)的總線(xiàn)定義同時(shí)改變,由此使整個(gè)設(shè)計(jì)實(shí)體的硬件結(jié)構(gòu)發(fā)生變化。時(shí)改變,由此使整個(gè)設(shè)計(jì)實(shí)體的硬件結(jié)構(gòu)發(fā)生變化。 例:例:GENERIC (trise,tfall:TIME:=1ns; Addrwidth:INTEGER:=16);PORT(a0, a1 : IN STD_LOGIC; Add_bus:OUT STD_LOGIC_VECTOR(addrwidt

8、h-1 DOWNTO 0); 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)1.1.2 端口說(shuō)明端口說(shuō)明(PORT) 端口端口是是對(duì)基本設(shè)計(jì)單元與外部接口的對(duì)基本設(shè)計(jì)單元與外部接口的描述描述。 其功能其功能相當(dāng)電路圖相當(dāng)電路圖符號(hào)的符號(hào)的外部引腳外部引腳。 端口可以被賦值,也可以當(dāng)做邏輯端口可以被賦值,也可以當(dāng)做邏輯變量用在邏輯表達(dá)式中。變量用在邏輯表達(dá)式中。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 其中端口名是設(shè)計(jì)者為實(shí)體的每一個(gè)對(duì)外通道其中端口名是設(shè)計(jì)者為實(shí)體的每一個(gè)對(duì)外通道所取的名字,通常為英文字母加數(shù)字,名字的定義有所取的名字,通常為英文字母加數(shù)字,名字的定義有一定的慣例,如一定的慣例,如clk 表

9、示時(shí)鐘,表示時(shí)鐘,D開(kāi)頭的端口名表示開(kāi)頭的端口名表示數(shù)據(jù),數(shù)據(jù),A開(kāi)頭的端口名表示地址。端口模式是指這些開(kāi)頭的端口名表示地址。端口模式是指這些通道上的數(shù)據(jù)流動(dòng)的方式,如輸入或輸出等。通道上的數(shù)據(jù)流動(dòng)的方式,如輸入或輸出等。 端口模式有以下幾種類(lèi)型:端口模式有以下幾種類(lèi)型:1輸入(輸入(IN) 允許信號(hào)進(jìn)入實(shí)體,主要用于時(shí)鐘輸入、控制輸入允許信號(hào)進(jìn)入實(shí)體,主要用于時(shí)鐘輸入、控制輸入(如(如load、reset、enable、clk)和單向的數(shù)據(jù)輸入)和單向的數(shù)據(jù)輸入(如地址數(shù)據(jù)信號(hào)(如地址數(shù)據(jù)信號(hào)address)等。)等。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)2輸出(輸出(OUT) 輸出模式只允

10、許信號(hào)離開(kāi)實(shí)體,常用于計(jì)數(shù)輸出、單輸出模式只允許信號(hào)離開(kāi)實(shí)體,常用于計(jì)數(shù)輸出、單向數(shù)據(jù)輸出、被設(shè)計(jì)實(shí)體產(chǎn)生的控制其他實(shí)體的信號(hào)等。向數(shù)據(jù)輸出、被設(shè)計(jì)實(shí)體產(chǎn)生的控制其他實(shí)體的信號(hào)等。注意:輸出模式不能用于被設(shè)計(jì)實(shí)體的內(nèi)部反饋,因?yàn)檩斪⒁猓狠敵瞿J讲荒苡糜诒辉O(shè)計(jì)實(shí)體的內(nèi)部反饋,因?yàn)檩敵龆丝谠趯?shí)體內(nèi)不能看做是可讀的。出端口在實(shí)體內(nèi)不能看做是可讀的。 3雙向模式(雙向模式(INOUT) 雙向模式允許信號(hào)雙向傳輸(既可以進(jìn)入實(shí)體,也可雙向模式允許信號(hào)雙向傳輸(既可以進(jìn)入實(shí)體,也可以離開(kāi)實(shí)體),雙向模式端口允許引入內(nèi)部反饋。以離開(kāi)實(shí)體),雙向模式端口允許引入內(nèi)部反饋。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)

11、4緩沖(緩沖(BUFFER) 緩沖模式允許信號(hào)輸出到實(shí)體外部,但同時(shí)也可以緩沖模式允許信號(hào)輸出到實(shí)體外部,但同時(shí)也可以在實(shí)體內(nèi)部引用該端口的信號(hào)。緩沖端口既能用于輸在實(shí)體內(nèi)部引用該端口的信號(hào)。緩沖端口既能用于輸出也能用于反饋。緩沖模式用于在實(shí)體內(nèi)部建立一個(gè)出也能用于反饋。緩沖模式用于在實(shí)體內(nèi)部建立一個(gè)可讀的輸出端口,例如計(jì)數(shù)器輸出、計(jì)數(shù)器的現(xiàn)態(tài)用可讀的輸出端口,例如計(jì)數(shù)器輸出、計(jì)數(shù)器的現(xiàn)態(tài)用來(lái)決定計(jì)數(shù)器的次態(tài)。來(lái)決定計(jì)數(shù)器的次態(tài)。 端口模式可用下圖說(shuō)明,圖中方框代表一個(gè)設(shè)計(jì)實(shí)體或端口模式可用下圖說(shuō)明,圖中方框代表一個(gè)設(shè)計(jì)實(shí)體或模塊。模塊。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 在在VHDL設(shè)計(jì)

12、中,通常將輸入信號(hào)端口指定為輸入設(shè)計(jì)中,通常將輸入信號(hào)端口指定為輸入模式,輸出信號(hào)端口指定為輸出模式,而雙向數(shù)據(jù)通模式,輸出信號(hào)端口指定為輸出模式,而雙向數(shù)據(jù)通信信號(hào),如計(jì)算機(jī)信信號(hào),如計(jì)算機(jī)PCI總線(xiàn)的地址總線(xiàn)的地址/數(shù)據(jù)復(fù)用總線(xiàn),數(shù)據(jù)復(fù)用總線(xiàn),DMA控制器數(shù)據(jù)總線(xiàn)等純雙向的信號(hào)采用雙向端口模控制器數(shù)據(jù)總線(xiàn)等純雙向的信號(hào)采用雙向端口模式。從端口的名稱(chēng)、模式就能一目了然地指導(dǎo)信號(hào)的式。從端口的名稱(chēng)、模式就能一目了然地指導(dǎo)信號(hào)的用途、性質(zhì)、來(lái)源和去向。用途、性質(zhì)、來(lái)源和去向。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 結(jié)構(gòu)體是對(duì)實(shí)體功能的具體描述,因此它一定要跟結(jié)構(gòu)體是對(duì)實(shí)體功能的具體描述,因此它一

13、定要跟在實(shí)體的后面在實(shí)體的后面 。 行為描述(基本設(shè)計(jì)單元的數(shù)學(xué)模型描述)、寄存器傳行為描述(基本設(shè)計(jì)單元的數(shù)學(xué)模型描述)、寄存器傳輸描述(數(shù)據(jù)流描述)和結(jié)構(gòu)描述(邏輯元件連接描述)輸描述(數(shù)據(jù)流描述)和結(jié)構(gòu)描述(邏輯元件連接描述) 1.2 結(jié)構(gòu)體結(jié)構(gòu)體 結(jié)構(gòu)體也叫構(gòu)造體,結(jié)構(gòu)體描述了基本設(shè)計(jì)單元結(jié)構(gòu)體也叫構(gòu)造體,結(jié)構(gòu)體描述了基本設(shè)計(jì)單元(實(shí)體)的結(jié)構(gòu)、行為、元件及內(nèi)部連接關(guān)系,也就(實(shí)體)的結(jié)構(gòu)、行為、元件及內(nèi)部連接關(guān)系,也就是說(shuō)它定義了設(shè)計(jì)實(shí)體的功能,規(guī)定了設(shè)計(jì)實(shí)體的數(shù)是說(shuō)它定義了設(shè)計(jì)實(shí)體的功能,規(guī)定了設(shè)計(jì)實(shí)體的數(shù)據(jù)流程,制定了實(shí)體內(nèi)部元件的連接關(guān)系。結(jié)構(gòu)體對(duì)據(jù)流程,制定了實(shí)體內(nèi)部元件的連

14、接關(guān)系。結(jié)構(gòu)體對(duì)其基本設(shè)計(jì)單元的輸入和輸出關(guān)系可用以下三種方式其基本設(shè)計(jì)單元的輸入和輸出關(guān)系可用以下三種方式進(jìn)行描述,即進(jìn)行描述,即:電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)圖 VHDL程序設(shè)計(jì)基本結(jié)構(gòu) 庫(kù)、程序包使用說(shuō)明配置(CONFIGURATION)結(jié)構(gòu)體(ARCHITECTURE)實(shí)體(ENTITY)PORT 端口說(shuō)明結(jié)構(gòu)體說(shuō)明GENERIC 類(lèi)屬說(shuō)明體實(shí)計(jì)設(shè)結(jié)構(gòu)體功能描述電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)圖 結(jié)構(gòu)體構(gòu)造圖進(jìn)程語(yǔ)句塊語(yǔ)句體結(jié)構(gòu)明說(shuō)體構(gòu)結(jié)述能描功體構(gòu)結(jié)元件例化語(yǔ)句子程序調(diào)用語(yǔ)句信號(hào)賦值語(yǔ)句常數(shù)說(shuō)明數(shù)據(jù)類(lèi)型說(shuō)明信號(hào)說(shuō)明例化元件說(shuō)明子程序說(shuō)明電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)

15、 結(jié)構(gòu)體一般由兩大部分組成:結(jié)構(gòu)體一般由兩大部分組成: ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 定義語(yǔ)句定義語(yǔ)句 BEGIN 功能描述語(yǔ)句功能描述語(yǔ)句 END 結(jié)構(gòu)體名;結(jié)構(gòu)體名; (1)對(duì)數(shù)據(jù)類(lèi)型、常數(shù)、信號(hào)、子程序和元件等因素對(duì)數(shù)據(jù)類(lèi)型、常數(shù)、信號(hào)、子程序和元件等因素進(jìn)行說(shuō)明的部分;進(jìn)行說(shuō)明的部分;(2)描述實(shí)體的邏輯行為、以各種不同的描述風(fēng)格表達(dá)描述實(shí)體的邏輯行為、以各種不同的描述風(fēng)格表達(dá)的功能描述語(yǔ)句,包括各種順序語(yǔ)句和并行語(yǔ)句。的功能描述語(yǔ)句,包括各種順序語(yǔ)句和并行語(yǔ)句。結(jié)構(gòu)體的語(yǔ)句格式為:結(jié)構(gòu)體的語(yǔ)句格式為:電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)1.2.

16、1 結(jié)構(gòu)體名結(jié)構(gòu)體名 結(jié)構(gòu)體名由設(shè)計(jì)者自行定義,結(jié)構(gòu)體名由設(shè)計(jì)者自行定義,OF后面的實(shí)體名指后面的實(shí)體名指明了該結(jié)構(gòu)體所對(duì)應(yīng)的是哪個(gè)實(shí)體。明了該結(jié)構(gòu)體所對(duì)應(yīng)的是哪個(gè)實(shí)體。 有些設(shè)計(jì)實(shí)體有多個(gè)結(jié)構(gòu)體,這些結(jié)構(gòu)體的結(jié)構(gòu)體有些設(shè)計(jì)實(shí)體有多個(gè)結(jié)構(gòu)體,這些結(jié)構(gòu)體的結(jié)構(gòu)體名不可相同,通常用名不可相同,通常用dataflow(數(shù)據(jù)流)、(數(shù)據(jù)流)、behavior(行為)、(行為)、structural(結(jié)構(gòu))命名。(結(jié)構(gòu))命名。 這這3個(gè)名稱(chēng)體現(xiàn)了個(gè)名稱(chēng)體現(xiàn)了3種不同結(jié)構(gòu)體的描述方式,使得種不同結(jié)構(gòu)體的描述方式,使得閱讀閱讀VHDL語(yǔ)言程序時(shí),能直接了解設(shè)計(jì)者采用的描語(yǔ)言程序時(shí),能直接了解設(shè)計(jì)者采用的描述

17、方式。述方式。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 結(jié)構(gòu)體信號(hào)定義語(yǔ)句必須放在關(guān)鍵詞結(jié)構(gòu)體信號(hào)定義語(yǔ)句必須放在關(guān)鍵詞ARCHITECTURE和和BEGIN之間,用于對(duì)結(jié)構(gòu)體內(nèi)部將之間,用于對(duì)結(jié)構(gòu)體內(nèi)部將要使用的信號(hào)、常數(shù)、數(shù)據(jù)類(lèi)型、元件、函數(shù)和過(guò)程加要使用的信號(hào)、常數(shù)、數(shù)據(jù)類(lèi)型、元件、函數(shù)和過(guò)程加以說(shuō)明。以說(shuō)明。 結(jié)構(gòu)體中的信號(hào)定義和端口說(shuō)明一樣,應(yīng)有信號(hào)名稱(chēng)結(jié)構(gòu)體中的信號(hào)定義和端口說(shuō)明一樣,應(yīng)有信號(hào)名稱(chēng)和數(shù)據(jù)類(lèi)型定義。因?yàn)樗莾?nèi)部連接用的信號(hào),因此不和數(shù)據(jù)類(lèi)型定義。因?yàn)樗莾?nèi)部連接用的信號(hào),因此不需要方向說(shuō)明。需要方向說(shuō)明。 1.2.2 結(jié)構(gòu)體信號(hào)定義語(yǔ)句結(jié)構(gòu)體信號(hào)定義語(yǔ)句 需要注意的是:實(shí)

18、體說(shuō)明中定義的信號(hào)是外部信需要注意的是:實(shí)體說(shuō)明中定義的信號(hào)是外部信號(hào),而結(jié)構(gòu)體定義的信號(hào)為該結(jié)構(gòu)體的內(nèi)部信號(hào),它號(hào),而結(jié)構(gòu)體定義的信號(hào)為該結(jié)構(gòu)體的內(nèi)部信號(hào),它只能用于這個(gè)結(jié)構(gòu)體中。只能用于這個(gè)結(jié)構(gòu)體中。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); BEGIN END rtl; 例:結(jié)構(gòu)體的信號(hào)定義實(shí)例。例:結(jié)構(gòu)體的信號(hào)定義實(shí)例。結(jié)構(gòu)體名結(jié)構(gòu)體名實(shí)體名實(shí)體名結(jié)構(gòu)體信號(hào)定義語(yǔ)句結(jié)構(gòu)體信號(hào)定義語(yǔ)句功能描述語(yǔ)句功能描述語(yǔ)句電子設(shè)計(jì)自動(dòng)化edavhdl基本

19、結(jié)構(gòu)1.2.3 結(jié)構(gòu)體功能描述語(yǔ)句結(jié)構(gòu)體功能描述語(yǔ)句 結(jié)構(gòu)體功能描述語(yǔ)句位于結(jié)構(gòu)體功能描述語(yǔ)句位于BEGIN和和END之間,具之間,具體地描述了構(gòu)造體的行為及其連接關(guān)系。體地描述了構(gòu)造體的行為及其連接關(guān)系。 結(jié)構(gòu)體的功能描述語(yǔ)句可以含有結(jié)構(gòu)體的功能描述語(yǔ)句可以含有5種不同類(lèi)型的并行種不同類(lèi)型的并行語(yǔ)句,如圖所示。每一語(yǔ)句結(jié)構(gòu)內(nèi)部可以使用并行語(yǔ)語(yǔ)句,如圖所示。每一語(yǔ)句結(jié)構(gòu)內(nèi)部可以使用并行語(yǔ)句,也可以是順序語(yǔ)句。句,也可以是順序語(yǔ)句。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)結(jié)構(gòu)體構(gòu)造圖結(jié)構(gòu)體構(gòu)造圖: 結(jié)構(gòu)體(ARCHITECTURE) 說(shuō)明語(yǔ)句 功能描述語(yǔ)句 塊語(yǔ)句(BLOCK)進(jìn)程語(yǔ)句(PROCES

20、S) 信號(hào)賦值語(yǔ)句 子程序調(diào)用語(yǔ)句 元件例化語(yǔ)句 由一系列并行語(yǔ)句構(gòu)由一系列并行語(yǔ)句構(gòu) 成的組合體,它的功能是成的組合體,它的功能是將結(jié)構(gòu)體中的并行語(yǔ)句組將結(jié)構(gòu)體中的并行語(yǔ)句組成一個(gè)或多個(gè)子模塊成一個(gè)或多個(gè)子模塊 定義順序語(yǔ)句模塊,用定義順序語(yǔ)句模塊,用以將從外部獲得的信號(hào)值以將從外部獲得的信號(hào)值或內(nèi)部運(yùn)算數(shù)據(jù)向其他的或內(nèi)部運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值信號(hào)進(jìn)行賦值 將設(shè)計(jì)實(shí)體內(nèi)的處理將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果向定義的信號(hào)或界結(jié)果向定義的信號(hào)或界面端口進(jìn)行賦值面端口進(jìn)行賦值 可以調(diào)用進(jìn)程或參可以調(diào)用進(jìn)程或參數(shù),并將獲得的結(jié)果數(shù),并將獲得的結(jié)果賦值于信號(hào)賦值于信號(hào) 對(duì)其他的設(shè)計(jì)實(shí)體做對(duì)其他的設(shè)計(jì)實(shí)體做

21、元件調(diào)用說(shuō)明,并將此元件調(diào)用說(shuō)明,并將此元件的端口與其他元件、元件的端口與其他元件、信號(hào)或高層實(shí)體的界面信號(hào)或高層實(shí)體的界面端口進(jìn)行連接端口進(jìn)行連接(Flash演示)演示)電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)ENTTITY mux2 ISPORT (d0,d1:IN BIT; sel:IN BIT; s:OUT BIT);); END mux2; ARCHITECTURE dataflow OF mux2 IS SIGNAL sig:BIT; BEGINSig = (d0 AND sel) OR (NOT sel AND d1);S=sig; END dataflow; 例例: 2選選1數(shù)據(jù)選

22、擇器數(shù)據(jù)選擇器 信號(hào)定義語(yǔ)句(內(nèi)部信號(hào),無(wú)方向)信號(hào)定義語(yǔ)句(內(nèi)部信號(hào),無(wú)方向)功能描述語(yǔ)句功能描述語(yǔ)句電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 1.3.1塊語(yǔ)句(塊語(yǔ)句(BLOCK) 在較大規(guī)模的電子系統(tǒng)設(shè)計(jì)中,傳統(tǒng)的硬件電路設(shè)在較大規(guī)模的電子系統(tǒng)設(shè)計(jì)中,傳統(tǒng)的硬件電路設(shè)計(jì)通常包括一張系統(tǒng)總電路原理圖和若干張子原理圖。計(jì)通常包括一張系統(tǒng)總電路原理圖和若干張子原理圖。在在VHDL程序設(shè)計(jì)中,結(jié)構(gòu)體是由多個(gè)程序設(shè)計(jì)中,結(jié)構(gòu)體是由多個(gè)BLOCK塊構(gòu)成塊構(gòu)成的,如果將結(jié)構(gòu)體比做總電路原理圖,那么,每個(gè)的,如果將結(jié)構(gòu)體比做總電路原理圖,那么,每個(gè)BLOCK塊則相當(dāng)于一張子原理圖。塊則相當(dāng)于一張子原理圖。

23、1.3 塊、子程序和進(jìn)程塊、子程序和進(jìn)程 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)BLOCK塊語(yǔ)句的結(jié)構(gòu):塊語(yǔ)句的結(jié)構(gòu): 塊標(biāo)號(hào):塊標(biāo)號(hào):BLOCK 接口說(shuō)明接口說(shuō)明 類(lèi)屬說(shuō)明類(lèi)屬說(shuō)明 BEGIN 并行塊語(yǔ)句并行塊語(yǔ)句 END BLOCK(塊標(biāo)號(hào));(塊標(biāo)號(hào)); 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)例:例:B1: BLOCK SIGNAL s1:BIT; BEGIN s1 = a AND b; B2: BLOCK SIGNAL s2:BIT; BEGIN s2= c AND d; B3: BLOCK BEGIN Z = s2; END BLOCK B3; END BLOCK B2; y= s1;

24、END BLOCK B1; 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) PROCESS結(jié)構(gòu)是最能體現(xiàn)結(jié)構(gòu)是最能體現(xiàn)VHDL語(yǔ)言特色的語(yǔ)句。語(yǔ)言特色的語(yǔ)句。與與BLOCK語(yǔ)句一樣,利用語(yǔ)句一樣,利用PROCESS語(yǔ)句結(jié)構(gòu)可以描述語(yǔ)句結(jié)構(gòu)可以描述一個(gè)功能獨(dú)立的電路。一個(gè)功能獨(dú)立的電路。 與與BLOCK語(yǔ)句不同之處是,在系統(tǒng)仿真時(shí),語(yǔ)句不同之處是,在系統(tǒng)仿真時(shí),PROCESS結(jié)構(gòu)中的語(yǔ)句是按順序逐條向下執(zhí)行的,而不結(jié)構(gòu)中的語(yǔ)句是按順序逐條向下執(zhí)行的,而不像像BLOCK語(yǔ)句那樣并發(fā)執(zhí)行。語(yǔ)句那樣并發(fā)執(zhí)行。 一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),每一一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),每一個(gè)進(jìn)程內(nèi)部

25、是由一系列順序語(yǔ)句來(lái)構(gòu)成的。個(gè)進(jìn)程內(nèi)部是由一系列順序語(yǔ)句來(lái)構(gòu)成的。1.3.2 進(jìn)程(進(jìn)程(PROCESS) 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)PROCESS語(yǔ)句的結(jié)構(gòu):語(yǔ)句的結(jié)構(gòu): 注意:注意:(1)在多個(gè)進(jìn)程的結(jié)構(gòu)體描述中,進(jìn)程標(biāo)號(hào)是區(qū)分各個(gè))在多個(gè)進(jìn)程的結(jié)構(gòu)體描述中,進(jìn)程標(biāo)號(hào)是區(qū)分各個(gè)進(jìn)程的標(biāo)志。但是進(jìn)程標(biāo)號(hào)并不是必需的。進(jìn)程的標(biāo)志。但是進(jìn)程標(biāo)號(hào)并不是必需的。(2)單進(jìn)程以)單進(jìn)程以PROCESS開(kāi)始,以開(kāi)始,以END PROCESS結(jié)束。結(jié)束。 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào) PROCESS (敏感信號(hào)表)(敏感信號(hào)表) IS進(jìn)程說(shuō)明語(yǔ)句進(jìn)程說(shuō)明語(yǔ)句BEGIN 順序描述語(yǔ)句順序描述語(yǔ)句 END PR

26、OCESS 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào);電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nor2_v2 IS PORT(a,b: IN STD_LOGIC; y: OUT STD_LOGIC);END nor2_v2;ARCHITECTURE behave OF nor2_v2 ISBEGIN PROCESS (a,b) VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0);例:兩輸入或非門(mén)例:兩輸入或非門(mén) y y y y y y =X; END CASE; END PROCESS;E

27、ND behave; X: 不定不定電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)D觸發(fā)器的觸發(fā)器的VHDL描述描述D觸發(fā)器【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF1; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -類(lèi)似于在芯片內(nèi)部定類(lèi)似于在芯片內(nèi)部定義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn)義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn) BEGIN PROCES

28、S (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出將內(nèi)部的暫存數(shù)據(jù)向端口輸出 END PROCESS ; END bhv;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明描述的語(yǔ)言現(xiàn)象說(shuō)明1. 1. 標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型STD_LOGICSTD_LOGICBIT數(shù)據(jù)類(lèi)型定義: TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC數(shù)據(jù)類(lèi)型定義:TYPE STD_LOGIC IS TYPE STD_LOGIC IS (U

29、,X,0,1,Z,W,L,H,-);(U,X,0,1,Z,W,L,H,-);STD_LOGIC所定義的9種數(shù)據(jù)的含義是:UU表示未初始化的;表示未初始化的; XX表示強(qiáng)未知的;表示強(qiáng)未知的; 00表示強(qiáng)邏輯表示強(qiáng)邏輯0 0; 11表示強(qiáng)邏輯表示強(qiáng)邏輯1 1; ZZ表示表示高阻態(tài);高阻態(tài); W W 表示弱未知的;表示弱未知的; LL表示弱邏輯表示弱邏輯0 0; HH表示弱邏輯表示弱邏輯1 1; -表示忽略。表示忽略。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明描述的語(yǔ)言現(xiàn)象說(shuō)明2. 2. 設(shè)計(jì)庫(kù)和標(biāo)準(zhǔn)程序包設(shè)計(jì)庫(kù)和標(biāo)準(zhǔn)程序包3. SIGNAL3. SIGNAL信號(hào)定義和數(shù)據(jù)對(duì)象

30、信號(hào)定義和數(shù)據(jù)對(duì)象【例】 ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END bhv;使用庫(kù)和程序包的一般定義表式是: LIBRARY LIBRARY ; USE USE .ALL ; .ALL ; 三種類(lèi)型數(shù)據(jù)對(duì)象:三種類(lèi)型數(shù)據(jù)對(duì)象: 信號(hào)信號(hào) signal 變量變量 variable 常數(shù)常數(shù) constant電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)

31、構(gòu)VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明描述的語(yǔ)言現(xiàn)象說(shuō)明4. 4. 上升沿檢測(cè)表達(dá)式上升沿檢測(cè)表達(dá)式關(guān)鍵詞EVENT是信號(hào)屬性,VHDL通過(guò)以下表式來(lái)測(cè)定某信號(hào)的跳變邊沿跳變邊沿:信號(hào)名信號(hào)名 EVENT AND (信號(hào)名信號(hào)名 =1) AND (信號(hào)名信號(hào)名 LAST_VALUE=0)信號(hào)名信號(hào)名 =1 AND 信號(hào)名信號(hào)名LAST_VALUE=0rising_edge(信號(hào)名信號(hào)名) - 信號(hào)的數(shù)據(jù)類(lèi)型必須是信號(hào)的數(shù)據(jù)類(lèi)型必須是STD_LOGIC信號(hào)名信號(hào)名EVENT - EVENT - 如如CLKEVENTCLKEVENTwait until 信號(hào)名信號(hào)名 = 1; -利用利用wait語(yǔ)句語(yǔ)句電子

32、設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)實(shí)現(xiàn)時(shí)序電路的實(shí)現(xiàn)時(shí)序電路的VHDL不同表達(dá)方式不同表達(dá)方式【例】【例】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保確保CLK的變化是一次上升沿的跳變的變化是一次上升沿的跳變 END IF; END PROCESS ;【例】【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同上例同上例 THEN Q = D ; END IF; END PROCESS ;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)

33、實(shí)現(xiàn)時(shí)序電路的實(shí)現(xiàn)時(shí)序電路的VHDL不同表達(dá)方式不同表達(dá)方式【例】【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ENTITY DFF3 ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的數(shù)據(jù)類(lèi)型必須是的數(shù)據(jù)類(lèi)型必須是STD

34、_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ARCHITECTURE bhv ;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 在在VHDL中,數(shù)據(jù)對(duì)象中,數(shù)據(jù)對(duì)象(Data Objects)類(lèi)似于一種容類(lèi)似于一種容器,它接受不同數(shù)據(jù)類(lèi)型的賦值。數(shù)據(jù)對(duì)象有三種,即器,它接受不同數(shù)據(jù)類(lèi)型的賦值。數(shù)據(jù)對(duì)象有三種,即常量常量(CONSTANT)、變量、變量(VARIABLE)和信號(hào)和信號(hào)(SIGNAL)。前兩種可以從傳統(tǒng)的計(jì)算機(jī)高級(jí)語(yǔ)言中找。前兩種可以從傳統(tǒng)的計(jì)算機(jī)高級(jí)語(yǔ)言中找到對(duì)應(yīng)的數(shù)據(jù)類(lèi)型,其語(yǔ)言行為與高級(jí)語(yǔ)言中的變量和到對(duì)應(yīng)的數(shù)據(jù)類(lèi)型,

35、其語(yǔ)言行為與高級(jí)語(yǔ)言中的變量和常量十分相似。但信號(hào)是具有更多的硬件特征的特殊數(shù)常量十分相似。但信號(hào)是具有更多的硬件特征的特殊數(shù)據(jù)對(duì)象,是據(jù)對(duì)象,是VHDL中最有特色的語(yǔ)言要素之一。中最有特色的語(yǔ)言要素之一。VHDL數(shù)據(jù)對(duì)象(Data Objects)電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 1常量常量(CONSTANT) 常量的定義和設(shè)置主要是為了使設(shè)計(jì)實(shí)體中的常數(shù)更常量的定義和設(shè)置主要是為了使設(shè)計(jì)實(shí)體中的常數(shù)更容易閱讀和修改。例如,將位矢的寬度定義為一個(gè)常量,容易閱讀和修改。例如,將位矢的寬度定義為一個(gè)常量,只要修改這個(gè)常量就能很容易地改變寬度,從而改變硬件只要修改這個(gè)常量就能很容易地改變寬度,

36、從而改變硬件結(jié)構(gòu)。在程序中,常量是一個(gè)恒定不變的值,一旦作了數(shù)結(jié)構(gòu)。在程序中,常量是一個(gè)恒定不變的值,一旦作了數(shù)據(jù)類(lèi)型的賦值定義后,在程序中不能再改變,因而具有全據(jù)類(lèi)型的賦值定義后,在程序中不能再改變,因而具有全局意義。常量的定義形式如下:局意義。常量的定義形式如下:CONSTANT 常量名:數(shù)據(jù)類(lèi)型常量名:數(shù)據(jù)類(lèi)型=表達(dá)式;表達(dá)式;例如:例如:CONSTANT FBUSBIT_VECTOR=“01011”;CONSTANT VCCREAL=5.0;CONSTANT DELYTIME=25ns;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) VHDL要求所定義的常量數(shù)據(jù)類(lèi)型必須與表達(dá)式的數(shù)要求所定義的常

37、量數(shù)據(jù)類(lèi)型必須與表達(dá)式的數(shù)據(jù)類(lèi)型一致。常量的數(shù)據(jù)類(lèi)型可以是標(biāo)量類(lèi)型或復(fù)合類(lèi)據(jù)類(lèi)型一致。常量的數(shù)據(jù)類(lèi)型可以是標(biāo)量類(lèi)型或復(fù)合類(lèi)型,但不能是文件類(lèi)型型,但不能是文件類(lèi)型(File)或存取類(lèi)型或存取類(lèi)型(Access)。 常量定義語(yǔ)句所允許的設(shè)計(jì)單元有實(shí)體、結(jié)構(gòu)體、程常量定義語(yǔ)句所允許的設(shè)計(jì)單元有實(shí)體、結(jié)構(gòu)體、程序包、塊、進(jìn)程和子程序。在程序包中定義的常量可以序包、塊、進(jìn)程和子程序。在程序包中定義的常量可以暫不設(shè)具體數(shù)值,它可以在程序包體中設(shè)定。暫不設(shè)具體數(shù)值,它可以在程序包體中設(shè)定。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 常量的可視性,即常量的使用范圍取決于它被定義常量的可視性,即常量的使用范圍取決于

38、它被定義的位置。在程序包中定義的常量具有最大全局化特征,的位置。在程序包中定義的常量具有最大全局化特征,可以用在調(diào)用此程序包的所有設(shè)計(jì)實(shí)體中;定義在設(shè)計(jì)可以用在調(diào)用此程序包的所有設(shè)計(jì)實(shí)體中;定義在設(shè)計(jì)實(shí)體中的常量,其有效范圍為這個(gè)實(shí)體定義的所有的結(jié)實(shí)體中的常量,其有效范圍為這個(gè)實(shí)體定義的所有的結(jié)構(gòu)體;定義在設(shè)計(jì)實(shí)體的某一結(jié)構(gòu)體中的常量,則只能構(gòu)體;定義在設(shè)計(jì)實(shí)體的某一結(jié)構(gòu)體中的常量,則只能用于此結(jié)構(gòu)體;定義在結(jié)構(gòu)體的某一單元的常量,如一用于此結(jié)構(gòu)體;定義在結(jié)構(gòu)體的某一單元的常量,如一個(gè)進(jìn)程中,則這個(gè)常量只能用在這一進(jìn)程中。個(gè)進(jìn)程中,則這個(gè)常量只能用在這一進(jìn)程中。電子設(shè)計(jì)自動(dòng)化edavhdl基本

39、結(jié)構(gòu)VHDL數(shù)據(jù)對(duì)象(Data Objects) 常量(常量(Constant) 固定值,不能在程序中被改變固定值,不能在程序中被改變 增強(qiáng)程序的可讀性,便于修改程序增強(qiáng)程序的可讀性,便于修改程序 可在可在Package、Entity、Architecture、Process、Function、Procedure中進(jìn)行定義,其有效范圍也相中進(jìn)行定義,其有效范圍也相應(yīng)限定應(yīng)限定 書(shū)寫(xiě)格式:書(shū)寫(xiě)格式: Constant 常量名常量名,常量名,常量名:數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型:=表達(dá)式表達(dá)式; 例:例:Constant data_bus_width: integer := 8;電子設(shè)計(jì)自動(dòng)化edavhdl

40、基本結(jié)構(gòu) 2變量變量(VARIABLE) 在在VHDL語(yǔ)法規(guī)則中,變量是一個(gè)局部量,只能在進(jìn)語(yǔ)法規(guī)則中,變量是一個(gè)局部量,只能在進(jìn)程和子程序中使用。變量不能將信息帶出對(duì)它作出定義程和子程序中使用。變量不能將信息帶出對(duì)它作出定義的當(dāng)前設(shè)計(jì)單元。變量的賦值是一種理想化的數(shù)據(jù)傳輸,的當(dāng)前設(shè)計(jì)單元。變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生,不存在任何延時(shí)的行為。是立即發(fā)生,不存在任何延時(shí)的行為。VHDL語(yǔ)言規(guī)則語(yǔ)言規(guī)則不支持變量附加延時(shí)語(yǔ)句。變量常用在實(shí)現(xiàn)某種算法的不支持變量附加延時(shí)語(yǔ)句。變量常用在實(shí)現(xiàn)某種算法的賦值語(yǔ)句中。賦值語(yǔ)句中。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)定義變量的語(yǔ)法格式如下:定

41、義變量的語(yǔ)法格式如下:VARIABLE 變量名:數(shù)據(jù)類(lèi)型:變量名:數(shù)據(jù)類(lèi)型:=初始值;初始值;例如:例如:VARIABLE A:INTEGER; -定義定義A為整數(shù)型為整數(shù)型變量變量VARIABLE B,C:INTEGER:=2; -定義定義B和和C為整為整型變量,初始值為型變量,初始值為2電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 變量作為局部量,其適用范圍僅限于定義了變量的變量作為局部量,其適用范圍僅限于定義了變量的進(jìn)程或子程序中。仿真過(guò)程中惟一的例外是共享變量。進(jìn)程或子程序中。仿真過(guò)程中惟一的例外是共享變量。變量的值將隨變量賦值語(yǔ)句的運(yùn)算而改變。變量定義語(yǔ)變量的值將隨變量賦值語(yǔ)句的運(yùn)算而改變。

42、變量定義語(yǔ)句中的初始值可以是一個(gè)與變量具有相同數(shù)據(jù)類(lèi)型的常句中的初始值可以是一個(gè)與變量具有相同數(shù)據(jù)類(lèi)型的常數(shù)值,也可以是一個(gè)全局靜態(tài)表達(dá)式,這個(gè)表達(dá)式的數(shù)數(shù)值,也可以是一個(gè)全局靜態(tài)表達(dá)式,這個(gè)表達(dá)式的數(shù)據(jù)類(lèi)型必須與所賦值變量一致。此初始值不是必需的,據(jù)類(lèi)型必須與所賦值變量一致。此初始值不是必需的,綜合過(guò)程中綜合器將略去所有的初始值。綜合過(guò)程中綜合器將略去所有的初始值。 變量數(shù)值的改變是通過(guò)變量賦值來(lái)實(shí)現(xiàn)的,其賦值變量數(shù)值的改變是通過(guò)變量賦值來(lái)實(shí)現(xiàn)的,其賦值語(yǔ)句的語(yǔ)法格式如下:語(yǔ)句的語(yǔ)法格式如下: 目標(biāo)變量名目標(biāo)變量名:=表達(dá)式;表達(dá)式;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)VHDL數(shù)據(jù)對(duì)象(Da

43、ta Objects) 變量(變量(Variable) 臨時(shí)數(shù)據(jù),沒(méi)有物理意義臨時(shí)數(shù)據(jù),沒(méi)有物理意義 只能在只能在Process、Function、 Procedure中定義,并只中定義,并只在其內(nèi)部有效,在其內(nèi)部有效, 要使其全局有效,先轉(zhuǎn)換為要使其全局有效,先轉(zhuǎn)換為Signal。 用用 := 進(jìn)行賦值進(jìn)行賦值 用用 := 進(jìn)行初始化進(jìn)行初始化 variable result : std_logic := 0;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 3. 信號(hào)信號(hào)(SIGNAL) 信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它類(lèi)似于連信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它類(lèi)似于連接線(xiàn)。信號(hào)可以作為設(shè)計(jì)實(shí)體

44、中并行語(yǔ)句模塊間的信息接線(xiàn)。信號(hào)可以作為設(shè)計(jì)實(shí)體中并行語(yǔ)句模塊間的信息交流通道。在交流通道。在VHDL中,信號(hào)及其相關(guān)的信號(hào)賦值語(yǔ)句、中,信號(hào)及其相關(guān)的信號(hào)賦值語(yǔ)句、決斷函數(shù)、延時(shí)語(yǔ)句等很好地描述了硬件系統(tǒng)的許多基決斷函數(shù)、延時(shí)語(yǔ)句等很好地描述了硬件系統(tǒng)的許多基本特征。如硬件系統(tǒng)運(yùn)行的并行性;信號(hào)傳輸過(guò)程中的本特征。如硬件系統(tǒng)運(yùn)行的并行性;信號(hào)傳輸過(guò)程中的慣性延時(shí)特性;多驅(qū)動(dòng)源的總線(xiàn)行為等。慣性延時(shí)特性;多驅(qū)動(dòng)源的總線(xiàn)行為等。 信號(hào)作為一種數(shù)值容器,不但可以容納當(dāng)前值,也信號(hào)作為一種數(shù)值容器,不但可以容納當(dāng)前值,也可以保持歷史值。這一屬性與觸發(fā)器的記憶功能有很好可以保持歷史值。這一屬性與觸發(fā)器

45、的記憶功能有很好的對(duì)應(yīng)關(guān)系。信號(hào)的定義格式如下:的對(duì)應(yīng)關(guān)系。信號(hào)的定義格式如下: SIGNAL 信號(hào)名:信號(hào)名: 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型=初始值;初始值;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 信號(hào)初始值的設(shè)置不是必需的,而且初始值僅在信號(hào)初始值的設(shè)置不是必需的,而且初始值僅在VHDL的行為的行為仿真中有效。與變量相比,信號(hào)的硬件特征更為明顯,它具有全局仿真中有效。與變量相比,信號(hào)的硬件特征更為明顯,它具有全局性特性。例如,在程序包中定義的信號(hào),對(duì)于所有調(diào)用此程序包的性特性。例如,在程序包中定義的信號(hào),對(duì)于所有調(diào)用此程序包的設(shè)計(jì)實(shí)體都是可見(jiàn)的;在實(shí)體中定義的信號(hào),在其對(duì)應(yīng)的結(jié)構(gòu)體中設(shè)計(jì)實(shí)體都是可見(jiàn)的;

46、在實(shí)體中定義的信號(hào),在其對(duì)應(yīng)的結(jié)構(gòu)體中都是可見(jiàn)的。都是可見(jiàn)的。 事實(shí)上,除了沒(méi)有方向說(shuō)明以外,信號(hào)與實(shí)體的端口事實(shí)上,除了沒(méi)有方向說(shuō)明以外,信號(hào)與實(shí)體的端口(PORT)概概念是一致的。相對(duì)于端口來(lái)說(shuō),其區(qū)別只是輸出端口不能讀入數(shù)據(jù),念是一致的。相對(duì)于端口來(lái)說(shuō),其區(qū)別只是輸出端口不能讀入數(shù)據(jù),輸入端口不能被賦值。信號(hào)可以看成是實(shí)體內(nèi)部的端口。反之,實(shí)輸入端口不能被賦值。信號(hào)可以看成是實(shí)體內(nèi)部的端口。反之,實(shí)體的端口只是一種隱形的信號(hào),端口的定義實(shí)際上是作了隱式的信體的端口只是一種隱形的信號(hào),端口的定義實(shí)際上是作了隱式的信號(hào)定義,并附加了數(shù)據(jù)流動(dòng)的方向。信號(hào)本身的定義是一種顯式的號(hào)定義,并附加了數(shù)

47、據(jù)流動(dòng)的方向。信號(hào)本身的定義是一種顯式的定義,因此,在實(shí)體中定義的端口,在其結(jié)構(gòu)體中都可以看成一個(gè)定義,因此,在實(shí)體中定義的端口,在其結(jié)構(gòu)體中都可以看成一個(gè)信號(hào),并加以使用而不必另作定義。以下是信號(hào)的定義示例:信號(hào),并加以使用而不必另作定義。以下是信號(hào)的定義示例:電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)SIGNAL S1:STD_LOGIG=0;-定義了一個(gè)標(biāo)準(zhǔn)位的單值信號(hào)定義了一個(gè)標(biāo)準(zhǔn)位的單值信號(hào)S1,初始值為低電平,初始值為低電平SIGNAL S2,S3:BIT; -定義了兩個(gè)位定義了兩個(gè)位BIT的信號(hào)的信號(hào)S2和和S3SIGNAL S4: STD_LOGIC_VECTOR(15 DOWNTO

48、 0);-定義了定義了一個(gè)標(biāo)準(zhǔn)位矢的位矢量一個(gè)標(biāo)準(zhǔn)位矢的位矢量-(數(shù)組、總線(xiàn)數(shù)組、總線(xiàn))信號(hào),共有信號(hào),共有16個(gè)信號(hào)元素個(gè)信號(hào)元素 以下示例定義的信號(hào)數(shù)據(jù)類(lèi)型是設(shè)計(jì)者自行定義的,這是以下示例定義的信號(hào)數(shù)據(jù)類(lèi)型是設(shè)計(jì)者自行定義的,這是VHDL所允許的:所允許的:TYPE FOUR IS(X,0,I,Z);SIGNAL S1FOUR;SIGNAL S2FOUR=X;SIGNAL S3FOUR=L;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 其中,信號(hào)其中,信號(hào)S1的初始值取為默認(rèn)值,的初始值取為默認(rèn)值,VHDL規(guī)定初規(guī)定初始值取值以取始值取值以取LEFTMOST項(xiàng)項(xiàng)(即數(shù)組中的最左項(xiàng)即數(shù)組中的最左項(xiàng))

49、為默認(rèn)為默認(rèn)值。在此例中是值。在此例中是X(任意狀態(tài)任意狀態(tài))。 信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包。信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包。在進(jìn)程和子程序中不允許定義信號(hào)。信號(hào)可以有多個(gè)驅(qū)在進(jìn)程和子程序中不允許定義信號(hào)。信號(hào)可以有多個(gè)驅(qū)動(dòng)源,或者說(shuō)賦值信號(hào)源,但必須將此信號(hào)的數(shù)據(jù)類(lèi)型動(dòng)源,或者說(shuō)賦值信號(hào)源,但必須將此信號(hào)的數(shù)據(jù)類(lèi)型定義為決斷性數(shù)據(jù)類(lèi)型。定義為決斷性數(shù)據(jù)類(lèi)型。 在進(jìn)程中,只能將信號(hào)列入敏感表,而不能將變量在進(jìn)程中,只能將信號(hào)列入敏感表,而不能將變量列入敏感表。可見(jiàn)進(jìn)程只對(duì)信號(hào)敏感,而對(duì)變量不敏感。列入敏感表??梢?jiàn)進(jìn)程只對(duì)信號(hào)敏感,而對(duì)變量不敏感。電子設(shè)計(jì)自動(dòng)化eda

50、vhdl基本結(jié)構(gòu)VHDL數(shù)據(jù)對(duì)象(Data Objects) 信號(hào)(信號(hào)(Signals) 代表連線(xiàn),代表連線(xiàn),Port也是一種信號(hào)也是一種信號(hào) 沒(méi)有方向性,可給它賦值,也可當(dāng)作輸入沒(méi)有方向性,可給它賦值,也可當(dāng)作輸入 在在Package、Entity、Architecture中定義中定義 設(shè)定的初始值在綜合時(shí)沒(méi)有用,只是在仿真時(shí)在開(kāi)始設(shè)定的初始值在綜合時(shí)沒(méi)有用,只是在仿真時(shí)在開(kāi)始設(shè)定一個(gè)起始值。設(shè)定一個(gè)起始值。 用用 = 進(jìn)行賦值進(jìn)行賦值 用用 : = 進(jìn)行初始化進(jìn)行初始化 signal count:bit_vector(3 downto 0):=“0011”;電子設(shè)計(jì)自動(dòng)化edavhdl基

51、本結(jié)構(gòu) 4三者的使用比較三者的使用比較 (1) 從硬件電路系統(tǒng)來(lái)看,常量相當(dāng)于電路中的恒定從硬件電路系統(tǒng)來(lái)看,常量相當(dāng)于電路中的恒定電平,如電平,如GND或或VCC接口,而變量和信號(hào)則相當(dāng)于組合接口,而變量和信號(hào)則相當(dāng)于組合電路系統(tǒng)中門(mén)與門(mén)間的連接及其連線(xiàn)上的信號(hào)值。電路系統(tǒng)中門(mén)與門(mén)間的連接及其連線(xiàn)上的信號(hào)值。 (2) 從行為仿真和從行為仿真和VHDL語(yǔ)句功能上看,二者的區(qū)別語(yǔ)句功能上看,二者的區(qū)別主要表現(xiàn)在接受和保持信號(hào)的方式、信息保持與傳遞的主要表現(xiàn)在接受和保持信號(hào)的方式、信息保持與傳遞的區(qū)域大小上。例如信號(hào)可以設(shè)置延時(shí)量,而變量則不能;區(qū)域大小上。例如信號(hào)可以設(shè)置延時(shí)量,而變量則不能;變

52、量只能作為局部的信息載體,而信號(hào)則可作為模塊間變量只能作為局部的信息載體,而信號(hào)則可作為模塊間的信息載體。變量的設(shè)置有時(shí)只是一種過(guò)渡,最后的信的信息載體。變量的設(shè)置有時(shí)只是一種過(guò)渡,最后的信息傳輸和界面間的通信都靠信號(hào)來(lái)完成。息傳輸和界面間的通信都靠信號(hào)來(lái)完成。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) (3) 從綜合后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)來(lái)看,信號(hào)一般將對(duì)應(yīng)更多從綜合后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)來(lái)看,信號(hào)一般將對(duì)應(yīng)更多的硬件結(jié)構(gòu),但在許多情況下,信號(hào)和變量并沒(méi)有什么區(qū)別。例如的硬件結(jié)構(gòu),但在許多情況下,信號(hào)和變量并沒(méi)有什么區(qū)別。例如在滿(mǎn)足一定條件的進(jìn)程中,綜合后它們都能引入寄存器。這時(shí)它們?cè)跐M(mǎn)足一定條件

53、的進(jìn)程中,綜合后它們都能引入寄存器。這時(shí)它們都具有能夠接受賦值這一重要的共性,而都具有能夠接受賦值這一重要的共性,而VHDL綜合器并不理會(huì)它綜合器并不理會(huì)它們?cè)诮邮苜x值時(shí)存在的延時(shí)特性。們?cè)诮邮苜x值時(shí)存在的延時(shí)特性。 (4) 雖然雖然VHDL仿真器允許變量和信號(hào)設(shè)置初始值,但在實(shí)際應(yīng)仿真器允許變量和信號(hào)設(shè)置初始值,但在實(shí)際應(yīng)用中,用中,VHDL綜合器并不會(huì)把這些信息綜合進(jìn)去。這是因?yàn)閷?shí)際的綜合器并不會(huì)把這些信息綜合進(jìn)去。這是因?yàn)閷?shí)際的FPGA/CPLD芯片在上電后,并不能確保其初始狀態(tài)的取向。因此,芯片在上電后,并不能確保其初始狀態(tài)的取向。因此,對(duì)于時(shí)序仿真來(lái)說(shuō),設(shè)置的初始值在綜合時(shí)是沒(méi)有實(shí)際

54、意義的。對(duì)于時(shí)序仿真來(lái)說(shuō),設(shè)置的初始值在綜合時(shí)是沒(méi)有實(shí)際意義的。電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)信號(hào)與變量的區(qū)別信號(hào)與變量的區(qū)別architecture rtl of start is signal count : integer range 0 to 7; begin process(clk,count) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;ar

55、chitecture rtl of start is begin process(clk)variable count : integer range 0 to 7;begin if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)信號(hào)與變量的區(qū)別信號(hào)與變量的區(qū)別architecture a of start is signal tmp : s

56、td_logic;begin process(a_bus)begin tmp = 1; for i in 3 downto 0 loop tmp = a_bus(i) and tmp; end loop; carryout = tmp; end process;end a; architecture a of start is begin process(a_bus) variable tmp:std_logic; begin tmp := 1; for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout = tmp

57、; end process;end a; 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 子程序被調(diào)用時(shí),首先要初始化,執(zhí)行處理功能后,子程序被調(diào)用時(shí),首先要初始化,執(zhí)行處理功能后,將處理結(jié)果傳遞給主程序。子程序內(nèi)部的值不能保持,將處理結(jié)果傳遞給主程序。子程序內(nèi)部的值不能保持,子程序返回后才能被再次調(diào)用并初始化。子程序返回后才能被再次調(diào)用并初始化。1.3.3子程序(子程序(SUBPROGRAM) VHDL程序與其他軟件語(yǔ)言程序中應(yīng)用子程序的目程序與其他軟件語(yǔ)言程序中應(yīng)用子程序的目的是相似的,即能夠更有效地完成重復(fù)性的工作。的是相似的,即能夠更有效地完成重復(fù)性的工作。 子程序模塊是利用順序語(yǔ)句定義和完成算

58、法的,但子程序模塊是利用順序語(yǔ)句定義和完成算法的,但子程序不能像進(jìn)程那樣可以從本結(jié)構(gòu)體的其他塊或進(jìn)子程序不能像進(jìn)程那樣可以從本結(jié)構(gòu)體的其他塊或進(jìn)程結(jié)構(gòu)中讀取信號(hào)值或向信號(hào)賦值,只能通過(guò)子程序程結(jié)構(gòu)中讀取信號(hào)值或向信號(hào)賦值,只能通過(guò)子程序調(diào)用與子程序的界面端口進(jìn)行通信。調(diào)用與子程序的界面端口進(jìn)行通信。 電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) 子程序有兩種類(lèi)型:子程序有兩種類(lèi)型:1過(guò)程(過(guò)程(PROCEDURE)過(guò)程(過(guò)程(PROCEDURE)和函數(shù)()和函數(shù)(FUNCTION)過(guò)程語(yǔ)句的書(shū)寫(xiě)格式為:過(guò)程語(yǔ)句的書(shū)寫(xiě)格式為:PROCEDURE 過(guò)程名(參數(shù)表)過(guò)程名(參數(shù)表)IS 說(shuō)明部分說(shuō)明部分 B

59、EGIN 過(guò)程語(yǔ)句部分過(guò)程語(yǔ)句部分 END PROCEDURE 過(guò)程名過(guò)程名 ;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu)2、過(guò)程過(guò)程設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例Procedure example ( signal d : in std_logic; signal clk : in std_logic; signal reset : in std_logic; signal q,qb : out std_logic ) isBegin if (reset=0) then q=0; qb=1; elsif (clkevent and clk=1) then q= d; qbb) THEN tmp := a; EL

60、SE tmp := b; END IF; RETURN tmp; END; END bpac;電子設(shè)計(jì)自動(dòng)化edavhdl基本結(jié)構(gòu) VHDL語(yǔ)言在進(jìn)行任何操作的過(guò)程中,對(duì)數(shù)據(jù)的類(lèi)型都有嚴(yán)格的要語(yǔ)言在進(jìn)行任何操作的過(guò)程中,對(duì)數(shù)據(jù)的類(lèi)型都有嚴(yán)格的要求,但是,對(duì)名稱(chēng)的要求并不嚴(yán)格,求,但是,對(duì)名稱(chēng)的要求并不嚴(yán)格,同一名稱(chēng)可以定義成使用不同類(lèi)同一名稱(chēng)可以定義成使用不同類(lèi)型數(shù)據(jù)參數(shù)的子程序或類(lèi)型。這樣就可以對(duì)型數(shù)據(jù)參數(shù)的子程序或類(lèi)型。這樣就可以對(duì)VHDL的子程序進(jìn)行重載的子程序進(jìn)行重載。子程序的重載子程序的重載 所謂重載所謂重載就是允許設(shè)計(jì)人員編寫(xiě)更加可讀的就是允許設(shè)計(jì)人員編寫(xiě)更加可讀的VHDL源代碼,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論