交通控制燈設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  綜合電子實(shí)踐Quartus ii 課程設(shè)計(jì)報(bào)告 </p><p><b>  姓名: </b></p><p><b>  學(xué)號: </b></p><p>  報(bào)告日期:2013/9/4</p><p>  A 交通控制燈設(shè)計(jì)</p><p>

2、;<b>  系統(tǒng)設(shè)計(jì)要求</b></p><p>  在十字路口的兩個(gè)方向上各設(shè)一組紅、綠、黃燈,顯示順序?yàn)槠渲幸粋€(gè)方向是(東西方向)是綠燈、黃燈、紅燈;另一方向(南北方向)是紅燈、綠燈、黃燈。</p><p>  設(shè)置一組數(shù)碼管,以倒計(jì)時(shí)的方式顯示允許通行或禁止通行的時(shí)間。其中綠燈、黃燈、紅燈的持續(xù)時(shí)間分別是20s、5s和25s。</p><p

3、>  當(dāng)各條路上任意一條上出現(xiàn)特殊情況時(shí),如當(dāng)消防車、救護(hù)車或其他需要優(yōu)先放行的車輛通過時(shí),各方向上均是紅燈,倒計(jì)時(shí)停止,且顯示數(shù)字在閃爍。當(dāng)特殊運(yùn)行狀態(tài)結(jié)束時(shí),控制器恢復(fù)原來狀態(tài),繼續(xù)正常運(yùn)行。</p><p><b>  系統(tǒng)設(shè)計(jì)方案</b></p><p><b>  系統(tǒng)設(shè)計(jì)思路</b></p><p>  

4、本系統(tǒng)設(shè)計(jì)中均采用混合設(shè)計(jì)的方法,將整體方案劃分成若干個(gè)模塊進(jìn)行設(shè)計(jì)。采用VHDL硬件描述語言和原理圖描述相結(jié)合的方式,對多種應(yīng)用電路進(jìn)行設(shè)計(jì),其中底層電路(即模塊電路)采用VHDL硬件描述語言方式實(shí)現(xiàn),頂層電路采用原理圖描述方式實(shí)現(xiàn)。</p><p><b>  系統(tǒng)設(shè)計(jì)流程</b></p><p><b>  圖1 系統(tǒng)設(shè)計(jì)流程</b><

5、;/p><p><b>  系統(tǒng)設(shè)計(jì)方案分析</b></p><p>  根據(jù)任務(wù)要求,計(jì)數(shù)器的值和交通燈亮滅關(guān)系如圖1所示。</p><p>  顯然,此任務(wù)設(shè)計(jì)的核心是一個(gè)技術(shù)范圍為0~50s的計(jì)數(shù)器和一個(gè)根據(jù)計(jì)數(shù)值作出規(guī)定反應(yīng)的控制器。假設(shè)現(xiàn)有晶振為20MHz,因此還需要分頻電路來得到10Hz和1Hz的時(shí)鐘,最后要驅(qū)動(dòng)七段數(shù)碼管,還需要一個(gè)譯

6、碼電路。</p><p>  圖2 計(jì)數(shù)值和交通燈亮滅關(guān)系</p><p>  根據(jù)上面的分析,交通控制燈系統(tǒng)框圖如圖3所示;</p><p>  圖3 交通控制等系統(tǒng)框圖</p><p>  3.交通控制燈各模塊電路設(shè)計(jì)</p><p>  3.1 控制模塊 controller</p><p&g

7、t; ?。?)控制模塊的作用是根據(jù)計(jì)數(shù)器的數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計(jì)時(shí)數(shù)值給七段數(shù)碼管的分位譯碼電路。計(jì)數(shù)范圍為0~50。計(jì)數(shù)到50后,下一個(gè)時(shí)鐘沿回復(fù)到0,開始下一計(jì)數(shù)。此外當(dāng)檢測到特殊情況(hold=”1”)發(fā)生時(shí),計(jì)數(shù)器暫停計(jì)數(shù),無條件點(diǎn)亮紅色的發(fā)光二極管。而系統(tǒng)復(fù)位信號reset則使計(jì)數(shù)器異步清零??刂颇Kcontroller外部端口如圖4所示。</p><p>  圖4控制模塊contro

8、ller外部端口</p><p>  (2)控制模塊的VHDL程序</p><p>  程序說明:控制模塊描述了功能鍵hold和reset的功能;同時(shí)對頻率為1Hz的時(shí)鐘進(jìn)行計(jì)數(shù),通過計(jì)數(shù)值,對各個(gè)時(shí)間段內(nèi)交通燈信號進(jìn)行描述;此外,模塊還給出了下一步用于倒計(jì)時(shí)的信號numa[4..0]和numb[4..0]。</p><p>  library ieee;</

9、p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity controller is</p><p>  port(clock:in std_logic;</p><p>  reset:

10、in std_logic;</p><p>  hold:in std_logic;</p><p>  flash:out std_logic;</p><p>  numa,numb:out integer range 0 to 25;</p><p>  reda,greena,yellowa:out std_logic;</p&

11、gt;<p>  redb,greenb,yellowb:out std_logic );</p><p><b>  end;</b></p><p>  architecture control of controller is</p><p>  signal countnum:integer range 0 to 50;&

12、lt;/p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if reset='1' then </p><p>  countnum<=0;<

13、;/p><p>  elsif rising_edge(clock) then</p><p>  if hold='1' then</p><p>  flash<='1';</p><p><b>  else</b></p><p>  flash<=

14、'0';</p><p>  if countnum=47 then</p><p>  countnum<=0;</p><p><b>  else</b></p><p>  countnum<=countnum+1;</p><p><b>  end

15、 if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clock)</p><p><b>  begi

16、n</b></p><p>  if rising_edge(clock) then</p><p>  if hold='1' then</p><p>  reda<='1';</p><p>  redb<='1';</p><p>  gr

17、eena<='0';</p><p>  greenb<='0';</p><p>  yellowa<='0';</p><p>  yellowb<='0';</p><p><b>  else</b></p>&

18、lt;p>  if countnum<=17 then</p><p>  numa<=20-countnum;</p><p>  reda<='0';</p><p>  greena<='1';</p><p>  yellowa<='0';</p

19、><p>  elsif (countnum<=24) then</p><p>  numa<=25-countnum;</p><p>  reda<='0';</p><p>  greena<='0';</p><p>  yellowa<='1

20、';</p><p><b>  else</b></p><p>  numa<=50-countnum;</p><p>  reda<='1';</p><p>  greena<='0';</p><p>  yellowa<

21、='0';</p><p><b>  end if;</b></p><p>  if countnum<=24 then</p><p>  numb<=25-countnum;</p><p>  redb<='1';</p><p>  g

22、reenb<='0';</p><p>  yellowb<='0';</p><p>  elsif countnum<=44 then</p><p>  numb<=45-countnum;</p><p>  redb<='0';</p>&

23、lt;p>  greenb<='1';</p><p>  yellowb<='0';</p><p><b>  else</b></p><p>  numb<=50-countnum;</p><p>  redb<='0';</p

24、><p>  greenb<='0';</p><p>  yellowb<='1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end

25、 if;</b></p><p>  end process;</p><p><b>  end;</b></p><p>  3.2 時(shí)鐘分頻模塊frequency10Hz和frequency</p><p>  (1)時(shí)鐘分頻模塊是對系統(tǒng)時(shí)鐘(設(shè)為20MHz)進(jìn)行分頻,得到10Hz和1Hz的時(shí)鐘。時(shí)鐘分

26、頻模塊的外部端口如圖5所示。</p><p>  圖5 時(shí)鐘分頻模塊的外部端口</p><p> ?。?)時(shí)鐘分頻模塊frequency 10Hz的VHDL程序</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use i

27、eee.std_logic_unsigned.all;</p><p>  entity frequency10hz is</p><p>  port(clk20m:in std_logic;</p><p>  clk10hz:out std_logic);</p><p><b>  end;</b></p&

28、gt;<p>  architecture count of frequency10hz is</p><p>  signal tout:integer range 0 to 777777;</p><p>  signal clk:std_logic;</p><p><b>  begin</b></p>&l

29、t;p>  process(clk20m)</p><p><b>  begin </b></p><p>  if rising_edge(clk20m) then</p><p>  if tout<=777777 then</p><p><b>  tout<=0;</b>

30、;</p><p>  clk<= not clk;</p><p>  else tout<=tout+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;&l

31、t;/p><p>  clk10hz<=clk;</p><p><b>  end; </b></p><p> ?。?)時(shí)鐘分頻模塊frequency的VHDL程序</p><p>  程序說明:通過一級分頻得到10Hz的時(shí)鐘,對其再次分頻得到1Hz時(shí)鐘。</p><p>  librar

32、y ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity frequency is</p><p>  port(clk10hz:in std_logic;</p><

33、p>  clk1hz:out std_logic);</p><p><b>  end;</b></p><p>  architecture count of frequency is</p><p>  signal tout:integer range 0 to 4;</p><p>  signal cl

34、k:std_logic;</p><p><b>  begin</b></p><p>  process(clk10hz)</p><p><b>  begin </b></p><p>  if rising_edge(clk10hz) then</p><p>  

35、if tout<=4 then</p><p><b>  tout<=0;</b></p><p>  clk<= not clk;</p><p>  else tout<=tout+1;</p><p><b>  end if;</b></p><

36、p><b>  end if;</b></p><p>  end process;</p><p>  clk1hz<=clk;</p><p><b>  end; </b></p><p>  3.3 分位電路模塊fenwei</p><p> ?。?)因

