義守大學電機工程學系 陳慶瀚 pierre@mail.isu.edu.tw 第2章 VHDL基本語法 義守大學電機工程學系 陳慶瀚 pierre@mail.isu.edu.tw
1. VHDL語言
1.1 VHDL的發展 - 1980年代初:VHSIC(Very High Speed Integrated Circuit)的計劃以gate level的方式描述電路。 - 1982年:VHSIC硬體描述語言(VHSIC Hardware Description Language),簡稱VHDL。 - 1987年: VHDL成為IEEE標準(IEEE 1076) 。 - 1988年:美國國防部規定所有官方的ASIC設計均要以VHDL為其硬體描述語言,自此之後VHDL也漸漸成為業界間流通的一種標準。 - 1994 : IEEE發表新版 VHDL Standard 1164 - 1996 :結合電路合成的程式標準規格,發表IEEE 1164.3 -現在:VHDL已經成為「電子設計自動化」(EDA)工程的共通語言; -未來:透過VHDL ,設計電子工業的「矽智產」(Silicon IP)。
1.2 VHDL的優點
1.3 使用VHDL
1.4 VHDL的基本架構 entity 晶片名稱 is port(宣告輸入和輸出接腳); end 晶片名稱 ; architecture 架構名稱 of 晶片名稱 is Begin ... VHDL 共時(concurrent)指令 .... end 架構名稱 ;
1.5 第一個VHDL範例 --inverter gate library IEEE; INPUT OUTPUT --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; 註解說明 Use宣告區&標準定義宣告庫 單體宣告區: input定義為輸入位元; output定義為輸出位元。 架構宣告區: 描述inver_vhdl電路的動作是將input經過反相後傳送到output。
1.6 Entity:描述 I/O port 的規格 Example: D Flip-Flop 語法: ENTITY entity_name IS PORT ( … ); END entity_name ; Example: D Flip-Flop ENTITY dff IS PORT(D :IN STD_LOGIC; CK :IN STD_LOGIC; CLR:IN STD_LOGIC; Q :OUT STD_LOGIC; Qb :OUT STD_LOGIC); END dff;
1.7 Entity的特性
1.8 Architecture:描述內部電路 一個 Entity 可存在多個Architecture 語法: ARCHITECTURE a_name OF e_name IS -- signals,variables declaration BEGIN -- statements END a_name ; 範例: ARCHITECTURE behavior OF dff IS BEGIN BEGING IF(CLR = ‘1’) THEN Q <= ‘0’; ELSE CK’EVENT AND CK=‘1’ THEN Q <= D; ENDIF; END behavior;
1.9 Architecture的特性
1.10 Concurrent v.s. Sequential Each statement execute at the same time ( logic circuits ) Sequential Statements execute in series ( programming languages as C, FORTAN ) Statement A = B; B = C; assume : A=1,B=2,C=3 concurrent result A = B = C= 3 sequential result A = B = 2 B = C = 3
2. 初階VHDL語法
2.1 Identifier
2.2 Entity Declaration
2.3 Architecture Declaration
2.4 Data Object Constant Variable Signal File constant RISE_TIME:TIME:=10ns; constant BUS_WIDTH:INTEGER:=8; Variable variable STATUS:BIT_VECTOR(10 download 0); variable SUM:INTEGER range 0 to 100:=10; variable ONE,TWO,THREE:BOOLEAN; Signal signal CLOCK:BIT; signal DATA_BUS:BIT_VECTOR(0 to 7); signal INIT:STD_LOGIC_VECTOR(7 download 0); File
2.5 Number
2.6 VHDL的STD_LOGIC訊號型態 VHDL中標準邏輯(STD_LOGIC)訊號型式定義是: Type STD_LOGIC is( ‘X’, --Forcing Unknown;浮接不定 ‘0’, --Forcing 0;低電位 ‘1’, --Forcing 1;高電位 ‘Z’, --High Impedance;高阻抗 ‘W’, --Weak Unknown;弱浮接 ‘L’, --Weak 0;弱低電位 ‘H’, --Weak 1;弱高電位 ‘-’, --Don’t care;不必理會 );
VHDL的邏輯運算子 :not and or xor nand entity nor_vhdl is port ( A,B: in STD_LOGIC; C: out STD_LOGIC ); end nor_vhdl; architecture a of nor_vhdl is begin C <= not (A or B); end a;
結論