找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9475|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

Quartus EDA交通燈控制電路的設(shè)計(jì)實(shí)訓(xùn)報(bào)告與Verilog源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#


全部資料51hei下載地址:
設(shè)計(jì)資料.7z (1.31 MB, 下載次數(shù): 151)



《EDA技術(shù)及應(yīng)用》實(shí)訓(xùn)報(bào)告

實(shí)訓(xùn)題目:交通燈控制電路的設(shè)計(jì)
1 系統(tǒng)設(shè)計(jì)
1.1 設(shè)計(jì)要求
1.1.1 設(shè)計(jì)任務(wù)  
設(shè)計(jì)并制作一個(gè)交通燈電路,使它能符合實(shí)際交通道路控制的要求。
1.1.2 性能指標(biāo)要求
① 用EDA實(shí)訓(xùn)儀上的4只八段數(shù)碼管分別顯示道路東西和南北通行和禁止的倒計(jì)時(shí)時(shí)間。
② 能設(shè)置道路東西和南北兩側(cè)通行和禁止的倒計(jì)時(shí)時(shí)間,最大設(shè)置時(shí)間為99秒,最小設(shè)置時(shí)間為1秒。
③ 交通燈用紅、綠、黃三種發(fā)光二極管(LED)顯示控制的結(jié)果。
④ 紅、綠、黃燈顯示的次序應(yīng)符合實(shí)際交通道路控制的要求。
1.2 設(shè)計(jì)思路及設(shè)計(jì)框圖
1.2.1設(shè)計(jì)思路
此方案需要設(shè)計(jì)一個(gè)分頻器和兩個(gè)計(jì)時(shí)模塊一個(gè)紅綠燈模塊,分頻器模塊用于將20MHz轉(zhuǎn)換為1Hz的時(shí)鐘,兩個(gè)計(jì)時(shí)器分別進(jìn)行東西紅綠燈的倒計(jì)時(shí)。燈的模塊只需要設(shè)計(jì)一個(gè)模塊,將黃燈和紅綠燈分開(kāi),定義一個(gè)8位的reg型變量來(lái)控制紅綠兩色LED燈和一個(gè)4位reg型變量黃色LED燈,黃燈實(shí)現(xiàn)倒計(jì)時(shí)外,加上了閃爍的功能。
此外,為此方案加入了一個(gè)暫停模塊。
1.2.2總體設(shè)計(jì)框圖
fenpin:分頻模塊;
zt:暫停模塊;
jishi,jishib:倒計(jì)時(shí)模塊;
hld:紅綠燈模塊;
2 各個(gè)模塊程序的設(shè)計(jì)
  • 分頻模塊:

即fenpin 模塊。這個(gè)模塊是把EDA實(shí)訓(xùn)儀主板提供的20MHZ的主頻經(jīng)兩千萬(wàn)分頻后,得到電路所需的1秒脈沖。其中clk是時(shí)鐘輸入端,clk_HZ是輸出端。
  • 暫停模塊

“zt”輸入端高電平時(shí)使計(jì)數(shù)暫停(clk_0與clk斷開(kāi)),低電平時(shí)使計(jì)數(shù)繼續(xù)(clk_0與clk連接)。
  • 倒計(jì)時(shí)模塊


以“jihshi”模塊為例:clk是經(jīng)過(guò)分頻器輸出的1HZ時(shí)鐘信號(hào);lod是控制交通燈模式轉(zhuǎn)換的標(biāo)志位;ma[7..0]輸入的是從qa[7..0]拿到的數(shù)值;qa[7..0]是輸出端既輸出給紅綠燈模塊和黃燈模塊,又將數(shù)值顯示在數(shù)碼管上。
  • 紅綠燈模塊

