練習 1. ---- VHDL 硬體電路描述語言 簡介

Post on 03-Jan-2016

151 views 0 download

description

國立宜蘭大學電機工程系. 國立宜蘭 大學. 電機工程系. 練習 1. ---- VHDL 硬體電路描述語言 簡介. 彭世興教師 編製. 國立宜蘭大學電機工程系. 電路描述語言範例 : 兩開關控制一個燈. 1. 依接線方式描述電路 :. 開關 SWa , SWb 先 並聯 連接後再 串接到 燈泡與電源。. 國立宜蘭大學電機工程系. 2. 依電路功能描述 :. SWa 或 SWb 開關 按下 (ON) 後,燈泡會亮。. 國立宜蘭大學電機工程系. 3. 依電路功能真值表描述 :. SWa 或 SWb 開關 按下 (ON) 後 , 燈泡會亮 。. - PowerPoint PPT Presentation

Transcript of 練習 1. ---- VHDL 硬體電路描述語言 簡介

練習練習 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接腳定義檔

國立宜蘭大學電機工程系