350 likes | 564 Views
花蓮高工電子科教學觀摩. 課程名稱 : CPLD 數位電路設計 單元 : 算術邏輯電路設計範例 指導教授:陳 華 昌 ( 彰化師大 ) 教學指導:李 建 輝 ( 花蓮高工 ) 授課教師:潘 威 霖 ( 實習教師 ). AHDL 之簡介. 一般數位電路之設計發展是以基本數位電路,或用現成之數位 IC 電路予以繪製連線, 但若電路較複雜時,繪製電路實在是繁雜且浪費時間,因此便發展出硬體電路之描述 語言 HDL ( Harwar Description Language ) 作邏輯電路之設計描述 , 而今天要介紹的是由 Altera 公司發展的 HDL 語法簡稱 AHDL 。.
E N D
花蓮高工電子科教學觀摩 課程名稱:CPLD數位電路設計 單元:算術邏輯電路設計範例 指導教授:陳 華 昌(彰化師大) 教學指導:李 建 輝(花蓮高工) 授課教師:潘 威 霖(實習教師)
AHDL之簡介 • 一般數位電路之設計發展是以基本數位電路,或用現成之數位IC電路予以繪製連線, 但若電路較複雜時,繪製電路實在是繁雜且浪費時間,因此便發展出硬體電路之描述語言HDL(Harwar Description Language)作邏輯電路之設計描述,而今天要介紹的是由Altera公司發展的HDL語法簡稱AHDL。
AHDL編輯規則簡述 電路名稱 SUBDESIGN ex1_t ( A , B ︰INPUT﹔ C[1..0] ︰OUTPUT﹔ ) VARIABLE ff[7..0] :DFF﹔ at_zero :NODE﹔ BEGIN % 主程式 % END; io宣告 邏輯函數 變數宣告 主程式起始 註解 NOTE︰電路圖編輯檔案的副檔名為”.gdf ” AHDL編輯檔案的副檔名為”.tdf ”
一、半加器(Half Adder) • 腳位 :輸入線兩條:A、B 輸出線兩條:S、C • 真值表: 0 1 1 0 0 0 0 1
AHDL編輯半加法器之範例 • EX1: SUBDESIGN hadd_2 ( A,B : INPUT ; S,C : OUTPUT; ) BEGIN c=a&b; % % s=a$b; % % END;
AHDL編輯半加法器之範例 • EX2: SUBDESIGN hadd_1 ( A,B : INPUT ; S,C : OUTPUT; ) BEGIN TABLE A,B=> S,C; 0,0 => 0,0; 0,1 => 1,0; 1,0 => 1,0; 1,1 => 0,1; END TABLE; END;
說明:條件之聲明判斷(IF、ELSIF、ELSE、THEN、CASE、WHEN)說明:條件之聲明判斷(IF、ELSIF、ELSE、THEN、CASE、WHEN) • HDL語法之條件聲明判斷如IF、ELSIF、ELSE、THEN、CASE、WHEN,等類同於微電腦之BASIC及C等等語言之意義。
IF、ELSIF、ELSE、THEN應用實例:簡易邏輯運算單元IF、ELSIF、ELSE、THEN應用實例:簡易邏輯運算單元 SUBDESIGN EZLU ( A,B,S[1..0] : INPUT ; D : OUTPUT; ) BEGIN IF S = = 0 THEN D = !A; ELSIF S = = 1 THEN D = A & B; ELSIF S = = 2 THEN D = A # B; ELSIF S = = 3 THEN D = A $ B; End IF; END;
CASE、WHEN應用實例:簡易邏輯運算單元 SUBDESIGN EZLU ( A,B,S[1..0] : INPUT ; D : OUTPUT; ) BEGIN CASE S[] IS WHEN 0 => D = !A; WHEN 1 => D = A & B; WHEN 2 => D = A # B; WHEN 3 => D = A $ B; WHEN OTHERS => D = A; END CASE; END;
二、全加器(Full Adder) • 腳位 :輸入線三條:A、B、Ci 輸出線兩條:S、Co • 真值表: 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1
AHDL編輯全加法器之範例 • EX1:SUBDESIGN fadd_1 ( A,B,Ci : INPUT ; S,Co : OUTPUT; ) BEGIN IF (A==0 & B==0 & Ci==0) THEN S=GND; Co=GND; %S is node , Co is node % ELSIF (A==0 & B==0 & Ci==1) THEN S=VCC; Co=GND; ELSIF (A==0 & B==1 & Ci==0) THEN S=VCC; Co=GND; ELSIF (A==0 & B==1 & Ci==1) THEN S=GND; Co=VCC; ELSIF (A==1 & B==0 & Ci==0) THEN S=VCC; Co=GND; ELSIF (A==1 & B==0 & Ci==1) THEN S=GND; Co=VCC; ELSIF (A==1 & B==1 & Ci==0) THEN S=GND; Co=VCC; ELSE S=VCC; Co=VCC; END IF; End;
AHDL編輯全加法器之範例 • EX2: SUBDESIGN fadd_2 ( A,B,Ci : INPUT ; S,Co : OUTPUT; ) BEGIN S=A$B$Ci; Co=(A&B)#(B&Co)#(A&Co); End;
說明:結點與群的表示方法 • 在AHDL語法中,單一節點的定值是以”VCC”與”GND”表示,如下表:
說明:結點與群的表示方法 • 群為節點的集合。群的表示方法如下表:
三、四位元加法器 • 腳位:輸入線八條:A3、A2、A1、A0、 B3、B2、B1、B0 輸出線五條:Cout、S3、S2、S1、S0 • 真值表:
AHDL編輯四位元加法器之範例 EX1︰ INCLUDE "hadd_g.inc"; INCLUDE "fadd_g.inc"; % FUNCTION hadd_t (a, b) % % RETURNS (s, c); % % FUNCTION fadd_g (a, b, ci) % % RETURNS (s, co); % SUBDESIGN add4_book ( A[3..0],B[3..0] : INPUT ; S[3..0],Cout : OUTPUT;)
AHDL編輯四位元加法器之範例 VARIABLE h0 : hadd_g; f[3..1] : fadd_g; BEGIN h0.a=A0; h0.b=B0; f[].a=A[3..1]; f[].b=B[3..1]; f1.ci=h0.c; f[3..2].ci=f[2..1].co; S0=h0.s; S[3..1]=f[3..1].s; Cout=f2.co; END;
AHDL編輯四位元加法器之範例 • EX2: SUBDESIGN add4_1 ( A[3..0],B[3..0] : INPUT ; Co, S[3..0] : OUTPUT; ) BEGIN (Co,S[ ])=(GND,A[ ])+(GND,B[ ]); END;
四、四位元加減法器 • 腳位:控制線一條:sub 輸入線八條:A3、A2、A1、A0、 B3、B2、B1、B0 輸出線五條:Cout、S3、S2、S1、S0 • 真值表:
AHDL編輯四位元加減法器之範例 • EX1: SUBDESIGN subadd4_1 ( sub,A[3..0],B[3..0] : INPUT ; Co, S[3..0] : OUTPUT; ) BEGIN IF sub THEN (Co,S[ ])=(GND,A[ ])-(GND,B[ ]); ELSE (Co,S[ ])=(GND,A[ ])+(GND,B[ ]); END IF; END;
1、下列何者為硬體描述語言的 英文簡稱? (1)BASIC (2)JAVA (3)HTML (4)HDL
2、AHDL編輯電路檔案的副檔名為下列何者? (1)“.gdf ” (2)“.tdf ” (3)“.vhd” (4)“.inc”
3、AHDL編輯電路中運算子!# 之意義為何? (1)互斥或閘 (2)互斥反或閘 (3)反或閘 (4)反及閘
4、群A[5..1][3..1]其最低位元為下列何者? (1)A[1][1] (2)A[5][1] (3)A[5][3] (4)A[1][3]
5、A[1..0] + B[10..9]所代表之意義為下列何者? (1)A1 A0 + B9 B10 (2)A0 A1 + B9 B10 (3)A1 A0 + B10 B9 (4)A0 A1 + B10 B9
實驗一:以電路圖編輯模式設計 一個八位元加法器 • 檢測一、利用Waveform Editor完成波形模擬(Simulator)。 • 檢測二、將接腳載入實驗板上,以完成硬體電路燒錄。
實驗二:以AHDL編輯模式設計 一個八位元加減法器 • 檢測一、利用Waveform Editor完成波形模擬(Simulator)。 • 檢測二、將接腳載入實驗板上,以完成硬體電路燒錄。
教 學 完 畢非常感謝各位於百忙中前來聆聽 敬 請 指 教 授課者:花蓮高工電子科實習教師潘威霖