VHDL语言语言主要描述语句课件_第1页
VHDL语言语言主要描述语句课件_第2页
VHDL语言语言主要描述语句课件_第3页
VHDL语言语言主要描述语句课件_第4页
VHDL语言语言主要描述语句课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL語言語言主要描述語句

VHDL主要描述語句並行處理語句順序處理語句在結構體(ARCHITECTURE)中執行的語句在進程(PROCESS)函數(FUNCTION)過程(PROCEDURE)中執行的語句硬體描述的特點高級語言的特點

VHDL順序語句順序語句只能出現在進程(Process)、函數(Function)和過程(Procedure)中;順序語句像高級電腦語言一樣,按其出現的先後順序依次執行;用來描述複雜的邏輯關係及邏輯運算。常用的順序處理語句有:信號代入語句變數賦值語句CASE語句IF語句LOOP語句

VHDL順序語句1、信號代入語句格式: 目的信號量<=信號量運算式; 目的信號量<=信號量運算式AFTERNns;注意:

信號代入語句和關係操作符相同“<=”,但其使用位置不一樣,應根據上下文加以判斷; 信號代入語句兩邊信號量的數據類型及位長度必須一致。 延時只在仿真時起作用,邏輯綜合時被忽略。

信號賦值不是立即發生,而是在進程結束時。

VHDL順序語句例:

architectureabcofexampleis

signalc:STD_LOGIC; begin

PROCESS(a,b) begin c<=aandbafter10ns; a<=‘1’; b<=‘1’; b<=‘0’; out<=c; endprocess; endabc;注意信號定義的位置

VHDL順序語句2、變數代入語句格式: 變數:=運算式;注意:

變數是局部量,只能在所定義的進程、過程、和函數中使用。 變數賦值是立即發生,不能加延時。 在進程中描述邏輯關係及演算法時最好使用變數,以避免出錯。 進程結束時,變數的結果只能由信號帶出。

VHDL順序語句例:

architectureabcofexampleis

begin

PROCESS(a,b) variabletmp:std_logic; begin

tmp:=aandb; out<=tmp; endprocess; endabc;注意變數定義的位置

VHDL順序語句3、CASE語句格式:

Case運算式IsWHEN選擇值=>順序處理語句;

……

WHEN選擇值=>順序處理語句; WHENOTHERS=>順序處理語句;

Endcase;注意:

CASE語句至少包含一個條件句;

CASE語句中條件運算式的值必須列舉窮盡,但不能重複; 無法窮舉,用OTHERS表達。

VHDL順序語句例: 四選一數據選擇器

architectureabcofexampleis signalsel:std_logic_vector(1downto0);

begin

sel<=b&a;

process(sel) begin

case

sel

is

when“00”=>f<=i0;

when“01”=>f<=i1;

when“10”=>f<=i2;

when“11”=>f<=i3;

whenothers=>null; endcase; endprocess; endabc;為什麼還要others?

VHDL順序語句4、IF語句格式1:

IF條件THEN順序處理語句;

ENDIF;格式2:

IF條件THEN順序處理語句;

ELSE順序處理語句;

ENDIF;格式3:

IF條件1THEN順序處理語句;

ELSIF條件2THEN順序處理語句;

……

ELSE順序處理語句;

ENDIF;

注意:IF語句隱含有優先順序的關係,可用來設計具有優 先權的電路。

VHDL順序語句例: 四選一數據選擇器

architectureabcofexampleis signalsel:std_logic_vector(1downto0);

begin

sel<=b&a;

process(sel) begin IFsel=“00”thenf<=i0; ELSIFsel=“01”thenf<=i1; ELSIFsel=“10”thenf<=i2; ELSIFsel=“11”thenf<=i1; ENDIF; endprocess; endabc;不需窮盡所有情況

VHDL順序語句5、LOOP語句—FOR迴圈格式: 標號:FOR迴圈變數IN迴圈次數範圍LOOP

順序處理語句;

……

ENDLOOP;注意: 迴圈變數只是一個臨時變數,由LOOP語句自動定義,不需預先定義;

LOOP語句範圍內不要再使用其他與該迴圈變數同名的識別字。 迴圈次數完成後程式自動退出迴圈。

VHDL順序語句例:8位奇偶校驗電路

architectureabcofexampleis

