Chapter # 1: Introduction Contemporary Logic

www.hyivs.tnc.edu.tw
CPLD-VHDL
國立新營高工
WWW.HYIVS.TNC.EDU.TW
沈慶陽
Shen Ching Yang No. 1-1
www.hyivs.tnc.edu.tw
VHDL
VHDL就是VHSIC(Very High Speed Integrated
Circuit) Hardware Description Language的
縮寫,即非常高速積體電路的硬體描述語言.
VHDL is a Hardware Description Language,
Not a Programming language.
VHDL 是硬體描述語言,
不是程式語言.
Shen Ching Yang No. 1-2
www.hyivs.tnc.edu.tw
VHDL STRUCTURE(結構)
• PACKAGE
• ENTITY
包裝
描述電路的I/O介面
• ARCHITECTURE 描述電路的特性和運作
structure
Description
Dataflow
Description
Behavioral
Description
結構性描述
資料流描述
行為性描述
Shen Ching Yang No. 1-3
www.hyivs.tnc.edu.tw
使用VHDL設計一個兩輸入AND GATE(及閘)
a
b
and_2
y
(檔名)
真值表
輸入
a
y
b
兩輸入AND GATE (及閘)
輸出
a
b
y
0
0
0
0
1
0
1
0
0
1
1
1
Shen Ching Yang No. 1-4
www.hyivs.tnc.edu.tw
EXAMPLE:第一個測試程式(兩輸入及閘)
LIBRARY IEEE;(使用內建IEEE程式庫)
USE IEEE.STD_LOGIC_1164.ALL;(使用零件盒內所有項目)
ENTITY and_2 IS
PORT (a,b : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END and_2;
ARCHITECTURE dataflow OF and_2 IS
BEGIN
y <= a AND b;
END dataflow;
使用程式庫與零件盒
ENTITY描述電路的外部包裝,亦即I/O接腳.
a
b
and_2
y
(檔名)
Architecture用以描述ENTITY
所涵蓋的電路行為和特性.
此例為AND閘, y=a*b
註:此例and_2(斜体字係檔名).存檔的檔名為and_2.vhd
請以此例作一個NOT GATE(反閘),檔名inv_1.vhd
Shen Ching Yang No. 1-5
www.hyivs.tnc.edu.tw
Dataflow Description(資料流描述)(反閘)
LIBRARY IEEE;(使用內建IEEE程式庫)
USE IEEE.STD_LOGIC_1164.ALL;(使用零件盒內所有項目)
ENTITY inv_1 IS
PORT (a : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END inv_1;
ARCHITECTURE dataflow OF inv_1 IS
BEGIN
y <=NOT a;
END dataflow;
使用程式庫與零件盒
ENTITY描述電路的外部包裝,亦即I/O接腳.
a
inv_1
y
(檔名)
Architecture用以描述ENTITY
所涵蓋的電路行為和特性.
此例為NOT閘, y<=NOT a
註:此例 inv_1(斜体字係檔名).存檔的檔名為inv_1.vhd
請參考此例,製作一個兩輸入OR GATE(或閘)
Shen Ching Yang No. 1-6
www.hyivs.tnc.edu.tw
使用程式庫與零件盒
語法:
--程式開頭—
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;
Shen Ching Yang No. 1-7
www.hyivs.tnc.edu.tw
ENTITY(電路單體)
ENTITY語法如下: --ENTITY是描述I/O接腳的規格-ENTITY 電路單體名稱 IS
PORT ( 訊號A : 模式 資料型態;
訊號B : 模式 資料型態;
………
訊號N : 模式 資料型態 );
END 電路單體名稱 ;
a
b
and_2
(檔名)
y
ENTITY語法範例:
ENTITY and_2 IS
PORT ( a,b :IN STD_LOGIC;
y :OUT STD_LOGIC );
END and_2 ;
Shen Ching Yang No. 1-8
www.hyivs.tnc.edu.tw
ENTITY電路單體的語法範例(半加器)
A(被加數)
HALFADD
B(加數)
(檔名)
Sum(和)
Carry(進位)
範例:半加器HALFADD的電路單體範例
ENTITY HALFADD IS
PORT ( A,B :IN BIT;
Sum,Carry:OUT BIT);
END HALFADD;
Shen Ching Yang No. 1-9
www.hyivs.tnc.edu.tw
ENTITY電路單體的語法範例(多工器)
A
MUX4
B
C
Y
(檔名)
D
S0
S1
範例:4對1多工器MUX4的電路單體範例
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;
Shen Ching Yang No. 1-10
www.hyivs.tnc.edu.tw
ENTITY裡PORT的四種輸出入模式
1. IN:輸入模式,即此訊號需由電路單體之外的電路來驅動;
IN也是VHDL Port中內定的訊號模式.
2. OUT:輸出模式,即此訊號僅能輸出電路單體之外去驅動外
圍電路,不可回授回單體之內驅動內部電路.
3. BUFFER:緩衝模式,是一種可以回授驅動單體內電路的輸
出模式.但須注意:
a.不能有多重驅動的情形.
b.僅能回授接到內部訊號,或其它電路單體同為緩衝模式
的Port訊號.
4. INOUT:代表雙向模式PORT訊號,即可同時代表IN,OUT與
BUFFER等模式訊號.
Shen Ching Yang No. 1-11
www.hyivs.tnc.edu.tw
ENTITY裡PORT的四種基本資料型態
1.
2.
3.
4.
BIT
BIT_VECTOR(0 TO 7)
STD_LOGIC
STD_LOGIC_VECTOR(15 DOWNTO 7)
PS: STD_LOGIC為IEEE-1164所提供的標準,定義為:
X: Forcing Unknown;浮接不定
0: Forcing 0 ;低電位
1: Forcing 1 ;高電位
Z: High Impedance;高阻抗
W: Weak Unknown;弱浮接
L: Weak 0;弱低電位
H: Weak 1 ;弱高電位
- : Don’t care ;不必理會
Shen Ching Yang No. 1-12
www.hyivs.tnc.edu.tw
ARCHITECTURE架構描述
ARCHITECTURE語法如下:
ARCHITECTURE 架構名稱 OF 電路單體名稱(檔名) IS
區域訊號宣告
BEGIN
架構描述
END 架構名稱;
ARCHITECTURE 語法範例(雙輸入AND閘)
ARCHITECTURE dataflow OF and_2 IS
BEGIN
y <= a AND b;
END dataflow;
Shen Ching Yang No. 1-13
www.hyivs.tnc.edu.tw
ARCHITECTURE架構描述範例(半加器)
A
B
Sum
Carry
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
半加器真值表
ARCHITECTURE 語法範例(HALFADD半加器)
ARCHITECTURE behave OF HALFADD IS
BEGIN
Sum <= A xor B;
Carry <= A and B;
END behave;
Shen Ching Yang No. 1-14
www.hyivs.tnc.edu.tw
行為性描述(Behavioral Descriptions)
反及閘NAND Gate
行為性描述係使用Process敘述的方式來完成(Sequential執行模式).
屬於高階描述方式(High-level Description).
LIBRARY IEEE; (使用內建IEEE程式庫)
USE IEEE.STD_LOGIC_1164.ALL; (使用零件盒內所有項目)
ENTITY nand2 IS
PORT (a,b : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END nand2;
ARCHITECTURE behavior OF nand2 IS
NAND真值表
BEGIN
輸入 輸出
process (a,b)
begin
b
a
y
a
y
if ( a=‘1’) and (b=‘1’) then
0
1
0
b
y<=‘0’;
0
1
1
else y<= ‘1’;
兩輸入NAND GATE (反及閘)
1
0
1
end if;
1
1
0
End process;
END behavior;
Shen Ching Yang No. 1-15
www.hyivs.tnc.edu.tw
資料流描述(Dataflow Descriptions)
反及閘NAND Gate
資料流描述係利用布林方程式來表現各信號之間的代數關係.
屬於並行(Current)敘述的方式.
LIBRARY IEEE; (使用內建IEEE程式庫)
USE IEEE.STD_LOGIC_1164.ALL; (使用零件盒內所有項目)
ENTITY nand IS
PORT (a,b : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END nand;
ARCHITECTURE dataflow OF nand IS
BEGIN
y <= a NAND b;
END dataflow;
NAND真值表
輸入 輸出
a b y
a
y 0 0 1
b
0 1 1
兩輸入NAND GATE (反及閘)
1 0 1
1 1 0
Shen Ching Yang No. 1-16
www.hyivs.tnc.edu.tw
結構性描述(Structure Descriptions)
反及閘NAND Gate
結構性描述是由VHDL的netlist所組成,這些netlist就好像在schematic中的netlist,因為所
有的零件都是由signal連接而成.結構性描述是階層性的(hierarchical),使用
Component與Port Map,Component的功能能夠讓我們作元件資料庫的設計,它與
Port Map結合可以讓我們利用現有的Component像堆積木一般累積出複雜的電路.
LIBRARY IEEE;
BEGIN
USE IEEE.STD_LOGIC_1164.ALL;
cell1:AND_2 port map (a,b,i);
ENTITY nand2 IS
cell2:inverter port map (i,y);
PORT (a,b : IN STD_LOGIC;
END structure;
y : OUT STD_LOGIC
***於此例中,需先完成cell 1 (nand_2)及閘
);
和 cell 2(inverter)反閘之程式,
END nand2;
ARCHITECTURE structure OF nand2 IS
Signal i:BIT;
真值表
component AND_2
輸入
信號 輸出
port( i1,i2:in STD_LOGIC;
i
b
a
y
o1:out STD_LOGIC); i1
a
o1 i i1
end component;
cell1
cell2
0
0
1
0
o1
y
AND_2
inverter
i2
component inverter
b
0
1
0
1
port(i1:in STD_LOGIC;
1
0
0
1
o1:out STD_LOGIC);
1
1
1
0
end component;
Shen Ching Yang No. 1-17