VHDL入門筆記

2021-08-30 21:50:54 字數 1282 閱讀 3855

一,std_ulogic和std_logic的區別:

std_ulogic是個列舉型別,有9個值。而std_logic是std_ulogic型別的決斷子型別,除了具有std_ulogic型別的9個值之外,還包含決斷函式。如果在硬體設計中不出現「線與」的話,兩者沒什麼區別,但如果有」線與「現象,則std_logic型別可以通過決斷函式來判定訊號值,而std_ulogic型別則無法處理 '線與' 問題。

二,資料型別轉換

包:std_logic_arith;

(1)conv_integer(p):將資料型別為整數,無符號簽字,std_ulogic或std_logic的運算元p轉換為整數型別注意不包括std_logic_vector;

(2)conv_unsigned(p,d):將資料型別為整數,無符號簽字,std_ulogic或std_logic的運算元轉換成寬為b的無符號型別的的資料;

(3)conv_signed(p,b):將資料型別為integer,unsigned,signed或std_ulogic的運算元p轉換成位寬為b的簽名型別的資料。

(4)conv_std_logic_vector(p,b):將資料型別為integer,unsigned,signed或std_logic的運算元p轉換成位寬為b的std_logic_vector型別的資料。

三,訊號和變數

變數是乙個在程式中數值可以改變的資料物件,主要用於程序和子程式中,進行暫時資訊的儲存,它是乙個區域性變數,對變數的賦值是立即生效的,不存在賦值延時,注意,重要的說三遍:不存在賦值延時不存在賦值延時不存在賦值延時這也是它和signal乙個相當大的區別!

訊號主要用於實體,結構體或設計實體之間的資訊交流,相當於原理圖或電路板上的導線,它是全域性變數,存在賦值延時具體怎麼理解可以參考我的另外一篇博文!vhdl十進位制計數器位!

四,整數範圍0到10

在設計十進位制計數器時,發現了這個語法,其中是這樣定義的:signal q:integer 0到10;乍一看好像是將訊號的範圍值限定在0到10之間,然後當q一直+1,加到9後就變成0;!可實際**時,發現輸出一直到15後才變為0,於是查詢資料,說實話,網上好多網友都認為9 + 1後變為0經過多番查閱諮詢以及實際**,很顯然並不是這樣!

埠或者訊號被定義成integer,一般預設是32bit,如範圍0到15,那麼儲存器將會分配4bit寬的暫存器,如果定義範圍0到10,則必須也要分配4bit寬的暫存器!同理,如果定義範圍0到7,則會分配到3bit的暫存器!這樣,有人可能會說,那這個範圍似乎沒什麼用,我的理解就是用於給暫存器分配多少bit起作用吧,也就是integer 0 range 10和integer 0 range 15是等效的!

VHDL入門學習

一 vhdl優點 覆蓋面廣,系統硬體描述能力強,是乙個多層次的硬體描述語言 vhdl語言具有良好的可讀性,既可以被計算機接受,也容易被人們 所理解 vhdl語言可以與工藝無關程式設計 vhdl語言已做為一種ieee的工業標準,便於使用 交流和推廣。vhdl的不足之處 設計的最終實現取決於針對目標器件...

VHDL入門常識

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

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

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