




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子設計自動化edavhdl基本結構1.1 實體實體1.2 結構體結構體1.3 塊、子程序和進程塊、子程序和進程 1.4 庫和程序包庫和程序包 1.5 配置配置 第一章第一章 VHDLVHDL基本結構基本結構 電子設計自動化edavhdl基本結構 一個完整的一個完整的VHDL程序或設計實體,要求能為程序或設計實體,要求能為VHDL綜合器所支持,并能作為一個獨立的設計單元,綜合器所支持,并能作為一個獨立的設計單元,即元件的形式而存在的即元件的形式而存在的VHDL程序。程序。 實體實體和和結構體結構體是必需的是必需的可構成最簡單可構成最簡單VHDL程序。程序。 通常通常VHDL程序包含五個部分:程
2、序包含五個部分:(1)實體()實體(ENTITY)(2)結構體()結構體(ARCHITECTURE)(3)包集合()包集合(PACKAGE)(4)庫()庫(LIBRARY)(5)配置()配置(CONFIGURATION)電子設計自動化edavhdl基本結構 實體實體是是VHDL語言設計的基本單元。語言設計的基本單元。1.1 實體實體 實體說明實體說明是對設計實體與外部電路的是對設計實體與外部電路的接口描述接口描述,它規(guī)定了設計單元的它規(guī)定了設計單元的輸入輸出接口信號或引腳輸入輸出接口信號或引腳,是設計實體對外的一個通信界面。是設計實體對外的一個通信界面。 結構體結構體用于描述此設計實體的用于描
3、述此設計實體的邏輯結構邏輯結構和和邏輯功能邏輯功能。電子設計自動化edavhdl基本結構【例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 ;實體說明結構體1.1 設計實體設計實體圖圖1-1 mux21a實體實體圖圖1-2 mux21a結構體結構體設計實體總由設計實體總由和和兩部分構成兩部分構成2選選1多路選
4、擇器的多路選擇器的VHDL描述描述電子設計自動化edavhdl基本結構實體語句結構如下:實體語句結構如下:例:例:ENTITY or2 IS PORT(a,b:IN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY or2; ENTITY 實體名實體名 IS GENERIC(類屬表);(類屬表); PORT(端口表);(端口表);END ENTITY 實體名;實體名;電子設計自動化edavhdl基本結構 在層次化系統(tǒng)中,實體說明是整個模塊在層次化系統(tǒng)中,實體說明是整個模塊或整個系統(tǒng)的輸入輸出(或整個系統(tǒng)的輸入輸出(I/O)接口)接口 在器件級設計中實體說明是芯片
5、的輸入在器件級設計中實體說明是芯片的輸入輸出(輸出(I/O)電子設計自動化edavhdl基本結構 1.1.1 1.1.1類屬參量類屬參量(GENERIC) 類屬參量是實體說明組織中的可選項,類屬參量是實體說明組織中的可選項,放在端口說明之前,其一般格式為:放在端口說明之前,其一般格式為:GENERIC CONSTANT 名字表:名字表:IN 子類型標識子類型標識 := 靜態(tài)表達式靜態(tài)表達式, 電子設計自動化edavhdl基本結構 1.1.1 1.1.1類屬參量類屬參量(GENERIC)w類屬參量類屬參量是實體說明組織中的是實體說明組織中的可選項可選項,放在端口說明之前,其一般格式為:放在端口說
6、明之前,其一般格式為:wGENERIC CONSTANT 名字表:名字表:IN 子類型標識子類型標識 := 靜態(tài)表達式靜態(tài)表達式, 電子設計自動化edavhdl基本結構 類屬參量類屬參量用來規(guī)定用來規(guī)定端口的大小端口的大小、實體、實體中中子元件數(shù)目子元件數(shù)目及實體的及實體的定時特性定時特性等。等。 它和常數(shù)不同,它和常數(shù)不同,常數(shù)常數(shù)只能從設計實體的只能從設計實體的內部內部得到賦值且不能改變得到賦值且不能改變;而類屬參量的值可由設計;而類屬參量的值可由設計實體的外部提供。實體的外部提供。 電子設計自動化edavhdl基本結構 這里類屬參量中參數(shù)這里類屬參量中參數(shù)trise為上升沿寬度,為上升沿
7、寬度,tfall為下為下降沿寬度,用于仿真模塊的設計;降沿寬度,用于仿真模塊的設計; 定義地址總線的寬度為定義地址總線的寬度為Addrwidth位,類屬值位,類屬值Addrwidth的改變將使結構體中所有相關的總線定義同的改變將使結構體中所有相關的總線定義同時改變,由此使整個設計實體的硬件結構發(fā)生變化。時改變,由此使整個設計實體的硬件結構發(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); 電子設計自動化edavhdl基本結構1.1.2 端口說明端口說明(PORT) 端口端口是是對基本設計單元與外部接口的對基本設計單元與外部接口的描述描述。 其功能其功能相當電路圖相當電路圖符號的符號的外部引腳外部引腳。 端口可以被賦值,也可以當做邏輯端口可以被賦值,也可以當做邏輯變量用在邏輯表達式中。變量用在邏輯表達式中。電子設計自動化edavhdl基本結構 其中端口名是設計者為實體的每一個對外通道其中端口名是設計者為實體的每一個對外通道所取的名字,通常為英文字母加數(shù)字,名字的定義有所取的名字,通常為英文字母加數(shù)字,名字的定義有一定的慣例,如一定的慣例,如clk 表
9、示時鐘,表示時鐘,D開頭的端口名表示開頭的端口名表示數(shù)據(jù),數(shù)據(jù),A開頭的端口名表示地址。端口模式是指這些開頭的端口名表示地址。端口模式是指這些通道上的數(shù)據(jù)流動的方式,如輸入或輸出等。通道上的數(shù)據(jù)流動的方式,如輸入或輸出等。 端口模式有以下幾種類型:端口模式有以下幾種類型:1輸入(輸入(IN) 允許信號進入實體,主要用于時鐘輸入、控制輸入允許信號進入實體,主要用于時鐘輸入、控制輸入(如(如load、reset、enable、clk)和單向的數(shù)據(jù)輸入)和單向的數(shù)據(jù)輸入(如地址數(shù)據(jù)信號(如地址數(shù)據(jù)信號address)等。)等。 電子設計自動化edavhdl基本結構2輸出(輸出(OUT) 輸出模式只允
10、許信號離開實體,常用于計數(shù)輸出、單輸出模式只允許信號離開實體,常用于計數(shù)輸出、單向數(shù)據(jù)輸出、被設計實體產生的控制其他實體的信號等。向數(shù)據(jù)輸出、被設計實體產生的控制其他實體的信號等。注意:輸出模式不能用于被設計實體的內部反饋,因為輸注意:輸出模式不能用于被設計實體的內部反饋,因為輸出端口在實體內不能看做是可讀的。出端口在實體內不能看做是可讀的。 3雙向模式(雙向模式(INOUT) 雙向模式允許信號雙向傳輸(既可以進入實體,也可雙向模式允許信號雙向傳輸(既可以進入實體,也可以離開實體),雙向模式端口允許引入內部反饋。以離開實體),雙向模式端口允許引入內部反饋。 電子設計自動化edavhdl基本結構
11、4緩沖(緩沖(BUFFER) 緩沖模式允許信號輸出到實體外部,但同時也可以緩沖模式允許信號輸出到實體外部,但同時也可以在實體內部引用該端口的信號。緩沖端口既能用于輸在實體內部引用該端口的信號。緩沖端口既能用于輸出也能用于反饋。緩沖模式用于在實體內部建立一個出也能用于反饋。緩沖模式用于在實體內部建立一個可讀的輸出端口,例如計數(shù)器輸出、計數(shù)器的現(xiàn)態(tài)用可讀的輸出端口,例如計數(shù)器輸出、計數(shù)器的現(xiàn)態(tài)用來決定計數(shù)器的次態(tài)。來決定計數(shù)器的次態(tài)。 端口模式可用下圖說明,圖中方框代表一個設計實體或端口模式可用下圖說明,圖中方框代表一個設計實體或模塊。模塊。 電子設計自動化edavhdl基本結構 在在VHDL設計
12、中,通常將輸入信號端口指定為輸入設計中,通常將輸入信號端口指定為輸入模式,輸出信號端口指定為輸出模式,而雙向數(shù)據(jù)通模式,輸出信號端口指定為輸出模式,而雙向數(shù)據(jù)通信信號,如計算機信信號,如計算機PCI總線的地址總線的地址/數(shù)據(jù)復用總線,數(shù)據(jù)復用總線,DMA控制器數(shù)據(jù)總線等純雙向的信號采用雙向端口??刂破鲾?shù)據(jù)總線等純雙向的信號采用雙向端口模式。從端口的名稱、模式就能一目了然地指導信號的式。從端口的名稱、模式就能一目了然地指導信號的用途、性質、來源和去向。用途、性質、來源和去向。 電子設計自動化edavhdl基本結構 結構體是對實體功能的具體描述,因此它一定要跟結構體是對實體功能的具體描述,因此它一
13、定要跟在實體的后面在實體的后面 。 行為描述(基本設計單元的數(shù)學模型描述)、寄存器傳行為描述(基本設計單元的數(shù)學模型描述)、寄存器傳輸描述(數(shù)據(jù)流描述)和結構描述(邏輯元件連接描述)輸描述(數(shù)據(jù)流描述)和結構描述(邏輯元件連接描述) 1.2 結構體結構體 結構體也叫構造體,結構體描述了基本設計單元結構體也叫構造體,結構體描述了基本設計單元(實體)的結構、行為、元件及內部連接關系,也就(實體)的結構、行為、元件及內部連接關系,也就是說它定義了設計實體的功能,規(guī)定了設計實體的數(shù)是說它定義了設計實體的功能,規(guī)定了設計實體的數(shù)據(jù)流程,制定了實體內部元件的連接關系。結構體對據(jù)流程,制定了實體內部元件的連
14、接關系。結構體對其基本設計單元的輸入和輸出關系可用以下三種方式其基本設計單元的輸入和輸出關系可用以下三種方式進行描述,即進行描述,即:電子設計自動化edavhdl基本結構圖 VHDL程序設計基本結構 庫、程序包使用說明配置(CONFIGURATION)結構體(ARCHITECTURE)實體(ENTITY)PORT 端口說明結構體說明GENERIC 類屬說明體實計設結構體功能描述電子設計自動化edavhdl基本結構圖 結構體構造圖進程語句塊語句體結構明說體構結述能描功體構結元件例化語句子程序調用語句信號賦值語句常數(shù)說明數(shù)據(jù)類型說明信號說明例化元件說明子程序說明電子設計自動化edavhdl基本結構
15、 結構體一般由兩大部分組成:結構體一般由兩大部分組成: ARCHITECTURE 結構體名結構體名 OF 實體名實體名 IS 定義語句定義語句 BEGIN 功能描述語句功能描述語句 END 結構體名;結構體名; (1)對數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等因素對數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等因素進行說明的部分;進行說明的部分;(2)描述實體的邏輯行為、以各種不同的描述風格表達描述實體的邏輯行為、以各種不同的描述風格表達的功能描述語句,包括各種順序語句和并行語句。的功能描述語句,包括各種順序語句和并行語句。結構體的語句格式為:結構體的語句格式為:電子設計自動化edavhdl基本結構1.2.
16、1 結構體名結構體名 結構體名由設計者自行定義,結構體名由設計者自行定義,OF后面的實體名指后面的實體名指明了該結構體所對應的是哪個實體。明了該結構體所對應的是哪個實體。 有些設計實體有多個結構體,這些結構體的結構體有些設計實體有多個結構體,這些結構體的結構體名不可相同,通常用名不可相同,通常用dataflow(數(shù)據(jù)流)、(數(shù)據(jù)流)、behavior(行為)、(行為)、structural(結構)命名。(結構)命名。 這這3個名稱體現(xiàn)了個名稱體現(xiàn)了3種不同結構體的描述方式,使得種不同結構體的描述方式,使得閱讀閱讀VHDL語言程序時,能直接了解設計者采用的描語言程序時,能直接了解設計者采用的描述
17、方式。述方式。電子設計自動化edavhdl基本結構 結構體信號定義語句必須放在關鍵詞結構體信號定義語句必須放在關鍵詞ARCHITECTURE和和BEGIN之間,用于對結構體內部將之間,用于對結構體內部將要使用的信號、常數(shù)、數(shù)據(jù)類型、元件、函數(shù)和過程加要使用的信號、常數(shù)、數(shù)據(jù)類型、元件、函數(shù)和過程加以說明。以說明。 結構體中的信號定義和端口說明一樣,應有信號名稱結構體中的信號定義和端口說明一樣,應有信號名稱和數(shù)據(jù)類型定義。因為它是內部連接用的信號,因此不和數(shù)據(jù)類型定義。因為它是內部連接用的信號,因此不需要方向說明。需要方向說明。 1.2.2 結構體信號定義語句結構體信號定義語句 需要注意的是:實
18、體說明中定義的信號是外部信需要注意的是:實體說明中定義的信號是外部信號,而結構體定義的信號為該結構體的內部信號,它號,而結構體定義的信號為該結構體的內部信號,它只能用于這個結構體中。只能用于這個結構體中。電子設計自動化edavhdl基本結構ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); BEGIN END rtl; 例:結構體的信號定義實例。例:結構體的信號定義實例。結構體名結構體名實體名實體名結構體信號定義語句結構體信號定義語句功能描述語句功能描述語句電子設計自動化edavhdl基本
19、結構1.2.3 結構體功能描述語句結構體功能描述語句 結構體功能描述語句位于結構體功能描述語句位于BEGIN和和END之間,具之間,具體地描述了構造體的行為及其連接關系。體地描述了構造體的行為及其連接關系。 結構體的功能描述語句可以含有結構體的功能描述語句可以含有5種不同類型的并行種不同類型的并行語句,如圖所示。每一語句結構內部可以使用并行語語句,如圖所示。每一語句結構內部可以使用并行語句,也可以是順序語句。句,也可以是順序語句。電子設計自動化edavhdl基本結構結構體構造圖結構體構造圖: 結構體(ARCHITECTURE) 說明語句 功能描述語句 塊語句(BLOCK)進程語句(PROCES
20、S) 信號賦值語句 子程序調用語句 元件例化語句 由一系列并行語句構由一系列并行語句構 成的組合體,它的功能是成的組合體,它的功能是將結構體中的并行語句組將結構體中的并行語句組成一個或多個子模塊成一個或多個子模塊 定義順序語句模塊,用定義順序語句模塊,用以將從外部獲得的信號值以將從外部獲得的信號值或內部運算數(shù)據(jù)向其他的或內部運算數(shù)據(jù)向其他的信號進行賦值信號進行賦值 將設計實體內的處理將設計實體內的處理結果向定義的信號或界結果向定義的信號或界面端口進行賦值面端口進行賦值 可以調用進程或參可以調用進程或參數(shù),并將獲得的結果數(shù),并將獲得的結果賦值于信號賦值于信號 對其他的設計實體做對其他的設計實體做
21、元件調用說明,并將此元件調用說明,并將此元件的端口與其他元件、元件的端口與其他元件、信號或高層實體的界面信號或高層實體的界面端口進行連接端口進行連接(Flash演示)演示)電子設計自動化edavhdl基本結構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ù)選擇器 信號定義語句(內部信號,無方向)信號定義語句(內部信號,無方向)功能描述語句功能描述語句電子設計自動化edavhdl基本結構 1.3.1塊語句(塊語句(BLOCK) 在較大規(guī)模的電子系統(tǒng)設計中,傳統(tǒng)的硬件電路設在較大規(guī)模的電子系統(tǒng)設計中,傳統(tǒng)的硬件電路設計通常包括一張系統(tǒng)總電路原理圖和若干張子原理圖。計通常包括一張系統(tǒng)總電路原理圖和若干張子原理圖。在在VHDL程序設計中,結構體是由多個程序設計中,結構體是由多個BLOCK塊構成塊構成的,如果將結構體比做總電路原理圖,那么,每個的,如果將結構體比做總電路原理圖,那么,每個BLOCK塊則相當于一張子原理圖。塊則相當于一張子原理圖。
23、1.3 塊、子程序和進程塊、子程序和進程 電子設計自動化edavhdl基本結構BLOCK塊語句的結構:塊語句的結構: 塊標號:塊標號:BLOCK 接口說明接口說明 類屬說明類屬說明 BEGIN 并行塊語句并行塊語句 END BLOCK(塊標號);(塊標號); 電子設計自動化edavhdl基本結構例:例: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; 電子設計自動化edavhdl基本結構 PROCESS結構是最能體現(xiàn)結構是最能體現(xiàn)VHDL語言特色的語句。語言特色的語句。與與BLOCK語句一樣,利用語句一樣,利用PROCESS語句結構可以描述語句結構可以描述一個功能獨立的電路。一個功能獨立的電路。 與與BLOCK語句不同之處是,在系統(tǒng)仿真時,語句不同之處是,在系統(tǒng)仿真時,PROCESS結構中的語句是按順序逐條向下執(zhí)行的,而不結構中的語句是按順序逐條向下執(zhí)行的,而不像像BLOCK語句那樣并發(fā)執(zhí)行。語句那樣并發(fā)執(zhí)行。 一個結構體中可以有多個并行運行的進程結構,每一一個結構體中可以有多個并行運行的進程結構,每一個進程內部
25、是由一系列順序語句來構成的。個進程內部是由一系列順序語句來構成的。1.3.2 進程(進程(PROCESS) 電子設計自動化edavhdl基本結構PROCESS語句的結構:語句的結構: 注意:注意:(1)在多個進程的結構體描述中,進程標號是區(qū)分各個)在多個進程的結構體描述中,進程標號是區(qū)分各個進程的標志。但是進程標號并不是必需的。進程的標志。但是進程標號并不是必需的。(2)單進程以)單進程以PROCESS開始,以開始,以END PROCESS結束。結束。 進程標號進程標號 PROCESS (敏感信號表)(敏感信號表) IS進程說明語句進程說明語句BEGIN 順序描述語句順序描述語句 END PR
26、OCESS 進程標號進程標號;電子設計自動化edavhdl基本結構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);例:兩輸入或非門例:兩輸入或非門 y y y y y y =X; END CASE; END PROCESS;E
27、ND behave; X: 不定不定電子設計自動化edavhdl基本結構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 ; -類似于在芯片內部定類似于在芯片內部定義一個數(shù)據(jù)的暫存節(jié)點義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCES
28、S (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -將內部的暫存數(shù)據(jù)向端口輸出將內部的暫存數(shù)據(jù)向端口輸出 END PROCESS ; END bhv;電子設計自動化edavhdl基本結構VHDL描述的語言現(xiàn)象說明描述的語言現(xiàn)象說明1. 1. 標準邏輯位數(shù)據(jù)類型標準邏輯位數(shù)據(jù)類型STD_LOGICSTD_LOGICBIT數(shù)據(jù)類型定義: TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC數(shù)據(jù)類型定義: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表示強未知的;表示強未知的; 00表示強邏輯表示強邏輯0 0; 11表示強邏輯表示強邏輯1 1; ZZ表示表示高阻態(tài);高阻態(tài); W W 表示弱未知的;表示弱未知的; LL表示弱邏輯表示弱邏輯0 0; HH表示弱邏輯表示弱邏輯1 1; -表示忽略。表示忽略。電子設計自動化edavhdl基本結構VHDL描述的語言現(xiàn)象說明描述的語言現(xiàn)象說明2. 2. 設計庫和標準程序包設計庫和標準程序包3. SIGNAL3. SIGNAL信號定義和數(shù)據(jù)對象
30、信號定義和數(shù)據(jù)對象【例】 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;使用庫和程序包的一般定義表式是: LIBRARY LIBRARY ; USE USE .ALL ; .ALL ; 三種類型數(shù)據(jù)對象:三種類型數(shù)據(jù)對象: 信號信號 signal 變量變量 variable 常數(shù)常數(shù) constant電子設計自動化edavhdl基本結
31、構VHDL描述的語言現(xiàn)象說明描述的語言現(xiàn)象說明4. 4. 上升沿檢測表達式上升沿檢測表達式關鍵詞EVENT是信號屬性,VHDL通過以下表式來測定某信號的跳變邊沿跳變邊沿:信號名信號名 EVENT AND (信號名信號名 =1) AND (信號名信號名 LAST_VALUE=0)信號名信號名 =1 AND 信號名信號名LAST_VALUE=0rising_edge(信號名信號名) - 信號的數(shù)據(jù)類型必須是信號的數(shù)據(jù)類型必須是STD_LOGIC信號名信號名EVENT - EVENT - 如如CLKEVENTCLKEVENTwait until 信號名信號名 = 1; -利用利用wait語句語句電子
32、設計自動化edavhdl基本結構實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式【例】【例】.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 ;電子設計自動化edavhdl基本結構
33、實現(xiàn)時序電路的實現(xiàn)時序電路的VHDL不同表達方式不同表達方式【例】【例】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ù)類型必須是的數(shù)據(jù)類型必須是STD
34、_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ARCHITECTURE bhv ;電子設計自動化edavhdl基本結構 在在VHDL中,數(shù)據(jù)對象中,數(shù)據(jù)對象(Data Objects)類似于一種容類似于一種容器,它接受不同數(shù)據(jù)類型的賦值。數(shù)據(jù)對象有三種,即器,它接受不同數(shù)據(jù)類型的賦值。數(shù)據(jù)對象有三種,即常量常量(CONSTANT)、變量、變量(VARIABLE)和信號和信號(SIGNAL)。前兩種可以從傳統(tǒng)的計算機高級語言中找。前兩種可以從傳統(tǒng)的計算機高級語言中找到對應的數(shù)據(jù)類型,其語言行為與高級語言中的變量和到對應的數(shù)據(jù)類型,
35、其語言行為與高級語言中的變量和常量十分相似。但信號是具有更多的硬件特征的特殊數(shù)常量十分相似。但信號是具有更多的硬件特征的特殊數(shù)據(jù)對象,是據(jù)對象,是VHDL中最有特色的語言要素之一。中最有特色的語言要素之一。VHDL數(shù)據(jù)對象(Data Objects)電子設計自動化edavhdl基本結構 1常量常量(CONSTANT) 常量的定義和設置主要是為了使設計實體中的常數(shù)更常量的定義和設置主要是為了使設計實體中的常數(shù)更容易閱讀和修改。例如,將位矢的寬度定義為一個常量,容易閱讀和修改。例如,將位矢的寬度定義為一個常量,只要修改這個常量就能很容易地改變寬度,從而改變硬件只要修改這個常量就能很容易地改變寬度,
36、從而改變硬件結構。在程序中,常量是一個恒定不變的值,一旦作了數(shù)結構。在程序中,常量是一個恒定不變的值,一旦作了數(shù)據(jù)類型的賦值定義后,在程序中不能再改變,因而具有全據(jù)類型的賦值定義后,在程序中不能再改變,因而具有全局意義。常量的定義形式如下:局意義。常量的定義形式如下:CONSTANT 常量名:數(shù)據(jù)類型常量名:數(shù)據(jù)類型=表達式;表達式;例如:例如:CONSTANT FBUSBIT_VECTOR=“01011”;CONSTANT VCCREAL=5.0;CONSTANT DELYTIME=25ns;電子設計自動化edavhdl基本結構 VHDL要求所定義的常量數(shù)據(jù)類型必須與表達式的數(shù)要求所定義的常
37、量數(shù)據(jù)類型必須與表達式的數(shù)據(jù)類型一致。常量的數(shù)據(jù)類型可以是標量類型或復合類據(jù)類型一致。常量的數(shù)據(jù)類型可以是標量類型或復合類型,但不能是文件類型型,但不能是文件類型(File)或存取類型或存取類型(Access)。 常量定義語句所允許的設計單元有實體、結構體、程常量定義語句所允許的設計單元有實體、結構體、程序包、塊、進程和子程序。在程序包中定義的常量可以序包、塊、進程和子程序。在程序包中定義的常量可以暫不設具體數(shù)值,它可以在程序包體中設定。暫不設具體數(shù)值,它可以在程序包體中設定。電子設計自動化edavhdl基本結構 常量的可視性,即常量的使用范圍取決于它被定義常量的可視性,即常量的使用范圍取決于
38、它被定義的位置。在程序包中定義的常量具有最大全局化特征,的位置。在程序包中定義的常量具有最大全局化特征,可以用在調用此程序包的所有設計實體中;定義在設計可以用在調用此程序包的所有設計實體中;定義在設計實體中的常量,其有效范圍為這個實體定義的所有的結實體中的常量,其有效范圍為這個實體定義的所有的結構體;定義在設計實體的某一結構體中的常量,則只能構體;定義在設計實體的某一結構體中的常量,則只能用于此結構體;定義在結構體的某一單元的常量,如一用于此結構體;定義在結構體的某一單元的常量,如一個進程中,則這個常量只能用在這一進程中。個進程中,則這個常量只能用在這一進程中。電子設計自動化edavhdl基本
39、結構VHDL數(shù)據(jù)對象(Data Objects) 常量(常量(Constant) 固定值,不能在程序中被改變固定值,不能在程序中被改變 增強程序的可讀性,便于修改程序增強程序的可讀性,便于修改程序 可在可在Package、Entity、Architecture、Process、Function、Procedure中進行定義,其有效范圍也相中進行定義,其有效范圍也相應限定應限定 書寫格式:書寫格式: Constant 常量名常量名,常量名,常量名:數(shù)據(jù)類型:數(shù)據(jù)類型:=表達式表達式; 例:例:Constant data_bus_width: integer := 8;電子設計自動化edavhdl
40、基本結構 2變量變量(VARIABLE) 在在VHDL語法規(guī)則中,變量是一個局部量,只能在進語法規(guī)則中,變量是一個局部量,只能在進程和子程序中使用。變量不能將信息帶出對它作出定義程和子程序中使用。變量不能將信息帶出對它作出定義的當前設計單元。變量的賦值是一種理想化的數(shù)據(jù)傳輸,的當前設計單元。變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生,不存在任何延時的行為。是立即發(fā)生,不存在任何延時的行為。VHDL語言規(guī)則語言規(guī)則不支持變量附加延時語句。變量常用在實現(xiàn)某種算法的不支持變量附加延時語句。變量常用在實現(xiàn)某種算法的賦值語句中。賦值語句中。電子設計自動化edavhdl基本結構定義變量的語法格式如下:定
41、義變量的語法格式如下:VARIABLE 變量名:數(shù)據(jù)類型:變量名:數(shù)據(jù)類型:=初始值;初始值;例如:例如:VARIABLE A:INTEGER; -定義定義A為整數(shù)型為整數(shù)型變量變量VARIABLE B,C:INTEGER:=2; -定義定義B和和C為整為整型變量,初始值為型變量,初始值為2電子設計自動化edavhdl基本結構 變量作為局部量,其適用范圍僅限于定義了變量的變量作為局部量,其適用范圍僅限于定義了變量的進程或子程序中。仿真過程中惟一的例外是共享變量。進程或子程序中。仿真過程中惟一的例外是共享變量。變量的值將隨變量賦值語句的運算而改變。變量定義語變量的值將隨變量賦值語句的運算而改變。
42、變量定義語句中的初始值可以是一個與變量具有相同數(shù)據(jù)類型的常句中的初始值可以是一個與變量具有相同數(shù)據(jù)類型的常數(shù)值,也可以是一個全局靜態(tài)表達式,這個表達式的數(shù)數(shù)值,也可以是一個全局靜態(tài)表達式,這個表達式的數(shù)據(jù)類型必須與所賦值變量一致。此初始值不是必需的,據(jù)類型必須與所賦值變量一致。此初始值不是必需的,綜合過程中綜合器將略去所有的初始值。綜合過程中綜合器將略去所有的初始值。 變量數(shù)值的改變是通過變量賦值來實現(xiàn)的,其賦值變量數(shù)值的改變是通過變量賦值來實現(xiàn)的,其賦值語句的語法格式如下:語句的語法格式如下: 目標變量名目標變量名:=表達式;表達式;電子設計自動化edavhdl基本結構VHDL數(shù)據(jù)對象(Da
43、ta Objects) 變量(變量(Variable) 臨時數(shù)據(jù),沒有物理意義臨時數(shù)據(jù),沒有物理意義 只能在只能在Process、Function、 Procedure中定義,并只中定義,并只在其內部有效,在其內部有效, 要使其全局有效,先轉換為要使其全局有效,先轉換為Signal。 用用 := 進行賦值進行賦值 用用 := 進行初始化進行初始化 variable result : std_logic := 0;電子設計自動化edavhdl基本結構 3. 信號信號(SIGNAL) 信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它類似于連信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它類似于連接線。信號可以作為設計實體
44、中并行語句模塊間的信息接線。信號可以作為設計實體中并行語句模塊間的信息交流通道。在交流通道。在VHDL中,信號及其相關的信號賦值語句、中,信號及其相關的信號賦值語句、決斷函數(shù)、延時語句等很好地描述了硬件系統(tǒng)的許多基決斷函數(shù)、延時語句等很好地描述了硬件系統(tǒng)的許多基本特征。如硬件系統(tǒng)運行的并行性;信號傳輸過程中的本特征。如硬件系統(tǒng)運行的并行性;信號傳輸過程中的慣性延時特性;多驅動源的總線行為等。慣性延時特性;多驅動源的總線行為等。 信號作為一種數(shù)值容器,不但可以容納當前值,也信號作為一種數(shù)值容器,不但可以容納當前值,也可以保持歷史值。這一屬性與觸發(fā)器的記憶功能有很好可以保持歷史值。這一屬性與觸發(fā)器
45、的記憶功能有很好的對應關系。信號的定義格式如下:的對應關系。信號的定義格式如下: SIGNAL 信號名:信號名: 數(shù)據(jù)類型數(shù)據(jù)類型=初始值;初始值;電子設計自動化edavhdl基本結構 信號初始值的設置不是必需的,而且初始值僅在信號初始值的設置不是必需的,而且初始值僅在VHDL的行為的行為仿真中有效。與變量相比,信號的硬件特征更為明顯,它具有全局仿真中有效。與變量相比,信號的硬件特征更為明顯,它具有全局性特性。例如,在程序包中定義的信號,對于所有調用此程序包的性特性。例如,在程序包中定義的信號,對于所有調用此程序包的設計實體都是可見的;在實體中定義的信號,在其對應的結構體中設計實體都是可見的;
46、在實體中定義的信號,在其對應的結構體中都是可見的。都是可見的。 事實上,除了沒有方向說明以外,信號與實體的端口事實上,除了沒有方向說明以外,信號與實體的端口(PORT)概概念是一致的。相對于端口來說,其區(qū)別只是輸出端口不能讀入數(shù)據(jù),念是一致的。相對于端口來說,其區(qū)別只是輸出端口不能讀入數(shù)據(jù),輸入端口不能被賦值。信號可以看成是實體內部的端口。反之,實輸入端口不能被賦值。信號可以看成是實體內部的端口。反之,實體的端口只是一種隱形的信號,端口的定義實際上是作了隱式的信體的端口只是一種隱形的信號,端口的定義實際上是作了隱式的信號定義,并附加了數(shù)據(jù)流動的方向。信號本身的定義是一種顯式的號定義,并附加了數(shù)
47、據(jù)流動的方向。信號本身的定義是一種顯式的定義,因此,在實體中定義的端口,在其結構體中都可以看成一個定義,因此,在實體中定義的端口,在其結構體中都可以看成一個信號,并加以使用而不必另作定義。以下是信號的定義示例:信號,并加以使用而不必另作定義。以下是信號的定義示例:電子設計自動化edavhdl基本結構SIGNAL S1:STD_LOGIG=0;-定義了一個標準位的單值信號定義了一個標準位的單值信號S1,初始值為低電平,初始值為低電平SIGNAL S2,S3:BIT; -定義了兩個位定義了兩個位BIT的信號的信號S2和和S3SIGNAL S4: STD_LOGIC_VECTOR(15 DOWNTO
48、 0);-定義了定義了一個標準位矢的位矢量一個標準位矢的位矢量-(數(shù)組、總線數(shù)組、總線)信號,共有信號,共有16個信號元素個信號元素 以下示例定義的信號數(shù)據(jù)類型是設計者自行定義的,這是以下示例定義的信號數(shù)據(jù)類型是設計者自行定義的,這是VHDL所允許的:所允許的:TYPE FOUR IS(X,0,I,Z);SIGNAL S1FOUR;SIGNAL S2FOUR=X;SIGNAL S3FOUR=L;電子設計自動化edavhdl基本結構 其中,信號其中,信號S1的初始值取為默認值,的初始值取為默認值,VHDL規(guī)定初規(guī)定初始值取值以取始值取值以取LEFTMOST項項(即數(shù)組中的最左項即數(shù)組中的最左項)
49、為默認為默認值。在此例中是值。在此例中是X(任意狀態(tài)任意狀態(tài))。 信號的使用和定義范圍是實體、結構體和程序包。信號的使用和定義范圍是實體、結構體和程序包。在進程和子程序中不允許定義信號。信號可以有多個驅在進程和子程序中不允許定義信號。信號可以有多個驅動源,或者說賦值信號源,但必須將此信號的數(shù)據(jù)類型動源,或者說賦值信號源,但必須將此信號的數(shù)據(jù)類型定義為決斷性數(shù)據(jù)類型。定義為決斷性數(shù)據(jù)類型。 在進程中,只能將信號列入敏感表,而不能將變量在進程中,只能將信號列入敏感表,而不能將變量列入敏感表。可見進程只對信號敏感,而對變量不敏感。列入敏感表。可見進程只對信號敏感,而對變量不敏感。電子設計自動化eda
50、vhdl基本結構VHDL數(shù)據(jù)對象(Data Objects) 信號(信號(Signals) 代表連線,代表連線,Port也是一種信號也是一種信號 沒有方向性,可給它賦值,也可當作輸入沒有方向性,可給它賦值,也可當作輸入 在在Package、Entity、Architecture中定義中定義 設定的初始值在綜合時沒有用,只是在仿真時在開始設定的初始值在綜合時沒有用,只是在仿真時在開始設定一個起始值。設定一個起始值。 用用 = 進行賦值進行賦值 用用 : = 進行初始化進行初始化 signal count:bit_vector(3 downto 0):=“0011”;電子設計自動化edavhdl基
51、本結構 4三者的使用比較三者的使用比較 (1) 從硬件電路系統(tǒng)來看,常量相當于電路中的恒定從硬件電路系統(tǒng)來看,常量相當于電路中的恒定電平,如電平,如GND或或VCC接口,而變量和信號則相當于組合接口,而變量和信號則相當于組合電路系統(tǒng)中門與門間的連接及其連線上的信號值。電路系統(tǒng)中門與門間的連接及其連線上的信號值。 (2) 從行為仿真和從行為仿真和VHDL語句功能上看,二者的區(qū)別語句功能上看,二者的區(qū)別主要表現(xiàn)在接受和保持信號的方式、信息保持與傳遞的主要表現(xiàn)在接受和保持信號的方式、信息保持與傳遞的區(qū)域大小上。例如信號可以設置延時量,而變量則不能;區(qū)域大小上。例如信號可以設置延時量,而變量則不能;變
52、量只能作為局部的信息載體,而信號則可作為模塊間變量只能作為局部的信息載體,而信號則可作為模塊間的信息載體。變量的設置有時只是一種過渡,最后的信的信息載體。變量的設置有時只是一種過渡,最后的信息傳輸和界面間的通信都靠信號來完成。息傳輸和界面間的通信都靠信號來完成。電子設計自動化edavhdl基本結構 (3) 從綜合后所對應的硬件電路結構來看,信號一般將對應更多從綜合后所對應的硬件電路結構來看,信號一般將對應更多的硬件結構,但在許多情況下,信號和變量并沒有什么區(qū)別。例如的硬件結構,但在許多情況下,信號和變量并沒有什么區(qū)別。例如在滿足一定條件的進程中,綜合后它們都能引入寄存器。這時它們在滿足一定條件
53、的進程中,綜合后它們都能引入寄存器。這時它們都具有能夠接受賦值這一重要的共性,而都具有能夠接受賦值這一重要的共性,而VHDL綜合器并不理會它綜合器并不理會它們在接受賦值時存在的延時特性。們在接受賦值時存在的延時特性。 (4) 雖然雖然VHDL仿真器允許變量和信號設置初始值,但在實際應仿真器允許變量和信號設置初始值,但在實際應用中,用中,VHDL綜合器并不會把這些信息綜合進去。這是因為實際的綜合器并不會把這些信息綜合進去。這是因為實際的FPGA/CPLD芯片在上電后,并不能確保其初始狀態(tài)的取向。因此,芯片在上電后,并不能確保其初始狀態(tài)的取向。因此,對于時序仿真來說,設置的初始值在綜合時是沒有實際
54、意義的。對于時序仿真來說,設置的初始值在綜合時是沒有實際意義的。電子設計自動化edavhdl基本結構信號與變量的區(qū)別信號與變量的區(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;電子設計自動化edavhdl基本結構信號與變量的區(qū)別信號與變量的區(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; 電子設計自動化edavhdl基本結構 子程序被調用時,首先要初始化,執(zhí)行處理功能后,子程序被調用時,首先要初始化,執(zhí)行處理功能后,將處理結果傳遞給主程序。子程序內部的值不能保持,將處理結果傳遞給主程序。子程序內部的值不能保持,子程序返回后才能被再次調用并初始化。子程序返回后才能被再次調用并初始化。1.3.3子程序(子程序(SUBPROGRAM) VHDL程序與其他軟件語言程序中應用子程序的目程序與其他軟件語言程序中應用子程序的目的是相似的,即能夠更有效地完成重復性的工作。的是相似的,即能夠更有效地完成重復性的工作。 子程序模塊是利用順序語句定義和完成算
58、法的,但子程序模塊是利用順序語句定義和完成算法的,但子程序不能像進程那樣可以從本結構體的其他塊或進子程序不能像進程那樣可以從本結構體的其他塊或進程結構中讀取信號值或向信號賦值,只能通過子程序程結構中讀取信號值或向信號賦值,只能通過子程序調用與子程序的界面端口進行通信。調用與子程序的界面端口進行通信。 電子設計自動化edavhdl基本結構 子程序有兩種類型:子程序有兩種類型:1過程(過程(PROCEDURE)過程(過程(PROCEDURE)和函數(shù)()和函數(shù)(FUNCTION)過程語句的書寫格式為:過程語句的書寫格式為:PROCEDURE 過程名(參數(shù)表)過程名(參數(shù)表)IS 說明部分說明部分 B
59、EGIN 過程語句部分過程語句部分 END PROCEDURE 過程名過程名 ;電子設計自動化edavhdl基本結構2、過程過程設計實例設計實例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;電子設計自動化edavhdl基本結構 VHDL語言在進行任何操作的過程中,對數(shù)據(jù)的類型都有嚴格的要語言在進行任何操作的過程中,對數(shù)據(jù)的類型都有嚴格的要求,但是,對名稱的要求并不嚴格,求,但是,對名稱的要求并不嚴格,同一名稱可以定義成使用不同類同一名稱可以定義成使用不同類型數(shù)據(jù)參數(shù)的子程序或類型。這樣就可以對型數(shù)據(jù)參數(shù)的子程序或類型。這樣就可以對VHDL的子程序進行重載的子程序進行重載。子程序的重載子程序的重載 所謂重載所謂重載就是允許設計人員編寫更加可讀的就是允許設計人員編寫更加可讀的VHDL源代碼,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深圳初三聯(lián)考試卷及答案
- 陜西高一生物試卷及答案
- 肇慶市實驗中學高中歷史二:第課經濟全球化的趨勢高效課堂教學設計
- 2025合同備案的優(yōu)勢顯著
- 濕法刻蝕設備工藝改進考核試卷
- 建筑裝飾工程壁紙選購與施工考核試卷
- 紡織品品牌推廣策略考核試卷
- 物流租賃經營的安全管理考核試卷
- 纖維加工過程中的清潔生產技術考核試卷
- 舞臺布置與設計原則考核試卷
- 回收設施布局與優(yōu)化-深度研究
- 2024年國網浙江省電力有限公司招聘考試真題
- 微專題2 質量守恒定律的應用(解析版)
- 分析化學考試題(附參考答案)
- 森林無人機滅火技術集成-深度研究
- 股份轉讓協(xié)議模板
- 利他思維培訓課件
- 2025年北京鐵路局集團招聘筆試參考題庫含答案解析
- 湖南省長沙市雅禮實驗高中-主題班會-把學習變?yōu)闊釔郏簝闰屃Α菊n件】
- 2025中考物理總復習填空題練習100題(附答案及解析)
- 2025年牛津譯林版英語七年級下冊全冊單元重點知識點與語法匯編
評論
0/150
提交評論