37、為控制輸出的倒計(jì)時(shí)數(shù)值可能是1位或者2位十進(jìn)制數(shù),所以七段數(shù)碼管的譯碼電路前要加上分位電路(即將其分為2個(gè)1位的十進(jìn)制數(shù),如25分為2和5)。</p><p>  (2)分位電路模塊fenwei的外部端口如圖6所示。fenwei模塊輸出的計(jì)數(shù)值numa[4..0]和numb[4..0]將十位數(shù)和個(gè)位數(shù)分別存到數(shù)組里,這樣可以得到兩個(gè)路口倒計(jì)時(shí)時(shí)間顯示的十位和個(gè)位信號。</p><p>  

38、圖6 分位電路模塊fenwei外部端口</p><p> ?。?)分位電路模塊fenwei的VHDL程序</p><p>  程序說明:以10Hz的速度提取顯示值。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use

39、ieee.std_logic_unsigned.all;</p><p>  entity fenwei is</p><p>  port(clock:in std_logic;</p><p>  numin:in integer range 0 to 25;</p><p>  numa,numb:out integer range 0

40、 to 15);</p><p><b>  end;</b></p><p>  architecture fen of fenwei is </p><p><b>  begin</b></p><p>  process(clock)</p><p><b>

41、;  begin</b></p><p>  if rising_edge(clock) then</p><p>  if numin>=20 then</p><p><b>  numa<=2;</b></p><p>  numb<=numin-20;</p><

42、p>  elsif numin>=10 then</p><p><b>  numa<=1;</b></p><p>  numb<=numin-10;</p><p><b>  else</b></p><p><b>  numa<=0;</b

43、></p><p>  numb<=numin;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end;</b>

44、;</p><p>  3.4 帶閃爍功能的七段數(shù)碼驅(qū)動(dòng)顯示模塊display</p><p>  (1)七段數(shù)碼驅(qū)動(dòng)顯示模塊對輸入信號進(jìn)行譯碼得到七段數(shù)碼顯示器的驅(qū)動(dòng)信號,其外部端口如圖7所示。</p><p>  圖7 七段數(shù)碼驅(qū)動(dòng)顯示模塊display外部端口</p><p> ?。?)七段數(shù)碼驅(qū)動(dòng)顯示模塊display的VHDL程

45、序</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity display is</p><p>  port(clock:in

46、std_logic;</p><p>  flash:in std_logic;</p><p>  qin:in std_logic_vector(3 downto 0);</p><p>  display:out std_logic_vector(0 to 6));</p><p><b>  end;</b>&l

47、t;/p><p>  architecture light of display is</p><p>  signal timeout:integer range 0 to 11; </p><p><b>  begin</b></p><p>  process(clock)</p><p>&

48、lt;b>  begin</b></p><p>  if rising_edge(clock) then</p><p>  if (flash='0') then</p><p>  timeout<=0;</p><p><b>  else </b></p>

49、<p>  if (timeout=11) then</p><p>  timeout<=timeout+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if(timeout<=6) then&

50、lt;/p><p>  case qin is</p><p>  when "0000"=>display<="1111110";</p><p>  when "0001"=>display<="0110000";</p><p>  wh

51、en "0010"=>display<="1101101";</p><p>  when "0011"=>display<="1111001";</p><p>  when "0100"=>display<="0110011";&l

52、t;/p><p>  when "0101"=>display<="1011011";</p><p>  when "0110"=>display<="1011111";</p><p>  when "0111"=>display<

53、="1110000";</p><p>  when "1000"=>display<="1111111";</p><p>  when "1001"=>display<="1111011";</p><p>  when others=&g

54、t;display<="0000000";</p><p><b>  end case;</b></p><p><b>  else</b></p><p>  display<="0000000";</p><p><b>  en

55、d if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end;</b></p><p>  4.交通控制燈頂層電路設(shè)計(jì)</p><p><b>  4.1 原理說

56、明</b></p><p>  交通頂層電路圖如圖8所示。圖8中有3個(gè)輸入信號clk20m、reset和hold。clk20m為系統(tǒng)輸入時(shí)鐘,它通過分頻器可分別得到1Hz和10Hz頻率信號,分別用來向controller模塊和display模塊提供時(shí)鐘脈沖。controller模塊根據(jù)時(shí)鐘脈沖上升沿開始計(jì)數(shù),將數(shù)據(jù)傳輸?shù)絥uma[4…0]和numb[4…0]兩個(gè)端口,并對reda、greena、yel

57、lowa和redb、greenb、yellowb兩組紅、黃、綠燈開始控制。fenwei模塊時(shí)鐘由系統(tǒng)輸入時(shí)鐘clk20m控制,將controller模塊輸出端口numa[4…0]和numb[4…0]傳輸過來的數(shù)據(jù)分為十位數(shù)和個(gè)位數(shù)分別存到numina、numinb、numinc和numind兩組兩位數(shù)組里,然后分別送到display模塊輸入端口numina、numinb、numinc和numind進(jìn)行數(shù)據(jù)顯示。</p>&