clk是分頻器輸出的時(shí)鐘信號(hào); qa,qb是計(jì)時(shí)器輸出的時(shí)間信號(hào),用于判斷并改變lod的狀態(tài);ma,mb是從預(yù)先定義紅黃綠LED燈的時(shí)間中拿到的數(shù)值,再輸出給計(jì)時(shí)模塊;hld是顯示輸出端,接LED的紅綠兩種燈;hd 是顯示輸出端,接LED的黃燈。其中l(wèi)od是控制交通燈模式轉(zhuǎn)換的標(biāo)志位,qm表示紅綠燈的四種狀態(tài)。 flag是控制黃燈的三種狀態(tài)。
3  調(diào)試過(guò)程
在設(shè)計(jì)前根據(jù)要求做一個(gè)交通燈的這個(gè)設(shè)計(jì)流程圖,注意紅綠黃三種燈的變換。對(duì)各個(gè)小模塊的程序進(jìn)行編寫和調(diào)試,各個(gè)小模塊程序調(diào)試完畢之后,接著就要從整個(gè)交通燈系統(tǒng)的一些細(xì)節(jié)進(jìn)行修改。
東西和南北方向分別亮紅燈和綠燈,同時(shí)兩組的數(shù)碼管從開(kāi)始設(shè)的26秒和30秒開(kāi)始倒計(jì)時(shí),等倒計(jì)時(shí)完?yáng)|西組燈先從綠燈轉(zhuǎn)到黃燈,南北組從紅燈轉(zhuǎn)綠燈,但是在這模塊的時(shí)候設(shè)置的時(shí)間沒(méi)設(shè)好,黃燈亮了以后綠燈還沒(méi)滅,經(jīng)過(guò)審查問(wèn)題最終被解決了
對(duì)程序編譯成功后下載到EDA試驗(yàn)箱,LED開(kāi)始亮,開(kāi)始自動(dòng)倒計(jì)時(shí),紅黃綠燈跳變。
4  功能測(cè)試
4.1 測(cè)試儀器與設(shè)備
電腦 :一臺(tái)
EDA實(shí)驗(yàn)箱 :一臺(tái)
4.2 性能指標(biāo)測(cè)試
1.東西南北的紅綠燈可以通過(guò)倒計(jì)時(shí)來(lái)禁止和發(fā)亮。
2.實(shí)現(xiàn)在1秒到99秒內(nèi)可調(diào)。
3.能在數(shù)碼管上分別顯示兩個(gè)方向的交通燈倒計(jì)時(shí),。
4.紅黃綠燈的變化基本符合實(shí)際交通燈。
5方向紅燈倒計(jì)時(shí)30s,綠燈26s,倒計(jì)時(shí)至0s,黃燈亮倒計(jì)時(shí)3,紅綠燈轉(zhuǎn)換黃燈閃爍。
4.3 誤差分析
本題目沒(méi)有誤差分析。
5  實(shí)訓(xùn)心得體會(huì)
從一開(kāi)始完全沒(méi)有頭緒到畫出設(shè)計(jì)流程圖,在接下來(lái)熟悉Verilog HDL,下載Quartus9.0并熟練操作。
通過(guò)本次實(shí)訓(xùn),使我對(duì)EDA這門課有了更深的了解,課堂上所學(xué)到的知識(shí)要融會(huì)貫通,要自己親手去操作、學(xué)習(xí),而且盡可能多的去拓展知識(shí),去揣摩我們學(xué)到的東西。遇到難題別慌張,確定預(yù)想結(jié)果及方案,分模塊解決,問(wèn)題就會(huì)變得簡(jiǎn)單。另外一個(gè)模塊做好最好先編譯一下,成功后再做接下來(lái)的。
通過(guò)這次EDA實(shí)訓(xùn),使我對(duì)EDA更加的充滿興趣,同時(shí)對(duì)QuartusⅡ這個(gè)軟件有了進(jìn)一步的了解,我學(xué)會(huì)了如何設(shè)計(jì)一個(gè)交通燈控制電路并且成功驗(yàn)收。在進(jìn)行實(shí)訓(xùn)的的過(guò)程中,不僅提高了我的編程能力,同時(shí)還讓我對(duì)交通燈控制系統(tǒng)也進(jìn)一步認(rèn)識(shí)并加深了學(xué)習(xí)。當(dāng)然實(shí)訓(xùn)當(dāng)中,我遇到許多問(wèn)題,通過(guò)上網(wǎng)查找資料,詢問(wèn)老師同學(xué)后使問(wèn)題得到了解決。在此,非常感謝老師和同學(xué)的幫助。我認(rèn)真的學(xué)習(xí)了每一條程序的作用,在驗(yàn)收的時(shí)候也能基本回答出老師問(wèn)的每一個(gè)問(wèn)題。我深刻的明白了知識(shí)在于一點(diǎn)一點(diǎn)的積累,這一次的實(shí)訓(xùn)涉及了方方面面的知識(shí),有分頻器,有減法計(jì)數(shù)器等等模塊的設(shè)計(jì),可以說(shuō)這是對(duì)我們能力的一次大檢驗(yàn)。
所以,這讓我懂得了很多知識(shí)都是要平時(shí)積累的,知識(shí)積累得多了那我們學(xué)習(xí)的時(shí)候就會(huì)有更多的依據(jù),會(huì)有更多新的想法。所以今后一定要積累更多的知識(shí),為以后對(duì)各個(gè)科目的深入學(xué)習(xí)做鋪墊。同時(shí)也要懂得把學(xué)到的知識(shí)運(yùn)用到實(shí)際當(dāng)中去。
6  參考文獻(xiàn)
[1] 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試(第二版).武漢:華中科技大學(xué)出版社,2000.
[2] 江國(guó)強(qiáng).EDA技術(shù)與應(yīng)用(第五版).北京:電子工業(yè)出版社,2017.
[3] 潘松,黃繼業(yè),潘明.EDA技術(shù)實(shí)用教程——VerilogHDL版(第五版).北京:科學(xué)出版社,2013.
[4] 閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ)(第五版).北京:高等教育出版社,2006.


