練習 1. ---- vhdl 硬體電路描述語言 簡介
DESCRIPTION
國立宜蘭大學電機工程系. 國立宜蘭 大學. 電機工程系. 練習 1. ---- VHDL 硬體電路描述語言 簡介. 彭世興教師 編製. 國立宜蘭大學電機工程系. 電路描述語言範例 : 兩開關控制一個燈. 1. 依接線方式描述電路 :. 開關 SWa , SWb 先 並聯 連接後再 串接到 燈泡與電源。. 國立宜蘭大學電機工程系. 2. 依電路功能描述 :. SWa 或 SWb 開關 按下 (ON) 後,燈泡會亮。. 國立宜蘭大學電機工程系. 3. 依電路功能真值表描述 :. SWa 或 SWb 開關 按下 (ON) 後 , 燈泡會亮 。. - PowerPoint PPT PresentationTRANSCRIPT
練習練習 1. ---- VHDL1. ---- VHDL 硬體電路描述語言硬體電路描述語言簡簡介介
國立宜蘭大學電機工程系
國立宜蘭國立宜蘭大學大學
電機工程系電機工程系
彭世興教師 編製彭世興教師 編製
ACSWb
SWa
電路描述語言範例:兩開關控制一個燈
國立宜蘭大學電機工程系
開關 SWa , SWb 先並聯連接後再串接到燈泡與電源。
1. 依接線方式描述電路:
ACSWb
SWa
國立宜蘭大學電機工程系
SWa 或 SWb 開關按下 (ON) 後,燈泡會亮。
2. 依電路功能描述:
ACSWb
SWa
國立宜蘭大學電機工程系
SWa 或 SWb 開關按下 (ON) 後,燈泡會亮。
3. 依電路功能真值表描述:
國立宜蘭大學電機工程系
Out = SWa or SWb
4. 依邏輯電路真值表描述:
Out = SWa and SWb
國立宜蘭大學電機工程系
Out = SWa or SWb
5. 用 or 邏輯電路完成:兩開關控制一個燈
SWa
SWb
out
邏輯閘 IC 電路
4.7K
4.7K
Vcc
key
輸入介面電路
4.7K
Vcc
輸出介面電路
國立宜蘭大學電機工程系
6. 用 and 邏輯電路完成:兩開關控制一個燈
Out = SWa and SWb
SWa
SWb
out
邏輯閘 IC 電路輸入介面電路
4.7K
4.7K
Vcc
key
輸出介面電路
4.7K
Vcc
國立宜蘭大學電機工程系
SWa
SWb
out
邏輯閘 IC 電路
輸入介面電路
4.7K
4.7K
Vcc
key
輸出介面電路
4.7K
Vcc
電路設計 IC 元件 --- FPGA
7. 目前電路設計常用的 IC 元件 --- FPGA
國立宜蘭大學電機工程系
FPGA 場可規劃邏輯閘陣列 a. 可程式化的邏輯元件 b. 可程式化的垂直及水平通道 c. 可程式化的輸入 - 輸出緩衝器
輸入 - 輸出緩衝器
可程式化邏輯元件 CL
B
可程式化的佈線通道
8. 場可規劃邏輯閘陣列 --- FPGA 的外觀與結構
國立宜蘭大學電機工程系
9. 規劃 FPGA 元件的程式語言 --- VHDL( 硬體描述語言 )
VHDL 就是 VHSIC(Very High Speed Integrated
Circuit) Hardware Description Language 的縮寫 , 即非常高速積體電路的硬體描述語言 .
VHDL 是硬體電路的描述語言 ,
不是程式設計的程式語言 .
VHDL 是 IC 設計的必備工具
7404
國立宜蘭大學電機工程系
10. VHDL( 硬體描述語言 )基本架構與 IC 關係
I/O 腳位定義
IC 編號名稱
電路功能描述
Library 描述
Entity 描述
Architecture 描述
國立宜蘭大學電機工程系
11. VHDL 基本語法架構
Entity 描述區 描述電路的 I/O 介面
Library 描述區 使用已有的函數與零件程式資料庫
Architecture 描述區 描述電路的特性和運作
• 一些經常會重複使用的程式檔案可放在 Library 目錄下 , 利用 Use 宣告後可重複使用
• 典型的 Library ( 零件庫 ) 例如 Function 與 Component
12. Library 描述的語法架構
國立宜蘭大學電機工程系
LIBRARY 程式庫 ( 目錄 ) 名稱 USE 程式庫名稱 . 零件檔案名稱 . 指定項目
語法 :
國立宜蘭大學電機工程系
Library 描述語法與範例
-- 程式開頭— LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
範例 : 使用 ( 內建 )IEEE 程式庫
使用 IEEE 程式庫的 STD_LOGIC_1164
檔案內所有項目
LIBRARY 程式庫 ( 目錄 ) 名稱 USE 程式庫名稱 . 零件檔案名稱 . 指定項目
語法 :
國立宜蘭大學電機工程系
VHDL 的 Library ( 零件庫 ) 及 Package ( 包裝 )
VHDL 的零件庫 (Library) 及包裝 (Package) 可分為 :
(1.) 系統現有的零件庫及包裝
(2.) 使用者自訂的零件庫及包裝系統現有的零件庫及包裝VHDL 發展工具都會提供兩個 IEEE
標準零件庫 (standard libraries ):
“std”
"ieee"
在 IEEE 目錄下的標準零件庫 Package 檔名
Package 套件檔名
國立宜蘭大學電機工程系
目錄
國立宜蘭大學電機工程系
套件檔名 檔案內容
零件庫名稱
包 裝 名 稱
包 裝 類 別 說 明
STD Standard 當要指定 VHDL 資料型態為 bit 或 bit_vector 時 , 需先宣告本零件庫及使用本包裝
IEEE Std_logic_1164
指定有用的 VHDL 資料型態為 std_logic and std_logic_vector 時 , 需先宣告本零件庫及使用本包裝 , 同時一些時脈 (Clock) 零件也定義於此
IEEE Numeric_std
使用 std_logic_1164 包裝時定義算術運算資料型態
系統現有的零件庫及包裝 ( 一 )
國立宜蘭大學電機工程系
國立宜蘭大學電機工程系
系統現有的零件庫及包裝 ( 二 )
IEEE Std_logic_arith
為了程式中需要做正負號及無正負號資料的算術運算用 , 需先定義有正負號及無正負號資料型態時 , 需先宣告本零件庫及使用本包裝
IEEE Std_logic_signed
為了 std_logic 及 std_logic_vector 做算術運算用 , 定義有正負號資料型態 , 需先宣告本零件庫及使用本包裝
IEEE Std_logic_unsigned
為了 std_logic 及 std_logic_vector 做算術運算用 , 定義無正負號資料型態 , 需先宣告本零件庫及使用本包裝
國立宜蘭大學電機工程系
• Entity 描述宣告這個設計 IC 實體中埠 (Port) 的輸入、輸出接腳名稱及其腳位屬性與資料型態
13. Entity 描述的語法架構
語法 : ENTITY 電路單體名稱 IS
PORT ( 訊號 A : I/O 模式 資料型態 ;
訊號 B : I/O 模式 資料型態 ;
………
訊號 N : I/O 模式 資料型態 );
END 電路單體名稱 ;
國立宜蘭大學電機工程系
Entity 描述宣告區 語法與範例
範例 1: 及閘電路ENTITY and_2 IS
PORT ( a,b :IN STD_LOGIC;
y :OUT STD_LOGIC );
END and_2 ;
a
b
yand_2
( 檔名)
語法 : ENTITY 電路單體名稱 IS
PORT ( 訊號 A : I/O 模式 資料型態 ;
訊號 B : I/O 模式 資料型態 ;
………
訊號 N : I/O 模式 資料型態 );
END 電路單體名稱 ;
ENTITY MUX4 IS
PORT ( A : IN STD_LOGIC;
B : IN STD_LOGIC;
C : IN STD_LOGIC;
D: IN STD_LOGIC;
S: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
Y: OUT STD_LOGIC);
END MUX4 ;
國立宜蘭大學電機工程系
MUX4
( 檔名 )
A
B
S0
C
S1
D
Y
範例 2: 4 對 1多工器電路
資料型態
輸出入模式
輸出入訊號名稱
ENTITY 裡 PORT 的四種 I/O 模式
1. IN: 輸入模式 , 即此訊號需由電路單體之外的電路來驅動 ;
IN 也是 VHDL Port 中內定的訊號模式 .
2. OUT: 輸出模式 , 即此訊號僅能輸出電路單體之外去驅動外 圍電路 , 不可回授回單體之內驅動內部電路 .
國立宜蘭大學電機工程系
IN
OUT
BUFFER
IC控制電路設計
INOUT
3. BUFFER: 緩衝模式 , 是一種可以回授驅動單體內電路的輸 出模式 . 但須注意 :
a. 不能有多重驅動的情形 .
b. 僅能回授接到內部訊號 , 或其它電路單體同為緩衝模式 的 Port 訊號 .
4. INOUT: 代表雙向模式 PORT 訊號 , 即可同時代表 IN,OUT與
BUFFER 等模式訊號 . 國立宜蘭大學電機工程系
IN
OUT
BUFFER
IC控制電路設計
INOUT
ENTITY 裡 I/O 模式的四種基本資料型態
國立宜蘭大學電機工程系
1. BIT
2. BIT_VECTOR(0 TO 7)
3. STD_LOGIC
4. STD_LOGIC_VECTOR(15 DOWNTO 7)
STD_LOGIC, 定義為 :
X: Forcing Unknown;浮接不定 0: Forcing 0 ;低電位 1: Forcing 1 ; 高電位 Z: High Impedance; 高阻抗 W: Weak Unknown;弱浮接 L: Weak 0;弱低電位 H: Weak 1 ;弱高電位 - : Don’t care ; 不必理會
BIT, 定義為 :
0: Forcing 0 ;低電位 1: Forcing 1 ; 高電位
國立宜蘭大學電機工程系
ENTITY 裡已經定義的資料型態
architecture < IC 內部結構名稱 > of <IC總體名稱 > is ( 內部結構宣告區域 ) begin ( 內部結構主體功能敘述 )
end < IC 內部結構名稱 > ;
14. Architecture 描述的語法架構
國立宜蘭大學電機工程系
宣告內部訊號 , 分享的變數 , 及資料型態
發生訊號的設定 , 零件對應處理 , 及功能設
定
國立宜蘭大學電機工程系
ARCHITECTURE 描述語法與範例
ARCHITECTURE 語法如下 :
ARCHITECTURE 架構名稱 OF 電路單體名稱 ( 檔名 ) IS
區域訊號宣告 BEGIN
架構描述 END 架構名稱 ;
語法範例 ( 雙輸入 AND 閘 )
ARCHITECTURE dataflow OF and_2 IS
BEGIN
y <= a AND b;
END dataflow;
ay
b
and_2
國立宜蘭大學電機工程系
structure
Description
結構性描述
Dataflow
Description
資料流描述
Behavioral
Description
行為性描述
描述電路的特性和運作
Architecture 宣告區
ARCHITECTURE 架構三種描述法
VHDL 電路架構的描述風格有三大類:
第一類:行為描述 (順序性 處理 )
行為模式是用 process 的敘述來描述一個硬體電路的行為模式。而它與資料流描述的最大不同點為,在 process 的所描述的行為模式內皆為順序性 處理,而非資料流描述的共時性處理,意思是說於行為描述的風格,其程式的設計與一般的高階語言十分相似。其基本語法如下:ARCHITECTURE 架構名稱 OF 電路單體名稱 ( 檔名 ) IS
區域訊號宣告 BEGIN
process (參數 )
Begin
架構描述 End process;
END 架構名稱 ;
國立宜蘭大學電機工程系
國立宜蘭大學電機工程系
(1).行為性描述 (順序性 處理 ) 範例
ARCHITECTURE behavior OF nand_2 ISBEGIN process (a,b) begin if ( a=‘1’) and (b=‘1’) then y<=‘0’; else y<= ‘1’; end if;End process;END behavior;
反及閘電路描述範例
b
ay
NAND GATE ( )兩輸入 反及閘
輸入 輸出a b y0 0 1
11011
11 00
NAND真值表
ya
b
nand_2
資料流描述是利用訊號的指定方式來描述電路內訊號資料的流動情形,資料流描述為共時性的處理方式,而這些訊號指定的方式於 VHDL 語言中可以區分成下列三種:
1 、直接式的訊號設定 “ <=”
2 、條件式 conditional 的訊號設定 “ when … else”
3 、選擇式 Selected 的訊號設定 “ with … select … when”
第二類:資料流描述 (共時性處理 )
國立宜蘭大學電機工程系
國立宜蘭大學電機工程系
(2). 資料流描述 (共時性處理 )
ARCHITECTURE dataflow OF nand_2 ISBEGIN y <= a NAND b;END dataflow;
資料流描述係利用布林方程式來表現各信號之間的代數關係 . 屬於並行處理的方式 .
反及閘電路描述範例
b
ay
NAND GATE ( )兩輸入 反及閘
輸入 輸出a b y0 0 1
11011
11 00
NAND真值表
ya
b
nand_2
第三類:結構描述 (Structure Description)
國立宜蘭大學電機工程系
結構性描述是階層性的 , 使用 Component 與 Port Map :
Component :的功能能夠讓我們作元件資料庫的設計 ,
Port Map :可以結合 Component讓我們利用現有的
Component像堆積木一般累積出複雜的電路 .
ARCHITECTURE structure OF nand_2 IS
Signal i:BIT;
component and_2
port( i1,i2:in STD_LOGIC;
o1:out STD_LOGIC);
end component;
component not_1
port(i1:in STD_LOGIC;
o1:out STD_LOGIC);
end component; BEGIN
and_2 port map (a,b,i);
not_1 port map (i,y);
END structure;
國立宜蘭大學電機工程系
(3). 結構性描述反及閘電路描述範例
於此例中 , 需先完成 cell 1 (nand_2) 及閘 和 cell 2(inverter)反閘之程式 ,
輸入 輸出
a b y
0 0 0
0
0
111
1
1 0
0
真值表
信號i
1
1
1
0
ya
b
nand_2
i1
i2
and_2
o1 i1 o1
not_1
• 需定義名稱的地方有下列 :
– 實體 (Entity) 名稱– 宣告埠 (Port) 內的接腳名稱 (Pin-Name) 、變數 (Va
riable) 名稱– 常數 (Constant) 名稱– 訊號 (Signal) 名稱– 檔案 (File) 名稱– 零件 (Component) 名稱– 架構 (Architecture) 名稱
15. VHDL 的命名注意事項
國立宜蘭大學電機工程系
• VHDL 命名的一般原則 :
– 第一個字 (Letter) 必需是一般英文字母英文字母– 在第二字以後可用字母或數字及 _ (底線 ) , 但不可使但不可使用用中文字中文字與與空白鍵空白鍵
– 大小寫視為相同意義– 同時切勿使用關鍵字 (Keyword) 或保留字 (Reserved Word)
– 最後一個字不可使用雙底線 _ _
– 另外 , 在命名時最好選擇有意義且切合實際事物名稱 , 這 樣會讓 您的程式易讀性更高 , 在設計過程中 , 也較容易記 憶而不必往返宣告區查看已命名的名稱
國立宜蘭大學電機工程系
例 1: 正確的命名 enable_bits
Sel IO_1
例 2: 不正確 的命名 2bit 字首非數字 If 為保留字 Ena bits 中間不得空白 IO__ 字尾有雙底線
VHDL命名的範例
國立宜蘭大學電機工程系
VHDL 的保留字 ( 一 )
ABS COMPNENT GUARDED
ACCESS CONFIGURATION IF
AFTER CONSTANT IMPURE
ALIAS DISCONNECT IN
ALL DOWNTO INERTIAL
AND ELSE INOUT
ARCRITECTURE ELSIF IS
ARRAY END LABEL
國立宜蘭大學電機工程系
VHDL 的保留字 ( 二 )
ASSERT ENTITY LIBRARY
ATTRIBUTE EXIT LINKAGE
BEGIN FILE LITERAL
BLOCK FOR LOOP
BODY FUNCTION MAP
BUFFER GENERATE MOD
BUS GENERIC NAND
CASE GROUP NEW
國立宜蘭大學電機工程系
VHDL 的保留字 (三 )
NEXT RANGE SUBTYPE
NOR RECORD THEN
NOT REGISTER TO
NULL REJECT TRANSPORT
OF REM TYPE
ON REPORT UNAFFECTED
OPEN RETURN UNITS
OR ROL UNTIL
國立宜蘭大學電機工程系
VHDL 的保留字 ( 四 )
OTHERS ROR USE
OUT SELECT VARABLE
PACKAGE SEVERITY WAIT
PORT SHARED WHEN
POSTONED SIGNAL WHILE
PROCEDURE SLA WITH
PROCESS SRA XNOR
PURE SRL XOR
國立宜蘭大學電機工程系
-- 在 VHDL 中我們提供了” --“ ( 雙減號 ) 做為註解的前置指令 , 在雙減號後 您可以對 您的程式加註說明
( 在任何設計中 ,總是免不了需要對一些特殊設計部分加以註解說明一番 , 這是非常重要的工作
做好註解工作將有助於 您日後電路除錯及維修 ,因此請 您做好註解的工作 )
國立宜蘭大學電機工程系
16. VHDL 程式的註解說明
國立宜蘭大學電機工程系
17. VHDL 程式設計基本流程
電路合成 Synthesis 檢查 .vhd 文法格式
程式編輯與存檔 編輯 .vhd 與 .ucf 檔
電路實現 Implementation 產生 .bit 檔
載入及燒錄 Programming 下載 .bit 檔到電路板驗證
18. VHDL 完整設計範例 反閘
--inverter gatelibrary IEEE;use IEEE.STD_LOGIC_1164.all; entity inver_vhdl isport ( input: in STD_LOGIC; output: out STD_LOGIC);end inver_vhdl;architecture a of inver_vhdl isbegin output <= not input;end a;
國立宜蘭大學電機工程系
input output
inver_vhdl 註解說明
architecture宣告區:描述 inver_vhdl電路的動作是將 input經過反相後傳送到 output。
Entity宣告區:input定義為輸入位元;output定義為輸出位元。
Library宣告區 &標準定義宣告庫
國立宜蘭大學電機工程系
練習題目 1 :利用 SW 開關控制 LED
FPGASpartan3
390
LED
OFF(DOWN)
ON(UP)
Vcc
SW
開關請依組別設定如下所示:
LED 0 1 2 3 4 5 6 7
A B C D A B C D
第一組
第二組
第三組
第四組
第五組
第六組
第七組
第八組
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
國立宜蘭大學電機工程系
國立宜蘭大學電機工程系
設計結果如下所示:(範例: SW2 => LED1)
LED1SW2
FPGASpartan3
a c
1. 控制方塊圖
test.vhd程式檔
國立宜蘭大學電機工程系
architecture宣告區:
Entity宣告區:
Library宣告區 &標準定義宣告庫
test.ucf接腳定義檔
國立宜蘭大學電機工程系