资源描述:
《Verilog实验报告 交通灯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Verilog实验报告---第四次交通灯班级:集电0802班姓名:张鹏学号:04086057序号:16一、规范(1)具有开关功能:当reset=0时红绿灯关闭,使主支干道六个灯全灭;(2)具有四个功能:当reset=1且func=2’b00时,主干道和支路正常计数;且func=2’b01时,支干道一直绿灯,主干道一直红灯;且func=2’b10时,主干道一直绿灯,支干道一直红灯;且func=2’b11时,主干道和支干道一直黄灯闪;(3)计数器频率:运行频率2Hz计数器;(4)信号灯种类:红、黄、绿;(5)信号灯计执行时间
2、关系:主干道:绿灯常亮+绿灯闪+黄灯=支干道:红灯常亮;此设计中:主干道:绿灯常亮=57s,T绿灯闪=3s,T黄灯亮=3s支干道:绿灯常亮=15s,T绿灯闪=3s,T黄灯亮=3s(6)信号灯到计时功能:信号灯预置后,开始执行2Hz计数器;(7)信号灯跳转功能:当各信号灯计时至T时在下一个时钟信号上升沿到来时自动转为下一状态;(8)信号灯各状态跳转关系:绿-黄-红-绿;二、输入输出定义reset,clk,func[1:0],green[1:0],red[1:0],yellow[1:0]信号名宽度输入/输出管脚描述reset
3、1inputL13红绿灯总开关clk1inputC9freq:50MHzfunc2inputN17/H18控制红绿灯功能green[1]1outputD11主绿green[0]1outputE11支绿red[1]1outputF11主红red[0]1outputF12支红yellow[1]1outputC11主黄yellow[0]1outputE12支黄三、模块设计状态转移图:四、测试代码modulefrequency_divider_small(reset,clk,out);//重写一个小分频模块测试交通灯主模块功能i
4、nputreset,clk;outputout;reg[1:0]temp;regout;always@(posedgeclkornegedgereset)if(!reset)temp<=2'b00;elsetemp<=(temp==2'b11)?2'b00:temp+2'b01;always@(temp)out=(temp==2'b11);endmodulemoduletest_traffic_light;regreset,clk;reg[1:0]func;wire[1:0]green;wire[1:0]red;wire
5、[1:0]yellow;traffic_lightsimulation(.reset(reset),.clk(clk),.func(func),.green(green),.red(red),.yellow(yellow));always#10clk=~clk;initialbeginreset=0;clk=1;func=2'b00;#20reset=1;#21000func=2'b01;#10000func=2'b10;#10000func=2'b11;endendmodule波形:五、源代码modulefrequen
6、cy_divider(reset,clk,out);//分频模块,把50MHz时钟分成半秒计时器inputreset,clk;outputout;reg[5:0]mol1,mol2;reg[6:0]mol3,mol4;regout1,out2,out3,out;always@(posedgeclkornegedgereset)//把25000000分成40*40*125*125if(!reset)mol1<=6'd0;elsemol1<=(mol1==6'd39)?6'd0:mol1+6'd1;always@(posed
7、geclkornegedgereset)if(!reset)mol2<=6'd0;elseif(out1)mol2<=(mol2==6'd39)?6'd0:mol2+6'd1;always@(posedgeclkornegedgereset)if(!reset)mol3<=7'd0;elseif(out2)mol3<=(mol3==7'd124)?7'd0:mol3+7'd1;always@(posedgeclkornegedgereset)if(!reset)mol4<=7'd0;elseif(out3)mol4<=(
8、mol4==7'd124)?7'd0:mol4+7'd1;always@(mol1ormol2ormol3ormol4)beginout1=(mol1==6'd39);out2=((mol2==6'd39)&&out1);out3=((mol3==7'd124)&&out2);out=((mol4==7'd124)&