VLSI設計 - VHDL簡介



VHDL代表超高速積體電路硬體描述語言。它是一種程式語言,用於透過資料流、行為和結構建模風格來模擬數字系統。該語言於1981年首次為國防部(DoD)在VHSIC計劃下引入。

描述設計

在VHDL中,實體用於描述硬體模組。實體可以使用以下方式描述:

  • 實體宣告
  • 體系結構
  • 配置
  • 程式包宣告
  • 程式包主體

讓我們看看這些是什麼?

實體宣告

它定義了硬體模組的名稱、輸入輸出訊號和模式。

語法 -

entity entity_name is
   Port declaration;
end entity_name;

實體宣告應以“entity”開頭,以“end”結尾。方向將是輸入、輸出或雙向。

輸入 埠可以讀取
輸出 埠可以寫入
雙向 埠可以讀取和寫入
緩衝 埠可以讀取和寫入,它只能有一個源。

體系結構 -

體系結構可以使用結構化、資料流、行為或混合風格來描述。

語法 -

architecture architecture_name of entity_name 
architecture_declarative_part;

begin
   Statements;
end architecture_name;

在這裡,我們應該指定我們要為其編寫體系結構主體的實體名稱。體系結構語句應位於“begin”和“end”關鍵字之間。體系結構宣告部分可能包含變數、常量或元件宣告。

資料流建模

在這種建模風格中,資料透過實體的流動使用併發(並行)訊號來表示。VHDL中的併發語句是WHEN和GENERATE。

此外,僅使用運算子(AND、NOT、+、*、sll等)的賦值也可以用來構建程式碼。

最後,這種程式碼中還可以使用一種特殊型別的賦值,稱為BLOCK。

在併發程式碼中,可以使用以下內容 -

  • 運算子
  • WHEN語句(WHEN/ELSE或WITH/SELECT/WHEN);
  • GENERATE語句;
  • BLOCK語句

行為建模

在這種建模風格中,實體的行為作為一組語句按指定的順序依次執行。僅放置在PROCESS、FUNCTION或PROCEDURE內部的語句是順序的。

PROCESSES、FUNCTIONS和PROCEDURES是唯一按順序執行的程式碼部分。

但是,作為一個整體,這些塊中的任何一個仍然與放置在其外部的任何其他語句併發。

行為程式碼的一個重要方面是它不限於時序邏輯。事實上,有了它,我們可以構建時序電路以及組合電路。

行為語句是IF、WAIT、CASE和LOOP。變數也受到限制,它們應該僅用於順序程式碼中。變數永遠不能是全域性的,因此它的值不能直接傳遞出去。

結構建模

在這種建模中,實體被描述為一組互連的元件。元件例項化語句是併發語句。因此,這些語句的順序並不重要。結構化建模風格僅描述元件的互連(視為黑盒),而不暗示元件本身或它們共同表示的實體的任何行為。

在結構建模中,體系結構主體由兩部分組成 - 宣告部分(在關鍵字begin之前)和語句部分(在關鍵字begin之後)。

邏輯運算 - 與門

AND GATE
X Y Z
0 0 0
0 1 0
1 0 0
1 1 1

VHDL Code:
Library ieee;
use ieee.std_logic_1164.all;

entity and1 is
   port(x,y:in bit ; z:out bit);
end and1;

architecture virat of and1 is
begin
   z<=x and y; 
end virat;

波形

Waveforms AND

邏輯運算 - 或門

OR GATE
X Y Z
0 0 0
0 1 1
1 0 1
1 1 1

VHDL Code: 
Library ieee; 
use ieee.std_logic_1164.all;  

entity or1 is
   port(x,y:in bit ; z:out bit); 
end or1; 
 
architecture virat of or1 is
begin
   z<=x or y; 
end virat;

波形

Waveforms OR

邏輯運算 - 非門

NOT GATE
X Y
0 1
1 0

VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity not1 is
   port(x:in bit ; y:out bit); 
end not1; 
 
architecture virat of not1 is
begin
   y<=not x;
end virat; 

波形

Waveforms Not

邏輯運算 - 與非門

NAND GATE
X Y z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 

entity nand1 is
   port(a,b:in bit ; c:out bit); 
end nand1; 
 
architecture virat of nand1 is
begin
   c<=a nand b; 
end virat; 

波形

Waveforms NAND

邏輯運算 - 或非門

NOR GATE
X Y z
0 0 1
0 1 0
1 0 0
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity nor1 is
   port(a,b:in bit ; c:out bit); 
end nor1; 
 
architecture virat of nor1 is
begin
   c<=a nor b;
end virat; 

波形

Waveforms NOR

邏輯運算 - 異或門

XOR GATE
X Y Z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all;
  
entity xor1 is
   port(a,b:in bit ; c:out bit); 
end xor1;
  
architecture virat of xor1 is
begin
   c<=a xor b; 
end virat;

波形

Waveforms XOR

邏輯運算 - 同或門

X Y Z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 

entity xnor1 is
   port(a,b:in bit ; c:out bit); 
end xnor1; 
 
architecture virat of xnor1 is
begin
   c<=not(a xor b); 
end virat;

波形

Waveforms X-NOR
廣告

© . All rights reserved.