77范文网 - 专业文章范例文档资料分享平台

交通灯设计 verilog(2)

来源:网络收集 时间:2018-12-04 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

30秒

S0 5秒

S1 5秒

S3 20秒

S2

2.系统设计方案:

根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图所示:

时钟分频模块 CLK 交通灯控制及计时模块 显示模块 LED显示 数码管位码 数码管段码

四、程序设计

6

1.verilog源程序:

module traffic(en,clk,rst,num1,num2,light1,light2,out1,out2,out3,out4,in1,in2);

input en,clk,rst,in1,in2; //en为使能端。in1,in2控制绿灯和红灯亮时间 output [7:0] num1,num2; output [2:0] light1,light2;

output [6:0]out1,out2,out3,out4;//输出四个数码管 reg [6:0]out1,out2,out3,out4; reg tim1,tim2;

reg [1:0]state1,state2; reg [2:0]light1,light2; reg [7:0] num1,num2;

reg [7:0] red1,red2,green1,green2,yellow1,yellow2;

parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;//四个循环状态 reg[25:0]count;reg div;

always @(en ) if(en)

begin //设置计数初值 if (!in1)begin green1<=8'b00110000;red2<=8'b00110000; end//30H,即30秒 else begin green1<=8'b01100000;red2<=8'b01100000;end//60s if (!in2)begin red1<=8'b00100000;green2<=8'b00100000; end//20s else begin red1<=8'b01000000;green2<=8'b01000000; end//40s yellow1<=8'b00000101; yellow2<=8'b00000101;//05s end

always@(posedge clk)//分频 if (count==25000000) begin div<=1;count<=count+1;end else if(count==50000000)begin div<=0;count<=0;end else count<=count+1;

always @(posedge div) begin

if(rst) //复位情况控制 begin

light1<=3'b001; num1<=green1; end else if(en)

begin //使能有效开始控制计数 if(!tim1) //开始控制

begin //主干道交通灯点亮控制 tim1<=1;

case(state1)//状态机

7

s0:begin num1<=green1;light1<=3'b001;state1<=s1;end

s1:begin num1<=yellow1;light1<=3'b010;state1<=s2;end s2:begin num1<=red1;light1<=3'b100;state1<=s3;end s3:begin num1<=yellow1;light1<=3'b010;state1<=s0;end default:light1<=3'b100; endcase end

else

begin //倒数计时 if(num1>0)

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

num1[3:0]<=4'b1001;

num1[7:4]<=num1[7:4]-1;//十位减1 end

else num1[3:0]<=num1[3:0]-1; //个位减1 if(num1==1) tim1<=0; end end

else begin

light1<=3'b010; num1=2'b00; tim1<=0; end end

always @(posedge div ) //从干道 begin

if(rst) //复位情况控制 begin

light2<=3'b100; num2<=red2; end

else if(en) begin if(!tim2) begin tim2<=1; case(state1)

s0:begin num2<=red2;light2<=3'b100;state2<=s1;end s1:begin num2<=yellow1;light2<=3'b010;state2<=s2;end

8

s2:begin num2<=green2;light2<=3'b001;state2<=s3;end s3:begin num2<=yellow2;light2<=3'b010;state2<=s0;end default:light2<=3'b100; endcase end else

begin //倒数计时 if(num2>0)

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

num2[3:0]<=4'b1001; num2[7:4]<=num2[7:4]-1; end

else num2[3:0]<=num2[3:0]-1; if(num2==1) tim2<=0; end end else begin

tim2<=0;

state2<=2'b00; light2<=3'b010; end end

always @(posedge clk) begin //数码管译码显示 case(num1[3:0])

4'b0000: out1<=~7'b0111111; //0 ,3F 4'b0001: out1<=~7'b0000110; //1 ,06 4'b0010: out1<=~7'b1011011; //2 ,5B 4'b0011: out1<=~7'b1001111; //3 ,4F 4'b0100: out1<=~7'b1100110; //4 ,66 4'b0101: out1<=~7'b1101101; //5 ,6D 4'b0110: out1<=~7'b1111101; //6 ,7D 4'b0111: out1<=~7'b0000111; //7 ,07 4'b1000: out1<=~7'b1111111; //8, 7F 4'b1001: out1<=~7'b1101111; //9, 6F default: out1<=~7'b0111111; //0 ,3F endcase end

always @(posedge clk)

9

begin //数码管译码显示 case(num1[7:4])

4'b0000: out2<=~7'b0111111; //0 ,3F 4'b0001: out2<=~7'b0000110; //1 ,06 4'b0010: out2<=~7'b1011011; //2 ,5B 4'b0011: out2<=~7'b1001111; //3 ,4F 4'b0100: out2<=~7'b1100110; //4 ,66 4'b0101: out2<=~7'b1101101; //5 ,6D 4'b0110: out2<=~7'b1111101; //6 ,7D 4'b0111: out2<=~7'b0000111; //7 ,07 4'b1000: out2<=~7'b1111111; //8, 7F 4'b1001: out2<=~7'b1101111; //9, 6F default: out2<=~7'b0111111; //0 ,3F endcase end

always @(posedge clk) begin //数码管译码显示 case(num2[3:0])

4'b0000: out3<=~7'b0111111; //0 ,3F 4'b0001: out3<=~7'b0000110; //1 ,06 4'b0010: out3<=~7'b1011011; //2 ,5B 4'b0011: out3<=~7'b1001111; //3 ,4F 4'b0100: out3<=~7'b1100110; //4 ,66 4'b0101: out3<=~7'b1101101; //5 ,6D 4'b0110: out3<=~7'b1111101; //6 ,7D 4'b0111: out3<=~7'b0000111; //7 ,07 4'b1000: out3<=~7'b1111111; //8, 7F 4'b1001: out3<=~7'b1101111; //9, 6F default: out3<=~7'b0111111; //0 ,3F endcase end

always @(posedge clk) begin //数码管译码显示 case(num2[7:4])

4'b0000: out4<=~7'b0111111; //0 ,3F 4'b0001: out4<=~7'b0000110; //1 ,06 4'b0010: out4<=~7'b1011011; //2 ,5B 4'b0011: out4<=~7'b1001111; //3 ,4F 4'b0100: out4<=~7'b1100110; //4 ,66 4'b0101: out4<=~7'b1101101; //5 ,6D 4'b0110: out4<=~7'b1111101; //6 ,7D 4'b0111: out4<=~7'b0000111; //7 ,07

10

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库交通灯设计 verilog(2)在线全文阅读。

交通灯设计 verilog(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/338996.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: