西工大FPGA实验大作业Word文档格式.docx

上传人:b****1 文档编号:13364809 上传时间:2022-10-10 格式:DOCX 页数:16 大小:287.37KB
下载 相关 举报
西工大FPGA实验大作业Word文档格式.docx_第1页
第1页 / 共16页
西工大FPGA实验大作业Word文档格式.docx_第2页
第2页 / 共16页
西工大FPGA实验大作业Word文档格式.docx_第3页
第3页 / 共16页
西工大FPGA实验大作业Word文档格式.docx_第4页
第4页 / 共16页
西工大FPGA实验大作业Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

西工大FPGA实验大作业Word文档格式.docx

《西工大FPGA实验大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《西工大FPGA实验大作业Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

西工大FPGA实验大作业Word文档格式.docx

而后绿灯亮60s,黄灯闪烁10s,红灯亮60s……以此循环,直至复位电平置1,所有交通灯灭。

2.模块结构设计及流程图

顶层模块(modulelights):

模块例化,对控制模块和译码模块进行例化

控制模块:

交通灯颜色和倒计时

时钟分频(frequencies):

将50MHZ的频率分成我们所需要的1HZ;

颜色变化:

状态循环及倒计时,状态用light_status,如果状态

light_status为0

,绿灯亮,时间(60s)给统计灯亮时间的变量light_long,并且把显示灯亮的变量light_select赋值100(高电平表示亮),最后把状态标志位light_status赋1,控制倒计时。

交通灯亮灭情况:

light_out

交通灯亮灭情况

001

红灯亮

010

黄灯亮

100

绿灯亮

倒计时:

灯亮或闪烁时间(绿、黄、红分别为60s、10s、60s)用BCD码表示(分别为60h、10h、60h),倒计时的时候个位和十位分别是高四位和低四位,首先是低四位倒数,当倒数到0时,重新赋值为9,且高四位减1,如此循环,直到这个数减到0,灯亮的时间到,接着进行下一个状态,在时间减到0的时候,给使能端enable赋值0;

高四位和低四位分别显示十位和个位。

译码模块:

黄灯闪烁及倒计时译码输出。

黄灯闪烁:

黄灯在1s内亮0.5s灭0.5s,中间位当分频时钟y_flicker为高且输入light_select为高时,输出light_out才为高(黄灯亮),别的情况light_out中间位都为低(黄灯灭)。

七段译码:

3—8译码器,把倒计时译码输出显示

模块框图:

3.时序说明

在0时刻,加上系统时钟,首先进行reset置1,计数器清零,所有交通灯为灭的状态,二进制代码为00,七段译码无显示。

在reset为0时,系统开始正常工作。

计数器开始工作,纵向路口的路灯亮,横向路口的红灯亮,二进制代码为01,同时两个倒计时显示器工作,从59到0的倒计时。

经过60s(也就是经过60*50M个系统时钟上升沿之后)纵向路口,横向路口的黄灯开始闪烁(1秒内只有半秒,黄灯是亮的,从9秒到8.5秒之间黄灯是亮的,然后8.5到8是灭的,如此继续下去,知道10秒结束)又经过10s(70*50M个系统时钟上升沿),状态转移到红灯,然后显示及七段译码过程与绿灯相似。

至此一个周期已经完成,接下来就是循环执行以上步骤的过程,直到有reset清零端打断其正常工作。

4.计框图及相关时序

四.实验代码

//顶层模块

modulelights(clk50MHz,reset,light_out,led_ctrlge,led_ctrlshi);

inputclk50MHz;

inputreset;

output[2:

0]light_out;

output[6:

0]led_ctrlge;

0]led_ctrlshi;

wire[3:

0]dataoutge;

0]dataoutshi;

wire[2:

0]light_selccted;

controlcontrollk50MHz),.reset(reset),.doutge(dataoutge),.doutshi(dataoutshi),.light_select(light_selccted));

//控制模块例化

decodeU_decode(.sysclk_50MHz(sysclk_50M,.reset(reset),.inge(dataoutge),.inshi(dataoutshi).light_sel(light_selccted),.light_out(light_out),.led_datage(led_ctrlge),.led_datashi(led_ctrlshi));

//译码模块例化

endmodule

//控制模块

Modulecontrol(clk50MHz,reset,outge,outshi,light_select);

output[3:

0]outge;

0]outshi;

output[2:

0]light_select;

reg[2:

reg[1:

0]light_status;

regclk1Hz;

reg[24:

0]counter;

regenable;

reg[7:

0]light_long;

parameterg_long=8'

h59;

parametery_long=8'

h09;

parameterr_long=8'

always@(posedgeclk50MHzorposedgereset)

begin

if(reset)

begin

clk1Hz<

=0;

counter<

=5'

d0;

end

else

if(counter==25'

d25000000-1)

begin

counter<

=25'

clk1Hz<

=~clk1Hz;

end

else

=counter+1;

end

always@(posedgeclk1Hzorposedgereset)

light_select<

=3'

b000;

light_status<

=2'

enable<

if(enable==0)

enable<

=1;

case(light_status)

0:

light_long<

=g_long;

light_select<

b100;

light_status<

d1;

1:

=y_long;

b010;

d2;

2:

light_long<

=r_long;

b001;

defaultlight_select<

endcase

if(light_long==0)

enable<

else

if(light_long[3:

0]==0)

begin

light_long[3:

0]<

=4'

d9;

light_long[7:

4]<

=light_long[7:

4]-1;

end

else

=light_long[3:

0]-1;

assignoutge=light_long[3:

0];

assignoutshi=light_long[7:

4];

//译码模块

moduledecode(clk50MHz,reset,inge,inshi,light_sel,light_out,led_datage,led_datashi);

input[3:

0]inge;

0]inshi;

input[2:

0]light_sel;

0]led_datage;

0]led_datashi;

reg[6:

0]counter_yell;

regfrequencies;

counter_yell<

frequencies<

if(counter_yell==25'

counter_yell<

frequencies<

=~frequencies;

=counter_yell+1;

always@(frequenciesorlight_sel)

light_out[2]=light_sel[2];

light_out[0]=light_sel[0];

if((frequencies==1)&

&

(light_sel[1]==1'

b1))

light_out[1]<

=1'

b1;

else

b0;

always@(inge)

case(inge)//个位七段译码,低电平有效

4'

h0:

led_datage=7'

b0001000;

h1:

b1101101;

h2:

b0100010;

h3:

b0100100;

h4:

b1000101;

h5:

b0010100;

h6:

b0010000;

h7:

b0101101;

h8:

b0000000;

h9:

b0000100;

default:

b1111111;

endcase

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

当前位置:首页 > PPT模板 > 商务科技

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

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