第一篇:數(shù)字系統(tǒng)課程設(shè)計(jì)交通燈控制器
東南大學(xué)
《數(shù)字系統(tǒng)課程設(shè)計(jì)》
設(shè)計(jì)報(bào)告
項(xiàng)目名稱: 交通燈控制器
姓
名:
學(xué)
號:
專
業(yè):
實(shí) 驗(yàn) 室: 電工電子實(shí)驗(yàn)中心
組
別:
無
同組人員:
無
設(shè)計(jì)時(shí)間: 2016 年月 26 日
——
2016 年 9 月 20日 評定成績:
審閱教師:
目錄
一.設(shè)計(jì)方案及論證……………………………………………… 3 二.模塊設(shè)計(jì)……………………………………………………… 5 三.總體設(shè)計(jì)與仿真……………………………………………… 10 四.總結(jié)…………………………………………………………… 12 一.設(shè)計(jì)方案及論證
1.設(shè)計(jì)使用環(huán)境
本交通燈控制系統(tǒng)設(shè)計(jì)利用Verilog HDL語言進(jìn)行設(shè)計(jì)編程,利用Cyclone EP1C6Q240C8芯片和一些外圍器件組成硬件電路,利用Quartus II軟件將編寫好的程序進(jìn)行編譯和仿真,并將調(diào)試完成的程序下載到Cyclone EP1C6Q240C8芯片上,通過觀測電路板上的紅綠信號燈以及數(shù)碼管顯示來分析系統(tǒng)的性能。
2.設(shè)計(jì)任務(wù)分析
主干道與鄉(xiāng)村公路十字交叉路口在現(xiàn)代化的農(nóng)村星羅棋布,為確保車輛安全、迅速地通過,在交叉路口的每個(gè)入口處設(shè)置了紅、綠、黃三色信號燈。紅燈禁止通行;綠燈允許通行;黃燈亮則給行駛中的車輛有時(shí)間行駛到禁行線之外。主干道和鄉(xiāng)村公路都安裝了傳感器,檢測車輛通行情況,用于主干道的優(yōu)先權(quán)控制。
設(shè)計(jì)要求:
1)當(dāng)鄉(xiāng)村公路無車時(shí),始終保持鄉(xiāng)村公路紅燈亮,主干道綠燈亮。2)當(dāng)鄉(xiāng)村公路有車時(shí),而主干道通車時(shí)間已經(jīng)超過它的最短通車時(shí)間時(shí),禁止主干道通行,讓鄉(xiāng)村公路通行。主干道最短通車時(shí)間為25s。
3)當(dāng)鄉(xiāng)村公路和主干道都有車時(shí),按主干道通車25s,鄉(xiāng)村公路通車16s交替進(jìn)行。4)不論主干道情況如何,鄉(xiāng)村公路通車最長時(shí)間為16s。
5)在每次由綠燈亮變成紅燈亮的轉(zhuǎn)換過程中間,要亮5s時(shí)間的黃燈作為過渡。6)用開關(guān)代替?zhèn)鞲衅髯鳛闄z測車輛是否到來的信號。用紅、綠、黃三種顏色的發(fā)光二極管作交通燈。7)數(shù)碼管倒計(jì)時(shí)顯示
3.測量控制原理
1)通過乒乓開關(guān)來控制FPGA輸入信號的電平,從而控制交通燈工作。
2)利用FPGA輸出的電平信號去驅(qū)動(dòng)靜態(tài)數(shù)碼管及三色小燈來模擬交通燈。
4.頂層設(shè)計(jì)方案框圖及說明
1)交通燈控制器框圖
C表示鄉(xiāng)村道路是否有車到來,1表示有,0表示無;SET用來控制系統(tǒng)的開始及停止;RST是復(fù)位信號,高電平有效,當(dāng)RST為1時(shí),恢復(fù)到初始設(shè)置;CLK是外加時(shí)鐘信號;MR、MY、MG分別表示主干道的紅燈、黃燈和綠燈;CR、CY、CG分別表示鄉(xiāng)村道路的紅燈、黃燈和綠燈,1表示亮,0表示滅。
2)流程圖
MGCR表示主干道綠燈,鄉(xiāng)村道路紅燈;MYCR表示主干道黃燈,鄉(xiāng)村道路紅燈;MRCG表示主干道紅燈,鄉(xiāng)村道路綠燈;MRCY表示主干道紅燈,鄉(xiāng)村道路黃燈;T0=1表示主干道最短通車時(shí)間到,T1=1表示5秒黃燈時(shí)間到,T2=1表示鄉(xiāng)村道路最長通車時(shí)間到。二.模塊設(shè)計(jì)
1.模塊功能及端口說明
1)分頻模塊
輸入端為clk_in,即實(shí)驗(yàn)箱自帶脈沖輸入信號,輸出端為clk,即想得到的頻率。2)主控制模塊
輸入端為CLK、RST、C。其中c為鄉(xiāng)村道路開關(guān),為1時(shí)表示鄉(xiāng)村道路有車;rst為初始化開關(guān),為1時(shí)表示初始化為主干道綠燈,鄉(xiāng)村道路紅燈的狀態(tài)。
輸出端為MG、MY、MR、CG、CY、CR分別表示主干道和鄉(xiāng)村道路的紅黃綠燈,與LED燈相連;mh、ml、ch、cl分別表示主干道和鄉(xiāng)村道路倒計(jì)時(shí)顯示的高低位,與數(shù)碼管相連。
3)數(shù)碼管顯示模塊
輸入端為clk和count,輸出端為LED。
2.主要功能的設(shè)計(jì)方法
1)分頻模塊
試驗(yàn)箱可選晶振有2M和50M,選擇使用2M后,設(shè)置分頻系數(shù)為2000000,每計(jì)數(shù)到1000000,則輸出取反,最終可得到1HZ的時(shí)鐘信號。
2)主控制模塊
設(shè)置兩個(gè)外部控制條件:初始化(RST);鄉(xiāng)村干道是否有車(C);
設(shè)置一個(gè)內(nèi)部計(jì)數(shù)變量:NUM,通過相關(guān)運(yùn)算取余取整得到數(shù)碼管顯示高低位;
通過有限狀態(tài)機(jī)實(shí)現(xiàn)四個(gè)狀態(tài)的循環(huán)切換。
3.Verilog設(shè)計(jì)程序及說明
1)分頻模塊
module fre(clk_in,clk);input clk_in;output clk;reg clk;reg [31:0]k;always @(negedge clk_in)begin
if(k>=1000000)//1000000分頻 begin clk<=~clk;//取反
k<=0;end else
k<=k+1;//計(jì)數(shù)
end endmodule 2)主控制模塊
module traffic(CLK,RST,C,MG,MY,MR,CG,CY,CR,mh,ml,ch,cl);input CLK,RST,C;output [3:0]mh,ml,ch,cl;output MG,MY,MR,CG,CY,CR;reg [3:0] mh,ml,ch,cl;reg MG,MY,MR,CG,CY,CR;reg [31:0] COUNT;reg [5:0]state;parameter s1=6'b100001,s2=6'b010001,s3=6'b001100,s4=6'b001010;always @(posedge CLK)if(RST)//初始化
begin
state = s1;//最初狀態(tài),主通行,鄉(xiāng)村不通行 MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;COUNT = 0;
mh=2;//主干道綠燈25s,鄉(xiāng)村道路紅燈5s
ml=5;
ch=3;
cl=0;
end else case(state)s1: begin COUNT = COUNT+1;
if((COUNT>=25)&&(C==1))//25s已計(jì)完且鄉(xiāng)村道路來車,跳轉(zhuǎn)到s2狀態(tài)
begin
state = s2;//主干道黃燈,鄉(xiāng)村道路紅燈
MG=0;MY=1;MR=0;CG=0;CY=0;CR=1;COUNT = 0;mh=0;ml=5;ch=0;cl=5;end else if(COUNT<25)//25s沒有計(jì)完,保持s1狀態(tài)
begin
state = s1;
MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;
mh=(25-COUNT)/10;//取整取余換算,倒計(jì)時(shí)顯示
ml=(25-COUNT)%10;ch=(30-COUNT)/10;cl=(30-COUNT)%10;end else if(COUNT >= 25 && C == 0)//25s計(jì)完,鄉(xiāng)村道路仍然沒有車
begin
state = s1;//保持s1 MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;mh=0;//數(shù)碼管顯示0
ml=0;
ch=0;
cl=0;
end
end s2: begin COUNT = COUNT+1;
if(COUNT==5)//5s黃燈已計(jì)完
begin
state = s3;//主干道紅燈,鄉(xiāng)村道路綠燈 MG=0;MY=0;MR=1;CG=1;CY=0;CR=0;COUNT = 0;
mh=2;//主干道21s紅燈,鄉(xiāng)村道路16s綠燈
ml=1;
ch=1;
cl=6;
end else
begin
state = s2;//5s黃燈未計(jì)完時(shí),保持s2狀態(tài)
MG=0;MY=1;MR=0;CG=0;CY=0;CR=1;
mh=0;
ml=5-COUNT;
ch=0;
cl=5-COUNT;
end end s3: begin COUNT = COUNT+1;
if(((COUNT>=16)&&(C==1))||(C==0))//鄉(xiāng)村道路16s通行時(shí)間已結(jié)束,不管有無來車,均跳轉(zhuǎn)s4狀態(tài)
begin
state = s4;//主干道紅燈,鄉(xiāng)村道路黃燈
MG=0;MY=0;MR=1;CG=0;CY=1;CR=0;
COUNT = 0;
mh=0;
ml=5;
ch=0;
cl=5;
end else
begin
state = s3;//16s未結(jié)束,仍保持s3狀態(tài)
MG=0;MY=0;MR=1;CG=1;CY=0;CR=0;
mh=(21-COUNT)/10;
ml=(21-COUNT)%10;
ch=(16-COUNT)/10;
cl=(16-COUNT)%10;
end end s4: begin COUNT = COUNT+1;if(COUNT==5)//5s黃燈時(shí)間結(jié)束
begin
state = s1;//回到s1狀態(tài)
MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;
COUNT = 0;
mh=2;
ml=5;
ch=3;
cl=0;
end else
begin
state = s4;//否則保持s4狀態(tài)
MG=0;MY=0;MR=1;CG=0;CY=1;CR=0;
mh=0;
ml=5-COUNT;
ch=0;
cl=5-COUNT;
end end default:
begin
state = s1;
MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;
COUNT = 0;
mh=0;
ml=5-COUNT;
ch=0;
cl=5-COUNT;
end endcase endmodule 3)數(shù)碼管顯示模塊 module led(clk,count,LED);input clk;input [3:0]count;output [7:0]LED;reg [7:0]LED;always @(posedge clk)begin case(count)
4'b0000:LED=8'b00000011;
4'b0001:LED=8'b10011111;
4'b0010:LED=8'b00100101;
4'b0011:LED=8'b00001101;
4'b0100:LED=8'b10011001;
4'b0101:LED=8'b01001001;
4'b0110:LED=8'b01000001;
4'b0111:LED=8'b00011111;
4'b1000:LED=8'b00000001;
4'b1001:LED=8'b00001001;
default:LED=8'b00000001;endcase end endmodule 4.仿真圖及說明
(1)分頻模塊
由于實(shí)際應(yīng)用中分頻較大,仿真時(shí)為方便觀察,將分頻頻數(shù)設(shè)置為20。輸入為clk_in,周期為10ns;輸出為clk,其周期為200ns,與理論值相符。(2)主控制模塊
與總體仿真相同,在此不再贅述。
三.總體設(shè)計(jì)與仿真
1.頂層設(shè)計(jì)圖及說明
fre為分頻模塊,traffic為主控制模塊,led為數(shù)碼管顯示模塊。輸入端有clk_in、c和rst,輸出端有MG、MY、MR、CG、CY、CR和mh、ml、ch、cl。
2.仿真圖及說明
輸入有:C、CLK和RST 輸出有:CG、CR、CY、MG、MR、MY、ch、cl、mh和ml C為鄉(xiāng)村道路是否來車,1表示來車,0表示無車;CLK為時(shí)鐘信號;RST為初始化功能,1有效;CG、CR、CY、MG、MR、MY分別表示鄉(xiāng)村道路綠燈、紅燈、黃燈,主干道綠燈、紅燈、黃燈;ch、cl、mh、ml分別表示鄉(xiāng)村道路和主干道紅綠燈倒數(shù)顯示高低位。
3.實(shí)驗(yàn)結(jié)果
(1)鄉(xiāng)村道路無車時(shí)
鄉(xiāng)村道路無車時(shí),主干道25s倒數(shù),鄉(xiāng)村道路30s倒數(shù)結(jié)束后,保持0,且主干道綠燈亮,鄉(xiāng)村道路紅燈亮。(2)鄉(xiāng)村道路有車時(shí)
若鄉(xiāng)村道路一直有車,主干道25s(即S1狀態(tài))倒計(jì)時(shí)結(jié)束后,主干道切換黃燈,鄉(xiāng)村道路保持紅燈(即S2狀態(tài));5s黃燈倒計(jì)時(shí)結(jié)束后,主干道切換紅燈,時(shí)間21s,鄉(xiāng)村道路切換綠燈,時(shí)間16s(即S3狀態(tài));鄉(xiāng)村道路16s綠燈結(jié)束后,切換黃燈,主干道保持紅燈(即S4狀態(tài)),5s黃燈結(jié)束后,回到S1狀態(tài),即主干道25s綠燈,鄉(xiāng)村道路30s紅燈,若一直有車,則循環(huán)進(jìn)行。
四.總結(jié)
1.實(shí)驗(yàn)結(jié)果分析
(1)輸入與輸出
兩個(gè)開關(guān):一個(gè)初始化控制開關(guān),一個(gè)鄉(xiāng)村道路開關(guān)。初始化開關(guān)打開后復(fù)位,交通燈開始工作,鄉(xiāng)村道路打開表示鄉(xiāng)村公路上有車。
輸出:四個(gè)數(shù)碼管,兩個(gè)顯示主干道交通燈時(shí)間,兩個(gè)顯示鄉(xiāng)村道路時(shí)間;六個(gè)led燈,兩紅兩黃兩綠分別表示主干道和鄉(xiāng)村公路的紅黃綠燈。(2)運(yùn)行過程
1)初始狀態(tài)(S1)
左側(cè)為主干道倒計(jì)時(shí),右側(cè)為鄉(xiāng)村道路倒計(jì)時(shí);主干道綠燈亮,鄉(xiāng)村道路紅燈亮。K1為初始化按鍵,K2為鄉(xiāng)村道路有無來車。
2)主干道25s綠燈結(jié)束后切換黃燈,鄉(xiāng)村道路紅燈(S2)
3)主干道5s黃燈結(jié)束,切換紅燈21s,鄉(xiāng)村道路切換綠燈16s(S3)
4)鄉(xiāng)村道路16s綠燈結(jié)束,切換黃燈,主干道紅燈(S4)
5s黃燈倒計(jì)時(shí)結(jié)束,回到S1狀態(tài),若一直有車,則循環(huán)S1-S2-S3-S4-S1。
2.問題解決方法
問題1:數(shù)碼管顯示與紅綠燈切換不同時(shí)。
解決方法:紅綠燈輸出后面增加一延時(shí)模塊,延時(shí)一個(gè)CLK,使其與數(shù)碼管顯示同步。問題2:理解錯(cuò)題意,在S3狀態(tài)(即主干道紅燈,鄉(xiāng)村道路綠燈)時(shí),此時(shí)若鄉(xiāng)村道 路無車通過,應(yīng)立即切換為S4狀態(tài)(即主干道紅燈,鄉(xiāng)村道路黃燈),而不是等當(dāng)前計(jì)數(shù)結(jié)束再切換。
解決方法:將代碼修改為if(((COUNT>=16)&&(C==1))||(C==0)),修改后符合要求,解決了問題。
3.心得體會(huì)
通過此次系統(tǒng)設(shè)計(jì),我對verilog HDL語言有了初步了解,并對利用quartus來進(jìn)行系統(tǒng)設(shè)計(jì)有了更加深入的理解,操作也更加熟練。在設(shè)計(jì)過程中應(yīng)該先設(shè)計(jì)好總體架構(gòu),再進(jìn)行模塊的具體設(shè)計(jì),通過分析每個(gè)模塊要實(shí)現(xiàn)的功能來寫代碼,并注意編寫注釋,便于以后的理解修改。編譯時(shí)要注意設(shè)置頂層文件,先進(jìn)行仿真觀察結(jié)果是否正確,對代碼進(jìn)行修改,仿真結(jié)果正確后再下載到硬件,測試系統(tǒng)功能。
參考書目: [1] 夏宇聞,《Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程》,北京,北京航空航天大學(xué)出版社,2013年 [2] 王金明,《數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL》,北京,電子工業(yè)出版社,2011年
第二篇:上海大學(xué)數(shù)字電子技術(shù)課程設(shè)計(jì)交通燈
電子技術(shù)課程設(shè)計(jì)報(bào)告
——交通燈控制電路
XX大學(xué)機(jī)自學(xué)院自動(dòng)化系
自動(dòng)化
專業(yè)
姓名:
學(xué)號:
指導(dǎo)老師:
2018年X月X日
一、主要用途:
交通信號燈使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力、減少交通事故有明顯效果。
在十字交叉路口,為保證交通秩序和行人安全,一般在每條道路上各有一組紅、黃、綠交通信號燈,其中紅燈亮,表示該條道路禁止通行;黃燈亮表示該條道路上未過停車線的車輛停止通行,已過停車線的車輛繼續(xù)通行;綠燈亮表示該條道路允許通行。交通燈控制電路自動(dòng)控制十字路口兩組紅、黃、綠交通燈的狀態(tài)轉(zhuǎn)換,指揮各種車輛和行人安全通行,實(shí)現(xiàn)十字路口交通管理的自動(dòng)化。
二、設(shè)計(jì)任務(wù)及要求:
設(shè)計(jì)一個(gè)主干道和支干道十字路口的交通燈控制電路,其要求如下:
1.一般情況下,保持主干道暢通,主干道路燈亮、支干道紅燈亮,并且主干燈亮的時(shí)間不少于60
S;
2.當(dāng)主干道綠燈亮超過60
S,且支干道有車時(shí),主干道紅燈亮,支干道綠燈亮,但支干道綠燈亮的時(shí)間不得超過30S;
3.每次主干道或支干道綠燈亮變紅燈時(shí),黃燈先亮5S。
三、設(shè)計(jì)思路步驟及仿真調(diào)試
設(shè)計(jì)分析
分析可知,所需的交通燈有以下四個(gè)狀態(tài):
a.主干道綠燈亮,支干道紅燈亮,此時(shí)主干道允許車輛通行,支干道禁止車輛通行。當(dāng)主干道綠燈亮夠60秒后,控制器發(fā)出狀態(tài)轉(zhuǎn)換信號,系統(tǒng)進(jìn)入下一個(gè)狀態(tài)。
b.主干道黃燈亮,支干道紅燈亮,此時(shí)主干道允許超過停車線的車輛繼續(xù)通行,而未超過停車線的車輛禁止通行,支干道禁止車輛通行。當(dāng)主干道黃燈亮夠5秒后,控制器發(fā)出狀態(tài)轉(zhuǎn)換信號,系統(tǒng)進(jìn)入下一個(gè)狀態(tài)。
c.主干道紅燈亮,支干道綠燈亮。此時(shí)主干道禁止車輛通行,支干道允許車輛通行,當(dāng)支干道綠燈亮夠30秒后,控制器發(fā)出狀態(tài)轉(zhuǎn)換信號,系統(tǒng)進(jìn)入下一個(gè)狀態(tài)。
d.主干道紅燈亮,支干道黃燈亮。此時(shí)主干道禁止車輛通行,支干道允許超過停車線的車輛通行,而未超過停車線的車輛禁止通行。當(dāng)支干道紅燈亮夠5秒后,控制器發(fā)出狀態(tài)轉(zhuǎn)換信號,系統(tǒng)進(jìn)入下一個(gè)狀態(tài)。
以上a,b,c,d四種狀態(tài)依次交替循環(huán),達(dá)到指揮交通的功能。
分析得出,交通燈系統(tǒng)共由脈沖信號模塊,交通燈模塊,控制模塊,倒計(jì)時(shí)模塊四部分組成,如下圖1所示。
主干道
A1
A2
A3
控制
模塊
倒計(jì)時(shí)
模塊
脈沖信號模塊
發(fā)生器
T0
支干道
B1
B2
B3
圖1
交通燈控制系統(tǒng)原理框圖
整個(gè)系統(tǒng)的核心是利用能夠進(jìn)行60進(jìn)制、30進(jìn)制以及5進(jìn)制并切換的減法計(jì)數(shù)器,在譯碼器及與非門的配合下實(shí)現(xiàn)交通燈信號燈的切換。
1.脈沖信號模塊
信號的產(chǎn)生采用555定時(shí)器構(gòu)成的多諧振蕩器。取R1=10kΩ,C2=10uF,通過
f=1tpL+tph≈1.43R1+2R2C2=1
設(shè)計(jì)計(jì)算得R2≈66kΩ,此處采用100kΩ滑動(dòng)變阻器。
設(shè)計(jì)如下圖2所示的多諧振蕩器,產(chǎn)生1Hz的方波周期信號。
圖2
多諧振蕩器
2.交通燈模塊
設(shè)主干道紅燈、黃燈、綠燈分別為A1、A2、A3;支干道紅燈,黃燈、綠燈分別為B1、B2、B3,如下圖3所示。
圖3
交通燈模塊
3.控制模塊
使用74LS163N十進(jìn)制計(jì)數(shù)器構(gòu)成三進(jìn)制的加法計(jì)數(shù)器,同時(shí)用與非門控制三個(gè)顏色交通燈的亮與滅。
74LS163N的CP信號由倒計(jì)時(shí)模塊高位74LS192N的BO控制。即每當(dāng)?shù)褂?jì)時(shí)的高位產(chǎn)生借位信號時(shí)通過BO傳給74LS163N一個(gè)信號使之變燈。
令前述的a,b,c,d四種交通燈狀態(tài)依次為00,01,10,11,以74163N的QA,QB輸出。
主干道紅燈、黃燈、綠燈分別為A1、A2、A3;支干道紅燈,黃燈、綠燈分別為B1、B2、B3??傻谜嬷当砣缦?。
QB
QA
A1
A2
A3
B1
B2
B3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
由真值表化簡可得各信號燈的邏輯表達(dá)式:
A1=QB,A2=QBQA,A3=QBQA,B1=QB,B2=QBQA,B3=QBQA
故采用與非門控制連接交通燈和74LS163N如下圖4:
圖4
74163N和與非門構(gòu)成的交通燈控制模塊
4.倒計(jì)時(shí)模塊
倒計(jì)時(shí)模塊由減法計(jì)數(shù)器和7段數(shù)碼管顯示器組成。
十字路口的交通燈要有數(shù)字顯示,且是倒計(jì)時(shí),以便人們能夠更好的把握好時(shí)間。具體的工作方式為:當(dāng)主干道的綠燈亮?xí)r,將顯示器置為60s,然后每秒減1,計(jì)數(shù)方式工作,直至減到數(shù)為00,此時(shí)變燈并置05s,再執(zhí)行每秒減1,減到00后變燈并置30s,遞減。一次工作循環(huán)結(jié)束,而進(jìn)入下一工作循環(huán)。
倒計(jì)時(shí)模塊選用兩片74LS192級聯(lián),通過將低位的借位端BO與高位的減數(shù)計(jì)數(shù)控制端DOWN連接,構(gòu)成減法計(jì)數(shù)器。CP由多諧振蕩器的輸出端接到低位74LS192的減數(shù)計(jì)數(shù)控制端DOWN控制。
預(yù)置端LOAD接高電平時(shí)計(jì)數(shù),接低電平時(shí)預(yù)置數(shù)。因此,工作開始時(shí),LOAD為0,計(jì)數(shù)器預(yù)置數(shù),置數(shù)后,LOAD變?yōu)?,計(jì)數(shù)器開始倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)減到數(shù)00時(shí),LOAD又變?yōu)?,計(jì)數(shù)器又預(yù)置數(shù),之后又倒計(jì)時(shí),如此循環(huán)下去。
這可以借助兩片74190的借位端BO來實(shí)現(xiàn),用或門將兩個(gè)BO連起來,再接在預(yù)置數(shù)端LOAD上。當(dāng)?shù)褂?jì)時(shí)減到數(shù)00時(shí),兩個(gè)BO均產(chǎn)生一低電平信號,通過或門使兩片74190的LOAD端置數(shù)。
由于四種狀態(tài)的置數(shù)各不相同,設(shè)高位74LS192N的置數(shù)端依次為DH,CH,BH,AH,低位的置數(shù)端依次為DL,CL,BL,AL,由前述的真值表和8位置數(shù)端在各狀態(tài)下的取值,分析可得,DH=0,CH=A3,BH=QA,AH=B3
DL=0,CL=QA,BL=0,AL=QA
故可利用信號燈和74163N輸出端的信號結(jié)合與非門控制置數(shù)端在不同狀態(tài)下的取值。設(shè)計(jì)如下圖5
圖5
減法計(jì)數(shù)器和7段數(shù)碼管顯示器構(gòu)成的倒計(jì)時(shí)模塊
三、電路的測試與仿真
狀態(tài)a:
符合設(shè)計(jì)要求1:一般情況下,保持主干道暢通,主干道路綠燈亮、支干道紅燈亮,并且主干燈亮的時(shí)間不少于60
S;
狀態(tài)b:
符合設(shè)計(jì)要求3:每次主干道或支干道綠燈亮變紅燈時(shí),黃燈先亮5S。
狀態(tài)c:
符合設(shè)計(jì)要求2:當(dāng)主干道綠燈亮超過60
S,且支干道有車時(shí),主干道紅燈亮,支干道綠燈亮,但支干道綠燈亮的時(shí)間不得超過30S;
狀態(tài)d:
符合設(shè)計(jì)要求3:每次主干道或支干道綠燈亮變紅燈時(shí),黃燈先亮5S。
綜上所述:該交通燈符合設(shè)計(jì)要求。
四、總結(jié)
這次數(shù)電設(shè)計(jì)對我是一個(gè)很大的挑戰(zhàn)。一開始時(shí)我完全沒有思路,后來通過在網(wǎng)上查閱了一些文獻(xiàn),理清了設(shè)計(jì)過程,明白了無論多復(fù)雜的功能結(jié)構(gòu),都要先分析要設(shè)計(jì)哪些模塊,再將各個(gè)模塊分別設(shè)計(jì),最后匯總。
還有在設(shè)計(jì)時(shí)一定要了解清楚芯片各個(gè)針腳的功能,否則會(huì)遇到很多麻煩。在設(shè)計(jì)時(shí)我用到74LS192芯片,但由于網(wǎng)上資料不夠詳細(xì),我對于BO端口的功能不是很清楚,導(dǎo)致起初我一直以為只要減法計(jì)數(shù)器減到0時(shí)BO就一直為低電平輸出,使我無法設(shè)計(jì)置位端LOAD。后來我才了解到BO端口是在計(jì)數(shù)器為0時(shí)再減1的瞬間產(chǎn)生一個(gè)短暫的負(fù)向脈沖,正是利用這個(gè)原理才使我的設(shè)計(jì)得以完成。
同時(shí)由于我采用的multisim14版本有些原因不明的bug,也為我的調(diào)試帶來了許多問題。在我的設(shè)計(jì)圖中,我在倒計(jì)數(shù)模塊的或門輸出端接了一個(gè)開關(guān),是因?yàn)槿绻サ暨@個(gè)開關(guān),直接用導(dǎo)線連接,就會(huì)導(dǎo)致通電時(shí)計(jì)數(shù)器只從60跳到59就卡住,不再工作。加一個(gè)開關(guān)也是我調(diào)試了好久才發(fā)現(xiàn)的解決辦法。
總之這次數(shù)電項(xiàng)目設(shè)計(jì)使我對上課時(shí)學(xué)到的知識有了更深入的認(rèn)識,更使我體會(huì)到了設(shè)計(jì)的流程和思路,也了解到了設(shè)計(jì)時(shí)常遇到的一些問題和解決方法。
第三篇:北郵數(shù)字邏輯小學(xué)期交通燈控制器
實(shí)驗(yàn)一交通燈控制器
一、實(shí)驗(yàn)?zāi)康?/p>
a)熟練掌握 VHDL語言和QuartusII軟件的使用。b)用VHDL進(jìn)行較復(fù)雜邏輯電路的設(shè)計(jì)和調(diào)試。c)熟練掌握isp期間的下載方法。d)理解狀態(tài)機(jī)的工作原理和設(shè)計(jì)方法。
二、實(shí)驗(yàn)所用設(shè)備和環(huán)境
a)實(shí)驗(yàn)設(shè)備:TEC-8實(shí)驗(yàn)箱一個(gè)、EPM7128SLC84-15芯片一個(gè)
b)實(shí)驗(yàn)環(huán)境:WinXP+QuartusII
三、實(shí)驗(yàn)任務(wù)及功能介紹
在十字路口,每條道路各有一組紅、黃、綠燈,用以指揮車輛和行人有序的通行。其中紅燈亮表示禁止通行,黃燈亮表示停車,綠燈亮表示可以通行。設(shè)計(jì)一交通燈控制器用于自動(dòng)控制十字路口的交通燈,指揮各種車輛和行人安全通行。a)東西和南北方向各有一組綠、黃、紅等用于指揮交通,綠燈、黃燈和紅燈的持續(xù)時(shí)間分別為5s,1s和6s。其中初始狀態(tài)為東西南北四個(gè)方向紅黃綠燈全亮,持續(xù)1秒。后東西方向綠燈,南北方向紅燈,持5秒。后東西方向黃燈閃爍,南北方向持續(xù)紅燈,維持1秒。后東西、南北方向交換。b)有緊急狀況時(shí),如有消防車、救護(hù)車或者其他需要優(yōu)先放行的車輛時(shí),各方向上均是紅燈亮。當(dāng)緊急狀況解除時(shí),回復(fù)原來的狀態(tài),繼續(xù)正常運(yùn)行。
c)當(dāng)復(fù)位開關(guān)置1時(shí),切換到初始狀態(tài),即四個(gè)方向紅黃綠燈全亮。
四、課題分析及流程圖:
一共六個(gè)狀態(tài):S0, S1, S2, S3, S4, 緊急狀態(tài)。
五、設(shè)計(jì)思路
a)本題主要是紅黃綠燈時(shí)間的計(jì)時(shí)(即分頻),和狀態(tài)的切換。由于外部時(shí)鐘信號CLK信號為1kHz,而我們需要1Hz,因此需要分頻。
b)對于計(jì)時(shí),采用計(jì)數(shù)器方式,根據(jù)外部時(shí)鐘信號CLK,在上升沿時(shí),將計(jì)數(shù)器加一,分別定義T1,T1,T3,T4的整型數(shù),范圍分別是0~999,0~1999,0~4999和0~199,分別表示1秒、2秒、5秒和0.2秒,其中0.2秒用于黃燈閃爍。引入TIMER數(shù)組來表示該進(jìn)行何種時(shí)間的計(jì)數(shù),每一位依次表示紅黃綠燈,為分頻后信號。
c)設(shè)計(jì)六個(gè)狀態(tài):S0, S1, S2, S3, S4和緊急狀態(tài)。對于狀態(tài)切換,引入currentSTATE和nextSTATE兩個(gè)狀態(tài)變量,取值在STATE中選擇:TYPE STATE IS(S0, S1, S2, S3, S4);d)東西南北方向燈的表示:有三個(gè)4位二進(jìn)制數(shù),RED、YELLOW和GREEN進(jìn)行輸出,從高位到地位依次表示東西南北四個(gè)方向的燈的狀態(tài),1亮,0滅。
e)為了得知什么時(shí)候切換狀態(tài),需引入數(shù)組SWITCH,4位二進(jìn)制數(shù),每一位依次表示紅黃綠燈計(jì)時(shí)器是否計(jì)時(shí)結(jié)束,若結(jié)束則置1,各位相或,得到CTRL信號若有效,則需要切換狀態(tài),反之則不用。
f)對于緊急狀態(tài)信號URGENT和復(fù)位信號CLR,則由開關(guān)控制,若置1,則有效,立即切換到緊急狀態(tài)或初始狀態(tài)S0。
六、詳細(xì)設(shè)計(jì)
a)交通燈控制器實(shí)體
b)arc中信號
c)分頻進(jìn)程,以計(jì)數(shù)器形式得出T1,T2,T3,T4四種時(shí)間。
d)判斷何時(shí)切換狀態(tài)
e)控制黃燈閃爍進(jìn)程,每0.2s閃爍一次
f)六種狀態(tài)的表現(xiàn)形式及緊急狀態(tài)的切換
七、心得體會(huì)
這次雖然小學(xué)期有兩周,但時(shí)間仍然是非常緊張。我由于身體原因在上學(xué)期期末申請了緩考,所以在小學(xué)期的同時(shí)還要準(zhǔn)備6門緩考考試,顯得非常忙碌,能夠分給小學(xué)期的時(shí)間也不多。所以在第一天老師布置課題后,我們小組經(jīng)過討論,讓我選擇了簡單一些的交通燈控制器。
在最開始的時(shí)候,顯得無從下手。雖然我們編寫過LED燈顯示和各種譯碼器,但都只是很簡單的一個(gè)進(jìn)程,如今要自己設(shè)計(jì)整個(gè)控制器,覺得有點(diǎn)不知所措。后來用編寫C++等程序的經(jīng)驗(yàn),我仔細(xì)分析題目,將它分解成更小的模塊,來分別實(shí)現(xiàn),最后再整合在一起。
狀態(tài)切換和顯示部分的編碼還比較簡單,但是分頻部分又有點(diǎn)不知所云,查閱了網(wǎng)上的例子和書籍后,感覺看不太懂他們的分頻方式,詢問同學(xué),同學(xué)們也還不太清楚。后來借到第一天老師課上說的參考書,發(fā)現(xiàn)上面的分頻方式是以計(jì)數(shù)器的形式,利用外部時(shí)鐘,來一個(gè)上升沿計(jì)數(shù)器加一,簡單容易理解,所以采用了。
每一次編寫大作業(yè)的時(shí)候我都喜歡全部編寫完畢后再編譯、測試,但是這樣就造成錯(cuò)誤過多而引起不知道從何下手。因此我這一次采取的是逐部分編譯、測試的方式。但是由于對VHDL已經(jīng)一個(gè)多學(xué)期沒有碰過,生疏了很多,語法錯(cuò)誤非常多。而且編譯通過后還經(jīng)常不能運(yùn)行。再反復(fù)完善代碼卻不能運(yùn)行的時(shí)候,詢問下同學(xué),發(fā)現(xiàn)自己的管腳接的大有問題。是我自己忽略了有特殊指向的管腳,導(dǎo)致我的外部時(shí)鐘CLK沒有輸入進(jìn)去,程序無法繼續(xù)進(jìn)行。并且也發(fā)生了沒有改代碼,但是換了個(gè)實(shí)驗(yàn)箱就運(yùn)行不了的情況,檢查了很久發(fā)現(xiàn)是模式控制沒有打到硬布線模式,影響了整體程序的運(yùn)行,這些都是不通過自己調(diào)試、檢驗(yàn)無法學(xué)習(xí)到的。
這兩周的時(shí)間,我將自己的效率放大到最大,但是仍然因時(shí)間問題無法完成交通燈倒計(jì)時(shí)顯示部分,也是小學(xué)期的一個(gè)遺憾。不過這兩周,我不但又一次加深理解了自己動(dòng)手操作的重要性,也對于芯片的設(shè)計(jì)思路有了更好的理解。由于交通燈控制器是一個(gè)簡單一些的程序,因此我沒有分模塊實(shí)現(xiàn),沒有用到原理圖,也沒有遇到芯片的邏輯塊溢出的問題,但是在每天的最后,小組討論時(shí),我們都會(huì)討論解決這些問題,也讓我從中學(xué)到了很多??傮w來說,這一次的小學(xué)期算是收獲頗豐。附件一:VHDL源代碼 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY trafficLight IS
PORT(CLR, CLK, URGENT : IN STD_LOGIC;GREEN : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);YELLOW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);RED : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
--CLOCK : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END trafficLight;ARCHITECTURE lightARC OF trafficLight IS TYPE STATE IS(S0, S1, S2, S3, S4);SIGNAL currentSTATE, nextSTATE : STATE;SIGNAL CTRL : STD_LOGIC;SIGNAL SWITCH : STD_LOGIC_VECTOR(3 DOWNTO 0);
--切換狀態(tài)
SIGNAL TIMER : STD_LOGIC_VECTOR(3 DOWNTO 0);
--時(shí)鐘計(jì)時(shí) SIGNAL T1 : INTEGER RANGE 0 TO 999;
--1s SIGNAL T2 : INTEGER RANGE 0 TO 1999;
--2s SIGNAL T3 : INTEGER RANGE 0 TO 4999;
--5s SIGNAL T4 : INTEGER RANGE 0 TO 199;
--0.2s
--SIGNAL T5 : INTEGER RANGE 0 TO 999;
BEGIN PROCESS(CLK, SWITCH)
BEGIN
IF(CLK'event AND CLK = '1')THEN
IF(SWITCH(0)= '0')THEN TIMER(0)<= '0';
T1 <= 0;
ELSE IF(T1 = 999 AND URGENT = '0')THEN
T1 <= 0;
TIMER(0)<= '1';
ELSE IF(URGENT = '0')THEN
T1 <= T1 + 1;TIMER(0)<= '0';
END IF;END IF;END IF;
IF(SWITCH(1)= '0')THEN TIMER(1)<= '0';
T2 <= 0;
ELSE IF(T2 = 1999 AND URGENT = '0')THEN
T2 <= 0;
TIMER(1)<= '1';
ELSE IF(URGENT = '0')THEN
T2 <= T2 + 1;
TIMER(1)<= '0';
END IF;
END IF;
END IF;
IF(SWITCH(2)= '0')THEN
T3 <= 0;TIMER(2)<= '0';
ELSE IF(T3 = 4999 AND URGENT = '0')THEN
T3 <= 0;TIMER(2)<= '1';
ELSE IF(URGENT = '0')THEN
T3 <= T3 + 1;
TIMER(2)<= '0';
END IF;
END IF;
END IF;
END IF;END PROCESS;
CTRL <= TIMER(0)OR TIMER(1)OR TIMER(2);切換狀態(tài)
PROCESS(CLK, SWITCH(3))
BEGIN
IF(CLK'event AND CLK = '1')THEN
IF(T4 = 199 AND SWITCH(3)= '1')THEN
T4 <= 0;
TIMER(3)<= NOT TIMER(3);
ELSIF(SWITCH(3)= '1')THEN
T4 <= T4 + 1;
END IF;
END IF;
END PROCESS;
PROCESS(CTRL, CLR)
BEGIN
--倒計(jì)時(shí)完成IF(CLR = '1')THEN currentSTATE<= s0;
ELSIF(CTRL'event AND CTRL = '0')THEN currentSTATE<= nextSTATE;
END IF;
END PROCESS;
PROCESS(currentSTATE, URGENT)
BEGIN
IF(URGENT = '1')THEN
--緊急狀態(tài),所有方向點(diǎn)亮紅燈
GREEN <= “0000”;YELLOW <= “0000”;RED <= “1111”;
ELSE
CASE currentSTATE IS
WHEN s0 => SWITCH <= “0001”;
GREEN <= “1111”;
YELLOW <= “1111”;
RED <= “1111”;
--CLOCK <= “0000”;nextSTATE<= s1;
WHEN s1 => SWITCH <= “0100”;
GREEN <= “1100”;
YELLOW <= “0000”;
RED <= “0011”;
--CLOCK <= “0110”;nextSTATE<= s2;WHEN s2 => SWITCH <= “1010”;
GREEN <= “0000”;
YELLOW(3)<= TIMER(3);--閃爍 YELLOW(2)<= TIMER(3);YELLOW(1 DOWNTO 0)<= “00”;nextSTATE<= s3;WHEN s3 => SWITCH <= “0100”;
GREEN <= “0011”;
YELLOW <= “0000”;
RED <= “1100”;
--CLOCK <= “0110”;nextSTATE<= s4;
WHEN s4 => SWITCH <= “1010”;
GREEN <= “0000”;
YELLOW(3 DOWNTO 2)<= “00”;
YELLOW(1)<= TIMER(3);--閃爍 YELLOW(0)<= TIMER(3);
RED <= “1100”;nextSTATE<= s1;
END CASE;
END IF;
END PROCESS;
--
PROCESS(CLK, CLOCK)
--
BEGIN----------IF(CLK'event AND CLK = '1')THEN
IF(CLOCK = “0000”)THEN CLOCK <= “0110”;ELSE CLOCK <= CLOCK-1;END IF;IF(T5 = 999)THEN T5 <= 0;--
ELSE T5 <= T5 + 1;--
END IF;--
END IF;
--
END PROCESS;END lightARC;
附件二:調(diào)試日志 2015/9/8周二:
復(fù)習(xí)VHDL基礎(chǔ)知識及語法,了解交通燈大致編寫思路。2015/9/9周三:
分解交通燈控制器:分頻部分,狀態(tài)切換部分,顯示部分
今日計(jì)劃:初步完成分頻部分,考慮程序流程和各個(gè)進(jìn)程間的配合。學(xué)習(xí)時(shí)鐘分頻的方式:途徑:去圖書館借書查閱《VHDL數(shù)字電路設(shè)計(jì)與應(yīng)用實(shí)踐教程》,采用計(jì)數(shù)器的方式,針對外部時(shí)鐘所給的1kHz分成1Hz,從而得到想要的5s、1s、0.2s等時(shí)間。
遇到問題:能夠得到時(shí)間,但不知道該怎么將時(shí)間運(yùn)用到狀態(tài)切換中。解決方案:上網(wǎng)查閱資料。2015/9/10周四:
今日計(jì)劃:完成狀態(tài)切換部分和顯示部分,考慮如何將分頻好的時(shí)鐘信號用在狀態(tài)切換部分。
遇到問題:切換狀態(tài)部分和顯示部分比較簡單,只是需要注意if-else語句使用,因?yàn)閂HDL語法不熟悉導(dǎo)致語法報(bào)錯(cuò)很多。定義的狀態(tài)太多,重復(fù)性大。
解決方案:開始在狀態(tài)切換時(shí),沒想好要幾個(gè)狀態(tài),零零散散分了很多個(gè),導(dǎo)致很多狀態(tài)其實(shí)根本是重合的,刪減后得到最精簡的6個(gè)狀態(tài)。對于分頻時(shí)鐘,引入TIMER數(shù)組記錄時(shí)鐘是否計(jì)時(shí)完畢,若完畢則需要切換狀態(tài),將分頻部分與其他部分串接在一起。2015/9/11周五:
今日計(jì)劃:完成程序,在TEC-8上進(jìn)行初步調(diào)試。
遇到問題:忘記如何下載芯片,詢問同學(xué)后解決。成功下載芯片后發(fā)現(xiàn)不能運(yùn)行,燈的顯示也是亂的。
解決方案:回頭看代碼,發(fā)現(xiàn)在TIMER信號表示出計(jì)時(shí)完畢后,并沒有給激勵(lì)進(jìn)行狀態(tài)切換,引入CTRL信號給予激勵(lì),當(dāng)CTRL有效時(shí)切換狀態(tài),為了方便觀察CTRL信號的變化,將其連接到燈上。遇到問題:下載芯片后仍舊不能繼續(xù)運(yùn)行,但CTRL信號有改變。2015/9/14周一:
今日計(jì)劃:完善程序,在TEC-8上運(yùn)行成功。
遇到問題:下載芯片后仍舊不能繼續(xù)運(yùn)行,但CTRL信號有改變。解決方案:能夠判斷計(jì)時(shí)結(jié)束,能夠給激勵(lì)改變狀態(tài),卻沒有改變狀態(tài)。發(fā)現(xiàn)沒有信號表示紅黃綠燈的切換,用S0~S4來判斷狀態(tài)并切換,但發(fā)現(xiàn)紅黃綠燈有對稱,而S2和S4、S1和S3對于計(jì)時(shí)器來說沒有任何區(qū)別,不需要重復(fù)判斷,因此引入SWITCH數(shù)組,每一位代表一種燈,使得能夠判斷計(jì)時(shí)結(jié)束后切換到何種狀態(tài),減少重復(fù)。修改編譯報(bào)錯(cuò)。2015/9/15周二:
今日計(jì)劃:完成程序,并在TEC-8上正確運(yùn)行。
遇到問題:下載芯片后仍舊不能運(yùn)行。發(fā)現(xiàn)管腳配置有問題。解決方案:按照老師給的ppt上的管腳配置,CLK接57管腳,CLR、URGENT分別接81,80開關(guān)上。RED,YELLOW,GREEN按順序接到20到34的紅黃綠燈上。(開始將CLR接到1號管腳上,發(fā)現(xiàn)必須一直按著CLR才可以運(yùn)行程序,后將CLR改接開關(guān)上。)
遇到問題:在上午運(yùn)行成功后,下午換了一臺電腦,發(fā)現(xiàn)下載芯片后程序不動(dòng)了。
解決方案:在完全沒有改代碼的情況下只能檢查實(shí)驗(yàn)箱是否有誤碰情況。排除燈顯示問題后,確定是外部時(shí)鐘沒有走,發(fā)現(xiàn)開關(guān)置于獨(dú)立而非硬布線模式,導(dǎo)致程序無法運(yùn)行。撥回獨(dú)立后運(yùn)行正常。2015/9/16周三:
完成交通燈控制器,改正紅綠燈顯示不合理的地方,在考慮加入倒計(jì)時(shí)模塊未果后,接受驗(yàn)收。
第四篇:交通燈控制器設(shè)計(jì)實(shí)驗(yàn)報(bào)告
設(shè)計(jì)性實(shí)驗(yàn)項(xiàng)目名稱
交通燈控制器設(shè)計(jì)
實(shí)驗(yàn)項(xiàng)目學(xué)時(shí):3學(xué)時(shí)
實(shí)驗(yàn)要求:■ 必修
□ 選修
一、實(shí)驗(yàn)?zāi)康?/p>
1、學(xué)習(xí)與日常生活相關(guān)且較復(fù)雜數(shù)字系統(tǒng)設(shè)計(jì);
2、進(jìn)一步熟悉EDA實(shí)驗(yàn)裝置和QuartusⅡ軟件的使用方法;
3、學(xué)習(xí)二進(jìn)制碼到BCD碼的轉(zhuǎn)換;
4、學(xué)習(xí)有限狀態(tài)機(jī)的設(shè)計(jì)應(yīng)用。
二、實(shí)驗(yàn)原理
交通燈的顯示有很多方式,如十字路口、丁字路口等,而對于同一個(gè)路口又 有很多不同的顯示要求,比如十字路口,車輛如果只要東西和南北方向通行就很 簡單,而如果車子可以左右轉(zhuǎn)彎的通行就比較復(fù)雜,本實(shí)驗(yàn)僅針對最簡單的南北 和東西直行的情況。
要完成本實(shí)驗(yàn),首先必須了解交通路燈的燃滅規(guī)律。本實(shí)驗(yàn)需要用到實(shí)驗(yàn)箱上交通燈模塊中的發(fā)光二極管,即紅、黃、綠各三個(gè)。依人們的交通常規(guī),“紅燈停,綠燈行,黃燈提醒”。其交通燈的燃滅規(guī)律為:初始態(tài)是兩個(gè)路口的紅燈全亮之后,主干道的綠燈亮,鄉(xiāng)間道路的紅燈亮,主干道方向通車,延時(shí)一段時(shí)間后,鄉(xiāng)間公路來車,主干道綠燈滅,黃燈開始閃爍。閃爍若干次后,主干道紅燈亮,而同時(shí)鄉(xiāng)間公路的綠燈亮,延時(shí)一段時(shí)間后,鄉(xiāng)間公路的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到主干道方向,重復(fù)上述過程。
三、設(shè)計(jì)要求
完成設(shè)計(jì)、仿真、調(diào)試、下載、硬件測試等環(huán)節(jié),在型EDA實(shí)驗(yàn)裝置上實(shí)現(xiàn)一個(gè)由一條主干道和一條鄉(xiāng)間公路的匯合點(diǎn)形成的十字交叉路口的交通燈控制器功能,具體要求如下:
1、有MR(主紅)、MY(主黃)、MG(主綠)、CR(鄉(xiāng)紅)、CY(鄉(xiāng)黃)、CG(鄉(xiāng)綠)六盞交通燈需要控制;
2、交通燈由綠轉(zhuǎn)紅前有4秒亮黃燈的間隔時(shí)間,由紅轉(zhuǎn)綠沒有間隔時(shí)間;
3、鄉(xiāng)間公路右側(cè)各埋有一個(gè)串連傳感器,當(dāng)有車輛準(zhǔn)備通過鄉(xiāng)間公路時(shí),發(fā)出請求信號S=1,其余時(shí)間S=0;
4、平時(shí)系統(tǒng)停留在主干道通行(MGCR)狀態(tài),一旦S信號有效,經(jīng)主道黃燈4秒(MYCR)狀態(tài)后轉(zhuǎn)入鄉(xiāng)間公路通行(MRCG)狀態(tài),但要保證主干道通行大于一分鐘后才能轉(zhuǎn)換;
5、一旦S信號消失,系統(tǒng)脫離MRCG狀態(tài),即經(jīng)鄉(xiāng)道黃燈4秒(MRCY)狀態(tài)進(jìn)入MGCR狀態(tài),即使S信號一直有效,MRCG狀態(tài)也不得長于20秒鐘;
6、控制對象除紅綠燈之外,還包括分別在主干道和鄉(xiāng)間公路各有一個(gè)兩位十進(jìn)制倒計(jì)時(shí)數(shù)碼管顯示。
四、主要儀器設(shè)備
1、微機(jī)
1臺
1套 1套
2、QuartusII集成開發(fā)軟件
3、EDA實(shí)驗(yàn)裝置
五、實(shí)驗(yàn)步驟
源程序:
0module traffic1(clk,s,rst,light,sel,SG);input clk,s,rst;output[5:0] light;
output [2:0]sel;output [7:0]SG;reg [5:0] light;reg clk1;reg [3:0] sc;
reg [7:0] count;reg [7:0] cnt,SG;reg [2:0] sel;reg [3:0]a;parameter s0=0,s1=1,s2=2,s3=3,s4=4;initial
begin
count<=8'b01100000;
light<=6'b001100;
sc=s0;
end
always @(posedge clk)begin
begin cnt=cnt+1;
if(cnt==100)begin clk1=1'b1;cnt=0;end
else clk1=1'b0;//100分頻,CLK為數(shù)碼管掃描頻率,CLK1為計(jì)數(shù)頻率
if(sel<7)sel=sel+1;else sel=6;
end //sel為數(shù)碼管選擇
begin
case(sel)
7: a=count[3:0];//0數(shù)碼管為個(gè)位
6: a=count[7:4];//1數(shù)碼管為十位
default: a=0;
endcase
case(a)
0:SG<=8'b00111111;1:SG<=8'b00000110;
2:SG<=8'b01011011;3:SG<=8'b01001111;
4:SG<=8'b01100110;5:SG<=8'b01101101;
6:SG<=8'b01111101;7:SG<=8'b00000111;
8:SG<=8'b01111111;9:SG<=8'b01101111;//8段譯碼值
default: SG=8'b11111111;
endcase
end end
always @(posedge clk1 or negedge rst)
begin
if(!rst)begin count = 0;sc=s3;end // count set nothing but else 0
else if(count == 0)
begin
case(sc)
s0: begin if(s)begin sc=s1;count = 8'b00000100;light=6'b010100;end else begin sc=s4;count = 8'b01100000;end end
s1: begin count = 8'b00100000;sc=s2;light=6'b100001;end
s2: begin count = 8'b00000100;sc=s3;light=6'b100010;end
s3: begin count = 8'b01100000;sc=s0;light=6'b001100;end
s4: begin if(s)begin sc=s1;count = 8'b00000100;light=6'b010100;end else begin sc = s4;count = 8'b01100000;light<=6'b001100;end end
default begin sc=s0;count =8'h60;end
endcase
end
else
if((sc==s2)&(s==0))begin sc=s3;count = 8'b00000100;light=6'b100010;end
else
if((sc==s4)&(s==1))begin sc=s1;count = 8'b00000100;light=6'b010100;end
else if(count[3:0] == 4'b0000)
begin count = count-7;end
else
begin count = count-1;end
end endmodule
管腳鎖定
六、波形仿真
主干道60s倒計(jì)時(shí)
s信號為1時(shí)
七、實(shí)驗(yàn)心得
通過本次實(shí)驗(yàn),讓我進(jìn)一步掌握了軟件quartus的使用流程,一開始實(shí)驗(yàn)時(shí)波形仿真是正確的,但在電路上實(shí)現(xiàn)時(shí)主干道亮黃燈時(shí),鄉(xiāng)間道路亮的是綠燈,這顯然是不對的,后面發(fā)現(xiàn)是管腳鎖定時(shí)出現(xiàn)了問題,改回來之后就沒問題了。管腳鎖定時(shí)不能粗心,不然很容易出現(xiàn)問題。
曹軍
生醫(yī)121班
第五篇:交通燈控制電路設(shè)計(jì)自動(dòng)化 數(shù)字電子技術(shù)課程設(shè)計(jì)
綜 述
本次設(shè)計(jì)主要分為四個(gè)部分,第一部分:信號產(chǎn)生電路;第二部分:電子示電路;第三部分:倒計(jì)時(shí)設(shè)計(jì),第四部分:交通燈及交通燈控制電路
在本次設(shè)計(jì)中采用555定時(shí)器產(chǎn)生CP=1Hz的脈沖信號,經(jīng)過用741192設(shè)計(jì)的預(yù)置狀態(tài)為59的60進(jìn)制加計(jì)數(shù)器和預(yù)置狀態(tài)為29的30進(jìn)制計(jì)數(shù)器。并使進(jìn)位位作為脈沖輸出,實(shí)現(xiàn)5分頻,然后用芯片74161和74139實(shí)現(xiàn)南北干道和支東西干道紅,綠,黃色燈亮的時(shí)間控制,最后一部分的減計(jì)數(shù)器選用74193進(jìn)行級聯(lián)計(jì)數(shù),譯碼器選用cc4511,本人主要設(shè)計(jì)減計(jì)數(shù)器及數(shù)碼管顯示倒計(jì)時(shí)部分
一、設(shè)計(jì)任務(wù)與要求
1.東西方向綠燈亮,南北方向紅燈亮,時(shí)間30。2.東西方向與南北方向黃燈亮,時(shí)間5s。3.南北方向綠燈亮,東西方向紅燈亮,時(shí)間60。
二、方案設(shè)計(jì)與論證
根據(jù)設(shè)計(jì)任務(wù)與要求,我們可以知道這個(gè)交通燈的設(shè)計(jì)是分南北干道和東西干道的,兩個(gè)方面的時(shí)間是不同的,東西方向通行30s,南北方向60s,這就要求我們要有兩個(gè)計(jì)數(shù)器,根據(jù)我自己的經(jīng)驗(yàn),東西方向通行30s完,倒計(jì)時(shí)數(shù)字顯示器會(huì)顯示到0,然后切換到南北方向通行60s完之后, 倒計(jì)時(shí)數(shù)字顯示器也會(huì)顯示到0之后然后切換到南北方向,這樣如此循環(huán),由于黃燈是當(dāng)兩個(gè)計(jì)數(shù)器倒計(jì)時(shí)到5時(shí)開始閃,我們就可以在這時(shí)發(fā)出一個(gè)脈沖然后一直保持到0,或者是接收0~5這段時(shí)間的脈沖都可以控黃燈只在到了這段時(shí)間才亮;方案:
交通燈控制原理圖:
2.a 交通燈原理框圖
首先由555定時(shí)器產(chǎn)生1s的信號脈沖,通過由一些1k電阻和三片74LS245,兩片74LS192處理構(gòu)成定時(shí)電路處理,產(chǎn)生時(shí)間輸出信號作用電子顯示器,另一部分的1s的信號脈沖通過由兩片74LS112的JK觸發(fā)器組成的路燈控制電路的對1s的信號處理,產(chǎn)生對交通路燈有控制作用的電子邏輯信號,從而實(shí)現(xiàn)按要求的對路燈的正??刂?。
2三、單元電路設(shè)計(jì)
3.1時(shí)間脈沖產(chǎn)生電路
由 555 定時(shí)器和外接元件 R1、R2、C 構(gòu)成多諧振蕩器,腳 2 與腳 6 直接相連。電路沒有穩(wěn)態(tài),僅存在兩個(gè)暫穩(wěn)態(tài),電路亦不需要外接 觸發(fā)信號,利用電源通過 R1、R2 向 C 充電,以及 C 通過 R2 向放電端 放電,使電路產(chǎn)生振蕩。電容 C 在 和 之間充電和放電,從而在輸出端得到一系列的矩形波,且通過調(diào)節(jié)參數(shù),使得產(chǎn)生的矩形波為1hz的也就是周期為1s的脈沖發(fā)生電路。
3.1a 1s脈沖信號產(chǎn)生電路
3.2電子顯示電路
一個(gè)LED數(shù)碼管可用來顯示一位0~9十進(jìn)制數(shù)和一個(gè)小數(shù)點(diǎn)。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為2~2.5V,每個(gè)發(fā)光二極管的點(diǎn)亮電流在5~10mA。LED數(shù)碼管要顯示BCD碼所表示的十進(jìn)制數(shù)字就需要有一個(gè)專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當(dāng)?shù)尿?qū)動(dòng)能力。
3.2a BCD碼顯示電路
3.3計(jì)時(shí)器電路
計(jì)數(shù)器
倒計(jì)時(shí)計(jì)數(shù)電路主要由計(jì)數(shù)器構(gòu)成,它在整個(gè)系統(tǒng)設(shè)計(jì)中的作用是實(shí)現(xiàn)計(jì)時(shí)計(jì)數(shù),在此我們選用減法計(jì)數(shù)器,因?yàn)楸驹O(shè)計(jì)說明時(shí)間可預(yù)置,所以需要可預(yù)置數(shù)的減計(jì)數(shù)器。目前,在實(shí)際工程應(yīng)用中,我們已經(jīng)很少使用小規(guī)模的觸發(fā)器去拼接成各種計(jì)數(shù)器,而是直接選用集成計(jì)數(shù)器產(chǎn)品。3.3a 74LS192 74LS193引腳圖
本次課程設(shè)計(jì)需要50進(jìn)制和30進(jìn)制減計(jì)數(shù)器各一個(gè),所以采用兩個(gè)74193級聯(lián)計(jì)數(shù),將表示個(gè)位的計(jì)數(shù)芯片借位端BO連接后一級的CPD即可進(jìn)行級聯(lián)計(jì)數(shù),后一級輸出為十位位。以下為設(shè)計(jì)中用到的50和30進(jìn)制減計(jì)數(shù)器。以下為計(jì)數(shù)器的邏輯電路圖:
3.3b 范圍為49~0的50進(jìn)制減計(jì)數(shù)器
3.3c計(jì)數(shù)范圍為29~0的30進(jìn)減制計(jì)數(shù)器
3.4交通燈控制電路與交通燈
3.4,1交通燈控制電路
交通信號燈轉(zhuǎn)換器其實(shí)就是由計(jì)數(shù)進(jìn)制轉(zhuǎn)換器來實(shí)現(xiàn),即一個(gè)JK觸發(fā)器,其中J、K端都同時(shí)接高電平,即構(gòu)成了一個(gè)T’觸發(fā)器,目的就是實(shí)現(xiàn)翻轉(zhuǎn)功能,其時(shí)鐘輸入端是由倒計(jì)時(shí)計(jì)數(shù)器中的兩片74192的八個(gè)輸出端經(jīng)過一個(gè)或門然后經(jīng)過一個(gè)非門接入。
3.4.1a 交通燈控制電路
3.4,2交通燈模擬電路
S0:沒有打開電源的狀態(tài)。S1:東西方向綠燈亮,南北方向紅燈亮,時(shí)間30s。S0,S1,S2,S3中任一狀態(tài)下打開電源會(huì)進(jìn)入S1狀態(tài),數(shù)碼管初始值為60。數(shù)碼管最大顯示為60,出現(xiàn)“0”的瞬間進(jìn)入下一狀態(tài)。(S2)S2:東西方向與南北方向黃燈亮,時(shí)間5s。
數(shù)碼管最大顯示為30,出現(xiàn)“0”的瞬間進(jìn)入下一狀態(tài)。S3:南北方向綠燈亮,東西 方向紅燈亮,時(shí)間60s。數(shù)碼管最大顯示為60,出現(xiàn)“0”的瞬間進(jìn)入下一狀態(tài)。
3.4.2a 交通燈模擬電路
心得體會(huì)
經(jīng)過一周的努力,我終于完成關(guān)于交通燈控制電路的電子課程設(shè)計(jì),通過一周不斷的查資料讓我積累了許多實(shí)際操作經(jīng)驗(yàn),已初步掌握了數(shù)電的應(yīng)用技術(shù),以及數(shù)字電路的知識和有關(guān)器件的應(yīng)用,我深刻體會(huì)到了數(shù)子電路技術(shù)對當(dāng)今現(xiàn)代社會(huì)的重要作用。經(jīng)過這次設(shè)計(jì),我學(xué)會(huì)了許多東西,學(xué)會(huì)了嚴(yán)密的思考,構(gòu)想及怎樣把計(jì)劃付諸于實(shí)際行動(dòng)之中。同時(shí)與社會(huì)的不斷高速發(fā)展的步伐相比,我認(rèn)識到自己所學(xué)的知識和技能還遠(yuǎn)遠(yuǎn)不足,有些實(shí)際性的問題還不能夠解決,缺少很多有實(shí)際運(yùn)用價(jià)值的知識儲備,缺乏應(yīng)有的動(dòng)手解決實(shí)際問題的能力,缺乏些高效利用及篩選大量資料的能力,缺乏資源共享及應(yīng)有的團(tuán)隊(duì)合作精神,有待進(jìn)一步提高,我應(yīng)當(dāng)學(xué)好自己的專業(yè)知識以適應(yīng)不斷發(fā)展的社會(huì)。
在這次課程設(shè)計(jì)中,我學(xué)會(huì)了如何有效的利用網(wǎng)絡(luò)資源及圖書館的藏書,找到了幾個(gè)很不錯(cuò)的專業(yè)網(wǎng)站,為以后的查閱專業(yè)方面的信息和相互之間的交流打下了堅(jiān)實(shí)的基礎(chǔ),學(xué)會(huì)了如何看電路圖,識別電路圖,提高了自己的專業(yè)技能,同時(shí)也培養(yǎng)了自己獨(dú)立解決實(shí)際問題的能力,也培養(yǎng)了自己認(rèn)真和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,收到了很大的啟發(fā),為以后的工作積累了些寶貴的經(jīng)驗(yàn)。
參考文獻(xiàn)
[1]高吉祥.數(shù)字電子技術(shù).北京:電子工業(yè)出版社
[2]梁宗善.電子技術(shù)基礎(chǔ)課程設(shè)計(jì)[M].武漢:華中理工大學(xué)出版社 [3]李玲遠(yuǎn),范綠蓉,陳小宇.電子技術(shù)基礎(chǔ)實(shí)驗(yàn).北京:科學(xué)出版社 [4]彭介華.電子技術(shù)課程設(shè)計(jì)指導(dǎo)[M].北京:高等教育出版社 [5]康光華
電子技術(shù)基礎(chǔ)(數(shù)電部分)華中理工大學(xué)電子學(xué)教研室