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

南昌大学eda实验报告 - 图文

来源:用户分享 时间:2025/5/26 0:31:35 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

reg [35:0]i; reg flag1; reg flag2;

reg [7:0] cnt; initial begin

flag2='b0; flag1='b0;

COUNTER[7:0]='D60;

LED[5:0]<=6'b001100; //主干道是绿灯乡村道是红灯 end

always @(posedge clk) begin cnt=cnt+1;

if (cnt==1000) begin CPB=1'b1; cnt=0; end else CPB=1'b0; end

always @(posedge clk) begin

if (sel<1) sel=sel+1; else sel=0; end //sel为数码管选择 always @(posedge clk) begin

if(COUNTER[3:0]==4'D0 && COUNTER[7:4]==4'D0) //在数码管是60时判断

是否有信号s的出现

begin

if(S) //S为1即乡村想中断的情况下 begin

if(LED[5:0]==6'b001100) begin

LED[5:0]<=6'b010100; //表示主干道是黄灯而乡村是红

COUNTER[7:4]<=4'D0; //显示的是4秒钟 COUNTER[3:0]<=4'D4; end

else if(LED[5:0]==6'b010100) //表示4秒钟过后的乡村开始通

路了

begin

LED[5:0]<=6'b100001; //表示主干道是红灯而乡村是绿

COUNTER[7:4]<=4'D2; //显示的是20秒钟 COUNTER[3:0]<=4'D0; flag1=1'b1; end

else if(LED[5:0]=='b100001) //表示20秒过后主干道通行了

begin

LED[5:0]<='b100010; //表示主干道是红灯而

乡村是黄灯

COUNTER[7:4]<=4'D0; //显示的是4秒钟 COUNTER[3:0]<=4'D4; flag1='b0; end

else if(LED[5:0]=='b100010) begin

LED[5:0]<='b001100; //主干道是绿灯乡村道是

红灯

COUNTER[7:4]<=4'D6; //显示的是60秒钟 COUNTER[3:0]<=4'D0; end end else //S为0即乡村不想中断的情况下 begin

if(LED[5:0]=='b010100) //表示4秒钟过后的乡村开始通路了 begin

LED[5:0]<='b100001; //表示主干道是红灯而乡村是

绿灯

COUNTER[7:4]<=4'D2; //显示的是20秒钟 COUNTER[3:0]<=4'D0;

flag1=1'b1; //表示可以开始进行20秒的检查是否乡村 end

else if(LED[5:0]=='b100001) //表示20秒过后主干道可以通行

begin

LED[5:0]<='b100010; //表示主干道是红灯而乡村

是黄灯

COUNTER[7:4]<=4'D0; //显示的是4秒钟 COUNTER[3:0]<=4'D4; flag1='b0; end else if(LED[5:0]=='b100010) //表示4秒过后主干道通行了 begin

LED[5:0]<='b001100; //表示主干道是绿灯而乡村

是红灯

COUNTER[7:4]<=4'D6; //显示的是60秒钟 COUNTER[3:0]<=4'D0;end else

if(LED[5:0]=='b001100) begin

flag2='b1; //60秒过后才可以让乡村中断主干道 LED[5:0]<='b001100;//主干道是绿灯乡村道是红灯 COUNTER[7:4]<=4'D6; //再次显示60秒钟 COUNTER[3:0]<=4'D0; end end end else

begin

if(S && (flag2=='b1)) //表示乡村道路有信号并且可以让乡村道路通行

了,乡村想中断

begin

LED[5:0]<='b010100; //表示主干道是黄灯而乡村是红灯 COUNTER[7:4]<=4'D0; //显示的是4秒钟 COUNTER[3:0]<=4'D4; flag2='b0; end else begin

if(COUNTER[3:0]==4'D0) //正常计数 begin

COUNTER[7:4]=COUNTER[7:4]-4'D1; COUNTER[3:0]=4'D9; end else

COUNTER[3:0]=COUNTER[3:0]-4'D1; end end if(flag1=='b1) begin //乡村不想绿灯了,想中断其20秒的绿灯

if(!S) begin

flag2='b0; flag1='b0;

LED[5:0]<='b100010; //表示主干道是红灯而乡村是黄灯 COUNTER[7:4]<=4'D0; //显示的是4秒钟 COUNTER[3:0]<=4'D4; end end end

always @(sel) begin case (sel)

0: a=COUNTER[7:4]; //1数码管为十位

1: a=COUNTER[3:0]; default: a=0; endcase case (a)

0:LED1[7:0]='b00111111; 1:LED1[7:0]='b00000110; 2:LED1[7:0]='b01011011; 3:LED1[7:0]='b01001111; 4:LED1[7:0]='b01100110; 5:LED1[7:0]='b01101101; 6:LED1[7:0]='b01111101; 7:LED1[7:0]='b00000111; 8:LED1[7:0]='b01111111; 9:LED1[7:0]='b01101111; default: LED1[7:0]=8'b11111111; endcase end

endmodule 赋值模块 input clk;

reg CPB; //时钟 input S;

output [2:0] sel;

reg [2:0] sel; //指明乡村路口是否有汽车的通行信号 reg [3:0]a;

output [5:0] LED; //信号灯的显示 output [7:0] LED1; //显示时间的十位 output [8:0] COUNTER; //数码的显示 reg [5:0] LED;

reg [7:0] COUNTER; reg [7:0] LED1; reg [35:0]i; reg flag1; reg flag2;

reg [7:0] cnt; initial begin

flag2='b0; flag1='b0;

COUNTER[7:0]='D60;

LED[5:0]<=6'b001100;

Clk为系统时钟1KHz,可以作为扫描频率,将其分频之后的CPB作为秒的计数频率,S为乡道是否想中断主道的信号,sel为循环扫描信号,LED为信号灯的显示,LED1为显示时间的十位,COUNTER为时间数码的显示。

搜索更多关于: 南昌大学eda实验报告 - 图文 的文档
南昌大学eda实验报告 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4mhog1ec3f9vfqw3dfl3_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top