520 likes | 1.01k Views
國立宜蘭大學電機工程系. 國立宜蘭 大學. 電機工程系. 練習 1. ---- VHDL 硬體電路描述語言 簡介. 彭世興教師 編製. 國立宜蘭大學電機工程系. 電路描述語言範例 : 兩開關控制一個燈. 1. 依接線方式描述電路 :. 開關 SWa , SWb 先 並聯 連接後再 串接到 燈泡與電源。. 國立宜蘭大學電機工程系. 2. 依電路功能描述 :. SWa 或 SWb 開關 按下 (ON) 後,燈泡會亮。. 國立宜蘭大學電機工程系. 3. 依電路功能真值表描述 :. SWa 或 SWb 開關 按下 (ON) 後 , 燈泡會亮 。.
E N D
國立宜蘭大學電機工程系 國立宜蘭大學 電機工程系 練習1. ---- VHDL硬體電路描述語言簡介 彭世興教師 編製
國立宜蘭大學電機工程系 電路描述語言範例:兩開關控制一個燈 1.依接線方式描述電路: 開關SWa , SWb先並聯連接後再串接到燈泡與電源。
國立宜蘭大學電機工程系 2.依電路功能描述: SWa 或SWb 開關按下(ON)後,燈泡會亮。
國立宜蘭大學電機工程系 3.依電路功能真值表描述: SWa 或SWb 開關按下(ON)後,燈泡會亮。
Out = SWa and SWb Out = SWa or SWb 國立宜蘭大學電機工程系 4.依邏輯電路真值表描述:
邏輯閘IC電路 輸入介面電路 輸出介面電路 Out = SWa or SWb 國立宜蘭大學電機工程系 5.用or邏輯電路完成:兩開關控制一個燈
邏輯閘IC電路 輸入介面電路 輸出介面電路 Out = SWa and SWb 國立宜蘭大學電機工程系 6.用and 邏輯電路完成:兩開關控制一個燈
電路設計IC元件 --- FPGA 輸入介面電路 輸出介面電路 邏輯閘IC電路 國立宜蘭大學電機工程系 7.目前電路設計常用的IC元件 --- FPGA
國立宜蘭大學電機工程系 8.場可規劃邏輯閘陣列--- FPGA的外觀與結構 輸入- 輸出緩衝器 可程式化邏輯元件CLB 可程式化的 佈線通道 FPGA場可規劃邏輯閘陣列 a. 可程式化的邏輯元件 b. 可程式化的垂直及水平通道 c. 可程式化的輸入- 輸出緩衝器
國立宜蘭大學電機工程系 9. 規劃FPGA元件的程式語言--- VHDL(硬體描述語言) VHDL就是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language的 縮寫,即非常高速積體電路的硬體描述語言. VHDL是硬體電路的描述語言, 不是程式設計的程式語言. VHDL是IC設計的必備工具
Library描述 7404 Entity描述 Architecture描述 國立宜蘭大學電機工程系 10. VHDL(硬體描述語言)基本架構與IC關係 IC編號名稱 I/O腳位定義 電路功能描述
使用已有的函數與零件程式資料庫 Library描述區 Entity描述區 描述電路的I/O介面 描述電路的特性和運作 Architecture描述區 國立宜蘭大學電機工程系 11. VHDL 基本語法架構
語法: LIBRARY程式庫 (目錄) 名稱 USE 程式庫名稱.零件檔案名稱.指定項目 國立宜蘭大學電機工程系 12. Library描述的語法架構 • 一些經常會重複使用的程式檔案可放在Library目錄下, 利用Use宣告後可重複使用 • 典型的Library (零件庫)例如Function 與Component
範例: 使用(內建)IEEE程式庫 語法: --程式開頭— LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 使用IEEE程式庫的STD_LOGIC_1164 檔案內所有項目 LIBRARY程式庫 (目錄) 名稱 USE 程式庫名稱.零件檔案名稱.指定項目 國立宜蘭大學電機工程系 Library描述語法與範例
國立宜蘭大學電機工程系 VHDL的Library (零件庫)及Package (包裝) • VHDL的零件庫(Library)及包裝(Package)可分為: (1.) 系統現有的零件庫及包裝 (2.) 使用者自訂的零件庫及包裝 • 系統現有的零件庫及包裝 • VHDL發展工具都會提供兩個IEEE 標準零件庫(standard libraries ): • “std” • "ieee"
Package套件檔名 國立宜蘭大學電機工程系 在IEEE目錄下的標準零件庫Package檔名 目錄
套件檔名 檔案內容 國立宜蘭大學電機工程系
零件庫 名稱 包 裝 名 稱 包 裝 類 別 說 明 STD Standard 當要指定VHDL資料型態為bit或 bit_vector時,需先宣告本零件庫及使用本包裝 IEEE Std_logic_1164 指定有用的VHDL資料型態為std_logic and std_logic_vector 時,需先宣告本零件庫及使用本包裝,同時一些時脈(Clock)零件也定義於此 IEEE Numeric_std 使用std_logic_1164包裝時定義算術運算資料型態 國立宜蘭大學電機工程系 系統現有的零件庫及包裝(一)
IEEE Std_logic_arith 為了程式中需要做正負號及無正負號資料的算術運算用, 需先定義有正負號及無正負號資料型態時,需先宣告本零件庫及使用本包裝 IEEE Std_logic_signed 為了std_logic 及 std_logic_vector做算術運算用,定義有正負號資料型態,需先宣告本零件庫及使用本包裝 IEEE Std_logic_unsigned 為了std_logic 及 std_logic_vector做算術運算用,定義無正負號資料型態,需先宣告本零件庫及使用本包裝 國立宜蘭大學電機工程系 系統現有的零件庫及包裝(二)
ENTITY電路單體名稱 IS PORT (訊號A : I/O模式資料型態; 訊號B : I/O模式資料型態; ……… 訊號N : I/O模式資料型態); END電路單體名稱 ; 語法: 國立宜蘭大學電機工程系 13. Entity描述的語法架構 • Entity描述宣告這個設計IC實體中埠(Port) 的輸入、輸出接腳名稱及其腳位屬性與資料型態
ENTITY電路單體名稱 IS PORT (訊號A : I/O模式資料型態; 訊號B : I/O模式資料型態; ……… 訊號N : I/O模式資料型態); END電路單體名稱 ; 語法: a b and_2 (檔名) y 國立宜蘭大學電機工程系 Entity描述宣告區 語法與範例 範例 1:及閘電路 ENTITYand_2 IS PORT (a,b:IN STD_LOGIC; y :OUT STD_LOGIC); ENDand_2 ;
A MUX4 (檔名) B Y C D S0 S1 國立宜蘭大學電機工程系 範例 2: 4對1多工器電路 輸出入訊號名稱 輸出入模式 資料型態 ENTITYMUX4IS 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); ENDMUX4 ;
國立宜蘭大學電機工程系 ENTITY裡PORT的四種I/O模式 • IN:輸入模式,即此訊號需由電路單體之外的電路來驅動; IN也是VHDL Port中內定的訊號模式. 2. OUT:輸出模式,即此訊號僅能輸出電路單體之外去驅動外 圍電路,不可回授回單體之內驅動內部電路.
國立宜蘭大學電機工程系 3. BUFFER:緩衝模式,是一種可以回授驅動單體內電路的輸 出模式.但須注意: a.不能有多重驅動的情形. b.僅能回授接到內部訊號,或其它電路單體同為緩衝模式 的Port訊號. 4. INOUT:代表雙向模式PORT訊號,即可同時代表IN,OUT與 BUFFER等模式訊號.
國立宜蘭大學電機工程系 ENTITY裡I/O模式的四種基本資料型態 • BIT 2. BIT_VECTOR(0 TO 7) 3. STD_LOGIC 4. STD_LOGIC_VECTOR(15 DOWNTO 7) STD_LOGIC,定義為: X: Forcing Unknown;浮接不定 0: Forcing 0 ;低電位 1: Forcing 1 ;高電位 Z: High Impedance;高阻抗 W: Weak Unknown;弱浮接 L: Weak 0;弱低電位 H: Weak 1 ;弱高電位 - : Don’t care ;不必理會 BIT,定義為: 0: Forcing 0 ;低電位 1: Forcing 1 ;高電位
國立宜蘭大學電機工程系 ENTITY裡已經定義的資料型態
國立宜蘭大學電機工程系 14. Architecture描述的語法架構 architecture < IC內部結構名稱> of <IC總體名稱> is (內部結構宣告區域) begin (內部結構主體功能敘述) end < IC內部結構名稱> ; 宣告內部訊號, 分享的變數, 及資料型態 發生訊號的設定,零件對應處理, 及功能設定
國立宜蘭大學電機工程系 ARCHITECTURE 描述語法與範例 ARCHITECTURE語法如下: ARCHITECTURE 架構名稱 OF電路單體名稱(檔名)IS 區域訊號宣告 BEGIN 架構描述 END架構名稱; 語法範例 (雙輸入AND閘) ARCHITECTUREdataflowOFand_2IS BEGIN y <= a AND b; ENDdataflow;
描述電路的特性 和運作 Architecture 宣告區 structure Description Dataflow Description Behavioral Description 結構性描述 資料流描述 行為性描述 國立宜蘭大學電機工程系 ARCHITECTURE 架構三種描述法 VHDL電路架構的描述風格有三大類:
國立宜蘭大學電機工程系 第一類:行為描述(順序性 處理) 行為模式是用 process的敘述來描述一個硬體電路的行為模式。而它與資料流描述的最大不同點為,在process 的所描述的行為模式內皆為順序性 處理,而非資料流描述的共時性處理,意思是說於行為描述的風格,其程式的設計與一般的高階語言十分相似。其基本語法如下: ARCHITECTURE 架構名稱 OF電路單體名稱(檔名)IS 區域訊號宣告 BEGIN process (參數) Begin 架構描述 Endprocess; END架構名稱;
國立宜蘭大學電機工程系 (1).行為性描述(順序性 處理)範例 反及閘電路描述範例 ARCHITECTUREbehaviorOFnand_2IS BEGIN process (a,b) begin if ( a=‘1’) and (b=‘1’) then y<=‘0’; else y<= ‘1’; end if; Endprocess; END behavior;
國立宜蘭大學電機工程系 第二類:資料流描述 (共時性處理) 資料流描述是利用訊號的指定方式來描述電路內訊號資料的流動情形,資料流描述為共時性的處理方式,而這些訊號指定的方式於 VHDL 語言中可以區分成下列三種: 1、直接式的訊號設定 “ <=” 2、條件式conditional 的訊號設定 “when … else” 3、選擇式Selected 的訊號設定 “with … select … when”
國立宜蘭大學電機工程系 (2).資料流描述(共時性處理) 資料流描述係利用布林方程式來表現各信號之間的代數關係. 屬於並行處理的方式. 反及閘電路描述範例 ARCHITECTUREdataflowOFnand_2IS BEGIN y <= a NAND b; ENDdataflow;
國立宜蘭大學電機工程系 第三類:結構描述(Structure Description) 結構性描述是階層性的,使用Component與Port Map : Component :的功能能夠讓我們作元件資料庫的設計, Port Map :可以結合Component讓我們利用現有的 Component像堆積木一般累積出複雜的電路.
ARCHITECTUREstructure OF nand_2IS Signali:BIT; componentand_2 port(i1,i2:in STD_LOGIC; o1:out STD_LOGIC); end component; componentnot_1 port(i1:in STD_LOGIC; o1:out STD_LOGIC); end component; BEGIN and_2 port map(a,b,i); not_1 port map(i,y); END structure; 國立宜蘭大學電機工程系 (3). 結構性描述反及閘電路描述範例 於此例中,需先完成cell 1 (nand_2)及閘 和 cell 2(inverter)反閘之程式,
國立宜蘭大學電機工程系 15. VHDL的命名注意事項 • 需定義名稱的地方有下列: • 實體(Entity)名稱 • 宣告埠(Port)內的接腳名稱(Pin-Name)、變數(Variable)名稱 • 常數(Constant)名稱 • 訊號(Signal)名稱 • 檔案(File)名稱 • 零件(Component)名稱 • 架構(Architecture)名稱
國立宜蘭大學電機工程系 • VHDL 命名的一般原則: • 第一個字(Letter)必需是一般英文字母 • 在第二字以後可用字母或數字及 _ (底線) , 但不可使用中文字與空白鍵 • 大小寫視為相同意義 • 同時切勿使用關鍵字(Keyword)或保留字(Reserved Word) • 最後一個字不可使用雙底線_ _ • 另外,在命名時最好選擇有意義且切合實際事物名稱,這 樣會讓 您的程式易讀性更高,在設計過程中,也較容易記 憶而不必往返宣告區查看已命名的名稱
國立宜蘭大學電機工程系 VHDL命名的範例 例 1:正確的命名 enable_bits Sel IO_1 例 2:不正確 的命名 2bit字首非數字 If為保留字 Ena bits中間不得空白 IO__字尾有雙底線
ABS COMPNENT GUARDED ACCESS CONFIGURATION IF AFTER CONSTANT IMPURE ALIAS DISCONNECT IN ALL DOWNTO INERTIAL AND ELSE INOUT ARCRITECTURE ELSIF IS 國立宜蘭大學電機工程系 ARRAY END LABEL VHDL的保留字(一)
ASSERT ENTITY LIBRARY ATTRIBUTE EXIT LINKAGE BEGIN FILE LITERAL BLOCK FOR LOOP BODY FUNCTION MAP BUFFER GENERATE MOD BUS GENERIC NAND 國立宜蘭大學電機工程系 CASE GROUP NEW VHDL的保留字(二)
NEXT RANGE SUBTYPE NOR RECORD THEN NOT REGISTER TO NULL REJECT TRANSPORT OF REM TYPE ON REPORT UNAFFECTED OPEN RETURN UNITS 國立宜蘭大學電機工程系 OR ROL UNTIL VHDL的保留字(三)
OTHERS ROR USE OUT SELECT VARABLE PACKAGE SEVERITY WAIT PORT SHARED WHEN POSTONED SIGNAL WHILE PROCEDURE SLA WITH PROCESS SRA XNOR 國立宜蘭大學電機工程系 PURE SRL XOR VHDL的保留字(四)
國立宜蘭大學電機工程系 16. VHDL程式的註解說明 -- 在VHDL中我們提供了”--“ (雙減號)做為註解的前置指令,在雙減號後 您可以對 您的程式加註說明 (在任何設計中,總是免不了需要對一些特殊設計部分加以註解說明一番,這是非常重要的工作 做好註解工作將有助於 您日後電路除錯及維修,因此請 您做好註解的工作)
程式編輯與存檔 編輯.vhd與 .ucf 檔 電路合成 Synthesis 檢查 .vhd 文法格式 電路實現 Implementation 產生.bit 檔 載入及燒錄 Programming 下載 .bit 檔到電路板驗證 國立宜蘭大學電機工程系 17. VHDL 程式設計基本流程
input output 註解說明 inver_vhdl Library宣告區&標準定義宣告庫 Entity宣告區: input定義為輸入位元; output定義為輸出位元。 architecture宣告區: 描述inver_vhdl電路的動作是將input經過反相後傳送到output。 國立宜蘭大學電機工程系 18. VHDL完整設計範例 反閘 --inverter gate libraryIEEE; useIEEE.STD_LOGIC_1164.all; entityinver_vhdlis port ( input: in STD_LOGIC; output: out STD_LOGIC ); endinver_vhdl; architectureaof inver_vhdl is beginoutput <= not input; enda;
國立宜蘭大學電機工程系 練習題目1:利用SW 開關控制 LED
國立宜蘭大學電機工程系 開關請依組別設定如下所示:
國立宜蘭大學電機工程系 設計結果如下所示:(範例:SW2 => LED1) 1. 控制方塊圖
Library宣告區&標準定義宣告庫 Entity宣告區: architecture宣告區: 國立宜蘭大學電機工程系 test.vhd程式檔
國立宜蘭大學電機工程系 test.ucf接腳定義檔