第一篇:EDA技術基礎實驗教案
實驗一 2選1多路選擇器VHDL設計
一、實驗目的:
熟悉利用MAX+plusⅡ的VHDL文本設計流程全過程,學習簡單組合邏輯電路的設計、多層次電路的設計、仿真和硬件測試。
二、實驗內容:
按照MAX+plusⅡ的文本輸入設計方法與流程完成2選1多路選擇器的輸入(mux21a.vhd)和仿真測試等步驟,給出仿真波形圖。最后在實驗系統上進行硬件測試,實際驗證本項設計的功能。
三、實驗步驟:
1、根據2選1多路選擇器的工作原理,編寫2選1的VHDL源程序,并輸入計算機,mux21a.vhd文件名將源程序存盤。2選1多路選擇器的參考程序如下:
【例1-1】
ENTITY mux21a IS PORT(a, b : IN BIT;s : IN BIT;y : OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGIN d <= a AND(NOT S);e <= b AND s;y <= d OR e;END ARCHITECTURE one;
【例1-2】
ENTITY mux21a IS PORT(a, b : IN BIT;s : IN BIT;y : OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y <=(a AND(NOT s))OR(b AND s);END ARCHITECTURE one;
【例1-3】 ENTITY mux21a IS PORT(a, b, s: IN BIT;y : OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS(a,b,s)BEGIN IF s = '0' THEN y <= a;ELSE y <= b;END IF;END PROCESS;END ARCHITECTURE one;
2、對mux21a.vhd文件編譯后,再進行波形仿真,完成輸入信號a、b、s 輸入電平的設置,啟動仿真器Simulator,觀察輸出波形的情況。
3、鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,鍵
1、鍵
2、鍵3為輸入信號a、b、s分別鎖定在EP1K30/50144-PIN TQFP 目標芯片的8、9、10引腳,輸出信號y鎖定在目標芯片的20引腳。
4、硬件實測2選1多路選擇器的邏輯功能。按動GW48實驗板上的高低電平輸入鍵
1、鍵
2、鍵3,得到不同的s、b、a輸入組合;觀察輸出發光二極管D1的亮滅,檢查2選1多路選擇器的設計結果是否正確。
思考題
用以上同樣的方法設計4選1數據選擇器mux41a.vhd,并仿真設計結果。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結果,以及它們的硬件測試實驗結果寫進實驗報告。寫出心得體會。
實驗二 D觸發器的VHDL設計
一、實驗目的:
熟悉利用MAX+plusⅡ的VHDL文本設計流程全過程,學習簡單時序電路的設計、仿真和硬件測試。
二、實驗內容:
按MAX+plusⅡ的文本輸入設計方法與流程完成D觸發器的VHDL設計、軟件編譯、仿真分析、硬件測試及詳細實驗過程。
D觸發器的VHDL設計的參考程序如下:
【例2-1】
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 IS BEGIN SIGNAL Q1 : STD_LOGIC;--類似于在芯片內部定義一個數據的暫存節點 BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D;END IF;Q <= Q1;--將內部的暫存數據向端口輸出 END PROCESS;END bhv;
三、實驗步驟:
1、打開文本編輯器,輸入D觸發器的VHDL源程序,并用D_ff.vhd文件名將源程序存盤。
2、選擇目標器件EP1K30/50144-PIN TQFP。
3、對D_ff.vhd文件編譯后,再進行波形仿真,完成輸入信號d、clk輸入電平的設置,啟動仿真器Simulator,觀察輸出波形的情況。
4、鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,鍵1為輸入信號d鎖定在EP1K30/50144-PIN TQFP 目標芯片的8引腳,輸出信號q和nq鎖定在目標芯片的20和21引腳。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結果,以及它們的硬件測試實驗結果寫進實驗報告。寫出心得體會。
實驗三 含異步清0同步時鐘使能的4位加法計數器設計
一、實驗目的:
學習時序電路的設計、仿真和硬件測試,進一步熟悉VHDL設計技術。
二、實驗原理:
圖4-1 含計數使能、異步復位和計數值并行預置功能4位加法計數器
圖4-1是一含計數使能、異步復位和計數值并行預置功能4位加法計數器,例4-1是其VHDL描述。由圖4-1所示,圖中間是4位鎖存器;rst是異步清信號,高電平有效;clk是鎖存信號;D[3..0]是4位數據輸入端。當ENA為'1'時,多路選擇器將加1器的輸出值加載于鎖存器的數據端;當ENA為'0'時將“0000”加載于鎖存器。
三、實驗內容:
1、按照VHDL文本輸入設計方法和步驟,在MAX+plusII上對例4-1 進行編輯、編譯、綜合、適配、仿真。說明例4-1中各語句的作用,詳細描述示例的功能特點,給出其所有信號的時序仿真波形。
[例4-1] LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B IS PORT(CLK : IN STD_LOGIC;RST : IN STD_LOGIC;ENA : IN STD_LOGIC;OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC);END CNT4B;ARCHITECTURE behav OF CNT4B IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P_REG: PROCESS(CLK, RST, ENA)BEGIN IF RST = '1' THEN CQI <= “0000”;ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1;END IF;END IF;
OUTY <= CQI;END PROCESS P_REG;--進位輸出
COUT<=CQI(0)AND CQI(1)AND CQI(2)AND CQI(3);END behav;
2、引腳鎖定以及硬件下載測試。
建議選實驗電路模式5,用鍵8(PIO7)控制RST;用鍵7(PIO6)控制ENA;計數溢出COUT接發光管D8(PIO15);OUTY是計數輸出,接數碼1(PIO19-PIO16,低位靠右);時鐘CLK接clock0(引腳號為54),通過短路帽選擇4Hz信號。引腳鎖定窗后進行編譯、下載和硬件測試實驗。將實驗過程和實驗結果寫進實驗報告。
結合第五章例題使學生能夠提高對具有計數使能、異步復位和計數值并行預置功能功能的計數器中各功能的實現的認識、并能完成設計。
思考題1:
在例4-1 中是否可以不定義信號 CQI,而直接用輸出端口信號完成加法運算,即 : OUTY <= OUTY + 1 ?
思考題2:
修改例4-1,用進程語句和IF語句實現進位信號的檢出。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結果,以及它們的硬件測試實驗結果和附加內容實驗情況寫進實驗報告。寫出心得體會。
實驗四 7段數碼顯示譯碼器設計
一、實驗目的:
學習7段數碼顯示譯碼器設計;學習多層次設計方法。
二、實驗原理:
7段數碼是純組合電路,通常的小規模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數字系統中的數據處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實現。本項實驗很容易實現這一目的。例5-1作為7段BCD碼譯碼器的設計,輸出信號LED7S的7位分別接如圖5-1數碼管的7個段,高位在左,低位在右。例如當LED7S輸出為 “1101101” 時,數碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1,接有高電平的段發亮,于是數碼管顯示“5”。
三、實驗內容:
1、說明例5-1中各語句的含義,以及該例的整體功能。在MAX+plusII上對以下該例進行編輯、編譯、綜合、適配、仿真,給出其所有信號的時序仿真波形(提示:用輸入總線的方式給出輸入信號仿真數據)。
[例5-1] LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DecL7S IS PORT(A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE one OF DecL7S IS BEGIN PROCESS(A)BEGIN CASE A(3 DOWNTO 0)IS WHEN “0000” => LED7S <= “0111111”;--X“3F”?0 WHEN “0001” => LED7S <= “0000110”;--X“06”?1 WHEN “0010” => LED7S <= “1011011”;--X“5B”?2 WHEN “0011” => LED7S <= “1001111”;--X“4F”?3 WHEN “0100” => LED7S <= “1100110”;--X“66”?4 WHEN “0101” => LED7S <= “1101101”;--X“6D”?5 WHEN “0110” => LED7S <= “1111101”;--X“7D”?6 WHEN “0111” => LED7S <= “0000111”;--X“07”?7 WHEN “1000” => LED7S <= “1111111”;--X“7F”?8 WHEN “1001” => LED7S <= “1101111”;--X“6F”?9 WHEN “1010” => LED7S <= “1110111”;--X“77”?10 WHEN “1011” => LED7S <= “1111100”;--X“7C”?11 WHEN “1100” => LED7S <= “0111001”;--X“39”?12 WHEN “1101” => LED7S <= “1011110”;--X“5E”?13 WHEN “1110” => LED7S <= “1111001”;--X“79”?14 WHEN “1111” => LED7S <= “1110001”;--X“71”?15 WHEN OTHERS => NULL;END CASE;END PROCESS;END;
2、引腳鎖定以及硬件下載測試。建議選實驗電路模式6,用數碼8顯示譯碼輸出(PIO46--PIO40),鍵
8、鍵
7、鍵
6、鍵5四位控制輸入,硬件驗證譯碼器的工作性能。
3、用VHDL例化語句(參考實驗1中的1位全加VHDL文本輸入設計)按圖5-2 的方式,以例4-1和例5-1為底層元件,完成頂層文件設計,并重復以上實驗過程。注意圖5-2中的tmp是4位總線,led是7位總線。對于引腳鎖定和實驗,建議仍選實驗電路模式6,用數碼8顯示譯碼輸出,用鍵3作為時鐘輸入(每按2次鍵為1個時鐘脈沖),或直接時鐘信號clock0。
實驗報告要求:
寫出實驗源程序,畫出仿真波形。分析實驗結果,以及它們的硬件測試實驗結果寫進實驗報告。寫出心得體會。
實驗五 2位數的十進制計數器的設計
一、實驗目的:
通過實驗讓讀者掌握復雜時序邏輯電路的EDA原理圖輸入設計法和文本輸入設計法,通過電路仿真,進一步了解有時鐘使能的2位十進制計數器的功能和特性。
二、實驗原理:
有時鐘使能的2位十進制計數器是頻率計的核心元件之一,這里用2個74162來設計完成。
三、實驗內容:
1.用文本輸入設計方法編寫2位十進制計數器的VHDL源程序,并用twin10_g.vhd文件名存盤,參考程序如下: LIBRARY ieee;
USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY twin10_v IS PORT(Clrn,Ent1,Enp,Clk : IN STD_LOGIC;
Qa,Qb
: OUT STD_LOGIC_VECTOR(3 downto 0);
Co
: OUT STD_LOGIC);END twin10_v;ARCHITECTURE a OF twin10_v IS SIGNAL Ent2 : STD_LOGIC;BEGIN
PROCESS(Clk)
VARIABLE tmpa,tmpb :STD_LOGIC_VECTOR(3 downto 0);
BEGIN IF(Clk'event AND Clk='1')THEN
IF Clrn='0' THEN tmpa := “0000”;tmpb := “0000”;
ELSIF(Ent1 AND Enp)='1' THEN
IF tmpa=“1001” THEN
tmpa:=“0000”;
IF tmpb=“1001” THEN tmpb:=“0000”;
ELSE tmpb:= tmpb+1;
END IF;
ELSE tmpa := tmpa+1;
END IF;
END IF;
END IF;
Qa <= tmpa;Ent2<=tmpa(0)AND tmpa(3)AND Ent1;
Qb <= tmpb;Co<= tmpb(0)AND tmpb(3)AND Ent2;END PROCESS;END a;2.同樣編譯后再進行波形仿真
按照波形仿真的操作步驟,對2位十進制計數器進行波形仿真。
3.鎖定引腳、編譯并編程下載。參選實驗電路模式5和附表一,引腳鎖定目標芯片為EP1K30/50144-PIN TQFP 實驗報告要求:
寫出實驗源程序,畫出仿真波形。對設計的2位十進制計數器進行實驗結果的分析,以及硬件測試實驗結果寫進實驗報告。寫出心得體會。
第二篇:EDA技術實驗教案
一、課程名稱:
EDA技術實驗
二、教材名稱: 《EDA技術使用教程》,潘松等編著。
三、本課程教學目的、要求:
介紹EDA的基本知識、常用的EDA工具的使用方法和目標器件的結構原理、VHDL設計輸入方法(圖形和文本)、VHDL仿真、VHDL的設計優化等。
EDA技術作為重要的專業課程,其實踐性強。在教學時要注重理論和實踐的緊密結合,通過大量上機操作,使學生掌握VHDL的基本結構和編程思想。實驗1 原理圖輸入方法及8位全加器設計(4課時)
1)實驗目的:
熟悉利用MAX+plusⅡ的原理圖輸入方法設計簡單組合電路,掌握層次化設計的方法,并通過一個8位全加器的設計把握利用EDA軟件進行電子電路設計的詳細流程。2)實驗報告要求:
詳細敘述8位加法器的設計流程;給出各層次的原理圖及其對應的仿真波形圖;給出加法器的延時情況。
3)實驗步驟:
(1)設計一個一位半加器。
步驟1:輸入設計項目和存盤 步驟2:輸入半加器元件: 步驟3:將項目設置為工程文件 步驟4:選擇目標器件并編譯 步驟5:時序仿真 步驟6:包裝元件入庫
選擇菜單“File”→“Open”,在“Open”對話框中選擇原理圖編輯文件選項“Graphic Editor Files”,然后選擇h_adder.gdf,重新打開半加器設計文件,然后選擇如圖4-5中“File”菜單的“Create Default Symbol”項,將當前文件變成了一個包裝好的單一元件(Symbol),并被放置在工程路徑指定的目錄中以備后用。
(2)利用半加器組成一個一位全加器,并記錄仿真結果。(3)利用全加器組成一個八位全加器,并記錄仿真結果。
實驗二
簡單組合電路和時序電路設計(4課時)
一、實驗目的:
熟悉Max+plusⅡ的VHDL文本設計流程全過程,學習簡單組合電路和時序電路的設計和仿真方法。
二、實驗內容
1:首先利用MAX+plusⅡ完成2選1多路選擇器和一位全加器的文本編輯輸入和仿真測試等步驟,給出仿真波形,驗證本項設計的功能。
2:設計觸發器(J-K),給出程序設計、軟件編譯、仿真分析、硬件測試及詳細實驗過程。
3:先設計或門和一位半加器的VHDL描述文件,并進行仿真調試,再用元件例化的方法實現一位全加器,并仿真調試。要求記錄VHDL文件內容和仿真波形結果。
4:用一位全加器設計8為全加器。要求記錄VHDL文件內容和仿真波形結果。(選作)參考程序 ENTITY mux21a IS PORT(a, b : IN BIT;s : IN BIT;y : OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGIN d <= a AND(NOT S);e <= b AND s;y <= d OR e;END ARCHITECTURE one;
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a, b :IN STD_LOGIC;c : OUT STD_LOGIC);END ENTITY or2a;
ARCHITECTURE fu1 OF or2a IS BEGIN c <= a OR b;END ARCHITECTURE fu1;
半加器描述(1)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY adder IS PORT(a, b : IN STD_LOGIC;co, so : OUT STD_LOGIC);END ENTITY adder;ARCHITECTURE fh1 OF adder is BEGIN so <= NOT(a XOR(NOT b));co <= a AND b;END ARCHITECTURE fh1;
1位二進制全加器頂層設計描述 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder IS PORT(ain,bin,cin : IN STD_LOGIC;cout,sum : OUT STD_LOGIC);END ENTITY f_adder;ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder PORT(a,b : IN STD_LOGIC;co,so : OUT STD_LOGIC);END COMPONENT ; COMPONENT or2a PORT(a,b : IN STD_LOGIC;c : OUT STD_LOGIC);END COMPONENT;
SIGNAL d,e,f : STD_LOGIC;BEGIN u1 : h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum);u3 : or2a PORT MAP(a=>d,b=>f,c=>cout);END ARCHITECTURE fd1;二選一多路選擇器仿真結果:
實驗三
含異步清0和同步時鐘使能的4位加法計數器(4課時)
一、實驗目的:
學習計數器的設計、仿真,進一步熟悉VHDL設計技術。
二、實驗內容:
設計一含計數使能、異步復位和能進行計數值并行預置功能的4位加法計數器。RST是異步清零信號,高電平有效;clk是時鐘輸入信號;D0、D1、D2、D3是4位數據輸入端(數據預置輸入端)。Q0、Q1、Q2、Q3為計數器輸出端。COUT為進位輸出端。ENA為使能端,為?1?時,計數器實現對CLK時鐘脈沖信號的加1計數,為0時停止計數。
參考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B IS PORT(CLK : IN STD_LOGIC;RST : IN STD_LOGIC;ENA : IN STD_LOGIC;OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC);END CNT4B;ARCHITECTURE behav OF CNT4B IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P_REG: PROCESS(CLK, RST, ENA)BEGIN IF RST = '1' THEN CQI <= “0000”;ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1;ELSE CQI <= “0000”;END IF;END IF;OUTY <= CQI;END PROCESS P_REG;COUT <= CQI(0)AND CQI(1)AND CQI(2)AND CQI(3);--進位輸出 END behav;
實驗四
7段數碼顯示譯碼器設計(2課時)
一、實驗目的:
1、學習7段數碼顯示譯碼器設計;
2、學習VHDL的多層次設計方法。
二、實驗原理:
7段數碼是純組合電路,通常的小規模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數字系統中的數據處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來實現。但為了簡化過程,首先完成7段BCD碼譯碼器的設計。例如輸出為“1101101”時,數碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1;接有高電平的段發亮,于是數碼管顯示“5”。
圖6-21 共陰數碼管及其電路
三、實驗內容
1、編程實現7段數碼顯示譯碼器設計;
2、對7段數碼顯示譯碼器設計進行編輯、仿真,給出其所有信號的時序仿真波形; 參考程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S IS PORT(A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE one OF DECL7S IS BEGIN PROCESS(A)BEGIN CASE A IS WHEN “0000” => LED7S <= “0111111”;WHEN “0001” => LED7S <= “0000110”;WHEN “0010” => LED7S <= “1011011”;WHEN “0011” => LED7S <= “1001111”;WHEN “0100” => LED7S <= “1100110”;WHEN “0101” => LED7S <= “1101101”;WHEN “0110” => LED7S <= “1111101”;WHEN “0111” => LED7S <= “0000111”;WHEN “1000” => LED7S <= “1111111”;WHEN “1001” => LED7S <= “1101111”;WHEN OTHERS => NULL;END CASE;END PROCESS;END;仿真結果:
綜合后的計數器和譯碼器連接電路的頂層文件原理圖:
實驗五
用狀態機實現序列檢測器的設計(4課時)
一、實驗目的:
1、掌握狀態機的編程方法和步驟;
2、掌握用狀態機設計序列檢測器的方法和步驟;
二、實驗內容
用狀態機編程實現對系列數“11100101”的檢測,當某一系列串(以左移方式)進入檢測器后,若該串與預置的系列數相同,則輸出“A”,否則輸出“B”。
三、實驗步驟:
1、編輯系列檢測器的VHDL程序;
2、仿真測試并給出仿真波形,了解控制信號的時序;
3、將上述方案改為系列檢測密碼為可預置(外部輸入)情況,重新編寫程序、編譯和仿真,并記錄仿真結果。參考程序:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC;AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END SCHK;ARCHITECTURE behv OF SCHK IS SIGNAL Q:INTEGER RANGE 0 TO 8;SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN D<=“11100101”;PROCESS(CLK,CLR)BEGIN IF CLR= '1' THEN Q <= 0;ELSIF clk='1' AND clk'EVENT THEN CASE Q IS WHEN 0 => IF DIN = D(7)THEN Q<=1;ELSE Q<=0;END IF;WHEN 1 => IF DIN = D(6)THEN Q<=2;ELSE Q<=0;END IF;WHEN 2 => IF DIN = D(5)THEN Q<=3;ELSE Q<=0;END IF;WHEN 3 => IF DIN = D(4)THEN Q<=4;ELSE Q<=0;END IF;WHEN 4 => IF DIN = D(3)THEN Q<=5;ELSE Q<=0;END IF;WHEN 5 => IF DIN = D(2)THEN Q<=6;ELSE Q<=0;END IF;WHEN 6 => IF DIN = D(1)THEN Q<=7;ELSE Q<=0;END IF;WHEN 7 => IF DIN = D(0)THEN Q<=8;ELSE Q<=0;END IF;WHEN OTHERS=> Q<=0;END CASE;END IF;END PROCESS;PROCESS(Q)BEGIN IF Q=8 THEN AB<=“1010”;ELSE AB<=“1011”;END IF;END PROCESS;END behv;仿真結果:
提高型實驗:
實驗六
用VHDL實現數字鐘及校園打鈴系統(6課時)
一、實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握VHDL語言的進行系統設計的方法和步驟。
3、提高學生綜合應用能力。
二、實驗內容:
1、用VHDL實現數字鐘及校園打鈴系統的軟件編輯。
2、用VHDL實現數字鐘及校園打鈴系統的軟件仿真。
三、實驗步驟
1、用VHDL編輯60進制計數器,并進行軟件仿真。
2、用VHDL編輯24進制計數器,并進行軟件仿真。
3、用VHDL編輯30進制計數器,并進行軟件仿真。
4、用元件例化的方法實現數字鐘的軟件編輯及軟件仿真。
5、實現數字鐘的校時功能。
6、實現數字鐘的打鈴功能。
7、完成數字鐘及校園打鈴系統的實驗報告。
實驗七
A/D采樣控制器設計
一、實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握A/D采樣控制器的工作原理。
3、掌握A/D采樣控制器的VHDL語言編程方法。
二、實驗內容:
1、設計一A/D0809模數轉換器控制器。
2、將轉換結果送數碼管顯示器顯示(2位)。
3、模擬輸入通道為IN0。
三、實驗步驟:
1、ADC0809特點介紹
(1)、單極性輸入,8位A/D轉換精度。(2)、逐次逼近式,每次采樣時間約為100US(3)、8通道模擬輸入
2、A/D轉換器外部引腳功能結構圖
3、A/D轉換器時序圖
4、AD轉換控制器與AD轉換器的接口電路框圖
5、狀態控制
S0狀態:初始狀態。ADDC=‘1’,選擇1通道模擬信號輸入。
ALE=START=OE=LOCK=‘0’;
S1狀態:通道鎖存。ALE=‘1’, START=OE=LOCK=‘0’;
S2狀態:啟動A/D轉換。ALE=‘1’,START=‘1’,OE=LOCK=‘0’; S3狀態:A/D轉換等待狀態。
ALE=START=‘0’,OE=LOCK=‘0’;
IF EOC=‘0’
保持當前狀態不變,繼續等待A/D轉換。
ELSE
轉換結束,進入下一狀態。
S4狀態:數據輸出允許狀態。A/D轉換完畢,開啟數據輸出允許信號。
ALE=‘0’,START=‘0’,OE=‘1’,LOCK=‘0’;
S5狀態:數據鎖存狀態。開啟數據鎖存信號,將轉換結果送鎖存器鎖存。
ALE=‘0’,START=‘0’,OE=‘1’,LOCK=‘1’; S6狀態:延時狀態。為了保證數據可靠鎖存,延時一個時鐘狀態周期。
ALE=‘0’,START=‘0’,OE=‘1’,LOCK=‘1’; 其它狀態:返回到初始狀態。ALE=START=OE=LOCK=‘0’;
6、參考程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS
PORT(D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLK0,EOC : IN STD_LOGIC;
ADDA,OE : OUT STD_LOGIC;
ALE,START : OUT STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
QQ : OUT INTEGER RANGE 15 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 IS
TYPE ST_TYPE IS(S0, S1, S2, S3,S4,S5,S6,S7);
SIGNAL CURRENT_STATE,NEXT_STATE : ST_TYPE;
SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL LOCK :STD_LOGIC;
BEGIN
ADDA<='1';
PRO: PROCESS(CURRENT_STATE,EOC)
BEGIN
CASE CURRENT_STATE IS
WHEN S0 => QQ<=0;ALE<='0';START<='0';OE<='0';LOCK<='0';NEXT_STATE <= S1;
WHEN S1 => QQ<=1;ALE<='0';START<='0';OE<='0';LOCK<='0';NEXT_STATE <= S2;
WHEN S2 => QQ<=2;ALE<='1';START<='1';OE<='0';LOCK<='0';NEXT_STATE <= S3;
WHEN S3 => QQ<=3;ALE<='1';START<='1';OE<='0';LOCK<='0';
IF EOC='0' THEN NEXT_STATE <= S4;
ELSE NEXT_STATE <= S3;
END IF;
WHEN S4 => QQ<=4;ALE<='0';START<='0';OE<='0';LOCK<='0';
IF EOC='1' THEN NEXT_STATE <= S5;
ELSE NEXT_STATE <= S4;
END IF;
WHEN S5 => QQ<=5;ALE<='0';START<='1';OE<='1';LOCK<='0';NEXT_STATE <= S6;
WHEN S6 => QQ<=6;ALE<='0';START<='0';OE<='1';LOCK<='1';NEXT_STATE <= S7;
WHEN S7 => QQ<=7;ALE<='0';START<='0';OE<='1';LOCK<='1';NEXT_STATE <= S0;
WHEN OTHERS => NEXT_STATE <= S0;
END CASE;
END PROCESS PRO;REG:PROCESS(CLK0)
BEGIN
IF CLK0'EVENT AND CLK0='1' THEN
CURRENT_STATE<=NEXT_STATE;
END IF;
END PROCESS REG;
COM:PROCESS(LOCK)
BEGIN
IF LOCK'EVENT AND LOCK='1' THEN
REGL<=D;
END IF;
END PROCESS COM;
Q<=REGL;END behav;
實驗八
數字頻率計設計
一、實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握數字頻率計的工作原理。
3、掌握數字頻率計的VHDL語言編程方法。
二、實驗內容:
1、設計8位十進制數字頻率計。
2、測量頻率范圍為1Hz-50MHz
三、實驗原理: 測頻原理框圖
四、實驗步驟 1、8位十進制計數器設計
(1)用VHDL設計十進制計數器,并進行軟件和硬件仿真 參考程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS
PORT(CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC);
END CNT10;ARCHITECTURE behav OF CNT10 IS BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST = '1' THEN
CQI :=(OTHERS =>'0');--計數器復位
ELSIF CLK'EVENT AND CLK='1' THEN
--檢測時鐘上升沿
IF EN = '1' THEN
--檢測是否允許計數
IF CQI < “1001” THEN
CQI := CQI + 1;--允許計數
ELSE
CQI :=(OTHERS =>'0');--大于9,計數值清零
END IF;
END IF;
END IF;
IF CQI = “1001” THEN COUT <= '1';--計數大于9,輸出進位信號
ELSE
COUT <= '0';
END IF;
CQ <= CQI;
--將計數值向端口輸出
END PROCESS;END behav;(2)8位十進制頻率計電路圖 2、32位鎖存器設計 參考程序
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY reg32b IS
PORT(load : IN STD_LOGIC;
din: in STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END reg32b;ARCHITECTURE behav OF reg32b IS BEGIN
PROCESS(load,din)
BEGIN
IF load'EVENT AND load='1' THEN
dout<=din;
END PROCESS;END behav;3控制器設計
(1)控制器時序圖
(2)參考程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY testctl IS
PORT(clk : IN STD_LOGIC;
tsten:out
STD_LOGIC;
clr_cnt: out
STD_LOGIC;
load:out
STD_LOGIC);
END testctl;ARCHITECTURE behav OF testctl IS
signal div2clk:std_logic;BEGIN
PROCESS(clk)
BEGIN
IF clk'EVENT AND clk='1' THEN
div2clk<=not div2clk;
END PROCESS;
process(clk,div2clk)
begin
if clk='0' and div2clk='0'
then
clr_cnt<='1';
else clr_cnt<='0';
end if;
end process;
load<=not div2clk;
tsten<=div2clk;END behav;
END IF;END IF;
實驗九
DAC接口電路與波形發生器設計
一、實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握DA轉換器接口方法。
3、掌握DA轉換器的VHDL語言編程方法。
二、實驗內容:
1、設計一DAC0832數模轉換器控制器。
2、要求使用DAC轉換器輸出一正弦波,最大值為5V。(使用單緩沖方式)
3、要求正弦波頻率能步進可調,步進間隔為100Hz。(使用2個按鍵控制,一個步進為加,另一個為步進減)
三、實驗原理
1、DAC0832特點(1)、8位電流DAC轉換,輸出為電流信號,因此要轉換為電壓輸出,必須外接集成運算放大器。(2)、轉換時間約為50---500ns,轉換速度比電壓型DAC轉換器快,電壓型一般為1---10us(3)、20腳雙列直插式封裝的CMOS型器件。(4)、內部具有兩極數據寄存器,可采用單或雙緩沖方式。
2、D/A轉換器外部引腳功能及內部結構圖
3、工作方式
方式一:直通工作方式(本實驗采用此種方式)
一般用于只有一路輸出信號的情況。
接線情況:ILE=1,CS=WR1=WR2
=XFER=0 方式
二、雙緩沖器工作方式
采用兩步操作完成,可使DA轉換輸出前一數據的同時,將采集下一個數據送到8位輸入寄存器,以提高轉換速度。
一般用于多路DA輸出。
4、DA轉換器與控制器接口電路設計
5、實驗儀實際接口電路圖
6、DA轉換器輸出波形步進可調控制電路設計 設計思想:
設輸入控制器的時鐘頻率為50MHz。
1、DA轉換一次,需要一個時鐘周期。若采用64點輸出,則需要64個時鐘周期。如果控制器時鐘頻率為64Hz,則輸出的正弦波頻率為1Hz。
2、因此,只需要控制DA轉換控制器的時鐘頻率,則就可以控制正弦波頻率,正弦波頻率與時鐘頻率的 關系為1:64。
3、題目要求正弦波步進頻率為100Hz,則時鐘頻率步進應為6400Hz。按“加”鍵,則時鐘頻率增加6400Hz,按“減”減,時鐘頻率減小6400Hz。
7、帶按鍵控制DA轉換器與控制器接口電路設計
四、實驗程序 參考程序:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DAC0832 IS
PORT(CLK :IN STD_LOGIC;
DD : OUT INTEGER RANGE 255 DOWNTO 0);END DAC0832;ARCHITECTURE behav OF DAC0832 IS SIGNAL Q:INTEGER RANGE 63 DOWNTO 0;SIGNAL D : INTEGER RANGE 255 DOWNTO 0;BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN Q<=Q+1;
END IF;
END PROCESS;PROCESS(Q)
BEGIN
CASE Q
IS
WHEN 00=>D<=254;WHEN 01=>D<=252;WHEN 02=>D<=249;WHEN 03=> D<=245;
WHEN 04=>D<=239;WHEN 05=>D<=233;WHEN
06=> D<=225;WHEN
07=> D<=217;
WHEN 08=>D<=207;WHEN 09=>D<=197;WHEN
10=> D<=186;WHEN
11=> D<=174;
WHEN 12=>D<=162;WHEN 13=>D<=150;WHEN 14=> D<=137;WHEN
15=> D<=124;
WHEN 16=>D<=112;WHEN 17=>D<=99;WHEN 18=> D<=87;
WHEN
19=> D<=75;
WHEN 20=>D<=64;WHEN
21=>D<=53;WHEN 22=>D<=43;
WHEN 23=> D<=34;
WHEN 24=>D<=26;WHEN 25=>D<=19;WHEN
26=> D<=13;
WHEN
27=> D<=8;
WHEN 28=>D<=4;
WHEN
29=>D<=1;
WHEN 30=>D<=0;
WHEN
31=> D<=0;
WHEN 32=>D<=1;WHEN 33=>D<=4;
WHEN 34=> D<=8;
WHEN 35=> D<=13;WHEN 36=>D<=19;WHEN 37=>D<=26;
WHEN 38=> D<=34;
WHEN
39=> D<=43;
WHEN 40=>D<=53;WHEN
41=>D<=64;WHEN 42=> D<=75;
WHEN
43=> D<=87;
WHEN 44=>D<=99;WHEN 45=>D<=112;WHEN 46=>D<=124;WHEN
47=> D<=137;
WHEN 48=>D<=150;WHEN 49=>D<=162;WHEN 50=> D<=255;WHEN 51=> D<=174;
WHEN 52=>D<=186;WHEN 53=>D<=197;WHEN 54=>D<=207;WHEN 55=> D<=217;
WHEN 56=>D<=225;WHEN 57=>D<=233;WHEN 58=> D<=239;WHEN
59=> D<=245;
WHEN 60=>D<=249;WHEN 61=> D<=252;WHEN 62=> D<=254;WHEN 63=>D<=255;WHEN OTHERS=>NULL;END CASE;END PROCESS;
DD<=D;
END;
實驗十
七段顯示器動態掃描電路設計(提高型)
實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握七段顯示器動態掃描電路設計方法。設計要求:
1、設計一個七段數碼管動態掃描電路。
2、數碼管個數為8個,共陰極接法。
3、設計BCD碼--七段字符碼的轉換電路;
4、設計一電路,控制上述電路實現“12345678”八個數字的顯示,要求顯示方式為:
(1)自左至右逐個點亮數碼管,最后全亮;再重復以上動作,每次變化時間間隔為1秒。
(2)自左至右點亮數碼管,每次只點亮一個,最后全息滅,再重復以上動作,每次變化時間間隔為1秒。
(3)先中間兩個點亮,再依次向外點亮;全亮后,再依次向中間熄滅;重復上述步驟,每次變化時間間隔為1秒。一、七段顯示器動態掃描電路設計框圖
二、存儲器設計(8位8字節靜態隨機存儲器SRAM)LIBRARY ieee;
USE ieee.std_logic_1164.all;ENTITY MEMO_RD_WR IS PORT(WR,RD: IN STD_LOGIC;
A : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
B : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END MEMO_RD_WR;ARCHITECTURE a OF MEMO_RD_WR IS
SIGNAL Q0,Q1,Q2,Q3: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL Q4,Q5,Q6,Q7: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(WR,A)
BEGIN
IF WR='1' THEN
CASE
A
IS
WHEN “000”=>Q0<=D;
WHEN “001”=> Q1<=D;
WHEN “010”=>Q2<=D;
WHEN “011”=> Q3<=D;
WHEN “100”=>Q4<=D;
WHEN “101”=> Q5<=D;
WHEN “110”=>Q6<=D;
WHEN “111”=> Q7<=D;
WHEN OTHERS=>NULL;
END CASE;
END IF;
END PROCESS;PROCESS(RD,B)
BEGIN
IF RD='1' THEN
CASE
B
IS
WHEN “000”=>Q<=Q0;
WHEN “001”=> Q<=Q1;
WHEN “010”=>Q<=Q2;
WHEN “011”=> Q<=Q3;
WHEN “100”=>Q<=Q4;
WHEN “101”=> Q<=Q5;
WHEN “110”=>Q<=Q6;
WHEN “111”=> Q<=Q7;
WHEN OTHERS=>NULL;
END CASE;
END IF;
END PROCESS;END a;
四、循環取數電路設計 LIBRARY ieee;
USE ieee.std_logic_1164.all;ENTITY GET_CODE IS PORT(CLK1: IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
RD:OUT STD_LOGIC;
A : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END GET_CODE;ARCHITECTURE a OF GET_CODE
IS
SIGNAL LOAD: STD_LOGIC;
SIGNAL QQ : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;BEGIN
RD<=?1?;
LOAD<=CLK1;PROCESS(CLK1)
BEGIN
IF CLK1'EVENT AND CLK1='1' THEN
IF NUM<=7
THEN
NUM<=NUM+1;
ELSE NUM<=0;
END IF;
END IF;END PROCESS;PROCESS(NUM)
BEGIN
CASE NUM IS
WHEN 0 =>A<=“000”;
WHEN 1 =>A<=“001”;
WHEN 2 =>A<=“010”;
WHEN 3 =>A<=“011”;
WHEN 4 =>A<=“100”;
WHEN 5 =>A<=“101”;
WHEN 6 =>A<=“110”;
WHEN 7 =>A<=“111”;
WHEN OTHERS =>NULL;
END CASE;
END PROCESS;PROCESS(LOAD)
BEGIN
IF LOAD?EVENT AND LOAD=?1?
THEN-------上升沿鎖存
QQ<=D;
END IF;END PROCESS;DOUT(7 DOWNTO 0)<=QQ(7 DOWNTO 0);END a;
五、掃描控制器設計 LIBRARY ieee;
USE ieee.std_logic_1164.all;ENTITY SCAN_8 IS PORT(CLK2: IN STD_LOGIC;
C : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END SCAN_8;ARCHITECTURE a OF SCAN_8
IS
SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;BEGIN PROCESS(CLK2)
BEGIN
IF CLK2'EVENT AND CLK2=‘1' THEN
IF NUM<=7
THEN
NUM<=NUM+1;
ELSE NUM<=0;
END IF;
END IF;END PROCESS;Process(num)
begin
CASE
NUM
IS
WHEN 1=>C<=“11111110”;WHEN 2=> C<=“11111101”;
WHEN 3=>C<=“11111011”;WHEN 4=> C<=“11110111”;
WHEN 5=>C<=“11101111”;WHEN 6=> C<=“11011111”;
WHEN 7=>C<=“10111111”;WHEN 0=> C<=“01111111”;
WHEN
OTHERS=>NULL;
END CASE;END PROCESS;END A;
應用實例一:顯示“01234567”八個數字
LIBRARY ieee;
USE ieee.std_logic_1164.all;ENTITY disp_data IS PORT(CLK: IN STD_LOGIC;
WR:OUT STD_LOGIC;
A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END disp_data;ARCHITECTURE a OF disp_data
IS
--SIGNAL QQ : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;BEGIN
WR<=?1?;PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF NUM<=7
THEN
NUM<=NUM+1;
ELSE NUM<=0;
END IF;
END IF;END PROCESS;PROCESS(NUM)
BEGIN
CASE NUM IS
WHEN 0 =>Q<=“00111111”;A<=“000”;
WHEN 1 =>Q<=“00000110”;A<=“001”;
WHEN 2 =>Q<=“01011011”;A<=“010”;
WHEN 3 =>Q<=“01001111”;A<=“011”;
WHEN 4 =>Q<=“01100110”;A<=“100”;
WHEN 5 =>Q<=“01101101”;A<=“101”;
WHEN 6 =>Q<=“01111101”;A<=“110”;
WHEN 7 =>Q<=“01111111”;A<=“111”;
WHEN OTHERS =>NULL;
END CASE;END PROCESS;END a;實驗十一
彩燈控制器設計(提高型實驗)
實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握VHDL語言的進行系統設計的方法和步驟。
3、培養學生綜合應用能力。實驗內容:
1、了解各類節日彩燈的顯示方式(主要是動態方式)(上街觀察);
2、將你所了解的情況,畫出你的設計思想框圖;
3、根據框圖畫出電路框圖(用EDA技術);
4、用VHDL語言編程實現;
5、完成課程設計報告(約2000字)
實驗
十二、紅綠交通燈控制系統
實驗目的及要求:
1、掌握VHDL語言的基本結構及編程思想。
2、掌握VHDL語言的進行系統設計的方法和步驟。
3、培養學生綜合應用能力。實驗內容:
設計一個簡易十字路口交通燈控制器。要求:
1、每個路口有紅、綠、黃三個指示燈指示交通運行情況。紅燈亮,禁止車輛通行;綠燈亮,車輛正常通行。
2、利用兩位數碼管顯示通行到計時時間。
3、用VHDL語言編程實現;
4、完成課程設計報告 實驗步驟:
1、紅綠黃燈秒計數選擇控制電路(traffic_mux)SING_STATE:
00
綠燈20秒(橫向路口);
01
黃燈5秒(橫向路口)
綠燈20秒(直向路口)
黃燈5秒(直向路口)
RECOUNT:重新計數信號。=?1?,發送倒計時時間數據; =?0?,正常倒計時; LIBRARY IEEE;
USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;
USE IEEE.std_logic_arith.all;entity traffic_mux is
port(reset,clk_1Hz,recount: in std_logic;
sign_state: in std_logic_vector(1 downto 0);
load: out integer range 255 downto 0);end;
begin
process(reset,clk_1s)
begin
if reset='1' then
load<=“00000000”;
elsif(clk_1Hz'event and clk_1Hz='1')
then
if
recount = '1‘
then
CASE sign_state IS
WHEN “00” => load <= 20;
WHEN “01” => load <= 5;
WHEN “10” => load <= 20;
WHEN “01” => load <= 5;
WHEN OTHERS =>null;
END CASE;
end if;
end if;end process;end BEHAVIOR;
2、倒計時控制電路(count_down)library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity count_down is port(reset,clk_1Hz: in std_logic;recount:in std_logic;load: in integer range 255 downto 0;seg7:out std_logic_vector(15 downto 0);next_state: out std_logic);end;architecture BEHAVIOR of count_down is signal cnt_ff: integer range 255 downto 0;begin process(clk_1Hz,reset)begin if(reset='1')then cnt_ff<=“00000000”;seg7<=“***0”;elsif(clk_1Hz'event and clk_1Hz='1')then if recount='1‘ then cnt_ff<=load-1;else cnt_ff<=cnt_ff-1;end if;end if;end process;process(cnt_ff)begin case cnt_ff is when 0=>seg7<=“***1”;when 1=>seg7<=“***0”;when 2=> seg7<=“***1”;when 3=> seg7<=“***1”;when 4=> seg7<=“***0”;when 5=> seg7<=“***1”;when 6=> seg7<=“***1”;when 7=> seg7<=“***1”;when 8=> seg7<=“***1”;when 9=> seg7<=“***1”;when 10=> seg7<=“***1”;when 11=> seg7<=“***0”;when 12=> seg7<=“***1”;when 13=> seg7<=“***1”;when 14=> seg7<=“***0”;when 15=> seg7<=“***1”;when 16=> seg7<=“***1”;when 17=> seg7<=“***1”;when 18=> seg7<=“***1”;when 19=> seg7<=“***1”;when 20=> seg7<=“***1”;when 21=> seg7<=“***0”;when 22=> seg7<=“***1”;when 23=> seg7<=“***1”;when 24=> seg7<=“***0”;when 25=> seg7<=“***1”;when 26=> seg7<=“***1”;when 27=> seg7<=“***1”;when 28=> seg7<=“***1”;when 29=> seg7<=“***1”;when others=> seg7<=“***1”;end case;end process;next_state <= '1' when cnt_ff=1 else '0';end BEHAVIOR;
3、紅綠燈信號控制電路(traffic_fsm)LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_arith.all;USE IEEE.std_logic_unsigned.all;entity traffic_FSM is port(reset,clk,clk_1Hz,flash_1Hz: in std_logic;a_m:in std_logic;next_state: in std_logic;recount: out std_logic;sign_state: out std_logic_vector(1 downto 0);red: out std_logic_vector(1 downto 0);green: out std_logic_vector(1 downto 0);yellow: out std_logic_vector(1 downto 0));end;architecture BEHAVIOR of traffic_FSM is type Sreg0_type is(r0g1, r0y1, g0r1, y0r1, y0y1, y0g1, g0y1, r0r1);signal state : Sreg0_type;signal light: std_logic_vector(5 downto 0);begin if(reset='1')then state<=r0g1;
----設定當前為橫向紅燈亮,豎向綠燈亮 sign_state<=“01”;------選擇20秒倒計時
recount<=‘1’;------裝入計數初值并啟動倒計時 else if(clk'event and clk='1')then case STATE is when r0g1 => if(a_m='1' and clk_1Hz='1')then if(next_state = ‘1’)then--當前計數完畢,轉入下一種計時
recount<='1';state<=r0y1;sign_state <= “01”;else recount<=‘0’;state<=r0g1;----否則,繼續倒計時 end if;when r0y1 =>--now state: red0 on yellow1 flash if(a_m='1' and clk_1Hz='1')then if(next_state = '1')then recount<='1';state<=g0r1;sign_state <= “10”;else recount<='0';state<=r0y1;end if;when g0r1 =>--now state: green0 on red1 on if(a_m='1' and ena_1Hz='1')then if(next_state = '1')then recount<='1';state<=y0r1;sign_state <= “11”;else recount<='0';state<=g0r1;end if;when y0r1 =>--now state: green0 on red1 on if(a_m='1' and ena_1Hz='1')then if(next_state = '1')then recount<='1';state<=r0g1;sign_state <= “00”;else recount<='0';state<=y0r1;--red=2'b10;green=2'b00;yellow=2'b01;end if;when others => state<=r0g1;recount<='0';sign_state <= “00”;end case;end if;end if;end process;--light: r(10)y(10)g(10)light <= “010010” when(state=r0g1)else “011000” when(state=r0y1)else “100001” when(state=g0r1)else “100100” when(state=y0r1)else “110000”;red <= light(5 downto 4);yellow <= light(3 downto 2)and(flash_1Hz & flash_1Hz);green <= light(1 downto 0);end BEHAVIOR;
第三篇:《EDA技術基礎》實驗總結報告及要求
電工電子中心2009年5月繪制
湖北師范學院電工電子實驗教學省級示范中心電子版實驗報告
什么什么設計(研究)
紅色部分提交時請刪除!!
題目:“什么內容”的設計或“什么內容”的研究,例如: 基于FPGA的數字搶答器設計 基于FPGA的等精度數字頻率計設計 Verilog HDL同步時序電路研究 一種簡易數字頻率計設計
基于FPGA的DDS信號發生器的設計
更多參考“大學生電子實驗室”論壇設計選題指南 一.任務解析
根據對設計選題的理解,明確要做什么,要達到什么要求(參數、指標)。二.方案論證
對所要完成的設計任務,參考相關資料,提出設計方案,拿不同方案進行對比分析,選擇你能夠實現的方案,并明確指出為什么要選擇此方案,較其它方案有何優點。三.實驗步驟
方案的具體實施,按實際實施過程認真做好原始記錄,可以包括單元電路仿真分析,部分指標測試(實際效果)等等,描述演示效果要明確所用設備,說明實驗箱,使用了什么儀器等。四.結果分析
對所測試結果(演示現象)做分析,得出結論(描述現象)。五.經驗總結
對完成任務情況進行總結,是否達到預期的設計,效果如何,還有哪些可以改進的,改進建議,特別是錯誤分析。
如果是自己獨立完成的,我相信一定會有很多心得體會可以總結的,挫折的苦惱,成功的喜悅。如果你完成了一個設計性實驗,一點體會都沒有,那么我相信你一定是走捷徑完成了任務,而沒有真正獨立完成本設計任務!老師批改報告,往往把學生的心得體會看成一個亮點。心得體會一定要認真寫,把自己做設計性實驗的過程認真總結,讓老師感受到你是一步一步完成該設計性實驗選題的。
第2頁,共2頁
第四篇:eda技術教案
EDA技術教案 第一次課 內容:
介紹EDA技術的涵義、發展歷程和應用領域; 介紹EDA技術的主要內容; 介紹EDA的工程設計流程; 說明本課程的特點與學習方法。教學目的:
通過介紹EDA技術的涵義、發展歷程和應用領域,使學生了解本課程的實際應用很大,調動學生學習這門課程的積極性
通過介紹EDA技術的主要內容,使學生了解這門課程要學習什么。在此基礎上說明本課程的特點與學習方法。
說明各種通信系統的組成,了解它們的優缺點,出現背景。重點說明數字通信系統的特定和優點。
介紹EDA的工程設計流程,說明當前EDA設計的特點,用軟件方式設計硬件,用軟件方式設計的系統到硬件系統的轉換是由有關開發軟件自動完成的,因此類似軟件編程,不需太多的低層硬件知識,使學生克服畏難情緒。教學重點、難點:
EDA技術的三個發展階段以及各階段的特點; EDA的定義和EDA技術的主要內容; EDA的工程設計流程。教學方法:
比較、舉例、圖解。教學過程:
(一)自我介紹,說明課時安排、成績評定方法、課程定位、教學網站的進入。
(二)講授新課
課堂教學實施過程共分六步。介紹EDA技術的涵義。
說明EDA技術的發展背景,說明EDA技術的三個發展階段,比較三個階段的各解決了什么問題,在此基礎上理解各階段的特點。
在第二步理解EDA技術進行電子系統設計的特點的基礎上引出并詳細說明EDA的定義,加深對EDA技術的涵義的理解。
在第三步詳細說明EDA的定義的基礎上,引出EDA技術的4個主要內容:硬件描述語言:設計的主要表達手段;大規??删幊踢壿嬈骷涸O計的載體;軟件開發工具:設計的工具;實驗開發系統:下載工具及硬件驗證工具。再分別介紹EDA技術的4個主要內容:了解常用的硬件描述語言VHDL和Verilog;了解兩種常用的大規??删幊踢壿嬈骷﨔PGA和CPLD以及它們各自的特點;了解主流EDA工具軟件;了解本課程使用的西安唐都公司的TD-EAD實驗系統
說明課程要求:通過學習這門課程要掌握運用EDA開發工具設計開發電子系統,引出這門課程的特點:實踐性強,說明我們的學習方法:抓住一個重點:VHDL的編程;掌握兩個工具: Quartus II 和 TD-EAD實驗系統;運用三種手段:通過案例分析、應用設計和上機實踐,實現理論與實踐相結合,邊學邊用,邊用邊學。用設計一個簡單電子系統為例,引出EDA的工程設計流程。說明當前EDA技術發展的特點:用軟件方式設計硬件;用軟件方式設計的系統到硬件系統的轉換是由有關開發軟件自動完成的;設計過程中可用有關軟件進行各種仿真;系統可現場編程,在線升級;整個系統可集成在一個芯片上,體積小、功耗低、可靠性高?,F代EDA設計類似軟件編程,不需太多的低層硬件知識,使學生克服畏難情緒。同時這里又回顧復習了使用EDA技術進行電子系統設計的特點。最后圖解說明EDA的工程設計流程。第二次課
內容:安裝 Quartus Ⅱ,VHDL 與 Quartus Ⅱ初體驗 教學目的:
理解VHDL語言的特點。
了解主流EDA工具Quartus Ⅱ,掌握其安裝方法。掌握使用 Quartus Ⅱ進行FPGA設計的基本流程。
教學重點、難點:使用Quartus Ⅱ進行FPGA設計的基本流程。教學方法: 舉例、演示。教學過程:
課堂教學實施過程共分兩步。
回顧上節課所講的EDA的主要內容。在此基礎上引出VHDL語言的特點,并介紹主流EDA開發工具Quartus Ⅱ,說明它的不同版本的特點。重點介紹PC破解版的安裝步驟。演示安裝過程,在演示是重點提醒學生注意容易出錯的幾個地方。
回顧上節課所講的當前EDA技術發展的特點,EDA的工程設計流程。在此基礎上說明使用 Quartus Ⅱ進行FPGA設計的基本流程,并通過實際演示設計一個簡單的電子系統:與非門,說明使用 Quartus Ⅱ和VHDL開發電子系統的基本流程。在演示過程中重點提醒學生注意容易出錯的幾個地方,并給出一些初學者的小竅門。第三次課
內容:VHDL 程序基本結構,VHDL 基本數據類型,VHDL 數據對象 教學目的:
掌握VHDL語言程序的基本結構,特別是實體和結構體。
掌握VHDL語言的語言要素,包括VHDL語言的基本數據類型、數據對象和VHDL 運算符,理解信號和變量的區別。
教學重點、難點:VHDL語言程序的基本結構,VHDL語言的語言要素。教學方法:舉例、演示、歸納、比較。教學過程:
課堂教學實施過程共分三步。1)VHDL 程序基本結構
回顧上節課設計與非門的例子,引出設計與非門的設計思想:先確定系統功能和接口,再進行內部電路設計,由此引出VHDL程序的基本結構:實體:對應系統接口,結構體:對應系統內部電路。從與非門的VHDL程序中可以直觀的看到它的三部分:庫、程序包的調用,實體聲明,結構體定義。
以與非門的VHDL程序為例說明庫、程序包的調用的作用。說明調用語法,介紹常用的三個庫、程序包。
以與非門的VHDL程序為例說明實體聲明的語法,各項的意義。提醒學生注意初學者容易出錯的地方,如:實體名必須與文件名相同,否則編譯會出錯;最后一條端口聲明語句不可加分號等。并通過演示出錯情況,加深學生的印象。最后通過圖解歸納實體聲明的格式,容易出錯的地方,并對初學者進行相應的建議:使用范例,在Edit—> Insert Template 中選擇范例。Quartus 進行編譯時,要求關聯文件文件名相同,建議采用 Quartus 默認文件名,不要自己更改文件名。
以與非門的VHDL程序為例說明結構體的語法,各項的意義。提醒學生注意初學者容易出錯的地方。并通過演示出錯情況,加深學生的印象。最后通過圖解歸納結構體的格式,應注意的地方。
2)VHDL 基本數據類型
回到與非門的VHDL程序的實體聲明部分,引出VHDL的數據類型。介紹各種數據類型,重點介紹最常用的標準邏輯位、標準邏輯位矢量。提醒學生注意使用標準邏輯位矢量時必須注明數組中元素個數和排列方向,并舉例說明。最后比較VHDL和C語言中使用數據類型的異同點:VHDL同 C 語言一樣,必須先聲明端口和信號,然后才能使用,在聲明中必須定義它們的數據類型;與 C 語言不同,VHDL是強類型語言,只有相同數據類型的端口、信號和操作數才能相互作用。3)VHDL 數據對象
介紹VHDL的數據對象:信號、變量和常量。以與非門的VHDL程序為例,通過圖解比較說明信號和端口的異同點。說信號聲明的格式和信號賦值語句的格式。重點說明矢量賦值,通過舉例說明在矢量賦值要特別注意兩矢量之間的元素對應關系。
說明定義變量的語法格式、變量賦值的語法格式。比較信號和變量的區別。最后介紹定義常量的語法格式。第四次課
內容:VHDL 運算符、VHDL 并行信號賦值語句。
教學目的:
掌握VHDL 運算符。
掌握VHDL語言的并行信號賦值語句,特別是選擇信號賦值語句和條件信號賦值語句,理解條件信號賦值語句的各賦值子句的優先級差別。教學重點、難點:并置運算符“&”、選擇信號賦值語句、條件信號賦值語句。教學方法:舉例、演示、圖解。教學過程:
課堂教學實施過程共分四步。
分別介紹VHDL的四種運算符:算術運算符、并置運算符、關系運算符、邏輯運算符。對算術運算符重點說明能支持的數據類型和不能支持的數據類型。并置運算符是本課程的一個難點,通過一個電路設計,舉例說明并置運算符的應用。關系運算符重點說明能支持的數據類型。提醒學生注意:“<=”在條件語句中出現為小于等于,其它情況為信號賦值。邏輯運算符重點說明其優先級關系。
并行語句是硬件描述語言區別于一般軟件程序語言的最顯著的特點之一。通過圖解說明常用并行語句特點,從圖中直觀的看到:并行語句之間是并行執行,但并行語句內部的執行可以是順序的(進程語句),也可以是并行的(塊語句)。
介紹并行信號賦值語句:簡單信號賦值語句、選擇信號賦值語句、條件信號賦值語句。給出選擇信號賦值語句格式,并通過設計3-8 線譯碼器,說明如何使用選擇信號賦值語句。提醒學生注意容易出錯的幾點:“選擇值”一定要覆蓋所有可能情況,若不可能一一指定,則要借助 others為其它情況找個“出口”。因此強烈建議初學者使用 with ? select 語句時,最后都帶上 when ?
others?!斑x擇值”必須互斥,不能出現條件重復或重疊的情況。給元素賦常數值,用單引號;給矢量賦常數值,用雙引號。通過演示出錯情況,加深學生的印象。
給出條件信號賦值語句格式,并通過設計8-3 線優先編碼器,說明如何使用條件信號賦值語句。提醒學生注意容易:在執行 When ?
Else 語句時,賦值條件按書寫的先后順序逐項測試,一旦發現某一賦值條件得到滿足,即將相應表達式的值賦給目標信號,并不再測試下面的賦值條件。即各賦值子句有優先級的差別,按書寫的先后順序從高到低排列。通過觀察仿真結果,直觀的看到賦值優先級,加深學生的印象。第五次課
內容:進程語句、VHDL語言的順序語句。教學目的:
掌握進程語句,掌握進程的工作原理和特點,理解進程與時鐘的關系。
掌握VHDL語言的順序語句,特別是IF 語句和CASE語句,理解IF、CASE語句和選擇信號賦值語句、條件信號賦值語句的區別。
教學重點、難點:進程的工作原理和特點,進程與時鐘的關系。IF 語句和CASE語句,IF 語句和CASE語句的嵌套。
教學方法:圖解、舉例、總結。教學過程:
課堂教學實施過程共分四步。
介紹進程語句的特點、格式,說明各項意義。圖解說明進程工作原理,通過該圖直觀的理解進程的特點:進程本身是并行語句,單其內部是順序語句;進程只有在特定的時刻(敏感信號發生變化)才會被激活。在此基礎上說明進程與時鐘的關系。通過圖解說明時鐘上升沿驅動進程語句,使學生較好的理解了進程的時鐘和進程是一種隱形的循環。給出時鐘沿的VHDL描述,通過幾個寄存器的設計,說明如何使用進程語句,通過觀察波形仿真圖,加深學生對進程與時鐘的關系的理解。最后總結進程的要點和容易出錯的幾個地方。介紹順序語句,提醒學生注意進程在激活的一瞬間就執行完進程中所有語句。重點介紹IF 語句和CASE 語句。給出IF 語句的三種格式,說明它們的特點。在此基礎上總結使用 IF 語句注意的要點。最后通過設計串行輸入并行輸出的移位寄存器和并行輸入串行輸出的移位寄存器,加深學生對IF語句、IF語句嵌套的理解。
給出CASE 語句的格式,說明CASE 語句使用要點。最后通過設計帶使能端的 2-4 譯碼器,加深學生對IF語句、IF語句嵌套的理解。介紹LOOP語句和空語句。第六次課
內容:層次化設計概念、在Quartus II 中實現層次化設計 教學目的:
理解層次化設計的優點。
理解層次化設計的核心思想:模塊化、元件重用。
掌握在 Quartus II 中采用圖形法與文本法結合的混合輸入方法實現元件重用和系統的層次化設計。
教學重點、難點:在Quartus II 中實現層次化設計。教學方法:圖解、舉例、演示。教學過程:
課堂教學實施過程共分三步。
說明層次化設計的優點。圖解說明層次化設計的核心思想:模塊化、元件重用。加深對層次化設計的優點的理解。
圖解說明在 Quartus II 中實現系統層次化設計的主要步驟:首先按自頂向下的設計方法,設計系統,劃分和定義系統子模塊,形成系統層次化設計圖。其次用 VHDL 語言設計底層子模塊,并生成相應的元件符號。最后調用下層元件,完成上層模塊的設計,并生成相應的元件符號。這樣從底層元件開始,自底向上完成系統的設計。
通過實際演示時鐘選擇器的設計過程,說明如何在Quartus II 中實現系統層次化設計,主要包括模塊劃分、元件設計文件的建立、元件符號的生成、元件調用、LPM宏模塊的調用與參數配置、頂層電路原理圖的建立。第七次課
內容:系統層次化設計進階
教學目的:理解元件例化、程序包和類屬映射。教學重點、難點:略 教學方法:圖解、舉例。教學過程:
課堂教學實施過程共分四步。
回顧上節課的內容:在Quartus II 中實現層次化設計,并引出新問題:如何用 VHDL 語言而不是元件符號來調用已設計的元件,實現系統層次化設計。由此引出元件例化、程序包和類屬映射這幾個層次化設計中最重要的VHDL語句。
說明什么是元件例化:將以前設計的實體當作本設計的一個元件(元件定義),然后再調用這個元件,即用VHDL語言將各元件之間的連接關系描述出來(元件映射)。介紹元件例化中的元件定義和元件映射的語法格式,說明各項意義。通過一個例子引用2分頻電路,來說明如何使用元件例化。
通過圖解說明元件例化語句的缺點:如果在一個實體中用到多個元件,那么在其結構體中要用大量篇幅定義元件。元件定義在結構體中,只有這個實體能調用該元件,如果有多個實體用到同一個元件,那么在這多個實體中都要對該元件進行定義。通過對該問題的解決,引出程序包:將數據類型、元件定義、子程序等收集到一個VHDL程序包中,只要在設計實體中用USE語句調用該程序包,就可以使用這些預定義的數據類型、元件定義、子程序。說明程序包的語法格式,通過舉例說明如何在程序包中進行元件定義以及如何應用程序包。提醒學生注意容易出錯的地方:程序包設計文件應保存為同名的VHDL文件并編譯。只有編譯過的程序包才能被其它設計實體調用。
通過一個常見的實際問題:設計一個帶參數的電子系統,使其應用范圍更廣,引出類屬映射語句。通過設計帶參數的分頻器,說明如何用 VHDL 語言設計和調用帶參數的元件。第八次課
內容:Moore 狀態機的 VHDL 描述、Mealy 狀態機的 VHDL 描述。
教學目的:理解什么是Moore 狀態機和Mealy 狀態機,掌握Moore 狀態機和Mealy 狀態機的 VHDL 描述。
教學重點、難點:Moore 狀態機和Mealy 狀態機的 VHDL 描述。教學方法:圖解、舉例、類比。教學過程:
課堂教學實施過程共分三步。說明組合邏輯和時序邏輯的區別。用老式按鈕風扇類比組合邏輯,空調遙控器類比時序邏輯,形象的說明了組合電路的輸出只與當前輸入有關。時序邏輯電路的輸出不僅與當前輸入有關,還與過去的一系列輸入有關。由此引出狀態機:輸出由當前狀態和當前輸入決定,是一種廣義的時序電路。狀態機分Moore與Mealy型。說明這兩種狀態機的特點:Moore型輸出僅取決于其所處狀態,Mealy型輸出不僅與當前狀態有關,也與當前輸入有關,更常見。舉例說明Moore 型狀態機,并畫出其狀態轉移圖,通過狀態轉移圖加強Moore型輸出僅取決于其所處狀態的理解。舉例說明Mealy型狀態機,并畫出其狀態轉移圖,通過狀態轉移圖說明Mealy型輸出不僅與當前狀態有關,也與當前輸入有關的特點。
以Moore狀態機的狀態轉換圖說明如何用VHDL來描述Moore狀態機,分為兩個進程:確定狀態轉移的進程 Chang_State,決定輸出值的進程 Output_Process。狀態轉移進程:Moore 狀態機狀態轉移與輸出 Dout 無關。當S0狀態輸入0時,仍然還在S0狀態,沒有進行狀態轉移,因此也與這種自環與狀態轉移無關。狀態轉移進程由去掉輸出和自環后的狀態轉移圖決定。根據化簡后的狀態圖寫出狀態轉移進程。CASE語句嵌套IF語句,CASE語句表示當前狀態,IF語句表示在當前狀態下,根據當前輸入決定狀態轉移。提醒學生注意:一定要有狀態機開始工作的條件,否則狀態機永遠不會工作。輸出進程:在Moore狀態機中輸出只與當前狀態相關,用一個CASE語句完成。
在上一步的基礎上,對比Moore狀態機的VHDL實現,說明Mealy狀態機的實現,仍分為兩個進程:確定狀態轉移的進程Chang_State,決定輸出值的進程 Output_Process。由于Mealy狀態機與Moore狀態機的區別只在輸出 Dout 同時與當前狀態 Si 和當前輸入有關。因此Chang_State進程的實現與Moore機相同。輸出由當前狀態和當前輸入共同決定,因此輸出進程 Output_Process也是CASE嵌套IF的格式,與狀態轉移進程類似。第九次課
內容:用狀態機實現交通燈控制器
教學目的:掌握使用狀態機實現數字系統設計的方法。教學重點、難點:在 Quartus II 中狀態機的實現方法。教學方法:圖解、舉例、演示。教學過程:
課堂教學實施過程共分四步。
說明任務與要求,進行系統分析設計,在此基礎上畫出系統框圖,確定元件模塊和元件接口與連接。回顧在Quartus II 中實現層次化設計過程,用VHDL語言實現底層模塊:計數器和控制器的設計。
重點介紹如何用狀態機設計控制器,確定狀態和狀態轉移條件,畫出狀態轉移圖,發現這是個Moore狀態機?;仡橫oore狀態機的VHDL實現,完成對控制器的設計。完成計數器和控制器的設計后,生成相應的計數器和控制器元件符號。按系統框圖建立頂層電路圖,編譯工程。第十次課
教學內容:Protel2004項目文件的管理和編輯
(一)教學目標:
1、學會在Protel2004軟件中創建相應的各種文件
2、學會在Protel2004文件中創建相應的項目
3、學會在Protel2004文件中創建相應的設計工作區 教學重點:
對Protel2004軟件中各種層級,各種種類繁多的文件的識別和創建 教學方法:演示操作法 課時安排:1課時 教學過程:
一、Protel2004包含了三級文件管理模式,分別是設計工作區,項目和文件,級別依次從高到低。而文件有分為好多種類有原理圖文件,PCB封裝文件,庫文件,腳本文件,混合信號仿真文件,又如項目文件中有包含不同項目對應得不同文件。我們只是建立幾個常用的文件
二、在Protel2004工作環境中創建原理圖文件
1、打開文件/創建/原理圖,創建一個原理圖文件,并保存。注意器保存位置和保存的文件名稱,類型擴展名。
2、打開文件/創建/PCB文件,創建一個PCB文件,并保存。注意器保存位置和保存的文件名稱,類型擴展名。
三、在Protel2004工作環境中創建項目文件
打開文件/創建/項目/PCB項目,創建一個PCB項目文件,并保存。注意器保存位置和保存的文件名稱,類型擴展名。
四、在Protel2004工作環境中創建項目文件
打開文件/創建/設計工作區,創建一個設計工作區文件,并保存。注意器保存的方法、位置和保存的文件名稱,類型擴展名。
以上在保存文件的,項目級工作區的時候有幾種不同的方法:
1、在相應的文件上點擊右鍵保存,或另存為
2、在菜單欄中文件中找出相應命令執行保存操作
五、打開工作面板projects.查看他們的結構關系。教學反思于總結:
在演示教學的同時要注意教學的節奏,應反復演示,是學生能看清楚每一個操作步驟。要求學生對于常用的文件類型的擴展名,圖形符號有所了解。第十一次課
教學內容:原理圖的設計基礎 教學目標:
1、掌握原理圖的一般設計步驟
2、熟悉Protel2004原理圖設計工具欄
3、熟練操作原理圖的圖樣的放大于縮小 教學難點:
掌握原理圖圖樣的放大于縮小的操作方法,牢記器快捷鍵操作。教學方法:講授法和演示操作法 課時安排:1課時 教學過程:
一、原理圖的一般設計步驟(講授法)原理圖的設計流程如下:
1、啟動Protel2004原理圖編輯器
新建一個原理圖文件或打開一個原理圖文件,都可以啟動原理圖編輯器,進入原理圖設計工作。
這里我們打開Protel2004自帶示例中的一個原理圖文件。
2、設置原理圖圖樣的大小及版面
3、在圖樣上放置元器件
4、對所放置元器件進行布局、布線
5、對布局、布線后的元器件進行調整
二、Protel2004 原理圖設計工具欄
這里我們打開Protel2004自帶示例中的一個原理圖文件。
Protel2004為設計者提供了方便快捷的原理圖繪制工具,分類放置在不同的工具欄中。這些工具欄,可以通過執行選單命令“視圖/工具欄”的下拉菜單進行打開和關閉。
三、圖樣的放大于縮小:
1、在視圖菜單中有一系列的圖樣于縮小命令,分別執行這些命令,觀察圖樣的變化,并記憶理解這些命令的含義和作用。熟練掌握這些命令的快捷鍵執行方式。
2、利用鍵盤實現圖樣的放大于縮小。教學反思于總結:
關于原理圖設計的一般步驟,學生只要有個大致的了解就可以了,這個過程會在以后的操作中逐漸的熟練起來。兒本節課中第三部分是重點難點。需要學生對于各個命令逐條的反復的操作,觀察器變化,這個操作過程是枯燥的,應該盡可能的提高這節課的趣味性。讓學生更積極的投入進去。第十二講
教學內容:連接線路
(一)教學目標:
1、能夠熟練的連接導線
2、學會放置線路節點
3、掌握設置網絡標號 教學重點:
1、熟練的在電路中連接導線
2、理解網絡標號的含義并能夠正確而且熟練的放置網絡標號 教學方法:演示教學法,任務完成法 課時安排:2課時 教學過程:
一、連接導線
當所有電路元器件、電源和其他對象放置完畢后,就可以進行原理圖中個對象的連線。連線的主要目的是按照電路設計的要求建立網絡的實際連通性。打開任一原理圖電路,對所教授內容進行演示。
連線的方法:執行“放置/導線命令”命令,或左鍵單擊wring工具欄中的連接導線命令。此時光標變為十字狀,進入連線狀態。當光標到達電氣引腳是,會自動出現一個紅色的“×”,單擊鼠標左鍵,確定導線的起點,拖動鼠標到終點處,單擊鼠標左鍵,一根導線結束。再次單擊開始畫第二條導線,也可單擊鼠標右鍵退出連線狀態。
Protel2004為設計者提供了四種導線模式:90度走線、45度走線、任意角度走線和自動布線。在畫導線過程中,按下shift+space鍵,可以在各種走線模式間循環切換。
二、放置線路結點
所謂線路結點,是指當兩條導線交叉時相連的狀況。如果沒有結點存在,則認為該兩條導線在電氣上是不連通的。反之,則連通。
Protel2004是設計者在繪制導線時,將在T字連線處自動產生結點,而在十字處不會自動產生結點,若設計者需要結點則必須由手工放置。
三、設置網絡標號
網絡標號是實際電氣連接的導線的序號。具有相同的網絡標號的導線,不管圖上是否連在一起,都被看做是同一條導線。它多用于多層次電路或多重式電路的各個模塊電路之間的連接,這個功能在繪制印制電路板時十分重要。
放置網絡標簽的方法:執行“放置/網絡標簽”命令,光標變成十字狀當網絡標簽于導線或引腳連接狀態時,會出現紅色的“×”標志,單擊鼠標左鍵,完成放置。同時對網絡標簽進行設置。
繪制下列電路圖,完成對所學內容的練習
教學反思與總結:
本次課中,導線和網絡標簽的使用在繪制原理圖的過程中是經常使用的,尤其是連接導線,需要反復的練習才能夠熟練的掌握。有的學生在連接導線是的終點和下一段導線的起點操作不正確,將單擊變為了雙擊,會造成元器件短路(如下圖示例)。還有就是網絡標簽的放置位置不正確,沒有注意到紅色小叉的標記,隨讓標簽也是放置在了導線或者元件的附近,但是并未形成成功的連接。第十三講
教學內容:原理圖的繪制 教學目標:
1、通過實際的大量的練習熟悉并掌握原理圖文件的設計步驟
2、通過實際的大量的練習教學重點:
熟悉并掌握原理圖的繪畫技巧 教學方法:任務式教學法 課時安排:1課時 教學過程:
繪制下面的原理圖,進行練習:
教學反思與總結:
注意I/O端口、總線、網絡標簽的繪制細節。
第五篇:EDA分頻器實驗教案
實驗三:整數分頻器的設計
一 實驗目的
了解利用類屬設計可配置的重用設計技術。二 實驗原理
利用類屬n 可以改變分頻器的分頻系數,輸出q的頻率是輸入信號clk頻率的1/n。通過給n賦不同的值,就可以得到需要的頻率。三 實驗器材 EDA實驗箱 四 實驗內容
1.參考教材第5章中5.3.1,完成整數分頻器的設計。
2.修改5.3.1中的分頻系數n,觀察仿真波形和實驗箱輸入/輸出信號的變化。3.在試驗系統上硬件驗證分頻器的功能。
在實驗三中,建議將實驗箱的實驗電路結構模式設定為模式7。輸入信號clk由鍵7的輸出來模擬,輸入信號reset_n由鍵8模擬,輸出信號q接至LED:D14。當然,也可以由實驗者設定到其它功能相似的鍵或者LED。
代碼:(參考教材第5章中5.3.1)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div is
generic(n:integer:=8);
port(clk,reset_n:in std_logic;
q: out std_logic);end div;architecture behavl_div of div is
signal count:integer range n-1 downto 0;begin
process(reset_n,clk)
begin
if reset_n='0' then q<='0';count<=n-1;
elsif(clk'event and clk='1' and clk'last_value='0')then
count<=count-1;
if count>=(n/2)then q<='0';
else q<='1';
end if;
if count<=0 then count<=n-1;
end if;
end if;end process;end behavl_div;
五 實驗注意事項
1.編寫代碼時一定要書寫規范
2模式的選擇和引腳的配置一定要合理 六 實驗報告
簡述實驗過程,將實驗項目分析設計,仿真和測試寫入實驗報告。