58、lt;p>  圖8 交通控制燈頂層設(shè)計(jì)原理圖</p><p>  4.2 端口設(shè)計(jì)說明</p><p>  clk20m:系統(tǒng)輸入時(shí)鐘,來自于石英振蕩器。</p><p>  hold:輸入,功能鍵,保持:按hold鍵能實(shí)現(xiàn)特殊的功能:顯示倒計(jì)時(shí)的兩組數(shù)碼管閃爍;計(jì)數(shù)器停止計(jì)數(shù)并保持在原有的狀態(tài);東西,南北路口均顯示紅燈狀態(tài);特殊狀態(tài)接觸后可以繼續(xù)計(jì)數(shù)。&l

59、t;/p><p>  reset:輸入,功能鍵,復(fù)位。</p><p>  flash:輸出,轉(zhuǎn)換期間的閃爍信號。</p><p>  redb:輸出,B路口顯示紅燈信號,高電平有效。</p><p>  greenb:輸出,B路口顯示綠燈信號,高電平有效。</p><p>  yellowb:輸出,B路口顯示黃燈信號,高

60、電平有效。</p><p>  reda:輸出,A路口顯示紅燈信號,高電平有效。</p><p>  greena:輸出,A路口顯示綠燈信號,高電平有效。</p><p>  yellowab:輸出,A路口顯示黃燈信號,高電平有效。</p><p>  displaya:A路口倒數(shù)時(shí)間顯示十位數(shù)</p><p>  d

61、isplayb:A路口倒數(shù)時(shí)間顯示個(gè)位數(shù)</p><p>  displayc:B路口倒數(shù)時(shí)間顯示十位數(shù)</p><p>  displayd:B路口倒數(shù)時(shí)間顯示個(gè)位數(shù)</p><p>  4.3 Quartus ii 仿真與結(jié)果分析</p><p>  交通燈控制系統(tǒng)的時(shí)序仿真波形如圖9~圖11所示。可見,圖9中reset設(shè)置為高電平“1”

62、時(shí)顯示初始值,為低電平“0”時(shí)顯示器開始倒計(jì)時(shí)。</p><p>  圖9 交通燈控制系統(tǒng)的時(shí)序仿真波形1</p><p>  圖10是仿真結(jié)果的細(xì)節(jié)部分。當(dāng)A路口綠燈亮。displaya和displayb從20s倒計(jì)時(shí),同時(shí)B路口燈亮,displayc和displayd從25s倒計(jì)時(shí)。當(dāng)A路口綠燈倒計(jì)時(shí)結(jié)束時(shí),讓黃燈亮,倒計(jì)時(shí)5s為轉(zhuǎn)換信號,當(dāng)黃燈倒計(jì)時(shí)結(jié)束時(shí)紅燈亮,displaya和d

63、isplayb從25s倒計(jì)時(shí)。B路口綠燈亮,displayc和displayd從20s倒計(jì)時(shí),A路口紅燈亮,displaya和displayb從25s倒計(jì)時(shí),這時(shí)B路口重復(fù)A路口的上一次動(dòng)作,如此循環(huán)下去。</p><p>  圖10 交通燈控制系統(tǒng)的時(shí)序仿真波形2</p><p>  圖11 交通燈控制系統(tǒng)的時(shí)序仿真波形3</p><p>  從圖11可以看出交通

64、燈控制系統(tǒng)中hold鍵的功能。當(dāng)hold設(shè)置為高電平“1”時(shí)顯示器保持原有數(shù)字不變,且無條件點(diǎn)亮紅色的發(fā)光二極管reda=1。當(dāng)hold設(shè)置為低電平“0”時(shí),顯示器繼續(xù)計(jì)數(shù)。</p><p><b>  B 跑馬燈設(shè)計(jì)</b></p><p><b>  1.設(shè)計(jì)要求</b></p><p>  1.1 學(xué)習(xí)并掌握Quar

65、tus ii軟件,掌握用自頂向下的設(shè)計(jì)方法,使用VHDL語言來實(shí)現(xiàn)跑馬燈的設(shè)計(jì),并在此基礎(chǔ)上熟悉可編程邏輯器件的使用。</p><p>  1.2 基礎(chǔ)功能要求:</p><p>  實(shí)現(xiàn)8個(gè)紅色LED的亮、滅、交錯(cuò)顯示等,其顯示如下 </p><p> ?。?)復(fù)位時(shí),8個(gè)燈全滅;</p><p>  (2)從左到右第一個(gè)開始亮,依次亮到最

66、后一個(gè);</p><p> ?。?)從右到左第一個(gè)開始亮,依次亮到最后一個(gè);</p><p>  (4)從中間亮到兩邊;</p><p> ?。?)從兩邊亮到中間; </p><p>  1.3 擴(kuò)展功能要求:</p><p>  隨著彩燈顯示圖案的變化,發(fā)出不同的音響聲。</p><p>&l

