第一篇:eda大作業
——EDA技術與Verilog HDL
交通燈設計學 院:電子信息學院
專 業:電氣工程及其自動化 班 級:
學 號: 姓 名: 1
目錄
前言------1
一、設計任務-----------
2二、題目分析與整體構思--
2三、硬件電路設計-------3
四、程序設計-----------7
五、設計創新----------12
六、心得體會----------1
3七、參考文獻----------13
前 言
伴隨著社會的發展以及人類生活水平的提高,汽車的數量在D的DEA技術的發展和應用領域的擴大與深入,EDA技術在電子信息,通信,自動,控制及計算機應用等領域的重要性日益突出。隨著技術市場與人才市場對DEA的不斷的增加,交通的問題日益突出,單單依靠人力來指揮交通已經不可行了,所以,設計交通燈來完成這個需求就顯的越加迫切了.為了確保十字路口的行人和車輛順利、暢通地通過,往往采用電子控制的交通信號來進行指揮。以下就是運用數字電子設計出的交通燈:其中紅燈亮,表示該條路禁止通行;黃燈亮表示停車;綠燈亮表示允許通行。一﹑設計任務
1.1設計要求: 設計一個十字路口的交通燈控制系統,用實驗平臺上的LED發光二極管顯示車輛通過的方向(東西和南北各一組),用數碼管顯示該方向的剩余時間。要求:工作順序為東西方向紅燈亮45秒,前40秒南北方向綠燈亮,后5秒黃燈亮。然后南北方向紅燈亮45秒,前40秒東西方向綠燈亮,后5秒黃燈亮。依次重復。有緊急事件時允許將某方向一直開綠燈或者開紅燈,另外允許特定情況兩方向均為紅燈,車輛禁行,比如十字路口惡性交通事故時,東西,南北兩個方向均有兩位數碼管適時顯示該方向亮燈時間。
二、題目分析與整體構思
(1)該交通燈控制器應具備的功能
設東西和南北方向的車流量大致相同,因此紅、黃、綠燈的時長也相同,定為紅燈45sec,黃燈5sec,綠燈40sec,同時用數碼管指示當前狀態(紅、黃、綠)剩余時間。另外,設計一個緊急狀態,當緊急狀態出現時,兩個方向都禁止通行,指示紅燈。緊急狀態解除后,重新計數并指示時間。(2)實現方案
一 從題目中計數值與交通燈的亮滅的關系如圖(1)所示
三﹑硬件電路設計(1)分頻器
分頻器實現的是將高頻時鐘信號轉換成底頻的時鐘信號,用于觸發控制器、計數器和掃描顯示電路。該分頻器實現的是一千分頻,將一千赫茲的時鐘信號分頻成一赫茲的時鐘信號。
(2)控制器設計
控制器的作用是根據計數器的計數值控制發光二極管的亮、滅,以及輸出倒計時數值給七段數碼管的分位譯碼電路。此外,當檢測到特殊情況(HOLD=‘1’)發生時,無條件點亮紅燈的二極管。本控制器可以有兩種設計方法,一種是利用時鐘煙的下降沿讀取前級計數器的計數值,然后作出反應;另一種則是將本模塊設計成純組合邏輯電路,不需要時鐘驅動。這兩種方法各有所長,必須根據所用器件的特性進行選擇:比如有些FPGA有豐富的寄存器資源,而且可用與組合邏輯的資源則相對較少,那么使用第一種方法會比較節省資源;而有些CPLD的組合邏輯資源則比較多,用第二種方法可能更好。
(3)計數器設計
這里需要的計數器的計數范圍為0-90。計到90后,下一個時鐘沿回復到0,開始下一輪計數。此外,當檢測到特殊情況(HOLD=‘1’)發生是,計數器暫停計數,而系統復位信號RESET則使計數器異步清零。
(4)分位譯碼電路設計--1 因為控制器輸出的到計時數值可能是1位或者2位十進制數,所以在七段數碼管的譯碼電路前要加上分位電路(即將其分為2個1位的十進制數,如25分為2和5,7分為0和7)。
與控制器一樣,分位電路同樣可以由時鐘驅動,也可以設計成純組合邏輯電路。控制器中,引入了寄存器。為了讓讀者開拓眼界,分位電路就用組合邏輯電路實現。
(5)分位譯碼電路設計—2
(6)數碼管驅動設計
串行連接,即每個數碼管對應的引腳都接在一起(如每個數碼管的a引腳都接到一起,然后再接到CPLD/FPGA上的一個引腳上),通過控制公共端為高電平控制相應數碼管的亮、滅(共陰極數碼管的公共端為高電平時,LED不亮;共陽極的公共端為低電平時,LED不亮)。
串行法的優點在于消耗的系統資源少,占用的I/O口少,N個數碼管只需要(7+N)個引腳(如果需要小數點,則是(8+N)個引腳)。其缺點是控制起來不如并行法容易。
(7)下圖為交通燈控制器的頂層文件連接圖
四、程序設計
(1)分頻器的設計
LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;
ENTITY FreDevider IS PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END;
ARCHITECTURE Devider OF FreDevider IS CONSTANT N:Integer:=499;signal counter:Integer range 0 to N;signal Clk:Std_Logic;BEGIN PROCESS(Clkin)begin IF rising_edge(Clkin)THEN
IF Counter=N then counter<=0;Clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;
四、程序設計
(1)分頻器的設計
LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;
ENTITY FreDevider IS PORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END;
ARCHITECTURE Devider OF FreDevider IS CONSTANT N:Integer:=499;signal counter:Integer range 0 to N;signal Clk:Std_Logic;BEGIN PROCESS(Clkin)begin IF rising_edge(Clkin)THEN IF Counter=N then counter<=0;Clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;(3)計數器的設計
這里計數器的計數范圍為0—45S。計到45后,下一個時鐘沿回復到0,開始下一輪計數.此外,當檢測到特殊情況(Hold=‘1‘)發生時,計數器暫停計數,而系統復位號Reset則使計數器異步清0。程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY counter IS PORT(clock:IN STD_LOGIC;reset:in std_logic;Hold:in std_logic;countNum:BuFFeR INTEGER RANGE 0 TO 90);END;ARCHITECTURE behavior OF counter IS BEGIN process(reset,Clock)BEGIN IF Reset='1' THEN countNum<=0;ELSIF rising_edge(Clock)THEN IF Hold='1' then countNum<=countNum;ELSE IF countNum=90 THEN countNum<=0;ELSE countNum<=countNum+1;END IF;END IF;END IF;END PROCESS;END;(4)分位譯碼電路設計--1 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei IS PORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9);END;
ARCHITECTURE behavior OF Fenwei IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THEN NumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THEN NumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THEN NumA<=1;NumB<=Numin-10;ELSE NumA<=0;NumB<=Numin;END IF;END PROCESS;END;
(5)分位譯碼電路設計—2 USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei2 IS PORT(Numin:IN integer RANGE 0 TO 45;NumC,NumD:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF Fenwei2 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumC<=4;NumD<=Numin-40;ELSIF Numin>=30 THEN NumC<=3;NumD<=Numin-30;
ELSIF Numin>=20 THEN NumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THEN NumC<=1;NumD<=Numin-10;ELSE NumC<=0;NumD<=Numin;END IF;END PROCESS;END;
(6)數碼管驅動設計 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY bcd_data IS PORT(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF bcd_data IS BEGIN process(bcd_data)BEGIN case bcd_data is when “0000”=>segout<=“1111110”;when “0001”=>segout<=“0110000”;when “0010”=>segout<=“1101101”;when “0011” =>segout<=“1111001”;when “0100” =>segout<=“0110011”;when “0101”=>segout<=“1011011”;when “0110”=>segout<=“0011111”;when “0111”=>segout<=“1110000”;when “1000” =>segout<=“1111111”;when “1001” =>segout<=“1110011”;when others =>null;END CASE;END PROCESS;END;
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY dtsm IS PORT(clk:in STD_LOGIC;NumA,NumB,NumC,NumD: in STD_LOGIC_VECTOR(3 downto 0);segout1:out STD_LOGIC_VECTOR(6 downto 0);led_sel: out STD_LOGIC_VECTOR(3 downto 0));END dtsm;architecture bhv of dtsm is component bcd_data is port(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout:out STD_LOGIC_VECTOR(6 downto 0));end component;signal x:STD_LOGIC_VECTOR(3 downto 0);signal q:STD_LOGIC_VECTOR(1 downto 0);begin p1:process(clk)begin if clk'event and clk ='1' then Q<= Q + '1';end if;end process;
p2:process(Q)begin case Q is when“00”=>led_sel<=“1110”;x<=NumD;when“01”=>led_sel<=“1101”;x<=NumC;when“10”=>led_sel<=“1011”;x<=NumB;when“11”=>led_sel<=“0111”;x<=NumA;when others=>null;end case;end process;u1:bcd_data PORT map(bcd_data=>x,segout=>segout1);end
五﹑設計創新
1﹑模塊化編程,模塊化接線,再編譯總原理圖,思路比較清楚解容易。2﹑可以比較容易的改變紅綠燈的時間。3﹑有的模塊可以供其它任務通用。
六﹑心得體會
EDA設計我感覺程序調試最重要,試驗軟件、硬件熟悉其次。我在編完各模塊程序之后,編譯查錯最初有三十幾個錯誤,有輸入錯誤、語法錯誤。一遍一遍的變異查錯,直到沒有錯誤。必須注意工程名和實體名一致,不然一般會出錯。在沒有錯誤之后可以進行波型仿真。若與理想的不同,再查看程序,有無原理上的編輯錯誤或沒有查出的輸入錯誤。都通過可以進行管腳配對,把程序燒入芯片,在實物機上看結果,從顯示中得出還需改正的地方,再去改程序。必須注意沒改一次都要編譯,重新燒入。七﹑參考文獻
(1)楊頌華 ;數字電子技術基礎.西安:西安電子科技大學。
(2)黃任;2005;VHDL入門.解惑.經典實例.經驗總結.北京:北京航空航天大學出版社。
(3)徐志軍,徐光輝.2002.CPLD/FPGA的開發與應用.北京:電子工業出版社。
(4)褚振勇.FPGA設計與應用.西安:西安電子科技大學出版社。
第二篇:eda大作業
班 級 021291 學 號 02129057
EDA實驗報告
學 院 電子工程學院
專 業 電子信息工程
學生姓名
02129057
導師姓名
糾博
交通控制器
一. 設計目標
設計一個十字路口交通控制系統,其東西,南北兩個方向除了有紅、黃、綠燈指示是否允許通行外,還設有時鐘,以倒計時方式顯示每一路允許通行的時間,綠燈,黃燈,紅燈的持續時間分別是70、5和75秒。當東西或南北兩路中任一道上出現特殊情況,例如有消防車,警車要去執行任務,此時交通控制系統應可由交警手動控制立即進入特殊運行狀態,即兩條道上的所有車輛皆停止通行,紅燈全亮,時鐘停止計時,且其數字在閃爍。當特殊運行狀態結束后,管理系統恢復原來的狀態,繼續正常運行。
二. 設計思路與實施方案
1.設計目標思路整理
①
在十字路口的兩個方向上各設一組紅、綠、黃燈,顯示順序為其中一方向(東西方向)是綠燈、黃燈、紅燈;另一方向(南北方向)是紅燈、綠燈、黃燈。
②
設置一組數碼管,以倒計時的方式顯示允許通行或禁止通行的時間,其中綠燈、黃燈、紅燈的持續時間分別是70s、5s和75s。
③
當各條路上任意一條上出現特殊情況時,如當消防車、救護車或其他需要優先放行的車輛通過時,各方向上均是紅燈亮,倒計時停止,且顯示數字在閃爍。當特殊運行狀態結束后,控制器恢復原來狀態,繼續正常運行。
2.原理分析
本系統主要由分頻器,計數器,控制器,倒計時顯示器等電路組成。分頻器將晶振送來的50MHZ信號變為1HZ時鐘信號;計數器實現總共150秒的計數,它也是交通控制系統的一個大循環;控制器控制系統的狀態轉移和紅黃綠燈的信號輸出;倒計時顯示電路實現75秒,70秒及5秒的倒計時和顯示功能。整個系統的工作時序受控制器控制,是系統的核心。基于此,做出交通控制系統的轉移圖如下:
其中,s0:A方向綠燈亮,B方向紅燈亮,此狀態持續70秒;
S1:A方向黃燈亮,B方向紅燈亮,此狀態持續5秒;
S2:A方向紅燈亮,B方向綠燈亮,此狀態持續70秒;
S3:A方向紅燈亮,B方向黃燈亮,此狀態持續5秒;
S4:緊急制動狀態,A方向紅燈亮,B方向紅燈亮,當hold=‘0‘時進入這種狀態。
當緊急制動信號無效時,狀態按照s0—s1—s2—s3—s0循環;當緊急制動信號有效時,立即進入s4,兩個方向紅燈全亮,計數器停止計數。
三. 設計過程
1.電路設計
交通控制系統頂層原理圖如下圖示,它主要由50MHZ分頻器模塊,控制器,倒計時計數器模塊,7段數碼管組成。
(1)分頻器的設計
分頻器外部接口如右圖所示:
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity fp50m is port(clk : in std_logic;
reset : in std_logic;
clk_out: out std_logic);end entity fp50m;
architecture behavior of fp50m is signal count : std_logic_vector(31 downto 0);signal Q:std_logic;begin process(reset,clk)
begin if(reset = '0')then
count <=(others=>'0');--復位計數器
elsif clk'event and clk='1' then
count<=count+1;
if(count = 25000000)then
Q<= not Q;--反置輸出
count <=(others=>'0');
end if;
end if;
clk_out<=Q;end process;end architecture behavior;由于50MHz過大,在這里就不展示分頻時序圖。(2)控制器的設計
控制器control的邏輯符號如下圖所示。其中,clk為時鐘輸入信號;hld為緊急制動信號;ared,agreen,ayellow為東西方向驅動紅燈,綠燈及黃燈指示的輸出信號;bred,bgreen,byellow分別為南北方向驅動紅燈。綠燈及黃燈指示的輸出信號。控制器按照上邊的狀態轉移圖所示控制系統的時序,即為個方向紅,綠,黃燈的亮滅時間。control的VHDL描述文件control.vhd: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity control is
port(clk,hold:in std_logic;
ared,agreen,ayellow,bred,bgreen,byellow:out std_logic);end control;
architecture behavior of control is
type state_type is(s0,s1,s2,s3,s4);
signal current_state,next_state:state_type;
signal counter:std_logic_vector(6 downto 0);
begin synch:process begin
wait until clk'event and clk='1';
if hold='0' then
--當緊急制動信號有效時,計數器停止工作
counter<=counter;
else
--當緊急制動信號無效時,計數器進行周期為150s的計數
if counter<149 then
counter<=counter+1;
else
counter<=(others=>'0');
end if;
end if;end process;
process
--狀態機的狀態轉移描述 begin
wait until clk'event and clk='1';
current_state<=next_state;end process;
state_trans:process(current_state)begin
case current_state is when s0=>
if hold='0' then
next_state<=s4;
else
if counter<69 then
next_state<=s0;
else
next_state<=s1;
end if;
end if;when s1=>
if hold='0' then
next_state<=s4;
else
if counter<74 then
next_state<=s1;
else
next_state<=s2;
end if;
end if;when s2=>
if hold='0' then
next_state<=s4;
else
if counter<144 then
next_state<=s2;
else
next_state<=s3;
end if;
end if;when s3=>
if hold='0' then
next_state<=s4;
else
if counter<149 then
next_state<=s3;
else
next_state<=s0;
end if;
end if;when s4=>
if hold='0' then
next_state<=s4;
else
if counter<69 then
next_state<=s0;
elsif counter<74 then
next_state<=s1;
elsif counter<144 then
next_state<=s2;
elsif counter<149 then
next_state<=s3;
end if;
end if;
end case;end process;
output:process(current_state)begin case current_state is when s0=>
ared<='0';
agreen<='1';
ayellow<='0';
bred<='1';
bgreen<='0';
byellow<='0';when s1=>
ared<='0';
agreen<='0';
ayellow<='1';
bred<='1';
bgreen<='0';
byellow<='0';
--每種狀態下兩個路口紅綠燈的狀態描述
when s2=>
ared<='1';
agreen<='0';
ayellow<='0';
bred<='0';
bgreen<='1';
byellow<='0';when s3=>
ared<='1';
agreen<='0';
ayellow<='0';
bred<='0';
bgreen<='0';
byellow<='1';when s4=>
ared<='1';
agreen<='0';
ayellow<='0';
bred<='1';
bgreen<='0';
byellow<='0';when others => NULL;end case;end process;end behavior;
control的時序圖
由圖可以看出緊急制動有效,即’hold’=0時,兩個方向都是紅燈。而緊急制動無效時,為s1狀態,一方為綠燈,另一方紅燈。(3)倒計時計數器upm75(x)的設計 倒計時計數器upm75(x)的邏輯符號如下圖所示。其中,clk,cr分別為時鐘和清零端,en0~en2分別表示倒計數75s,70s,5s使能端,ql[3..0],qh[3..0],oc分別為BCD碼的個位,十位跟進位輸出。
VHDL描述upm75(x).vhd如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity upm75 is
--實體聲明 port(clk:in std_logic;
en0,en1,en2:in std_logic;
cr,hld:in std_logic;
ql,qh:out std_logic_vector(3 downto 0);
oc:out std_logic);end upm75;
architecture behavior of upm75 is
--結構體
signal coul,couh:std_logic_vector(3 downto 0);begin
process(cr,clk,hld,en0,en1,en2)
begin
if cr='0' then
--異步清零
coul<=“0000”;
couh<=“0000”;
elsif clk'event and clk='1' then
if hld='1' then
--緊急制動無效時,計數器正常計數
if en0='1' then
--en0有效,倒計時75s
if(coul=0 and couh=0)then
--減法記到00后,重新指數75
coul<=“0101”;
couh<=“0111”;
elsif coul=0 then
--否則,個位記到0時置為9,十位減1
coul<=“1001”;
couh<=couh-1;
else
coul<=coul-1;
--否則,個位減1
end if;
end if;
if en1='1' then
--en1有效,倒計時70s
if(coul=0 and couh=0)then
coul<=“0000”;
couh<=“0111”;
elsif coul=0 then
coul<=“1001”;
couh<=couh-1;
else
coul<=coul-1;
end if;
end if;
if en2='1' then
--en2有效,倒計時5s
if(coul=0 and couh=0)then
coul<=“0101”;
couh<=“0000”;
elsif coul=0 then
coul<=“1001”;
couh<=couh-1;
else
coul<=coul-1;
end if;
end if;
else
coul<=coul;
--緊急制動有效時,各位保持不變
couh<=couh;
end if;
end if;
end process;
process(coul,couh)
begin
if(coul=0 and couh=0)then
--減到00時,借位輸出
oc<='1';
else
oc<='0';
end if;
end process;
ql<=coul;
qh<=couh;end behavior;倒計時的時序仿真圖如下: 1.75s倒計時
由圖可以看出緊急制動有效時,停止計時,一直持續在75s,滿足要求。2.70s倒計時
3.5s倒計時
(4)七段數碼管的設計
分頻器外部接口如右圖所示: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S IS
PORT(A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
hold:IN STD_LOGIC;
clk:IN STD_LOGIC;
LED7S : OUT STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE one OF DECL7S IS BEGIN PROCESS(A)BEGIN if(hold = '0' and clk = '1')then LED7S <= “0000000”;elsif(hold = '1')then 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 “1010” => LED7S <= “1110111”;WHEN “1011” => LED7S <= “1111100”;WHEN “1100” => LED7S <= “0111001”;WHEN “1101” => LED7S <= “1011110”;WHEN “1110” => LED7S <= “1111001”;WHEN “1111” => LED7S <= “1110001”;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS;END;
三. 遇到的問題及解決方法
1.七段數碼管顯示的數字并不是1,2,3…,將LED7S的輸出取反后,得到了正確的結果; 2.倒計時開始設計的是從74s,69s,4s開始計時的,后改為75s,70s,5s;
3.緊急制動有效時,計時停止,但不閃爍,之后在DECL7S程序里加入了時鐘,能夠達到閃爍的效果。
四. 綜合時序仿真結果及功能分析
總體電路圖如下:
總體時序仿真:
由于50MHz太大,看不出多種狀態間的變化,但通過仿真圖可以看出一方是綠燈,而另一方是紅燈。
五. 小結及心得體會
在本次實驗中我選擇的是交通燈,輸出有很多種情況。該系統主要由分頻器,計數器,控制器,倒計時顯示器等電路組成。其中,分頻器與七段數碼管是小作業的時候做好的,控制器與倒計時計數器參考數電書完成。在實驗過程中,出現了很多的問題,多虧了同學和老師的幫助,有很多問題都是由于粗心導致的,這又一次說明了編程是需要細心和耐心的,一個小小的錯誤就會影響到整個運行結果。所以我覺得,結果固然重要,但是自己真正投入努力的過程更是值得被體會。
第三篇:EDA作業 單管低頻放大器
貴州大學科技學院2010級 電科班
王斌
GUIZHOU UNIVERSITY EDA實驗報
告
實驗課程名稱 EDA技術與實驗 實驗項目名稱 單管低頻放大器 學 院 科技學院 專 業 班 級 2010級電子信息科學與技術 學 生 姓 名 王斌 學 號 1020040464 任 課 教 師 李良榮
貴州大學科技學院2010級 電科班
王斌
單管低頻放大器
1、實驗目的
(1)學習元器件的放置和手動、自動連線方法;(2)熟悉元器件標號及虛擬元件值的修改方法;(3)熟悉節點及標注文字的放置方法;(4)熟悉電位器的調整方法;(5)熟悉信號源的設置方法;(6)熟悉示波器的使用方法;
(7)熟悉放大器的主要性能指標的測試方法;
(8)熟悉示波器、信號源、萬用表、電壓表、電流表的應用方法;(9)學習實驗報告的書寫方法。
2、實驗內容 a:測試電路如圖
圖1——0(1)測量Ic 常規方法測量Ve。用Ie=Ve/Re ≈ Ic計算集電極電流。如圖1——1所示。測試的Ve=1.589V
Ie?Ic?Ib?I c
?
Ic?則Ie=Ve/Re ≈ Ic=1.589mA
VERE?1.5891000=1.589V 2
貴州大學科技學院2010級 電科班
王斌
檢測是否正確:如圖1——2
圖1——2 測試正確!
結論:測試看出,兩種方法的結果是有些誤差的,原因在于RE的值是有誤差的,調入器件時計算機在器件的誤差范圍內任意取值作計算依據,在實際電路中也往往如此,用萬用表測量晶體管發射極電阻上的電壓來測量電路的Ic是實際電路的設計時的一般方法。
(2)信號發生器設置正旋波,f=1KHZ,V=10mV;
如圖1——3
貴州大學科技學院2010級 電科班
王斌
圖1——3 仿真,調整示波器觀察后得到結果。
A通道(x1,y1)=(221.048ms ,-1.146v)、B通道為(222.085ms , 9.995mV)。利用兩條時間差可以分析信號的周期、頻率等參數(圖中T2-T1=1.036ms為周期)。信號類型為“DC”方式,波形包含直流成分,“0”禁止輸入,“AC”方式不包含直流成分。
結論:保持信號源不變,調整R5為5000(接入電阻的阻值為50?5000=25K?,如果滑動變阻器增大,調到7400左右),信號輸出幅度最大,失真較小,則R5的取值在56K?左右
貴州大學科技學院2010級 電科班
王斌
最佳。
(3)調整R5,在示波器上觀察波形,是波形輸出幅度最大,且不失真;
a:減小電阻會使電路失真,且截止失真;
b:真大電阻會是電路的放大倍數增大;
(4)測量單管放大器的輸入輸出電阻RI、R0;
貴州大學科技學院2010級 電科班
王斌
輸入電阻:
RI?VIRVS?VI?VIII=
7.0713.693?10?3?1.914k?
輸出電阻:用“替代法”計算R0,閉合開關,得到VL的值為4.614mv,斷開開關,得到V0的值為4.722mv。
貴州大學科技學院2010級 電科班
王斌
R0?(V0VL?1)?3?10?3?4.722?3???1??3?10?7.022k? ?4.614?
(5)用“失真度測量儀”測量電路的失真度;
在輸入信號3mV,f=1KHZ時,測得失真度:2.767%。在輸入信號10mV,f=1KHZ時,測得失真度:9.193%。如圖1——4。
結論:電路的失真度為9.193% 7
貴州大學科技學院2010級 電科班
王斌
圖1——4(6)用“波特圖示儀”測試電路的幅頻特性曲線。
根據帶寬的測量原理,移動測試指針,使幅度值下降3dB,找到半功率點=26.459MHZ。如圖1——5
=23.698HZ,圖1——5 測得fw?fH?fL?26.459MHZ。
貴州大學科技學院2010級 電科班
王斌
心得:通過這次實驗讓我對Multisim 更進一步的了解和學習,也對很多電路的分析應用加深了了解。!
第四篇:EDA實驗報告
實驗一:
QUARTUS II 軟件使用及組合電路設計仿真
實驗目的:
學習QUARTUS II 軟件的使用,掌握軟件工程的建立,VHDL源文件的設計和波形仿真等基本內容。
實驗內容:
1.四選一多路選擇器的設計 基本功能及原理 :
選擇器常用于信號的切換,四選一選擇器常用于信號的切換,四選一選擇器可以用于4路信號的切換。四選一選擇器有四個輸入端a,b,c,d,兩個信號選擇端s(0)和s(1)及一個信號輸出端y。當s輸入不同的選擇信號時,就可以使a,b,c,d中某一個相應的輸入信號與輸出y端接通。
邏輯符號如下:
程序設計:
軟件編譯:
在編輯器中輸入并保存了以上四選一選擇器的VHDL源程序后就可以對它進行編譯了,編譯的最終目的是為了生成可以進行仿真、定時分析及下載到可編程器件的相關文件。仿真分析:
仿真結果如下圖所示
分析:
由仿真圖可以得到以下結論:
當s=0(00)時y=a;當s=1(01)時y=b;當 s=2(10)時y=c;當s=3(11)時y=d。符合我們最開始設想的功能設計,這說明源程序正確。2.七段譯碼器程序設計 基本功能及原理:
七段譯碼器是用來顯示數字的,7段數碼是純組合電路,通常的小規模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數字系統中的數據處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實現。本項實驗很容易實現這一目的。輸出信號的7位分別接到數碼管的7個段,本實驗中用的數碼管為共陽極的,接有低電平的段發亮。數碼管的圖形如下
七段譯碼器的邏輯符號:
程序設計:
軟件編譯:
在編輯器中輸入并保存了以上七段譯碼器的VHDL源程序后就可以對它進行編譯了,編譯的最終目的是為了生成可以進行仿真、定時分析及下載到可編程器件的相關文件
。仿真分析:
仿真結果如下圖所示:
分析: 由仿真的結果可以得到以下結論:
當a=0(0000)時led7=1000000 此時數碼管顯示0; 當a=1(0001)時led7=1111001 此時數碼管顯示1; 當a=2(0010)時led7=0100100 此時數碼管顯示2; 當 a=3(0011)時led7=0110000 此時數碼管顯示3; 當 a=4(0100)時led7=0011001 此時數碼管顯示4; 當 a=5(0101)時led7=0010010 此時數碼管顯示5; 當 a=6(0110)時led7=0000010 此時數碼管顯示6; 當 a=7(0111)時led7=1111000 此時數碼管顯示7; 當 a=8(1000)時led7=0000000 此時數碼管顯示8; 當a=9(1001)時led7=0010000 此時數碼管顯示9; 當a=10(1010)時led7=0001000 此時數碼管顯示A; 當a=11(1011)時led7=0000011 此時數碼管顯示B; 當 a=12(1100)時led7=1000110 此時數碼管顯示C; 當a=13(1101)時led7=0100001 此時數碼管顯示D; 當a=14(1110)時led7=0000110 此時數碼管顯示E; 當a=15(1111)時led7=0001110 此時數碼管顯示F;
這完全符合我們最開始的功能設計,所以可以說明源VHDL程序是正確的。
實驗心得:
通過這次實驗,我基本掌握了QUARTUS II軟件的使用,也掌握了軟件工程的建立,VHDL源文件的設計和波形仿真等基本內容。在實驗中,我發現EDA這門課十分有趣,從一個器件的功能設計到程序設計,再到編譯成功,最后得到仿真的結果,這其中的每一步都需要認真分析,一遍又一遍的編譯,修改。當然,中間出現過錯誤,但我依然不放棄,一點一點的修改,驗證,最終終于出現了正確的仿真結果,雖然有一些毛刺,但是總的來說,不影響整體的結果。
實驗二:計數器設計與顯示
實驗目的:
(1)熟悉利用QUARTUS II中的原理圖輸入法設計組合電路,掌握層次化的設計方法;
(2)學習計數器設計,多層次設計方法和總線數據輸入方式的
仿真,并進行電路板下載演示驗證。實驗內容:
1.完成計數器設計
基本功能及原理:
本實驗要設計一個含有異步清零和計數使能的4位二進制加減可控計數器,即有一個清零端和使能端,當清零端為1時異步清零,即所有輸出值都為0,當使能端為0時,計數器停止工作,當使能端為1時,正常工作,由時鐘控制。另外,還應該有一個控制端,當控制端為0時,進行減法運算,當控制端為1時,進行加法運算。輸出端有輸出值和進位端,當進行加法運算時,輸出值遞增,當減法運算時,輸出值遞減,同時進位端進行相應的變化。
4位二進制加減計數器的邏輯符號:
程序設計:
軟件編譯:
在編輯器中輸入并保存了以上4位二進制加減計數器的VHDL源程序后就可以對它進行編譯了,編譯的最終目的是為了生成可以進行仿真、定時分析及下載到可編程器件的相關文件。仿真分析: 仿真結果如下:
分析:
由仿真圖可以得到以下結論:
當enable端為0時,所有數值都為0,當enable端為1時,計數器正常工作;當reset端為1時,異步清零,所有輸出數值為0,當reset端為0時,正常工作;當updown端為0時,進行減法運算,當updown為1時,進行加法運算;另外,當程序進行減法運算時,出現借位時,co為1,其余為0,當進行加法運算時,出現進位時,co為1,其余為0。圖中所有的功能與我們設計的完全一樣,所以說明源程序正確。2.50M分頻器的設計
基本功能及原理:
50M分頻器的作用主要是控制后面的數碼管顯示的快慢。即一個模為50M的計數器,由時鐘控制,分頻器所有的端口基本和上述4位二進制加減計數器的端口一樣,原理也基本相同。分頻器的進位端(co)用來控制加減計數器的時鐘,將兩個器件連接起來。50M分頻器的邏輯符號如下:
程序設計:
軟件編譯:
在編輯器中輸入并保存了以上50M分頻器的VHDL源程序后就可以對它進行編譯了,編譯的最終目的是為了生成可以進行仿真、定時分析及下載到可編程器件的相關文件。仿真分析: 結果如下:
上圖為仿真圖的一部分,由于整個圖太大,所以顯示一部分即可,其余部分如圖以上圖規律一直遞增,直到50M為止,然后再重復,如此循環。
上圖是部分輸出的顯示,由于整個圖太大,所以只顯示部分,其余部分如圖遞增。
分析:
由仿真圖可以看出,當reset為0,enable為1時(因為本實驗中計數器的模值太大,為了盡可能多的觀察出圖形,可讓reset一直為0,enable一直為1,即一直正常工作),輸出值由0一直遞增到50M,構成一個加法計數器,與我們設計的功能一致。3.七段譯碼器程序設計
基本功能及原理:
七段譯碼器是用來顯示數字的,7段數碼是純組合電路,通常的小規模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數字系統中的數據處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實現。本項實驗很容易實現這一目的。輸出信號的7位分別接到數碼管的7個段,本實驗中用的數碼管為共陽極的,接有低電平的段發亮。
七段譯碼器的邏輯符號:
程序設計:
軟件編譯:
在編輯器中輸入并保存了以上七段譯碼器的VHDL源程序后就可以對它進行編譯了,編譯的最終目的是為了生成可以進行仿真、定時分析及下載到可編程器件的相關文件。仿真分析:
仿真結果如下圖所示:
分析:具體分析與實驗一中七段譯碼器的分析相同,在此不再贅述。計數器和譯碼器連接電路的頂層文件原理圖:
原理圖連接好之后就可以進行引腳的鎖定,然后將整個程序下載到已經安裝好的電路板上,即可進行仿真演示。
實驗心得:
經過本次試驗,我學到了很多。首先,我加強了對QUARTUS II軟件的掌握;其次,我掌握了電路圖的頂層文件原理圖的連接,學會了如何把自己設計的程序正確的轉化為器件,然后正確的連接起來,形成一個整體的功能器件;最后,我學會了如何安裝以及如何正確的把完整的程序下載到電路板上,并進行演示驗證。
實驗三:大作業設計
(循環彩燈控制器)
實驗目的:
綜合應用數字電路的各種設計方法,完成一個較為復雜的電路設計。實驗內容:
流水燈(循環彩燈)的設計 設計任務:
設計一個循環彩燈控制器,該控制器可控制10個發光二極管循環點亮,間隔點亮或者閃爍等花型。要求至少三種以上花型,并用按鍵控制花型之間的轉換,用數碼管顯示花型的序號。基本原理:
該控制器由兩部分組成,一部分是一個50M的分頻器,其主要用來控制花色變化的快慢;另一部分是一個彩燈控制器,該彩燈控制器可由兩個開關控制花型的序號,10個輸出分別控制10個發光二極管的亮暗,當輸出為1時,該發光二極管亮,輸出為0時,該二極管滅。將分頻器的co端用來控制彩燈控制器的時鐘,將兩個器件連接起來。1.分頻器的設計
50M分頻器與實驗二中的分頻器一樣,這里不再贅述。2.彩燈控制器的設計 基本原理:
該彩燈控制器由時鐘控制,reset異步清零,enable當做使能端,由兩個開關do(0-1)來控制選擇不同的花型,10個輸出端lig(0-9)來控制10個LED燈的亮滅。因為用了兩個開關來控制花型,所以一共有4種花色。
彩燈控制器的邏輯符號:
程序設計:
3.七段譯碼器的設計
七段譯碼器是用來顯示不同花型的序號的,其設計與實驗一中的設計一樣,這里不再贅述。循環彩燈控制器的原理圖:
仿真波形如下: 第一種花型:
第二種花型:
第三種花型:
第四種花型:
仿真分析:
將以上仿真波形圖和源程序對比,我們可以看到,仿真出來的波形和我們設計的功能一致,這說明源VHDL程序是正確的。實驗心得:
本次試驗是在沒有老師指導的情況下自己完成的,我在參考了網上的程序的情況下,最終成功的設計并正確的演示出了循環彩燈的不同花型。通過本次試驗,我真正的體會到了DEA這門課的樂趣,也發現它對我們的學習和生活帶來很大的方便。
第五篇:EDA學習心得
EDA
專業;姓名;學號;學習心 得
劉華
201530220109
電氣自動化技術
本學期對EDA技術的學習為我的專業知識學習打開了一個全新的窗口——微電子技術領域。對EDA技術,我更是有了全新的認識。
微電子技術的進步主要表現在大規模集成電路加工技術即半導體工藝技術的發展上,使得表征半導體工藝水平的線寬已經達到了納米級。所以,集成電路設計正在不斷地向超大規模、極低功耗和超高速的方向發展。
而現代電子設計技術的核心已日趨轉向基于計算機的電子設計自動化技術,即EDA技術。EDA技術就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL為系統邏輯描述手段完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優化和仿真測試,直至實現既定的電子線路系統功能。EDA技術使得設計者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統硬件功能的實現,這是電子設計技術的一個巨大進步。EDA技術在進入21世紀后,得到了更大的發展。嵌入式處理器軟核的成熟,使得SOPC步入大規模應用階段。電子技術領域全方位融入EDA技術,除了日益成熟的數字技術外,傳統的電路系統設計建模理念發生了重大的變化。同時,EDA使得電子領域各學科的界限更加模糊,更加互為包容。這些都利于設計人員利用EDA技術進行電子系統設計,如全定制或半定制ASIC設計,FPGA/CPLD開發應用和印制電路板 從EDA技術的特點不難看出,相比于傳統的數字電子系統或IC設計,EDA技術擁有獨特的優勢。在傳統的數字電子系統或IC設計中,手工設計占了較大的比例。因此,也存在很多缺點。例如:復雜電路的設計、調試十分困難;由于無法進行硬件系統仿真,如果某一過程存在錯誤,查找和修改十分不便;設計過程中產生大量文檔,不易管理;可移植性差等。相比之下,EDA技術有很大不同。它運用HDL對數字系統進行抽象的行為與功能描述到具體的內部線路結構描述,從而可以在電子設計的各個階段、各個層次進行計算機模擬驗證,保證設計過程的正確性,可以大大降低設計成本,縮短設計周期。由于有各類庫的支持,能夠完成各種自動設計過程。它極大地簡化了設計文檔的管理,邏輯設計仿真測試技術也日益強大。VHDL在現在的EDA設計中使用最多,也擁有幾乎所有主流EDA工具的支持。VHDL作為一個規范語言和建模語言,不僅可以作為系統模擬的建模工具,而且可以作為電路系統的設計工具,可以利用軟件工具將VHDL源碼自動地轉化為文本方式表達的基本邏輯元件連接圖,即網表文件。這種方法顯然對于電路自動設計是一個極大的推進。它具有很強的電路描述和建模能力,能從多個層次對數字系統進行建模和描述,從而大大簡化了硬件設計任務,提高了設計效率和可靠性。EDA技術良好的可移植性與可 測試性,將所有設計環節納入統一的自頂向下的設計方案中。它不但在整個設計流程上充分利用計算機的自動設計能力、在各個設計層次上利用計算機完成不同內容的仿真模擬,而且在系統板設計結束后仍可利用計算機對硬件系統進行完整的測試
書中通過大量的圖示對PLD硬件特性與編程技術進行了形象的講解,不僅融合了之前學習的關于電路設計的知識還將EDA的技術加入其中。對VHDL語言的詳盡講解更是讓我深刻理解了VHDL語言的編程原理。由于本門課程是一門硬件學習課程,所以實驗必不可少。通過課程最后實驗,我體會一些VHDL語言相對于其他編程語言的特點。
相對于其它計算機語言的學習,如C 或匯編語言,VHDL 具有明顯的特點。這不僅僅是由于VHDL 作為一種硬件描述語言的學習需要了解較多的數字邏輯方面的硬件電路知識,包括目標芯片基本結構方面的知識更重要的是由于VHDL 描述的對象始終是客觀的電路系統。由于電路系統內部的子系統乃至部分元器件的工作狀態和工作方式可以是相互獨立、互不相關的,也可以是互為因果的。這表明,在任一時刻,電路系統可以有許多相關和不相關的事件同時并行發生。例如可以在多個獨立的模塊中同時入行不同方式的數據交換和控制信號傳輸,這種并行工作方式是任何一種基于CPU 的軟件程序語言所無法描繪和實現的。傳統的軟件編程語言只能根據CPU 的工作方式,以排隊式指令的形式來對特定的事件和信息進行控制或接收。在CPU 工作的任一時間段內只能完成一種操作。因此,任何復雜的程序在一個單CPU 的計算機中的運行,永遠是單向和一維的。因而程序設計者也幾乎只需以一維的思維模式就可以編程和工作了。
VHDL 雖然也含有類似于軟件編程語言的順序描述語句結構,但其工作方式是完全不同的。軟件語言的語句是根據CPU 的順序控制信號,按時鐘節拍對應的指令周期節拍逐條運行的,每運行一條指令都有確定的執行周期。但VHDL 則不同,從表面上觀,VHDL 的順序語句與軟件語句有相同的行為描述方式,但在標準的仿真執行中有很大的區別。VHDL 的語言描述只是綜合器賴以構成硬件結構的一種依據,但進程語句結構中的順序語句的執行方式決非是按時鐘節拍運行的。實際情況是其中的每一條語句的執行時間幾乎是0(但該語句的運行時間卻不一定為0),即1000 條順序語句與10 條順序語句的執行時間是相同的。在此,語句的運行和執行具有不同的概念(在軟件語言中,它們的概念是相同),的執行是指啟動一條語句,允許它運行一次,而運行就是指該語句完成其設定的功能。通過實驗,我認識到理論要與實際結合,培養動手動腦能力的重要性,做事情要抱著一絲不茍的態度,這樣才能做好事情。同時也入一步了解到EDA的強大之處,硬件電路的優秀的地方,對硬件方面更感興趣了。這門課程的學習,為我以后的專業知識的學習打下了良好的基礎。