附錄1:仿真波形圖(部分模塊)


總模塊仿真(需要去掉分頻器):


②暫停模塊:

③計(jì)時(shí)模塊:

附錄2:程序清單
  1. ①分頻模塊:
  2. module fenpin(clk,clk_HZ);
  3. input clk;
  4. output reg clk_HZ;
  5. reg[24:0] counter;
  6. initial
  7. begin
  8.               clk_HZ=0;
  9.               counter=0;
  10. end
  11. always @(posedge clk)                                                         
  12. begin
  13.               if(counter==10000000-1)
  14.               begin
  15.               counter=0;
  16.               clk_HZ=~clk_HZ;            
  17.               end
  18.               else
  19.               counter = counter + 1;
  20. end
  21. endmodule

  22. ②暫停模塊:
  23. module zt(zt,clk_0,clk);
  24. input zt,clk_0;
  25. output reg clk;
  26. always @(posedge clk_0,negedge zt)
  27. begin
  28.               if(~zt)
  29.               clk=clk_0;
  30. end
  31. endmodule
  32. ③計(jì)時(shí)模塊(a):
  33. module jishi(clk,lod,ma,qa);
  34. input clk,lod;
  35. input[7:0] ma;
  36. output reg[7:0] qa;
  37. always @(posedge clk , posedge lod)
  38. begin
  39.               if(lod)
  40.                             begin
  41.                                           qa=ma;
  42.                             end
  43.               else
  44.                             begin
  45.                                           if(qa==0)
  46.                                                         qa='h99;
  47.                                           else
  48.                                                         qa=qa-1;
  49.                                           if(qa[3:0]>'ha)
  50.                                                         qa[3:0]=9;
  51.                             end
  52. end
  53. endmodule

  54. ④計(jì)時(shí)模塊(b):
  55. module jishib(clk,lod,mb,qb);
  56. input clk,lod;
  57. input[7:0] mb;
  58. output reg[7:0] qb;
  59. always @(posedge clk or posedge lod)
  60. begin
  61.               if(lod)
  62.                             begin
  63.                                           qb=mb;
  64.                             end
  65.               else
  66.                             begin
  67.                             if(qb==0)
  68.                                           qb='h99;
  69.                             else
  70.                                           qb=qb-1;
  71.                             if(qb[3:0]>'ha)
  72.                                           qb[3:0]=9;
  73.                             end
  74. end
  75. endmodule

  76. ⑤交通燈模塊:
  77. module hld(lod,clk,ma,mb,qa,qb,hld,hd);
  78. input[7:0] qa,qb;
  79. input   clk;
  80. output reg[7:0] ma,mb;
  81. output reg[7:0] hld;
  82. output reg[3:0] hd;
  83. output reg  lod;
  84. reg[1:0] flag;
  85. reg[1:0] qm;
  86. reg[7:0] timeg,timer,timey;
  87. initial
  88. begin
  89.               timer='h30;
  90.               timeg='h26;
  91.               timey='h03;
  92.               flag=0;
  93.               qm=0;
  94.               hd='b0000;
  95. end
  96. always @(posedge clk)
  97. begin
  98.               if(qa==0||qb==0)
  99.                             lod=1;
  100.               else lod=0;
  101. end
  102. //紅綠LED燈
  103. always @(posedge lod)
  104. begin
  105.               if(qm>3)              qm=0;
  106.               if(qm==0) begin
  107.                                                         ma=timer;mb=timeg;
  108.                                                         hld='b01100110;
  109.                                                         flag=2;
  110.                                             end
  111.               else if(qm==1) begin
  112.                                                         ma=timey;mb=timey;
  113.                                                         hld='b00100010;
  114.                                                         flag=0;
  115.                                                         end
  116.               else if(qm==2) begin
  117.                                                         ma=timeg;mb=timer;
  118.                                                         hld='b10011001;
  119.                                                         flag=2;
  120.                                                         end
  121.               else if (qm==3) begin
  122.                                                         ma=timey;mb=timey;
  123.                                                         hld='b10001000;
  124.                                                         flag=1;
  125.                                                         end
  126.               qm=qm+1;
  127. end
  128. //yellow
  129. always@(posedge clk)
  130. begin
  131.               if(flag==0)
  132.               begin
  133.                             if(qa=='h03&&qb=='h03)                                                        hd='b1010;
  134.                             if(qa=='h02&&qb=='h02)                                                        hd='b0000;
  135.                             if(qa=='h01&&qb=='h01)                                                        hd='b1010;
  136.                             if(qa=='h00&&qb=='h00)                                                        hd='b0000;            
  137.               end
  138.               if(flag==1)
  139.               begin
  140.                             if(qa=='h03&&qb=='h03)                                                        hd='b0101;
  141.                             if(qa=='h02&&qb=='h02)                                                        hd='b0000;
  142.                             if(qa=='h01&&qb=='h01)                                                        hd='b0101;
  143.                             if(qa=='h00&&qb=='h00)            
  144. hd='b0000;
  145.               end
  146. end
  147. endmodule
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

地板
ID:329016 發(fā)表于 2018-7-30 16:41 | 只看該作者
SJC123 發(fā)表于 2018-6-14 01:06
樓主,請(qǐng)問(wèn)有聯(lián)系方式嗎,我在模仿你做這個(gè)仿真作業(yè)時(shí)波形出不來(lái)不知道咋回事,求請(qǐng)幫忙

不好意思 號(hào)剛找回來(lái) ,如果你還需要問(wèn)題 或者有其他問(wèn)題 就回帖吧
回復(fù)

使用道具 舉報(bào)

板凳
ID:351538 發(fā)表于 2018-6-14 01:10 | 只看該作者
你好,請(qǐng)問(wèn)可以給一個(gè)聯(lián)系方式嗎,我是杭州電子科技大學(xué)的學(xué)生,在模仿您的電路時(shí),仿真波形出不來(lái),請(qǐng)求幫助
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:351538 發(fā)表于 2018-6-14 01:08 | 只看該作者
你好,請(qǐng)問(wèn)可以給一個(gè)聯(lián)系方式嗎,我是杭州電子科技大學(xué)的學(xué)生,在模仿您的電路時(shí),仿真波形出不來(lái),請(qǐng)求幫助
回復(fù)

使用道具 舉報(bào)

樓主
ID:351538 發(fā)表于 2018-6-14 01:06 | 只看該作者
樓主,請(qǐng)問(wèn)有聯(lián)系方式嗎,我在模仿你做這個(gè)仿真作業(yè)時(shí)波形出不來(lái)不知道咋回事,求請(qǐng)幫忙
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表