67、t;b>  2. 方案設(shè)計(jì)框架</b></p><p>  2.1 這次的跑馬燈設(shè)計(jì)采用模塊化方法設(shè)計(jì),整體方案包括分頻器模塊、計(jì)數(shù)器模塊、選擇器模塊和彩燈控制器模塊。其中彩燈控制器是用來輸出不同的圖案和音響聲,彩燈控制器的輸出則是用一個(gè)32進(jìn)制的計(jì)數(shù)器來控制。揚(yáng)聲器的輸出用不同的頻率來控制,因此用了一個(gè)集成分頻器來使輸入的頻率被分為幾種不同的頻率。不同頻率的選擇性的輸出則是用一個(gè)4選一的選擇

68、器來控制。</p><p>  圖3.1跑馬燈的輸出原理方框圖</p><p>  圖3.2 揚(yáng)聲器輸出原理方框圖</p><p>  3.硬件電路的設(shè)計(jì)與軟件設(shè)計(jì)</p><p>  3.1集成分頻器模塊</p><p>  1)設(shè)計(jì)要求顯示不同的跑馬燈的時(shí)候要伴隨不同的音樂,所以設(shè)計(jì)分頻器來用不同的頻率控制不同的音

69、樂輸出。</p><p><b>  模塊說明:</b></p><p>  Rst:輸入信號,復(fù)位信號,用來復(fù)位集成分頻器的輸出使輸出為“0”,及沒有音樂輸出。</p><p>  Clk:輸入信號,即為分頻輸入的頻率信號。</p><p>  Clk_4、clk_6、clk_8、clk_10:輸出信號 即為分頻模塊對

70、輸入信號clk的分頻,分別為1/4分頻輸出、1/6分頻輸出、1/8分頻輸出、1/10分頻輸出。 </p><p>  圖3.1 集成分頻器</p><p>  2)分頻器VHDL程序編寫及仿真結(jié)果</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.all

71、; -- IEEE庫使用聲明</p><p>  ENTITY fenpinqi IS -- 實(shí)體端口聲明</p><p>  PORT(clk,rst: IN std_logic; -- 類型的輸入端口</p><p>  clk_10,clk_4,clk_6,clk_8: OUT std_l

72、ogic); -- 輸出口</p><p>  END fenpinqi;</p><p>  ARCHITECTURE cd OF fenpinqi IS --結(jié)構(gòu)體功能描述語句</p><p><b>  begin</b></p><p>  p1:process(clk,rst)

73、 --進(jìn)程語句</p><p>  variable a:integer range 0 to 20;</p><p><b>  begin</b></p><p>  if rst='1' then</p><p>  clk_4<='0';

74、 ---復(fù)位信號控制部分</p><p><b>  else</b></p><p>  if clk'event and clk='1'then --時(shí)鐘信號clk,上升沿有效邊沿</p><p>  if a>=3 then a:=0; --當(dāng)a大于等于3時(shí),則a等于0 <

75、;/p><p>  clk_4<='1';</p><p><b>  else</b></p><p>  a:=a+1; --否則a等于a加1</p><p>  clk_4<='0';</p><p><b&g

76、t;  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p1;</p><p>  p2:process(clk,rst)</p><p>

77、  variable b:integer range 0 to 20;</p><p><b>  begin</b></p><p>  if rst='1' then</p><p>  clk_6<='0'; ----- 復(fù)位信號控制部分</p>

78、<p><b>  else</b></p><p>  if clk'event and clk='1'then</p><p>  if b>=5 then</p><p><b>  b:=0;</b></p><p>  clk_6<='

79、1';</p><p><b>  else</b></p><p><b>  b:=b+1;</b></p><p>  clk_6<='0';</p><p><b>  end if;</b></p><p><

80、;b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p2;</p><p>  p3:process(clk,rst)</p><p>  variable c:integer range 0 to 20;</p>

81、<p><b>  begin</b></p><p>  if rst='1' then</p><p>  clk_8<='0'; ----- 復(fù)位信號控制部分</p><p><b>  else</b></p>

82、<p>  if clk'event and clk='1'then</p><p>  if c>=7 then</p><p><b>  c:=0;</b></p><p>  clk_8<='1';</p><p><b>  else&l

83、t;/b></p><p><b>  c:=c+1;</b></p><p>  clk_8<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>

84、;<b>  end if;</b></p><p>  end process p3; --關(guān)閉進(jìn)程</p><p>  p4:process(clk,rst) --開啟另外一個(gè)進(jìn)程</p><p>  variable d:integer range 0 to 20; --定義d為變量</p>

85、<p><b>  begin</b></p><p>  if rst='1' then</p><p>  clk_10<='0'; ----- 復(fù)位信號控制部分</p><p><b>  else</b></p>

86、<p>  if clk'event and clk='1'then</p><p>  if d>=9 then</p><p><b>  d:=0;</b></p><p>  clk_10<='1'; </p><p><b>

