版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 2013年 3 月8日</p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 課程 EDA技術(shù)課程設(shè)計(jì)</p><p> 題目 交通燈控制器</p><p> 專業(yè) 電子信息工程 姓名
2、 學(xué)號(hào) </p><p> 主要內(nèi)容、基本要求、主要參考資料等</p><p><b> 主要內(nèi)容:</b></p><p> 設(shè)計(jì)一個(gè)交通信號(hào)燈控制器,由一條主干道和一條支干道匯合成十字路口,在每個(gè)入口處設(shè)置紅、綠、黃三色信號(hào)燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時(shí)間停在禁行線外。</p&g
3、t;<p><b> 基本要求:</b></p><p> 1、紅、綠、黃發(fā)光二極管作信號(hào)燈,用傳感器或邏輯開(kāi)關(guān)作檢測(cè)車輛是否到來(lái)的信號(hào),實(shí)驗(yàn)電路用邏輯開(kāi)關(guān)代替。</p><p> 2、主干道處于常允許通行的狀態(tài),支干道有車來(lái)時(shí)才允許通行。主干道亮綠燈時(shí),支干道亮紅燈;支干道亮綠燈時(shí),主干道亮紅燈。</p><p> 3、
4、主、支干道均有車時(shí),兩者交替允許通行,主干道每次放行45秒,支干道每次放行25秒,設(shè)立45秒、25秒計(jì)時(shí)、顯示電路,選擇1HZ時(shí)鐘脈沖作為系統(tǒng)時(shí)鐘。</p><p> 4、在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過(guò)程中,要亮5秒黃燈作為過(guò)渡,使行駛中的車輛有時(shí)間停到禁行線外,設(shè)立5秒計(jì)時(shí)、顯示電路。</p><p><b> 主要參考資料:</b></p>&l
5、t;p> [1] 潘松著.EDA技術(shù)實(shí)用教程(第二版). 北京:科學(xué)出版社,2005.</p><p> [2] 康華光主編.電子技術(shù)基礎(chǔ) 模擬部分. 北京:高教出版社,2006.</p><p> [3] 閻石主編.數(shù)字電子技術(shù)基礎(chǔ). 北京:高教出版社,2003.</p><p> 完成期限 2013.3.8 </p>
6、<p> 指導(dǎo)教師 </p><p> 專業(yè)負(fù)責(zé)人 </p><p> 2013年 3月8日</p><p><b> 一、設(shè)計(jì)思想</b></p><p> 設(shè)計(jì)一個(gè)交通信號(hào)燈控制器,由一條主干道和一條支干道匯合成十字路口,
7、在每個(gè)入口處設(shè)置紅、綠、黃三色信號(hào)燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時(shí)間停在禁行線外。主干道為南北方向,支干道為東西方向,實(shí)現(xiàn)任務(wù):紅、綠、黃發(fā)光二極管作信號(hào)燈,用傳感器或邏輯開(kāi)關(guān)作檢測(cè)車輛是否到來(lái)的信號(hào),實(shí)驗(yàn)電路用邏輯開(kāi)關(guān)代替。主干道處于常允許通行的狀態(tài),支干道有車來(lái)時(shí)才允許通行。主干道亮綠燈時(shí),支干道亮紅燈;支干道亮綠燈時(shí),主干道亮紅燈。主、支干道均有車時(shí),兩者交替允許通行,主干道每次放行45秒,支干道每次
8、放行25秒,設(shè)立45秒、25秒計(jì)時(shí)、顯示電路,選擇1HZ時(shí)鐘脈沖作為系統(tǒng)時(shí)鐘。在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過(guò)程中,要亮5秒黃燈作為過(guò)渡,使行駛中的車輛有時(shí)間停到禁行線外,設(shè)立5秒計(jì)時(shí)、顯示電路。</p><p><b> 1、基本原理</b></p><p> 硬件:由設(shè)計(jì)任務(wù)要求可知,總體輸入電路有:</p><p> 在開(kāi)始計(jì)時(shí)之前的
9、等待狀態(tài),復(fù)位鍵reset接低電位,接通電源后,首先要將它接高電位,表示計(jì)時(shí)開(kāi)始。(2)當(dāng)按一下(on_off)鍵,表示緊急情況發(fā)生,兩個(gè)方向均為紅燈亮,計(jì)時(shí)停止,當(dāng)再次按下(on_off)鍵時(shí),控制器恢復(fù)原來(lái)狀態(tài),正常工作。</p><p> 軟件:由于緊急情況控制信號(hào)是采用按鍵的輸入方式,其產(chǎn)生時(shí)刻和持續(xù)時(shí)間的長(zhǎng)短是隨機(jī)不定的,以保證系統(tǒng)能捕捉到輸入脈沖,故需要有防抖動(dòng)的模塊。另外還需要將時(shí)間顯示出來(lái),為了
10、節(jié)省資源,我采用了循環(huán)點(diǎn)亮LED七段顯示數(shù)碼管的方法來(lái)顯示計(jì)時(shí)輸出。通過(guò)信號(hào)choose4(3 downto 0)來(lái)對(duì)4個(gè)LED七段顯示數(shù)碼管進(jìn)行選擇。由于不能使用7448自動(dòng)譯碼集成電路,故在LED七段顯示數(shù)碼管顯示時(shí)間時(shí),要把計(jì)時(shí)結(jié)果轉(zhuǎn)換為七段碼輸出到相應(yīng)的LED七段顯示數(shù)碼管上,因此還需要一個(gè)轉(zhuǎn)換電路。交通燈狀態(tài)控制也需要一個(gè)電路,當(dāng)有使能信號(hào)及無(wú)緊急情況下,交通燈狀態(tài)不發(fā)生變化,有緊急情況時(shí),兩個(gè)方向上均為紅燈亮,緊急情況消除后
11、,回到原來(lái)狀態(tài),無(wú)使能信號(hào)時(shí),交通燈狀態(tài)不變。</p><p> 通過(guò)上面的分析,不難得知可以把交通燈控制系統(tǒng)劃分為6個(gè)模塊:鍵輸入模塊,時(shí)鐘分頻模塊,計(jì)時(shí)模塊,選通模塊,顯示模塊,控制模塊</p><p><b> 2、設(shè)計(jì)框圖</b></p><p><b> 總體結(jié)構(gòu)框圖如下</b></p>&l
12、t;p><b> No</b></p><p><b> yes</b></p><p><b> Yes</b></p><p><b> No</b></p><p> No </p><p
13、><b> Yes</b></p><p><b> No</b></p><p> Yes Yes</p><p><b> No</b></p><p><b> No</b>&l
14、t;/p><p><b> Yes</b></p><p><b> Yes</b></p><p><b> No</b></p><p><b> No</b></p><p><b> Yes</b>
15、;</p><p><b> Yes</b></p><p><b> No</b></p><p><b> Yes</b></p><p><b> 圖1 系統(tǒng)設(shè)計(jì)框圖</b></p><p> 二、設(shè)計(jì)步驟和調(diào)試過(guò)程
16、</p><p> 1、模塊設(shè)計(jì)和相應(yīng)模塊代碼</p><p> (1)鍵輸入模塊(keyin)/去抖動(dòng)模塊:</p><p> 輸入信號(hào):緊急情況on_off;用來(lái)消除抖動(dòng)的時(shí)鐘信號(hào)clk1,由時(shí)鐘分頻模塊提供。輸出信號(hào):去抖后的提示信號(hào)on_off0。</p><p> 去抖模塊程序:--------keyin module---
17、--</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity keyin is</p><p> port(A,B :in std_logic;</p><p> C :out std_logic);<
18、/p><p> end keyin;</p><p> architecture keyin_arc of keyin is</p><p> component kand2</p><p> port(A,B :in std_logic;</p><p> C :out std_logic);</p&
19、gt;<p> end component;</p><p> component kdf</p><p> port(A,B :in std_logic;</p><p> C,D :out std_logic);</p><p> end component;</p><p> compo
20、nent knand2</p><p> port(A,B :in std_logic;</p><p> C :out std_logic);</p><p> end component;</p><p> signal TMP1,TMP2,TMP3,TMP4,TMP5,TMP6:std_logic;</p>&
21、lt;p><b> begin</b></p><p> u0: knand2 port map(A,TMP1,TMP2);</p><p> u1: knand2 port map(TMP2,TMP3,TMP1);</p><p> U2: kdf port map(TMP2,B,TMP4,TMP3);<
22、/p><p> U3: kdf port map(TMP4,B,TMP6,TMP5);</p><p> u4: kand2 port map(TMP4,TMP5,C);</p><p> end keyin_arc;</p><p> library ieee; ---two inputs and gate descri
23、ption</p><p> use ieee.std_logic_1164.all;</p><p> entity kand2 is</p><p> port(A,B :in std_logic;</p><p> C :out std_logic);</p><p> end kand2;<
24、/p><p> architecture kand2_arc of kand2 is</p><p><b> begin</b></p><p> C<=A and B;</p><p> end kand2_arc;---end of two inputs and gate description</
25、p><p> library ieee; ---two inputs and_not gate description</p><p> use ieee.std_logic_1164.all;</p><p> entity knand2 is</p><p> port(A,B :in std_logic;</p>&l
26、t;p> C :out std_logic);</p><p> end knand2;</p><p> architecture knand2_arc of knand2 is</p><p><b> begin</b></p><p> C<=not(A and B);</p>
27、;<p> end knand2_arc;---end of two inputs and_not gate description</p><p> library ieee; ---D trigger description</p><p> use ieee.std_logic_1164.all;</p><p> entity kdf
28、 is</p><p> port(A,B :in std_logic;</p><p> C,D :out std_logic);</p><p><b> end kdf;</b></p><p> architecture kdf_arc of kdf is</p><p><
29、b> begin</b></p><p> process(B)</p><p><b> begin</b></p><p> if(B'event and B='1')then C<=A;D<=not A;</p><p><b> end i
30、f;</b></p><p> end process;</p><p> end kdf_arc;</p><p> ?。?)時(shí)鐘分頻模塊(clk_div)</p><p> 輸入信號(hào):外部時(shí)鐘信號(hào)clk;輸出信號(hào):消除抖動(dòng)的時(shí)鐘信號(hào)clk1;計(jì)時(shí)內(nèi)部時(shí)鐘信號(hào)clk2;產(chǎn)生選通信號(hào)的時(shí)鐘信號(hào)clk0。</p>
31、<p> 分頻程序:library ieee; -----clk_div module-------</p><p> use ieee.std_logic_1164.all;</p><p> entity clk_div is</p><p> port(a:in std_logic;-------------------------外部時(shí)鐘
32、信號(hào)</p><p> b:out std_logic;---------------頻率為200Hz的時(shí)鐘信號(hào)</p><p> c:out std_logic;----------------頻率為10Hz的時(shí)鐘信號(hào)</p><p> d:out std_logic);----------------頻率為1Hz的時(shí)鐘信號(hào)</p><p
33、> end clk_div;</p><p> architecture clk_div_arc of clk_div is</p><p> signal clk_10k:std_logic;</p><p> signal clk_200:std_logic;</p><p> signal clk_10:std_logi
34、c;</p><p> signal clk_1:std_logic;</p><p> signal m:integer range 0 to 100;</p><p> signal n:integer range 0 to 50;</p><p> signal l:integer range 0 to 20;</p>
35、;<p> signal g:integer range 0 to 10;</p><p><b> begin</b></p><p> p1: process(a)----先對(duì)外部時(shí)鐘進(jìn)行100分頻,得到頻率為10KHz的時(shí)鐘信號(hào)</p><p><b> begin</b></p>
36、<p> if(a'event and a='1')then</p><p> if m=99 then m<=0;</p><p> else m<=m+1;</p><p><b> end if;</b></p><p> if (m<=49) the
37、n clk_10k<='0';</p><p> else clk_10k<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p>
38、;<p> p2:process(clk_10k)------對(duì)10KHz的時(shí)鐘信號(hào)再進(jìn)行50分頻,得到200Hz的時(shí)鐘信號(hào)</p><p> p3:process(clk_200)-----------對(duì)200Hz的時(shí)鐘信號(hào)進(jìn)行20分頻,得到10Hz的時(shí)鐘信號(hào)</p><p> p4:process(clk_10)-------對(duì)10Hz的時(shí)鐘信號(hào)進(jìn)行10分頻,得到需
39、要的1 Hz的時(shí)鐘信號(hào)</p><p><b> begin</b></p><p> if (clk_10'event and clk_10='1')then</p><p> if g=9 then g<=0;</p><p> else g<=g+1;</p>
40、<p><b> end if;</b></p><p> if g<=4 then clk_1<='0';</p><p> else clk_1<='1';</p><p> end if; end if ;</p><p> end
41、 process;</p><p><b> d<=clk_1;</b></p><p> end clk_div_arc;</p><p> ?。?)計(jì)時(shí)模塊(time):</p><p> 輸入信號(hào):定時(shí)計(jì)時(shí)時(shí)鐘clk2,由時(shí)鐘分頻模塊提供;去抖動(dòng)后的提示信號(hào)on_off0;復(fù)位信號(hào)reset;狀態(tài)提示信
42、號(hào)state(1 downto 0);輸出信號(hào):東西方向的十位信號(hào)eq1(3 downto 0);東西方向的個(gè)位信號(hào)eq0(3 downto 0);南北方向的十位信號(hào)sq1(3 downto 0);南北方向的個(gè)位信號(hào)sq0(3 downto 0);使能信號(hào)timel,times。</p><p> 計(jì)時(shí)模塊程序:-------time module-------</p><p> li
43、brary ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity time is </p><p> port(a,b,k:in std_logic;</p><p&
44、gt; c :in std_logic_vector(1 downto 0);</p><p> d,e,f,g :out std_logic_vector(3 downto 0);</p><p> j,h :out std_logic);</p><p><b> end time;</b></p><p&g
45、t; architecture time_arc of time is</p><p> signal l,m,n,p:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(a,b,k)</p><p><b> b
46、egin</b></p><p> if(k='0')then l<="0101";m<="0010";n<="0000";p<="0010";-通電后賦初值</p><p> else if(a'event and a='1')t
47、hen</p><p> if(b='1')then l<=l;m<=m;n<=n;p<=p;---有緊急情況時(shí),計(jì)時(shí)停止</p><p><b> else</b></p><p> if(n="0001" and p="0000")then case c
48、is ----當(dāng)東西</p><p> 方向倒計(jì)時(shí)到0時(shí),重新賦值,并產(chǎn)生使能信號(hào)控制交通燈的狀態(tài)</p><p> when "00" =>n<="0101";p<="0000";j<='1';</p><p> when "01"=>
49、;n<="0101";p<="0010";j<='1'; </p><p> when "11"=>n<="0000";p<="0010";j<='1';</p><p> when "10"=
50、>n<="0000";p<="0010";j<='1';</p><p> when others =>null;</p><p><b> end case;</b></p><p> else j<='0';--------計(jì)時(shí)
51、未到0時(shí),輸出使能信號(hào)為0</p><p> if(n="0000"andp/="0000")then </p><p> n<="1001";p<=p-1;---當(dāng)各位倒計(jì)時(shí)到0,而十位沒(méi)到0時(shí)十位減一,個(gè)位賦9</p><p> else n<=n-1; -------否則,各位
52、減一</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if(l="0001"and m="0000")then--當(dāng)南北方向倒計(jì)時(shí)到0時(shí),重新</p><p> 賦值,并產(chǎn)生使能信號(hào)
53、控制交通燈的狀態(tài)</p><p> case c is when "00"=>l<="0000";m<="0010";h<='1'; </p><p> when "01"=>l<="0000";m<="
54、;0010";h<='1';</p><p> when "10"=>l<="0101";m<="0000";h<='1';</p><p> when "11"=>l<="0101";m<=&qu
55、ot;0010";h<='1';</p><p> when others =>null;</p><p><b> end case;</b></p><p> else h<='0'; -------計(jì)時(shí)未到0時(shí),輸出使能信號(hào)為0</p><p>
56、if(l="0000"andm/="0000")then </p><p> l<="1001";m<=m-1;-當(dāng)各位倒計(jì)時(shí)到0,而十位沒(méi)到0時(shí)十位減一,個(gè)位賦9</p><p> else l<=l-1; --------------否則,各位減一</p><p> end if
57、; end if;end if; end if;end if;</p><p> f<=n;g<=p;d<=l;e<=m;</p><p> end process;end time_arc;</p><p> ?。?)選通模塊(choose):</p><p> 輸入信號(hào):選通時(shí)鐘信號(hào)clk0,由時(shí)鐘分頻模塊提
58、供。</p><p> 輸出信號(hào):選通信號(hào)choose4(3 downto 0)。</p><p> library ieee; -------choose module----------</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsign
59、ed.all;</p><p> entity choose is</p><p> port(a:in std_logic;</p><p> b:out std_logic_vector(3 downto 0));</p><p> end choose;</p><p> architecture ch
60、oose_arc of choose is</p><p> signal m :integer range 0 to 3;</p><p><b> begin</b></p><p> process(a)</p><p><b> begin</b></p><p&
61、gt; if(a'event and a='1')then</p><p> if(m=3)then m<=0;</p><p> else m<=m+1;</p><p> end if;end if;</p><p> case m is </p><p> when
62、 0 =>b<="0111";</p><p> when 1 =>b<="1011";</p><p> when 2 =>b<="1101";</p><p> when 3 =>b<="1110";</p><
63、;p> end case;end process;</p><p> end choose_arc;</p><p> ?。?)顯示模塊(display):</p><p> 輸入信號(hào):計(jì)時(shí)的十位或個(gè)位信號(hào);輸出信號(hào):控制LED七段顯示數(shù)碼管的七位數(shù)組型信號(hào)。</p><p> 顯示模塊:------display module
64、--------</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_signed.all;</p><p> use ieee.std_logic_unsigned.all;</p><p
65、> entity display is</p><p> port(a:in std_logic_vector(3 downto 0);--------輸入記數(shù)結(jié)果</p><p> b:out std_logic_vector(6 downto 0));-----------譯碼成七段數(shù)碼管的控制信號(hào)</p><p> end display;<
66、;/p><p> architecture display_arc of display is</p><p> signal a0:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(a0)</p><p&g
67、t;<b> begin</b></p><p><b> a0<=a;</b></p><p> case a0 is when "0000" =>b<="0111111";----以下是譯碼部分</p><p> when "0001"
68、; =>b<="0000110";</p><p> when "0010" =>b<="1011011";</p><p> when "0011" =>b<="1001111";</p><p> when "0
69、100" =>b<="1100110";</p><p> when "0101" =>b<="1101101";</p><p> when "0110" =>b<="1111101";</p><p> when
70、 "0111" =>b<="0000111";</p><p> when "1000" =>b<="1111111";</p><p> when "1001" =>b<="1101111";</p><p&g
71、t; when others=>b<="ZZZZZZZ";</p><p> end case;end process;end display_arc;</p><p> ?。?)控制模塊(keep):</p><p> 輸入信號(hào):復(fù)位信號(hào)reset;去抖后的緊急情況提示信號(hào)on_off0;定時(shí)計(jì)時(shí)時(shí)鐘信號(hào)clk2;使能信號(hào)ti
72、mel,times;</p><p> 輸出信號(hào):東西方向交通燈狀態(tài)控制信號(hào)state1(3 downto 0);南北方向交通燈狀態(tài)控制信號(hào)state2(3 downto 0);交通燈狀態(tài)提示信號(hào)state(1 downto 0)。</p><p> 控制模塊:---------keep module---------</p><p> library iee
73、e;</p><p> use ieee.std_logic_1164.all;</p><p> entity keep is</p><p> port( a,b,c,g,j: in std_logic;</p><p> d,e : out std_logic_vector(3 downto 0);</p>&
74、lt;p> f : out std_logic_vector(1 downto 0));</p><p><b> end keep;</b></p><p> architecture keep_arc of keep is</p><p> type state_type is (s0,s1,s2,s3,s4);</p&
75、gt;<p> signal current_state:state_type;</p><p> signal new_state:state_type;</p><p><b> begin</b></p><p> newstate_logic:</p><p> process(curre
76、nt_state,b,a,g)</p><p> variable m:integer range 0 to 3;</p><p><b> begin</b></p><p> if(g='0')then new_state<=s1;----通電后給交通燈狀態(tài)賦初值</p><p> el
77、se case current_state is</p><p> when s1 =>m:=0;</p><p> if(b='1'and j='0'and a='0')then--當(dāng)計(jì)數(shù)到45s且無(wú)緊急</p><p> 情況時(shí),交通燈跳至下一狀態(tài)</p><p> new_s
78、tate<=s2;</p><p> elsif(a='1')then new_state<=s0;-有緊急情況時(shí),交通燈變?yōu)榫o急狀態(tài)</p><p> else new_state<=s1;-----計(jì)時(shí)未到的時(shí)候保持原狀態(tài)不變 </p><p><b> end if; </b></p>
79、<p> when s2 =>m:=1;</p><p> if(b='1'and j='1'and a='0')then new_state<=s3;-當(dāng)記</p><p> 數(shù)到5s且無(wú)緊急情況時(shí),交通燈變?yōu)橄乱粻顟B(tài)</p><p> elsif(a='1')then
80、 new_state<=s0;----有緊急情況時(shí),交通燈變?yōu)?lt;/p><p><b> 緊急狀態(tài)</b></p><p> else new_state<=s2; ----------計(jì)時(shí)未到的時(shí)候保持原狀態(tài)不變</p><p><b> end if; </b></p><p>
81、; when s3 =>m:=2;</p><p> if(j='1'and b='0'and a='0')then new_state<=s4;--當(dāng)記</p><p> 數(shù)到20s且無(wú)緊急情況時(shí),交通燈變?yōu)橄乱粻顟B(tài)</p><p> elsif(a='1')then new_st
82、ate<=s0;----有緊急情況時(shí),交通燈變?yōu)榫o急狀態(tài)</p><p> else new_state<=s3; -------計(jì)時(shí)未到的時(shí)候保持原狀態(tài)不變</p><p><b> end if; </b></p><p> when s4 =>m:=3;</p><p> if(j=
83、9;1'and b='1'and a='0')then new_state<=s1;--當(dāng)記</p><p> 數(shù)到5s且無(wú)緊急情況時(shí),交通燈變?yōu)橄乱粻顟B(tài)</p><p> elsif(a='1')then new_state<=s0;----有緊急情況時(shí),交通燈變?yōu)?lt;/p><p><b
84、> 緊急狀態(tài)</b></p><p> else new_state<=s4; ---------計(jì)時(shí)未到的時(shí)候保持原狀態(tài)不變</p><p><b> end if;</b></p><p> when s0=>if(a='0')then--------緊急情況消除后,回到原來(lái)狀態(tài)<
85、/p><p> case m iswhen 0 =>new_state<=s1;</p><p> when 1 =>new_state<=s2;</p><p> when 2 =>new_state<=s3;</p><p> when 3 =>new_state<=s4;</p
86、><p><b> end case;</b></p><p> else new_state<=s0;</p><p> end if; end case;end if;end process;</p><p> state_register:process(c)</p><p>&
87、lt;b> begin</b></p><p> if(c'event and c='1')then current_state<=new_state;--當(dāng)時(shí)</p><p> 鐘上升沿觸發(fā)時(shí),交通燈狀態(tài)發(fā)生改變</p><p> end if;end process;</p><p>
88、; output_logic:</p><p> process(current_state)----產(chǎn)生與交通燈狀態(tài)相對(duì)應(yīng)的提示信號(hào),</p><p> 以控制計(jì)時(shí)模塊的不同狀態(tài)下的不同賦植</p><p><b> begin</b></p><p> case current_state is when
89、s0 => d<="0100";e<="0100";</p><p> when s1 => d<="0100";e<="1001";f<="00";</p><p> when s2 => d<="0100";e
90、<="0010";f<="01";</p><p> when s3 => d<="1001";e<="0100";f<="10";</p><p> when s4 => d<="0010";e<="0
91、100";f<="11";</p><p> end case;end process;end keep_arc;</p><p> 2、仿真及仿真結(jié)果分析</p><p> 圖2 控制器模塊仿真圖</p><p> 控制器通過(guò)對(duì)時(shí)鐘的計(jì)數(shù)控制運(yùn)行狀態(tài)的改變,輸出相應(yīng)的狀態(tài)變化信息、遞減信號(hào)和置數(shù)
92、信號(hào)給輸出模塊進(jìn)行顯示,同時(shí)輸出綠燈閃爍控制信號(hào)給綠燈閃爍控制模塊。仿真圖如圖2。</p><p> 圖3計(jì)數(shù)器模塊仿真圖</p><p> 當(dāng)計(jì)數(shù)器計(jì)時(shí)到45時(shí),下一個(gè)時(shí)鐘沿跳轉(zhuǎn)到0,開(kāi)始新的一輪數(shù),且計(jì)數(shù)的范圍為0-45s。仿真圖如上圖3.</p><p> 圖4 分頻器模塊仿真圖</p><p> 分頻模塊的作用是將時(shí)鐘信號(hào)經(jīng)過(guò)
93、分頻得到所需要的信號(hào),該模塊用于產(chǎn)生對(duì)數(shù)碼管的片選信號(hào),仿真圖如圖4。</p><p><b> 3、實(shí)驗(yàn)調(diào)試結(jié)果</b></p><p> 開(kāi)始時(shí)支干道沒(méi)有車輛行駛,主干道處于常通行狀態(tài),支干道處于禁止?fàn)顟B(tài),當(dāng)支干道有車往來(lái)時(shí),主干道亮綠燈,經(jīng)過(guò)45秒倒計(jì)時(shí),支干道亮紅燈,經(jīng)行25秒倒計(jì)時(shí).主干道經(jīng)行45秒倒計(jì)時(shí)后跳變到黃燈,進(jìn)行5秒倒計(jì)時(shí),支干道繼續(xù)亮紅燈,進(jìn)
94、行倒計(jì)時(shí)。主干道5秒倒計(jì)時(shí)后經(jīng)行45秒倒計(jì)時(shí),支干道跳變?yōu)榫G燈經(jīng)行25秒倒計(jì)時(shí)。支干道經(jīng)行25秒倒計(jì)時(shí)之后跳變到黃燈,進(jìn)行5秒倒計(jì)時(shí),主干道進(jìn)行亮紅燈,進(jìn)行倒計(jì)時(shí)。支干道5秒計(jì)時(shí)結(jié)束后判斷支干道是否有車,若有車跳變到S1狀態(tài),若無(wú)車跳變到S0狀態(tài)</p><p><b> 三、結(jié)論及心得體會(huì)</b></p><p> 通過(guò)這次的課程設(shè)計(jì),加深了我對(duì)EDA技術(shù)這門課
95、程的理解和認(rèn)識(shí),同時(shí)也讓我對(duì)其有了更加熟練的運(yùn)用。之前我對(duì)VHDL的了解僅局限于課本上的一些知識(shí),而沒(méi)有深入體會(huì),缺乏實(shí)踐經(jīng)驗(yàn)。在這次設(shè)計(jì)過(guò)程中遇到的問(wèn)題有很多,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固。整個(gè)課程設(shè)計(jì)我在思考和設(shè)計(jì)上花了不少時(shí)間,其中收獲也是不少。拿到一個(gè)project后,不要急于寫程序,首先要搞清楚要干什么,完成什么功能,分幾部分完成,每部分完成什么功能,各部分之間的聯(lián)系
96、。在編程過(guò)程中,思路要清楚,明白要實(shí)現(xiàn)的功能,然后根據(jù)實(shí)現(xiàn)的功能一步一步的編寫。而且要采用各個(gè)擊破的辦法,先實(shí)現(xiàn)下層部分,再整體實(shí)現(xiàn)。編下層時(shí),不用急于仿真,等整體編譯成功后,先進(jìn)行總體仿真,看出現(xiàn)的錯(cuò)誤在什么地方,這個(gè)地方是由哪個(gè)部分控制的,然后再對(duì)該部分進(jìn)行仿真,看有沒(méi)有問(wèn)題。須注意的是,掃描和分頻兩模擬頻率不能太高,否則將無(wú)法實(shí)現(xiàn)。事實(shí)上這也與實(shí)際情況相符,因?yàn)榭紤]到道路行駛中車速受限因素存在。</p><p&
97、gt; 總之,通過(guò)這次的設(shè)計(jì),進(jìn)一步了解了EDA技術(shù),收獲很大,對(duì)軟件編程、排錯(cuò)調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到了較全面的鍛煉和提高。</p><p><b> 參考資料</b></p><p> [1] 潘松著.EDA技術(shù)實(shí)用教程(第二版). 北京:科學(xué)出版社,2005.</p><p><b> 課程設(shè)計(jì)成績(jī)?cè)u(píng)價(jià)表&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計(jì)報(bào)告---交通燈控制器
- 交通燈控制器課程設(shè)計(jì)
- 交通燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通燈控制器
- 課程設(shè)計(jì)----交通燈控制器
- 交通燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通燈控制器
- 課程設(shè)計(jì)--交通燈控制器
- 課程設(shè)計(jì)---交通燈控制器設(shè)計(jì)
- 課程設(shè)計(jì)-- 交通燈控制器設(shè)計(jì)
- 交通燈控制器課程設(shè)計(jì)報(bào)告
- 模擬交通燈控制器課程設(shè)計(jì)
- eda課程設(shè)計(jì)--交通燈控制器
- eda課程設(shè)計(jì)(交通燈控制器)
- eda課程設(shè)計(jì)---交通燈控制器
- 交通燈控制器課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)交通燈控制器
- eda課程設(shè)計(jì)交通燈控制器
- eda課程設(shè)計(jì)--交通燈控制器設(shè)計(jì)
- 交通控制器課程設(shè)計(jì)---交通燈控制器電路的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論