begin

PROCESS(a) variabletmp:std_logic; begin

tmp:=‘0’; FORiIN0to7LOOP

tmp:=tmpXORa(i); ENDLOOP; Y<=tmp; endprocess; endabc;能否定義為信號?

VHDL順序語句5、LOOP語句—WHILE迴圈格式: 標號:WHILE迴圈控制條件LOOP

順序處理語句;

……

ENDLOOP;注意: 迴圈控制條件沒有直接給出迴圈次數,可以是任何條件運算式,條件為“真”,進行迴圈,條件為“假”,退出迴圈。

條件運算式需初始化。

VHDL順序語句例:8位奇偶校驗電路

architectureabcofexampleis

begin

PROCESS(a) variabletmp:std_logic; begin

tmp:=‘0’; i:=0; WHILE(i<8)LOOP

tmp:=tmpXORa(i);

i:=i+1; ENDLOOP; Y<=tmp; endprocess; endabc;注意變數I初始化和在迴圈中的加1處理

VHDL並行語句並行語句是在結構體中執行的語句;語句的執行與程式書寫的順序無關,故可以顛倒書寫順序,不影響程式設計功能;它體現了硬體電路的運行特點。常用的順序處理語句有:進程語句併發信號代入語句條件信號代入語句選擇信號代入語句BLOCK語句

VHDL並行語句1、進程語句(PROCESS)語句格式: 標號:PROCESS(信號1,信號2,……)

BEGIN …… ENDPROCESS標號;注意:

進程語句本身是並行語句,進程的內部才是順序執行; 同一結構體中,可以有多個進程,它們之間是並行關係。 進程之間通過信號傳遞資訊。

VHDL並行語句例:

architectureabcofexampleis

signalc:STD_LOGIC; begin JC1:PROCESS(a,b) begin c<=aandbafter10ns; endprocessJC1; JC2:PROCESS(c) begin if(c=‘1’)thend<=‘1’; elsed<=‘0’; endprocessJC2;endabc;兩進程通過信號C傳遞資訊

VHDL並行語句2、信號代入語句格式: 目的信號量<=信號量運算式; 目的信號量<=信號量運算式AFTERNns;注意:

進程中出現的代入語句稱為信號代入語句; 結構體中出現的代入語句稱為併發信號代入語句。

VHDL並行語句例:

architectureabcofexampleis

signalc:STD_LOGIC; begin x<=aorb;

y<=axnorb; JC1:PROCESS(a,b) begin c<=aandbafter10ns; endprocessJC1; endabc;併發信號代入語句信號代入語句

VHDL並行語句3、條件信號代入語句格式: 目的信號量<=運算式1WHEN條件1ELSE 運算式2WHEN條件2ELSE ……

運算式n;注意:

條件信號代入語句的功能與進程中的IF語句相同;

ELSE不能省略,只有最後語句才有分號; 有優先順序關係,第一句優先順序最高; 允許有重疊現象。

VHDL並行語句例:8-3優先權編碼器

architectureabcofexampleis begin out<= “000”wheninput(0)=‘1’else “001”wheninput(1)=‘1’else “010”wheninput(2)=‘1’else “011”wheninput(3)=‘1’else “100”wheninput(4)=‘1’else “101”wheninput(5)=‘1’else “110”wheninput(6)=‘1’else “111”wheninput(7)=‘1’else “XXX”; endabc;

VHDL並行語句4、選擇信號代入語句格式:

WITH運算式SELECT 目的信號量<=運算式1WHEN條件1, 運算式2WHEN條件2, ……

運算式nWHENOTHERS;注意:

選擇信號代入語句的功能與進程中的CASE語句相同; 每句後是逗號,只有最後語句才有分號; 無優先順序關係; 不允許條件有重疊現象,條件必須涵蓋全部。

VHDL並行語句例:4選1數據選擇器

architectureabcofexampleis begin

sel<=a&b; withselselect f<=i0when“00”, i1when“01”, i2when“10”, i3when“11”, ‘x’whenothers; endabc;

VHDL並行語句5、BLOCK(塊)語句格式: 標號:BLOCK BEGIN

並行處理語句;

ENDBLOCK標號;

注意:

塊語句可以看成是結構體的子模組; 塊語句可以使結構體層次鮮明,結構明確

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论