87、;  else</b></p><p><b>  d:=d+1;</b></p><p>  clk_10<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p>

88、<p><b>  end if;</b></p><p>  end process p4; </p><p><b>  end cd;</b></p><p>  圖3.2 集成分頻器仿真波形</p><p>  3.2 32進(jìn)制計(jì)數(shù)器模塊</p>&l

89、t;p>  1) 32進(jìn)制模塊用來控制彩燈輸出模塊,即確定跑馬燈控制器的不同的輸出。</p><p>  Rst:輸入信號 復(fù)位信號 用來復(fù)位32進(jìn)制使其輸出為“00000”。</p><p>  Clk:輸入信號 用來給模塊提供工作頻率。</p><p>  Count_out[4..0]:輸出信號 即為32進(jìn)制計(jì)數(shù)器的輸出。</p><

90、p>  圖3.2 32進(jìn)制計(jì)數(shù)器</p><p>  2)32進(jìn)制計(jì)數(shù)器VHDL程序編寫及其仿真結(jié)果</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all; -- IEEE庫使用聲明</p><p>  entity counter_32 is

91、 --實(shí)體端口聲明</p><p>  port(clk,rst: in std_logic; --聲明clk,clr是標(biāo)準(zhǔn)邏輯位類型的輸入端口</p><p>  count_out: out integer range 0 to 31);</p><p>  end counter_32;</p><p&g

92、t;  architecture a of counter_32 is</p><p><b>  begin</b></p><p>  process (rst,clk)</p><p>  variable temp:integer range 0 to 32; --定義temp為變量</p><p><

93、;b>  begin</b></p><p>  if rst='1' then --條件選擇語句</p><p><b>  temp:=0;</b></p><p>  elsif (clk'event and clk='1') then&

94、lt;/p><p>  temp:=temp+1;</p><p>  if(temp=32) then</p><p><b>  temp:=0;</b></p><p><b>  end if;</b></p><p><b>  end if;</

95、b></p><p>  count_out<=temp;</p><p>  end process;</p><p><b>  end a;</b></p><p>  圖3.4 32進(jìn)制計(jì)數(shù)器仿真波形</p><p><b>  3.3彩燈控制模塊</b&

96、gt;</p><p>  1) 彩燈控制模塊用來直接控制跑馬燈的輸出,使彩燈表現(xiàn)出不同的花樣。</p><p>  Rst:輸入信號 使彩燈控制模塊的輸出為“00000000”,即讓彩燈無輸出。</p><p>  Input[4..0]:輸入信號 不同的輸入使彩燈控制模塊有不同的輸出即彩燈顯示出不同的花樣。</p><p>  Outp

97、ut[7..0]:輸出信號 直接與彩燈相連來控制彩燈</p><p>  圖3.5 彩燈控制模塊</p><p>  2) 彩燈控制模塊VHDL程序編寫及仿真</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.all; -- IEEE庫使用聲明</p>

98、<p>  ENTITY caideng IS -- 實(shí)體端口聲明</p><p>  PORT(input: ININTEGER RANGE 0 TO 31;</p><p>  rst:in std_logic; </p><p>  output: OUT std_logic_vector(7 downto 0);&l

99、t;/p><p>  sm :out std_logic_vector(6 downto 0));</p><p>  END caideng;</p><p>  ARCHITECTURE a OF caideng IS --結(jié)構(gòu)體功能描述語句</p><p><b>  BEGIN</b></p>

100、<p>  PROCESS (input,rst)</p><p><b>  BEGIN</b></p><p>  if rst='1' then output<="00000000";sm<="0000000"; --當(dāng)rst復(fù)位時(shí),燈全滅</p><p>

101、<b>  else</b></p><p>  case input is </p><p>  when 0=>output<="10000000";sm<="0000110";</p><p>  when 1=>output<="01000000"

102、;sm<="0000110";</p><p>  when 2=>output<="00100000";sm<="0000110";</p><p>  when 3=>output<="00010000";sm<="0000110";</p

103、><p>  when 4=>output<="00001000";sm<="0000110";</p><p>  when 5=>output<="00000100";sm<="0000110";</p><p>  when 6=>output

104、<="00000010";sm<="0000110";</p><p>  when 7=>output<="00000001";sm<="0000110";</p><p>  --當(dāng)sm為110時(shí),燈從左到右第一個(gè)開始亮</p><p>  when 8

105、=>output<="00010000";sm<="0011011";</p><p>  when 9=>output<="00110000";sm<="0011011";</p><p>  when 10=>output<="00111000&qu

106、ot;;sm<="0011011";</p><p>  when 11=>output<="01111000";sm<="0011011";</p><p>  when 12=>output<="01111100";sm<="0011011";&

107、lt;/p><p>  when 13=>output<="01111110";sm<="0011011";</p><p>  when 14=>output<="11111110";sm<="0011011";</p><p>  when 15=&g

108、t;output<="11111111";sm<="0011011";</p><p>  --當(dāng)sm為11011時(shí),燈從中間亮到兩邊</p><p>  when 16=>output<="10000001";sm<="1001111";</p><p>

109、  when 17=>output<="11000001";sm<="1001111";</p><p>  when 18=>output<="11000011";sm<="1001111";</p><p>  when 19=>output<="1

110、1100011";sm<="0011011";</p><p>  when 20=>output<="11100111";sm<="1001111";</p><p>  when 21=>output<="11110111";sm<="10011

111、11";</p><p>  when 22=>output<="11111111";sm<="1001111";</p><p>  when 23=>output<="00001000";sm<="1001111";</p><p>  

112、--當(dāng)sm為1001111時(shí),燈從兩邊亮到中間</p><p>  when 24=>output<="00000001";sm<="0100110";</p><p>  when 25=>output<="00000010";sm<="0100110";</p>

113、;<p>  when 26=>output<="00000100";sm<="0100110";</p><p>  when 27=>output<="00001000";sm<="0100110";</p><p>  when 28=>output

114、<="00010000";sm<="0100110";</p><p>  when 29=>output<="00100000";sm<="0100110";</p><p>  when 30=>output<="01000000";sm<

115、="0100110";</p><p>  when 31=>output<="10000000";sm<="0100110";</p><p>  when others=>null;</p><p>  --當(dāng)sm為0100110時(shí),燈從右邊亮到左邊</p><

116、;p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end a;</b></p><p>  圖3 .6 .跑馬燈控制模塊仿真波形</p>

117、<p>  3.4 4選1選擇器模塊</p><p>  1) Rst:輸入信號 復(fù)位信號 使選擇器的輸出為“0”。</p><p>  In1、in2、in3、in4:輸入信號 接分頻器的輸出。</p><p>  Inp[1..0]:輸入信號 接4進(jìn)制計(jì)數(shù)器的輸出用來控制選擇器的選擇不同的輸入選擇不同的輸出。</p><p&

118、gt;  Output:輸出信號 直接接揚(yáng)聲器即輸出的是不同的頻率來控制揚(yáng)聲器播放音樂。</p><p>  圖4.7 4選1選擇器</p><p>  2) 4選1選擇器模塊VHDL程序編寫及仿真</p><p>  Library ieee;</p><p>  use ieee.std_logic_1164.all; --

119、IEEE庫使用聲明</p><p>  entity mux41 is -- 實(shí)體端口聲明</p><p>  port( rst:in std_logic;</p><p>  s:in std_logic_vector(1 downto 0);</p><p>  a,b,c,d: in std_logic;<

120、;/p><p>  y: out std_logic);</p><p>  end mux41;</p><p>  architecture a of mux41 is --結(jié)構(gòu)體功能描述語句</p><p><b>  begin</b></p><p>  process

121、(rst,s,a,b,c,d)</p><p><b>  begin</b></p><p>  if(rst='1') then y<='0';</p><p><b>  else</b></p><p>  case s is

122、 -- case選擇語句</p><p>  when "00"=>y<=a; </p><p>  when "01"=>y<=b;</p><p>  when "10"=>y<=c;</p><p>  when "11

123、"=>y<=d; </p><p>  when others=>null;</p><p>  end case; </p><p><b>  end if;</b></p><p>  end process;</p><p><b>  e

124、nd a;</b></p><p>  圖4.8 4選1選擇器仿真波形</p><p>  3.5 4進(jìn)制計(jì)數(shù)器模塊</p><p>  1) 4進(jìn)制計(jì)數(shù)器作為選擇器的輸入來控制選擇器選擇不同的頻率作為輸出控制揚(yáng)聲器工作。</p><p>  Clk:輸入信號 來為計(jì)數(shù)器提供工作頻率。</p><p>

125、  Rst:輸入信號 復(fù)位信號 使計(jì)數(shù)器的輸出為“00”。</p><p>  圖4.9 4進(jìn)制計(jì)數(shù)器</p><p>  2) 4進(jìn)制計(jì)數(shù)器模塊VHDL程序編寫及仿真</p><p>  Library IEEE;</p><p>  use ieee.std_logic_1164.all; -- IEEE庫使用聲

126、明</p><p>  entity counter_4 is -- 實(shí)體端口聲明</p><p>  port(clk,rst: in std_logic; -- 聲明clk,clr是標(biāo)準(zhǔn)邏輯位</p><p>  count_out: out integer range 0 to 3);</p

127、><p>  end counter_4;</p><p>  architecture a of counter_4 is</p><p><b>  begin</b></p><p>  process(rst,clk)</p><p>  variable temp:integer rang

128、e 0 to 4;</p><p><b>  begin</b></p><p>  if rst='1'then --如果rst為1,變量temp:為0,否則temp:=temp+1;</p><p><b>  temp:=0;</b></p><p>  

129、elsif (clk'event and clk='1') then</p><p>  temp:=temp+1;</p><p>  if(temp=4) then</p><p><b>  temp:=0;</b></p><p><b>  end if;</b&g

130、t;</p><p><b>  end if;</b></p><p>  count_out<=temp; --把temp賦值給count_out</p><p>  end process;</p><p><b>  end a;</b></p><p>

131、  圖4.10 4進(jìn)制計(jì)數(shù)器仿真波形</p><p><b>  5 系統(tǒng)結(jié)構(gòu)及仿真</b></p><p>  整個(gè)系統(tǒng)就是各個(gè)分模塊組成來實(shí)現(xiàn)最后的彩燈控制功能,系統(tǒng)又兩個(gè)時(shí)鐘來控制一個(gè)是控制32進(jìn)制計(jì)數(shù)器即控制彩燈控制模塊來實(shí)現(xiàn)彩燈的不同輸出,另一個(gè)時(shí)鐘為分頻器的輸入來進(jìn)行分頻處理,最后用來控制揚(yáng)聲器發(fā)出不同的音樂,具體分頻處理的時(shí)鐘的頻率比實(shí)現(xiàn)彩燈控制的時(shí)鐘

132、頻率要高。</p><p>  圖 5.1 系統(tǒng)功能模塊</p><p>  圖 5.2 系統(tǒng)功能仿真波形</p><p><b>  6.總結(jié)</b></p><p>  這次的EDA課程設(shè)計(jì)有一周的時(shí)間,在這一周的時(shí)間里我們充分合理的安排了自己的時(shí)間來使本次的課程設(shè)計(jì)能夠順利的完成,當(dāng)然我們在本次的設(shè)計(jì)中并不是一帆

133、風(fēng)順的,我們遇到了一些的問題,例如我們開始時(shí)用的文本的方式用一個(gè)總的程序來完成,可以在設(shè)計(jì)的過程中我們發(fā)現(xiàn)程序編到后面變量越到很容易搞混淆同時(shí)各個(gè)進(jìn)程間的聯(lián)系也越來越模糊以至于后面我們自己都不知道程序的整體框圖是什么,導(dǎo)致后面不能夠繼續(xù)下去,后面我們再一次對我們這次的設(shè)計(jì)題目進(jìn)行了分析和整理,最后我和我的同伴決定采用分模塊的方式來完成本次的課題設(shè)計(jì),當(dāng)然最重要的是分析各個(gè)模塊間的關(guān)系。最后我們采用上面分析的結(jié)構(gòu)框圖。最后我們的設(shè)計(jì)很成功

134、,仿真和硬件測試都是正確的,實(shí)現(xiàn)了我們的設(shè)計(jì)要求和目的。</p><p>  在這次設(shè)計(jì)中我們收獲了很多,首先最直接的收獲就是我們鞏固了這門課程所學(xué)過的知識,把它運(yùn)用到了實(shí)踐當(dāng)中,并且學(xué)到了很多在書本撒和那個(gè)所沒有學(xué)到的知識,通過查閱相關(guān)資料進(jìn)一步加深了對EDA的了??偟膩碚f,通過這次課程設(shè)計(jì)不僅鍛煉了我們的動(dòng)手和動(dòng)腦能力,也使我懂得了理論與實(shí)際相結(jié)合的重要性,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,要把所學(xué)的理論知識與實(shí)踐相

135、結(jié)合起來,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在我們的共同努力和指導(dǎo)老師的指引下我們圓滿的完成了彩燈控制器的設(shè)計(jì),實(shí)現(xiàn)了設(shè)計(jì)目的。</p><p><b>  參考書目:</b></p><p>  趙偉軍,《Protel99se教程》,北京,人民郵電出版社,1996年</p><p>  金西,《VHDL與復(fù)雜數(shù)字系統(tǒng)設(shè)計(jì)》,西安,西

136、安電子科技大學(xué)出版社,2003</p><p>  漢澤西,《EDA技術(shù)及其應(yīng)用》,北京,北京航空航天大學(xué)出版社,2004</p><p>  李炳宇,蕭蘊(yùn)詩,李永東.AT89C51單片機(jī)在多層樓宇對講系統(tǒng)中的應(yīng)用[J].自動(dòng)化與儀表,2001,38(04):23-25. </p><p>  李強(qiáng)華,張根寶,段力.基于單片機(jī)控制的樓宇對講系統(tǒng)的設(shè)計(jì)[J].電氣應(yīng)用

137、,2007,12(01):04-06.</p><p>  吳慶元,盧益民.智能小區(qū)系統(tǒng)通信協(xié)議的設(shè)計(jì)[J].通信技術(shù),2003,19(7):98-99. </p><p>  Philips. 80C51-based 8-Bit Microcontrollers[M].1994:36-45.</p><p>  李建忠.單片機(jī)原理及應(yīng)用[M].西安:西安電子科技大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論