VHDL入門學習

2021-08-20 13:28:37 字數 3233 閱讀 6723

一、vhdl優點:

覆蓋面廣,系統硬體描述能力強,是乙個多層次的硬體描述語言;

 vhdl語言具有良好的可讀性,既可以被計算機接受,也容易被人們

所理解;

 vhdl語言可以與工藝無關程式設計;

 vhdl語言已做為一種ieee的工業標準,便於使用、交流和推廣。

vhdl的不足之處:

設計的最終實現取決於針對目標器件的程式設計器,工具的不同會導致綜合質量不一樣。

二、vhdl語言基礎

1、識別符號

 首字元必須是字母

 末字元不能為下劃線

 不允許出現兩個連續的下劃線

 不區分大小寫

 vhdl定義的保留字(關鍵字),不能用作識別符號

 識別符號字元最長可以是32個字元。

需要避免關鍵字:abs, access,after,all,and,architecture,

array,attribute,begin,body,buffer,bus,case ,

component,constant,disconnect,downto,else,

elsif,end,entity,exit,file,for,function,generic,

group,if,inpure,in,inout,is,label,library,

linkage,loop,map,mod,nand,new,next,nor ,not,

null,of,on,open ,or ,others,out,package,pout,

procedure ,process,pure,range ,recode,rem,

report,return,rol,ror,select,shared,signal,

sla,sll,sra,subtype,then,transport,to,type ,

unaffected,units,until,use,variable,wait,when,

while,with,xor ,xnor 

2、資料物件

資料物件包括常量、變數、訊號檔案四種型別。

2.1常量是對某一常量名賦予乙個固定的值,而且只能賦值一次。通常賦值在程式開始前進行,該值的資料型別則在說明語句中指明。

constant 常數名:資料型別:=表

常量所賦的值應和定義的資料型別一致;

常量在程式包、實體、構造體或程序的說明性區域內必須加以說明。定義在程式包內的常量可供所含的任何實體、構造體所引用,定義在實體說明內的常量只能在該實體內可見,定義在程序說明性區域中的常量只能在該程序內可見。

2.2變數variable

變數只能在程序語句、函式語句和過程語句結構中使用。變數的賦值是直接的,非預設的,分配給變數的值立即成為當前值,

變數不能表達「連線」或儲存元件,不能設定傳輸延遲量。

變數定義語句:

variable count: integer 0 to 255:=20 ; -- 定義count整數變數,變化 

範圍0~255,初始值為20。

variable 變數名:資料型別 :=初始值變數定義語

變數賦值語句:

目標變數名 := 表示式;

x:=10.0; -- 實數變數賦值為10.0

y:=1.5+x; -- 運算表示式賦值,注意表示式必須與目標變數的資料型別相同

a(3 to 6):=(「1101」); --位向量賦值

2.3訊號signal

訊號表示邏輯門的輸入或輸出,類似於連線線,也可以表達儲存元件的狀態。訊號通常在構造體、程式包和實體中說明。

訊號定義語句:

signal 訊號名: 資料型別 :=初始值訊號定義語

signal count:bit_vector(3 downto 0); --定義count為4位位向量

訊號賦值語句:

目標訊號名 <= 表示式;

x<=9;

z<=x after 5 ns; -- 在5ns後將x的值賦予z

3、資料型別

vhdl的預定義資料型別

在vhdl標準程式包standard中定義好,實際使用過程中,已自動包含進vhdl原始檔中,不需要通過use語句顯式呼叫。

 布林:(boolean)

type boolean is (false, true); 

-- 取值為false和true,不是數值,不能運算,一般用於關係運算子

 位: ( bit )

type bit is (『0』,』1』); --取值為0和1,用於邏輯運算 

 位向量: ( bit_vector )

type bit_vector is array (natural range<>) of bit; -- 基於bit型別的數

組,用於邏輯運算

signal a:bit_vector(0 to 7); signal a:bit_vector ( 7 downto 0) 

 整數:(integer)

可用32位有符號的二進位制數表示

variable a:integer range -63 to 63

在實際應用中,vhdl**器將integer做為有符號數處理,而vhdl綜合器將integer做為無符號數處理;

要求用range子句為所定義的數限定範圍,以便根據範圍來決定表示此訊號或變數的二進位制數的位數。 

 字元:(character)

type character is (nul, soh,stx, …, 『 』, 『!』,…); --通常用『』引起 

來,區分大小寫;

 字串:(string)

variable string_var: string (1 to 7);

string_var:=「a b c d」 ; -- 通常用「」引起來,區分大小寫;

 實數:(real)

取值範圍 -1.0e38 ~+1.0e38,僅用於**不可綜合

1.0 --十進位制浮點數

8#43.6#e+4 --八進位制浮點數

43.6e-4 --十進位制浮點數

物理量資料,完整的包括整數和單位兩個部分,用至少乙個空格隔

開,僅用於**不可綜合;

fs,ps,ns,us,ms,sec,min,hr

 錯誤等級(severity level) :

表示系統狀態,僅用於**不可綜合;

type severity_level is (note、warning、error、failure);

VHDL入門常識

在vhdl設計中有3個常用的庫 ieee庫,std庫和work庫。ieee庫 在ieee庫中有乙個ieee正式認可的標準包集stdee logic i164.a11。實際上,ieee庫包含了許多包集,列舉如下 std庫 std庫是vhdl設計環境的標準資源庫,包括資料型別和輸人了輸出文字等內容。st...

VHDL入門筆記

一,std ulogic和std logic的區別 std ulogic是個列舉型別,有9個值。而std logic是std ulogic型別的決斷子型別,除了具有std ulogic型別的9個值之外,還包含決斷函式。如果在硬體設計中不出現 線與 的話,兩者沒什麼區別,但如果有 線與 現象,則std...

VHDL入門基礎 系統層次化設計

元件例化 目的 是將已設計好的實體當作乙個元件來使用,用vhdl語言描述各元件之間的關係。因此元件例化 元件定義 已有元件呼叫 連線關係對映 各元件連線關係 conponent 元件名 is generic 屬類表 port 埠名錶 end conpenent 元件定義 例化名1 元件名1 port...