eda交通灯设计和实现Word文件下载.docx

上传人:b****6 文档编号:18223906 上传时间:2022-12-14 格式:DOCX 页数:14 大小:3.07MB
下载 相关 举报
eda交通灯设计和实现Word文件下载.docx_第1页
第1页 / 共14页
eda交通灯设计和实现Word文件下载.docx_第2页
第2页 / 共14页
eda交通灯设计和实现Word文件下载.docx_第3页
第3页 / 共14页
eda交通灯设计和实现Word文件下载.docx_第4页
第4页 / 共14页
eda交通灯设计和实现Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

eda交通灯设计和实现Word文件下载.docx

《eda交通灯设计和实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《eda交通灯设计和实现Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

eda交通灯设计和实现Word文件下载.docx

本模块实现交通灯控制器的逻辑功能。

//*********************************************************

//**交通灯控制器

moduletraffic(clock,rst_n,clken,lampa,lampb,acount,bcount);

inputclock;

//系统时钟50MHz

inputrst_n;

//同步复位信号,低电平有效

inputclken;

//时钟使能信号:

1Hz。

output[2:

0]lampa;

//控制A方向三盏灯的亮灭;

其中lampa[2:

0]分

//别控制A方向的绿灯、黄灯、红灯(低电平灯亮)

0]lampb;

//控制B方向三盏灯的亮灭;

其中lampb[2:

//别控制B方向的绿灯、黄灯、红灯(低电平灯亮)

output[7:

0]acount;

//用于A方向灯的时间显示,8位BCD码输出

0]bcount;

//用于B方向灯的时间显示,8位BCD码输出

reg[2:

0]lampa,lampb;

reg[7:

0]numa,numb;

//时间计数器

regtempa,tempb;

//防重进入标志

0]StateA,StateB;

//A、B方向灯控制状态机的状态

//设置各种灯的计数器的预置数

parameterared=8'

h30,//30秒

ayellow=8'

h5,//5秒

agreen=8'

h15,//15秒

bred=8'

h20,//20秒

byellow=8'

bgreen=8'

h25;

//25秒

assignacount=numa;

assignbcount=numb;

//控制A方向的三种灯

always@(posedgeclockornegedgerst_n)

begin

if(!

rst_n)

StateA<

=3'

h0;

lampa<

b011;

tempa<

=1'

b0;

end

elseif(clken)

tempa)

b1;

case(StateA)//控制亮灯的顺序

0:

beginnuma<

=agreen;

lampa<

StateA<

=1;

end

1:

=ayellow;

b101;

=2;

2:

=ared;

b110;

=0;

default:

endcase

else

begin//倒计时

if(numa>

1)

if(numa[3:

0]==0)

numa[3:

0]<

=4'

h9;

numa[7:

4]<

=numa[7:

4]-4'

h1;

=numa[3:

0]-4'

if(numa==2)

tempa<

=1'

lampb<

=3'

StateB<

tempb<

elseif(clken)

tempb)

case(StateB)//控制亮灯的顺序

beginnumb<

=bred;

lampb<

StateB<

=1;

=bgreen;

=2;

=byellow;

=0;

if(numb>

if(numb[3:

numb[3:

numb[7:

=numb[7:

=numb[3:

if(numb==2)

tempb<

endmodule

2)显示控制程序,文件名为traffic.v

本模块实现交通灯倒计时的显示并产生1HZ的时钟使能信号。

//**交通灯控制器显示模块

//**功能:

显示交通灯时间,并产生1Hz时钟使能信号,

moduletraffic_test(clock,clken,rst_n,acount,bcount,seg,dig);

//系统时钟(50MHz)

outputclken;

input[7:

0]seg;

//数码管段码输出

0]dig;

//数码管位码输出

//I/O寄存器

0]seg;

0]dig;

//内部寄存器

reg[25:

0]clk_cnt;

reg[16:

0]count;

//时钟分频计数器

reg[1:

0]cnt;

//数码管扫描计数器

reg[3:

0]disp_dat;

//数码管扫描显存

wirediv_clk;

//分频时钟

//产生1Hz时钟使能信号

always@(posedgeclock)

if(clken)

clk_cnt<

=26'

=clk_cnt+26'

assignclken=(clk_cnt>

d49999999);

//时钟分频进程,用于数码管扫描显示

count<

=count+1'

assigndiv_clk=&

count;

//数码管扫描显示部分

if(div_clk)

cnt<

=cnt+1'

case(cnt)//选择扫描显示数据

2'

d0:

disp_dat<

=acount[7:

4];

//第一个数码管

d1:

=acount[3:

0];

//第二个数码管

d2:

=bcount[7:

//第五个数码管

d3:

=bcount[3:

//第六个数码管

case(cnt)//选择数码管显示位

dig<

=8'

b01111111;

//选择第一个数码管显示

b10111111;

//选择第二个数码管显示

b11110111;

//选择第五个数码管显示

b11111011;

//选择第六个数码管显示

always@(disp_dat)

case(disp_dat)//七段译码

4'

h0:

seg=8'

hc0;

//显示0

h1:

hf9;

//显示1

h2:

ha4;

//显示2

h3:

hb0;

//显示3

h4:

h99;

//显示4

h5:

h92;

//显示5

h6:

h82;

//显示6

h7:

hf8;

//显示7

h8:

h80;

//显示8

h9:

h90;

//显示9

ha:

h88;

//显示a

hb:

h83;

//显示b

hc:

hc6;

//显示c

hd:

ha1;

//显示d

he:

h86;

//显示e

hf:

h8e;

//显示f

2)顶层模块,文件名为traffic-top.v

本模块将traffic.v及traffic-test.v进行封装。

//**交通灯控制器顶层程序

moduletraffic_top(clock,rst_n,seg,dig,lampa,lampb);

//系统时钟(48MHz)

//复位信号,低电平有效

//A方向红绿灯

//B文向红绿灯

//内部线网

wireclken;

wire[7:

//交通灯控制模块

traffictraffic(

.clock(clock),

.rst_n(rst_n),

.clken(clken),

.lampa(lampa),

.lampb(lampb),

.acount(acount),

.bcount(bcount)

);

//显示模块

traffic_testtraffic_test(

.bcount(bcount),

.seg(seg),

.dig(dig)

Endmodule

二仿真波形

三照片等文件

四方框图

五参考资料

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1