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
© Copyright 2024 ExpyDoc