<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > Verilog HDL基礎教程之:實(shí)例5 交通燈控制器

Verilog HDL基礎教程之:實(shí)例5 交通燈控制器

作者: 時(shí)間:2013-08-22 來(lái)源:網(wǎng)絡(luò ) 收藏

下面是交通燈的 源代碼及說(shuō)明。

module traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT); //端口說(shuō)明

output[7:0] ACOUNT,BCOUNT;

output[3:0] LAMPA,LAMPB;

input CLK,EN; //內部信號說(shuō)明

reg[7:0] numa,numb; //ACOUNT和BCOUNT的內部信號

reg tempa,tempb;

reg[2:0] counta,countb; //方向A和方向B的燈的狀態(tài)

reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;

reg[3:0] LAMPA,LAMPB;

//設置各交通燈的持續時(shí)間初始化值,紅燈的值由另一個(gè)方向的黃燈和綠燈計算得出。

always @(EN)

if(!EN) begin //使能信號EN無(wú)效時(shí),對交通燈的計數值進(jìn)行初始化

ared =8'd55; //55 s , 30 + 5 + 15 + 5

ayellow =8'd5; //5 s

agreen =8'd40; //40 s

aleft =8'd15; //15 s

bred =8'd65; //65 s , 40 + 5 + 15 + 5

byellow =8'd5; //5 s

bleft =8'd15; //15 s

bgreen =8'd30; //30 s

end

assign ACOUNT=numa; //8位數碼管輸出

assign BCOUNT=numb; //8位數碼管輸出

//控制A方向4種燈的模塊

always @(posedge CLK) begin

if(EN) begin //使能有效時(shí),交通燈開(kāi)始工作

if(!tempa) begin

tempa=1;

case(counta) //控制燈狀態(tài)的順序

0: begin //狀態(tài)0

numa=agreen; //直行綠燈亮

LAMPA=2; //輸出0010

counta=1; //進(jìn)入下一個(gè)狀態(tài)

end

1: begin //狀態(tài)1

numa=ayellow; //黃燈亮

LAMPA=4; //輸出0100

counta=2; //進(jìn)入下一個(gè)狀態(tài)

end

2: begin //狀態(tài)2

numa=aleft; //左轉綠燈亮

LAMPA=1; //輸出0001

counta=3; //進(jìn)入下一個(gè)狀態(tài)

end

3: begin //狀態(tài)3

numa=ayellow; //黃燈亮

LAMPA=4; //輸出0100

counta=4; //進(jìn)入下一個(gè)狀態(tài)

end

4: begin //狀態(tài)4

numa=ared; //紅燈亮

LAMPA=8; //輸出1000

counta=0; //進(jìn)入下一個(gè)狀態(tài)(狀態(tài)0)

end

default: //默認狀態(tài)

LAMPA=8; //紅燈亮,輸出1000

endcase

end

else begin //每一個(gè)狀態(tài)的倒計時(shí)

if(numa>1) //判斷倒計時(shí)未歸零時(shí)分別對高地位進(jìn)行遞減

if(numa[3:0]==0) begin

numa[3:0]=4'b1001;

numa[7:4]=numa[7:4]-1;

end

else

numa[3:0]=numa[3:0]-1;

if (numa==2)

tempa=0; //倒計時(shí)結束,返回燈狀態(tài)變化判斷,將進(jìn)入下一個(gè)狀態(tài)

end

end

else begin

LAMPA=4'b1000; //使能無(wú)效時(shí),紅燈亮

counta=0; //返回方向A的狀態(tài)0(綠燈狀態(tài))

tempa=0; //進(jìn)入狀態(tài)變化判斷

end

end

//控制B方向4種燈的模塊,模塊的語(yǔ)言描述與方向A的描述基本一致,這里不再重復注釋

always @(posedge CLK) begin

if (EN) begin

if(!tempb) begin

tempb=1;

case (countb)

0: begin

numb=bred;

LAMPB=8;

countb=1;

end

1: begin

numb=bgreen;

LAMPB=2;

countb=2;

end

2: begin

numb=byellow;

LAMPB=4;

countb=3;

end

3: begin

numb=bleft;

LAMPB=1;

countb=4;

end

4: begin

numb=byellow;

LAMPB=4;

countb=0;

end

default:

LAMPB=8;

endcase

end

else begin //倒計時(shí)

if(numb>1)

if(!numb[3:0]) begin

numb[3:0]=9;

numb[7:4]=numb[7:4]-1;

end

else

numb[3:0]=numb[3:0]-1;

if(numb==2)

tempb=0;

end

end

else begin

LAMPB=4'b1000;

tempb=0;

countb=0;

end

end

endmodule

通過(guò)上面這個(gè) 模塊,基本實(shí)現了交通燈控制器的基本功能。讀者可將此設計應用于實(shí)際的硬件系統中,通過(guò)晶振、FPGA、開(kāi)關(guān)、LED燈及數碼管等資源即可完成硬件實(shí)現。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Verilog HDL 基礎教程 實(shí)例

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>