PowerPoint 簡報

Download Report

Transcript PowerPoint 簡報

國立宜蘭大學
電機工程系
練習1. ---- VHDL硬體電路描述語言簡介
彭世興教師 編製
國立宜蘭大學電機工程系
電路描述語言範例:兩開關控制一個燈
SWa
SWb
AC
1.依接線方式描述電路:
開關SWa , SWb先並聯連接後再串接到燈泡與電源。
國立宜蘭大學電機工程系
2.依電路功能描述:
SWa
AC
SWb
SWa 或 SWb 開關按下(ON)後,燈泡會亮。
國立宜蘭大學電機工程系
3.依電路功能真值表描述:
SWa
AC
SWb
SWa 或 SWb 開關按下(ON)後,燈泡會亮。
國立宜蘭大學電機工程系
4.依邏輯電路真值表描述:
Out = SWa or SWb
Out = SWa and SWb
國立宜蘭大學電機工程系
5.用or 邏輯電路完成:兩開關控制一個燈
Vcc
Vcc
key
SWa
out
4.7K
4.7K
4.7K
SWb
邏輯閘IC電路
輸入介面電路
Out = SWa or SWb
國立宜蘭大學電機工程系
輸出介面電路
6.用and 邏輯電路完成:兩開關控制一個燈
Vcc
Vcc
4.7K
SWa
out
4.7K
key
4.7K
SWb
邏輯閘IC電路
輸入介面電路
Out = SWa and SWb
國立宜蘭大學電機工程系
輸出介面電路
7.目前電路設計常用的IC元件 --- FPGA
電路設計IC元件 --- FPGA
Vcc
Vcc
4.7K
SWa
out
4.7K
4.7K
key
SWb
輸入介面電路
邏輯閘IC電路
國立宜蘭大學電機工程系
輸出介面電路
8.場可規劃邏輯閘陣列--- FPGA的外觀與結構
輸入- 輸
出緩衝器
可程式化邏
輯元件CLB
FPGA場可規劃邏輯閘陣列
a. 可程式化的邏輯元件
b. 可程式化的垂直及水平通道
c. 可程式化的輸入- 輸出緩衝器
國立宜蘭大學電機工程系
可程式化的
佈線通道
9. 規劃FPGA元件的程式語言--- VHDL(硬體描述語言)
VHDL就是VHSIC(Very High Speed Integrated
Circuit) Hardware Description Language的
縮寫,即非常高速積體電路的硬體描述語言.
VHDL是硬體電路的描述語言,
不是程式設計的程式語言.
VHDL是IC設計的必備工具
國立宜蘭大學電機工程系
10. VHDL(硬體描述語言)基本架構與IC關係
Library描述
Entity描述
Architecture描述
IC編號名稱
7404
電路功能描述
國立宜蘭大學電機工程系
I/O腳位定義
11. VHDL 基本語法架構
使用已有的函數與零件程式
資料庫
Library描述區
Entity描述區
描述電路的I/O介面
Architecture描述區
描述電路的特性和運作
國立宜蘭大學電機工程系
12. Library描述的語法架構
• 一些經常會重複使用的程式檔案可放在
Library目錄下, 利用Use宣告後可重複使用
• 典型的Library (零件庫)例如Function 與
Component
語法:
LIBRARY 程式庫 (目錄) 名稱
USE 程式庫名稱.零件檔案名稱.指定項目
國立宜蘭大學電機工程系
Library描述語法與範例
語法:
LIBRARY 程式庫 (目錄) 名稱
USE 程式庫名稱.零件檔案名稱.指定項目
範例:
使用(內建)IEEE程式庫
--程式開頭—
使用IEEE程式庫的STD_LOGIC_1164
檔案內所有項目
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
國立宜蘭大學電機工程系
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做算術
運算用,定義無正負號資料型態,需先宣告
本零件庫及使用本包裝
國立宜蘭大學電機工程系
13. Entity描述的語法架構
• Entity描述宣告這個設計IC實體中埠(Port) 的
輸入、輸出接腳名稱及其腳位屬性與資料型態
語法:
ENTITY 電路單體名稱 IS
PORT ( 訊號A : I/O模式 資料型態;
訊號B : I/O模式 資料型態;
………
訊號N : I/O模式 資料型態 );
END 電路單體名稱 ;
國立宜蘭大學電機工程系
Entity描述宣告區 語法與範例
語法:
ENTITY 電路單體名稱 IS
PORT ( 訊號A : I/O模式 資料型態;
訊號B : I/O模式 資料型態;
………
訊號N : I/O模式 資料型態 );
END 電路單體名稱 ;
範例 1:及閘電路
ENTITY and_2 IS
a
PORT ( a,b :IN STD_LOGIC;
y :OUT STD_LOGIC );
END and_2 ;
b
國立宜蘭大學電機工程系
and_2
(檔名)
y
範例 2: 4對1多工器電路
A
輸出入訊
號名稱
輸出入
模式
資料
型態
MUX4
B
C
(檔名)
D
S0
S1
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 ;
國立宜蘭大學電機工程系
Y
ENTITY裡PORT的四種I/O模式
OUT
IN
I C控
制電
路設
計
INOUT
BUFFER
1. IN:輸入模式,即此訊號需由電路單體之外的電路來驅動;
IN也是VHDL Port中內定的訊號模式.
2. OUT:輸出模式,即此訊號僅能輸出電路單體之外去驅動外
圍電路,不可回授回單體之內驅動內部電路.
國立宜蘭大學電機工程系
OUT
IN
I C控
制電
路設
計
INOUT
BUFFER
3. BUFFER:緩衝模式,是一種可以回授驅動單體內電路的輸
出模式.但須注意:
a.不能有多重驅動的情形.
b.僅能回授接到內部訊號,或其它電路單體同為緩衝模式
的Port訊號.
4. INOUT:代表雙向模式PORT訊號,即可同時代表IN,OUT與
BUFFER等模式訊號.
國立宜蘭大學電機工程系
ENTITY裡I/O模式的四種基本資料型態
1. BIT
2. BIT_VECTOR(0 TO 7)
3. STD_LOGIC
4. STD_LOGIC_VECTOR(15 DOWNTO 7)
BIT,定義為:
0: Forcing 0 ;低電位
1: Forcing 1 ;高電位
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 ;不必理會
國立宜蘭大學電機工程系
ENTITY裡已經定義的資料型態
國立宜蘭大學電機工程系
14. Architecture描述的語法架構
architecture < IC內部結構名稱> of <IC總體名稱> is
(內部結構宣告區域)
宣告內部訊號, 分享的
變數, 及資料型態
begin
(內部結構主體功能敘述)
發生訊號的設定,零件對
應處理, 及功能設定
end < IC內部結構名稱 > ;
國立宜蘭大學電機工程系
ARCHITECTURE 描述語法與範例
ARCHITECTURE語法如下:
ARCHITECTURE 架構名稱 OF 電路單體名稱(檔名) IS
區域訊號宣告
BEGIN
架構描述
END 架構名稱;
語法範例 (雙輸入AND閘)
ARCHITECTURE dataflow OF and_2 IS
BEGIN
a
y <= a AND b;
b
END dataflow;
國立宜蘭大學電機工程系
and_2
y
ARCHITECTURE 架構三種描述法
VHDL電路架構的描述風格有三大類:
Architecture 宣告區
描述電路的特性
和運作
structure
Description
Dataflow
Description
Behavioral
Description
結構性描述
資料流描述
行為性描述
國立宜蘭大學電機工程系
第一類:行為描述(順序性 處理)
行為模式是用 process的敘述來描述一個硬體電路的行為模式。
而它與資料流描述的最大不同點為,在process 的所描述的行為
模式內皆為順序性 處理,而非資料流描述的共時性處理,意思
是說於行為描述的風格,其程式的設計與一般的高階語言十分
相似。其基本語法如下:
ARCHITECTURE 架構名稱 OF 電路單體名稱(檔名) IS
區域訊號宣告
BEGIN
process (參數)
Begin
架構描述
End process;
END 架構名稱;
國立宜蘭大學電機工程系
(1).行為性描述(順序性 處理)範例
反及閘電路描述範例
ARCHITECTURE behavior OF nand_2 IS
BEGIN
process (a,b)
NAND真值表
begin
nand_2
輸入 輸出
if ( a=‘1’) and (b=‘1’) then
a b y
aa
y<=‘0’;
yy
0 0 1
else y<= ‘1’;
b
b
end if;
0 1 1
兩輸入NAND GATE (反及閘)
End process;
1 0 1
END behavior;
1 1 0
國立宜蘭大學電機工程系
第二類:資料流描述 (共時性處理)
資料流描述是利用訊號的指定方式來描述電路內訊號資料
的流動情形,資料流描述為共時性的處理方式,而這
些訊號指定的方式於 VHDL 語言中可以區分成下列三種:
1、直接式的訊號設定 “ <=”
2、條件式 conditional 的訊號設定 “when … else”
3、選擇式 Selected 的訊號設定 “with … select … when”
國立宜蘭大學電機工程系
(2).資料流描述(共時性處理)
資料流描述係利用布林方程式來表現各信號之間的代
數關係. 屬於並行處理的方式.
反及閘電路描述範例
ARCHITECTURE dataflow OF nand_2 IS
BEGIN
y <= a NAND b;
nand_2
END dataflow;
aa
NAND真值表
輸入 輸出
a b y
yy
0 0 1
b
b
0 1 1
兩輸入NAND GATE (反及閘)
1 0 1
1 1 0
國立宜蘭大學電機工程系
第三類:結構描述 (Structure Description)
結構性描述是階層性的,使用Component與Port Map :
Component :的功能能夠讓我們作元件資料庫的設計,
Port Map :可以結合Component讓我們利用現有的
Component像堆積木一般累積出複雜的電路.
國立宜蘭大學電機工程系
(3). 結構性描述反及閘電路描述範例
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;
nand_2
and_2
a
b
not_1
i1
o1
i1
o1
i2
於此例中,需先完成cell 1 (nand_2)及閘
和 cell 2(inverter)反閘之程式,
國立宜蘭大學電機工程系
真值表
輸入
信號 輸出
a
b
i
y
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
y
15. VHDL的命名注意事項
• 需定義名稱的地方有下列:
– 實體(Entity)名稱
– 宣告埠(Port)內的接腳名稱(Pin-Name)、變數
(Variable)名稱
– 常數(Constant)名稱
– 訊號(Signal)名稱
– 檔案(File)名稱
– 零件(Component)名稱
– 架構(Architecture)名稱
國立宜蘭大學電機工程系
• VHDL 命名的一般原則:
– 第一個字(Letter)必需是一般英文字母
– 在第二字以後可用字母或數字及 _ (底線) ,
但不可使
用中文字與空白鍵
–
–
–
–
大小寫視為相同意義
同時切勿使用關鍵字(Keyword)或保留字(Reserved Word)
最後一個字不可使用雙底線_ _
另外,在命名時最好選擇有意義且切合實際事物名稱,這
樣會讓 您的程式易讀性更高,在設計過程中,也較容易記
憶而不必往返宣告區查看已命名的名稱
國立宜蘭大學電機工程系
VHDL命名的範例
例 1: 正確的命名
enable_bits
Sel
IO_1
例 2: 不正確 的命名
2bit
字首非數字
If
為保留字
Ena bits 中間不得空白
IO__ 字尾有雙底線
國立宜蘭大學電機工程系
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
國立宜蘭大學電機工程系
16. VHDL程式的註解說明
-- 在VHDL中我們提供了”--“ (雙減號)做為註解
的前置指令,在雙減號後 您可以對 您的程式加
註說明
(在任何設計中,總是免不了需要對一些特殊設計
部分加以註解說明一番,這是非常重要的工作
做好註解工作將有助於 您日後電路除錯及維修,
因此請 您做好註解的工作 )
國立宜蘭大學電機工程系
17. VHDL 程式設計基本流程
程式編輯與存檔
編輯.vhd 與 .ucf 檔
電路合成 Synthesis
檢查 .vhd 文法格式
電路實現 Implementation
載入及燒錄 Programming
國立宜蘭大學電機工程系
產生.bit 檔
下載 .bit 檔到
電路板驗證
18. VHDL完整設計範例 反閘
input
output
註解說明
inver_vhdl
--inverter gate
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity inver_vhdl is
port (
input: in STD_LOGIC;
output: out STD_LOGIC
);
end inver_vhdl;
architecture a of inver_vhdl is
begin output <= not input;
end a;
Library宣告區&標準
定義宣告庫
Entity宣告區:
input定義為輸入位元;
output定義為輸出位元。
architecture宣告區:
描述inver_vhdl電路的動
作是將input經過反相後
傳送到output。
國立宜蘭大學電機工程系
練習題目1:利用SW 開關控制 LED
FPGA
Spartan3
Vcc
SW
ON
(UP)
LED
OFF
(DOWN)
390
國立宜蘭大學電機工程系
開關請依組別設定如下所示:
LED 0
A
1
2
3
4
5
6
B
C
D
A
B
C
7
D
SW0
第一組
第五組
SW4
SW1
第二組
第六組
SW5
SW2
第三組
第七組
SW3
第四組
第八組
國立宜蘭大學電機工程系
SW6
SW7
設計結果如下所示:(範例:SW2 => LED1)
1. 控制方塊圖
FPGA
Spartan3
SW2
LED1
a
c
國立宜蘭大學電機工程系
test.vhd程式檔
Library宣告區&標準
定義宣告庫
Entity宣告區:
architecture宣告區:
國立宜蘭大學電機工程系
test.ucf接腳定義檔
國立宜蘭大學電機工程系