VHDL程序的基本結構_第1頁
VHDL程序的基本結構_第2頁
VHDL程序的基本結構_第3頁
VHDL程序的基本結構_第4頁
VHDL程序的基本結構_第5頁
已閱讀5頁,還剩5頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

VHDL程序的基本結構

一個完整的VHDL語言程序通常包含

庫(Library):如ieee,std,work等

程序包(Package)

實體(Entity):I/O端口

結構體或構造體(Architecture):

具體描述電路所要實現的功能

配置(Configuration)

>實體:用于描述所設計系統的外部接口特性;即該設計實

體對外的輸入、輸出端口數量和端口特性。

>結構體:用于描述實體所代表的系統內部的結構和行為;

它描述設計實體的結構、行為、元件及內部連接關系。

>庫:存放已經編譯的實體、結構體、程序包集合和配置。

>程序包:存放各設計模塊都能共享的數據類型、常數和子

程序庫;

>配置:實體對應多個結構體時,從與某個實體對應的多個

結構體中選定一個作為具體實現。

保存的文件名與實體名字應該一致

PORT(端口)說明

PORT(端口名:端口模式數據類型;

端口名:端口模式數據類型;

端口模式

>out(輸出):只能被賦值,用于不能反饋的輸出;

>in(輸入):只能讀,用于時鐘輸入、控制輸入單向數據輸

入;

>inout(輸入輸出):既可讀又可被賦值,被讀的值是端口輸

入值而不是被賦值,作為雙向端口。

>buffer(緩沖):類似于輸出,但可以讀,讀的值是被賦值,

用做內部反饋用,不能作為雙向端口使用

結構體的一般表達如下:

ARCHITECTURE結構體名稱OF實體名稱IS

[說明語句]可以不要

BEGIN

(功能描述語句)

ENDARCHITECTURE結構體名稱;

功能描述語句:處于begin與end之間,描述結構體的行為與

連接關系,它是構成結構體的主體。描述實體的邏輯行為、以各

種不同的描述風格表達的功能描述語句,或針對層次設計中,以

元件例化語句為特征的外部元件(設計實體)端口間的連接。

庫:是一些常用代碼的集合。庫說明總是放在設計單元的最前面

將常用代碼存放到庫中有利于設計的復用和代碼共享,也可使代

碼結構更清晰;

(1)IEEE庫

IEEE庫定義了四個常用的程序包:

>std_logic_1164(std_logic(8值)&std_ulogic(9

值)邏輯值的邏輯運算)

>stdlogicarith(signed、unsigned數據類型的

(算術、比較運算函數)

>std_logic_signed(std」ogic_vector類型數據的進行

有符號算術、比較運算操作函數)

>stdlogicunsigned(stdlogicvector類型數據進行

無符號算術、比較運算操作函數)

(2)STD庫(默認庫)

VHDL的標準資源庫,包括數據類型和輸入/輸出文本等內容。庫

中包集有:standard和textioo

(3)WORK庫(默認庫)

當前工作庫,當前設計的所有代碼都存放在work庫中,

無需聲明。

(4)ASIC矢量庫

各公司提供的ASIC稱邏輯門庫

(5)用戶定義的庫

用戶為自身設計需要所開發的共用包集合和實體。

除WORK、STD庫外,其他庫在使用之前,在使用庫之前,

首先需要對庫進行聲明

程序包:集合用于封裝屬于多個設計單元分享的公共信息。己定

義的常數、數據類型、元件調用說明、子程序的一個集合,類似

(2)變量的賦值

x:=T;

Y:='O';

a:=10;

b:=2+a;

(1)信號聲明的語法格式:

signal信號名:數據類型[約束條件][:=初始值];

例:signala:bit;

signalb:std_logic_vector(7downto0);

(2)信號的賦值:

a<='O';

b<="01101in”after10ns;

進程語句內部由順序語句構成。(進程內部只能加載順序語句)

[進程標號:]process[(敏感信號表)]

[進程說明部分]

begin

{順序處理語句}

endprocess[標號];

敏感信號表:進程內要讀取的所有敏感信號(包括端口)的列表。

每一個敏感信號的變化,都將啟動進程。如果在process內部使

用了wait語句,則process就不能再使用敏感信號列表,并且

wait語句是process內部的第一條語句。

進程說明用來定義在該進程中需要用到的局部量,如變量、常數

等,在此處定義的變量是局部量,只能在該進程中使用,其他地

方不能使用。特別強調在進程說明部分只能定義局部變量,不能

定義信號和共享變量。

幾種常見的順序雌若句:信號賦值語句、變量賦值語句、if語

句、case語句、wait語句和null語句??梢詫崿F時序邏輯,還

可以實現組合邏輯。

信號賦值語句即可以作為并行語句出現在結構體中,也可以作為

順序語句出現在進程中

信號量表達式中可以有延時,如q<=aafter2ns

例如:signala:bit;

signalb:std_logic_vector(3downto0);

a<='1'after2ns;

b<=“1100”

變量賦值語句只能作為順序語句出現在進程中

變量表達式無延時;

例如:variablea:bit;

variableb:std_logic_vector(3downto0);

a:=T';

b:="1100”;

if語句只能用于順序代碼,只能在processNfunction和

procedure中出現。

(i)if語句的門閂控制

舉例ifa>btheny<='1'

endif;

不完全語句產生時序電路

(2)if語句的二選擇控制

用條件來選擇兩條不同程序執行的路徑。

舉例ifa>btheny<=T;

elsey<='O';

endif;

完全語句產生組合電路。

(3)if語句的多選擇控制

舉例ifa>btheny<=’1,;

elsifa=btheny<='O';

elsey<='O';

endif;

case語句

case表達式is

when選擇值1=>順序語句;

when選擇值2=>順序語句;

whenothers=>順序語句;

endcase;

進程中的case注意事項:

*Case只能在進程內使用;

*Case選擇值必須在選擇表達式的合法取值范圍內;

*Case選擇值必須是互斥;不能由兩個相同的選擇值出現;

*Case選擇值必須覆蓋全面,否則需要用OTHERS來代替其他

可能取值;

*Case各個選擇值之間的關系是并列的,沒有優先權之分;IF

語句由優先權

loop語句

>當一段代碼需要多次重復、順序地執行時,loop語句非常

有效。

>只能在process、function和procedure中使用;

>與generate語句的最大不同:

>generate語句復制建立某項操作的0個或多個備份,這

些備份并行地執行某項操作,與先后順序無關;

>loop語句則按順序、循環地執行某項操作。

LOOP語句的語法結構:

FOR/LOOP:循環固定次數

[label:]FOR循環變量IN范圍LOOP

(順序描述語句)

ENDLOOP[label];

WHILE/LOOP:循環執行直到某個條件不再滿足

[label:]WHILE條件表達式LOOP

(順序描述語句)

ENDLOOP[label];

EXIT:結束整個循環操作

[label:]EXIT[label][WHEN條件表達式];

NEXT:跳出本次循環操作

[label:]NEXT[loop」abel][WHEN條件表達式];

常用的并發描述語句,通常位于process、function和procedure

之外,包括:

運算操作符:邏輯運算、算術運算等

WHEN語句(when/else或with/select/when)

塊(block)語句

生成(GENERATE)語句。

并行信號賦值語句

并行信號賦值語句的特點:

①賦值目標必須為信號或端口;

②在結構體內是并行執行的;

③在結構體的進程之外使用

生成語句(GENERATE)一可用于并發描述

>生成語句的作用:復制建立某項操作的0個或多個備份,

這些備份并行地執行某項操作。

>并行結構,與先后順序無關;而順序描述語句中循環執行某

項操作的LOOP語句則必須順序的執行這些操作。

>分為兩類:

for-generate:采用一個離散的范圍決定

備份的數目。

If--generate:有條件地生成0個或1個

備份。

(l)for-generate語句

語法:標號:for循環變量inrange

generate

{并行語句}

endgenerate[標號];

range:整數表達式to整數表達式

整數表達式downto整數表達式

for---loop語句與for—generate的比較:

(2)If-generate語句

語法:標號:if條件表達式generate

{并行語句}

endgenerate[標號];

if語句與Ifgenerate的區別:

1、If■■■generate沒有類似于if語句的els

溫馨提示

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

評論

0/150

提交評論