交通燈控制器課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論