Transcript 數位系統導論
數位邏輯設計
VHDL
大綱
2
VHDL Overviews
VHDL 基本架構
訊號定義
Sheau-Huey Chen
2020/4/26
VHDL
Overviews
What is VHDL?
4
VHDL:Very High Speed Integrated Circuit
Hardware Description Language
一種硬體描述的語言,用來描述你構想的硬
體設計
Sheau-Huey Chen
2020/4/26
VHDL歷史背景
5
1983年,美國國防部為了開發高速戰機中的
積體電路而制定的體體描述語言。
1987年由 IEEE國際組織正式制定成 IEEE
1076標準,又稱VHDL’87。
1993年再次更新,成為IEEE 1164標準,又
稱VHDL’93。
Sheau-Huey Chen
2020/4/26
VHDL
基本架構
VHDL基本設計觀念
VHDL程式可分成兩部分:
1. entity:描述電路外觀(宣告外部接腳)
2. architecture:描述內部特性
architecture OR2_ARCH1 of OR2 is
entity OR2 is
port (A,B: in STD_LOGIC ;
Y:out STD_LOGIC);
end OR2;
begin
Y <= A or B;
end OR2_ARCH1;
A
7
Y
B
Sheau-Huey Chen
A
B
Y
2020/4/26
VHDL基本設計
-- 註解說明
;指令結束
library xxx; 宣告定義庫
use xxx.yyy;的預設定義
程式中的大小寫是一樣
<= 將右邊訊號傳給左邊
可以讓關鍵字用小寫,變數和參數用大寫,
這樣程式看起來比較清楚
8
Sheau-Huey Chen
2020/4/26
Example1
--The IEEE standard 1164 package
library IEEE;
註
解
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
固定標頭,照抄就好
use IEEE.std_logic_unsigned.all;
entity OR2 is
port (A,B: in STD_LOGIC;
entity 定義接腳
Y:out STD_LOGIC);
end OR2;
architecture OR2_ARCH1 of OR2 is
begin
architecture 描述內
容
Y <= A or B;
9
end OR2_ARCH1;
Sheau-Huey Chen
2020/4/26
entity
entity ENTITY_NAME is
port (
A,B: in STD_LOGIC;
Y: out STD_LOGIC );
end ENTITY_NAME;
這裡別寫錯囉~
A
ENTITY
_NAME
B
Y
PORT_NAME: port_mode PORT_TYPE
10
Sheau-Huey Chen
2020/4/26
entity
PORT_NAME: port_mode PORT_TYPE
11
PORT_NAME:自己命名,但不可和其他變
數重複
port_mode:in、out、inout
PORT_TYPE:BIT、STD_LOGIC、
BIT_VECTOR、STD_LOGIC_VECTOR、
UNSIGNED…etc.
Sheau-Huey Chen
2020/4/26
architecture
architecture ARCHI_NAME of ENTITY_NAME is
begin
A
Y <= A or B
Y
B
end ARCHI_NAME;
12
Sheau-Huey Chen
2020/4/26
architecture
signal
signal指令是宣告電路內部自行使用的訊號
沒有傳送到外部,也不能在entity中的port上
宣告
S0
A
不需要寫in、out、inout
B
Example:
C
signal S0:STD_LOGIC;
SI
signal S1:STD_LOGIC;
13
Sheau-Huey Chen
Y
2020/4/26
VHDL
訊號定義
訊號定義
邏輯訊號
BIT
0,1
STD_LOGIC
‘X’ -- 浮接不定
‘0‘ -- 低位
‘1’ -- 高位
‘Z’ -- 高阻抗
‘w’ --弱浮接
‘L’ --弱低位
‘H’ --弱高位
‘-’ --don’t care
15
Sheau-Huey Chen
2020/4/26
訊號定義
邏輯訊號
BIT_VECTOR與STD_LOGIC_VECTOR
Example:
signal A:STD_LOGIC_VECTOR(3 downto 0);
signal B:STD_LOGIC_VECTOR(0
to 3);
B <= A;
A3
邏輯常數
A2
‘0’、 ‘1’、”10” 訊號合併
A1
A0
Example:
CLK
B <= ‘0’&’1’&”10”
16
Sheau-Huey Chen
B0
B1
B2
B3
2020/4/26
訊號定義
數值訊號
INTEGER:可做數值運算,不能做邏輯處理
Example:
signal C:INTERGER;
UNSIGNED:可做數值運算,也可以做邏輯處理
Example:
signal D:UNSIGNED(3 downto 0);
17
Sheau-Huey Chen
2020/4/26
訊號定義
18
邏輯處理
邏輯運算: not, and, or, nand, xor, xnor
比較運算: =, /=, <, <=, >, >=
數值運算
數值運算:sign +, sign -, abs, +, -, *
比較運算: =, /=, <, <=, >, >=
Sheau-Huey Chen
2020/4/26
VHDL
基本邏輯閘
AND 使用方法
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity AND_arch is
port(
a, b: in STD_LOGIC;
Y :out STD_LOGIC);
end AND_arch;
a
b
Y
architecture dataflow of AND_arch is
begin
Y <=a and b;
end dataflow;
20
Sheau-Huey Chen
2020/4/26
OR 使用方法
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity OR_arch is
port(
a, b: in STD_LOGIC;
Y :out STD_LOGIC);
end OR_arch;
a
b
Y
architecture dataflow of OR_arch is
begin
Y <=a or b;
end dataflow;
21
Sheau-Huey Chen
2020/4/26
NOT 使用方法
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity NOT_arch is
port(
a: in STD_LOGIC;
Y :out STD_LOGIC);
end NOT_arch;
a
Y
architecture dataflow of NOT_arch is
begin
Y <= not a;
end dataflow;
22
Sheau-Huey Chen
2020/4/26
XOR 使用方法
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity XOR_arch is
port(
a, b: in STD_LOGIC;
Y :out STD_LOGIC);
end XOR_arch;
a
b
Y
architecture dataflow of XOR_arch is
begin
Y <= a xor b;
end dataflow;
23
Sheau-Huey Chen
2020/4/26
Modeling
24
Dataflow – Concurrent: gate level
表示方法
Structure – Concurrent: 使用hierarchical
架構來描述內部的components
Behavioral – Sequential: algorithm level
表示方法
Sheau-Huey Chen
2020/4/26
Architecture / Dataflow Model
Dataflow Modeling by
boolean equations assignments
conditional assignments (When-Else, With-Select-When)
n2
b
sell
a
x
n1
n3
Architecture dataflow_modeling of example is
signal n1, n2, n3 : std_logic; --宣告內部訊號
begin
x <= n2 OR n3;
n2 <= b AND sell;
n3 <= n1 AND a;
n1 <= NOT sell;
-- x <= (a AND (NOT sel1)) OR (b AND sel1);
end example;
Structure
26
Concurrent:
使用hierarchical架構來描述內部的
components
Sheau-Huey Chen
2020/4/26
Architecture / Structural Model
Instantiation Statement
Structural Modeling
Architecture structural_modeling of one_bit_half_adder is
begin
X1: XOR2 Port Map ( Z0 => sum, A0 => a, A1 => b );
A1: AND2 Port Map ( Z0 => cout, A0 => a, A1 => b );
-- A1: AND2 Port Map (
cout,
a,
b );
end structural_modeling;
Library Symbol: AND2
A0
Z0
A1
a
b
sum
X1
A0
A1
A1
Z0
cout
Entity AND2 is Port (
Z0 : out std_logic;
A0 : in std_logic;
A1 : in std_logic );
END AND2;
Behavioral
28
Sequential: algorithm level 表示方法
Sheau-Huey Chen
2020/4/26
Architecture / Behavioral Model
Process Statement
Behavioral Modeling
用來描述 sequential events 的 process
是包含在 ARCHITECTURE 裡面的
ARCHITECTURE 可以包含數個 PROCESS statements.
PROCESS statements 有 3個 parts:
– Sensitivity list :
–
PROCESS :
–
包含 PROCESS的內部訊號(signal)
當內部訊號在sensitivity list改變其值的時候,process是正在進
行的
用來描述behavior
BEGIN - END PROCESS statement:
描述PROCESS 的 beginning & ending
Architecture / Behavioral Model
Simple example of PROCESS
a
mux: PROCESS (a, b, s) -- the sensitivity list
b
BEGIN
s
if ( s = ‘0’ ) then
x <= a;
else
-- define the process section
x <= b;
end if;
END PROCESS mux;
x
Here the process ‘mux’ is sensitive to signals ‘a’,‘b’ and ‘s’.
Whenever signal ‘a’ or ‘b’ or ‘s’ changes value, the statements
inside the process will be evaluated
軟體安裝
31
請自行下載安裝
Sheau-Huey Chen
2020/4/26
Example
32
安裝
Next->Next->Next->Next->Finish
開啟
Direct VHDL->DirectVHDL PE
使用
File->New (請先打檔名)
Sheau-Huey Chen
2020/4/26
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity CH1 is
port
(XC0:in STD_LOGIC;
XA0:out STD_LOGIC );
end CH1;
architecture CH1_AR of CH1 is
begin
XA0<=XC0;
end CH1_AR;
Simulate
按 Simulate
按完之後,會出現一個視窗,請看下方視窗。
34
Sheau-Huey Chen
2020/4/26
Input
force XC0 0,1 100 -repeat 200(請按Enter)
run 800(請按Enter)
35
Sheau-Huey Chen
2020/4/26
Wave Form
檢視waveform report
Debug->Waveform Report
★這題練習是把XC0的訊號傳給XA0,
所看到的Waveform Report的
XC0與XA0應該要是一樣的。
36
Sheau-Huey Chen
2020/4/26
練習: 2 Bits Input Half Adder
inA
ai
addR
inB
in
C
ci
bi
37
Sheau-Huey Chen
car
R
2020/4/26
2 Bits Input Half Adder
Library 自己設
entity halfadder3bit is
port (inA, inB ,inC : IN BIT;
addR, carR : OUT BIT);
end helfadder3bit;
-- 2 bits input halfadder
-- result addR and carry bit carR
ARCHITECTURE dataflow_HA3b of helfadder3bit is
signal ai, bi, ci : bit;
BEGIN
ai <= (inA XOR inB);
addR <= (ai XOR inC);
bi <= (inA AND inB);
ci <= (ai AND inC);
carR <= (bi OR ci);
END dataflow_HA3b;
Simulate
按 Simulate
按完之後,會出現一個視窗
39
Sheau-Huey Chen
2020/4/26
force 的使用方式
force [inB 輸入_名稱]
[0,1 表示先零後一]
[100 表示開始定義的時間點]
[-repeat 表示要重複值] [表示改變值的時間點]
41
Sheau-Huey Chen
2020/4/26
Waveform Report
從Debug選項當中可以由 Waveform Report 對照每個輸入及結果
42
Sheau-Huey Chen
2020/4/26
檢視 Waveform report
43
Sheau-Huey Chen
2020/4/26
4-Bits Adder
44
Sheau-Huey Chen
2020/4/26
Half Adder
45
Sheau-Huey Chen
2020/4/26
Full Adder
46
Sheau-Huey Chen
2020/4/26
Full Adder
47
Sheau-Huey Chen
2020/4/26
4-Bits Adder
48
Sheau-Huey Chen
2020/4/26
4-Bits Adder
49
Sheau-Huey Chen
2020/4/26