FPGA交通灯实验报告.docx

上传人:b****1 文档编号:2889461 上传时间:2023-05-04 格式:DOCX 页数:19 大小:247.72KB
下载 相关 举报
FPGA交通灯实验报告.docx_第1页
第1页 / 共19页
FPGA交通灯实验报告.docx_第2页
第2页 / 共19页
FPGA交通灯实验报告.docx_第3页
第3页 / 共19页
FPGA交通灯实验报告.docx_第4页
第4页 / 共19页
FPGA交通灯实验报告.docx_第5页
第5页 / 共19页
FPGA交通灯实验报告.docx_第6页
第6页 / 共19页
FPGA交通灯实验报告.docx_第7页
第7页 / 共19页
FPGA交通灯实验报告.docx_第8页
第8页 / 共19页
FPGA交通灯实验报告.docx_第9页
第9页 / 共19页
FPGA交通灯实验报告.docx_第10页
第10页 / 共19页
FPGA交通灯实验报告.docx_第11页
第11页 / 共19页
FPGA交通灯实验报告.docx_第12页
第12页 / 共19页
FPGA交通灯实验报告.docx_第13页
第13页 / 共19页
FPGA交通灯实验报告.docx_第14页
第14页 / 共19页
FPGA交通灯实验报告.docx_第15页
第15页 / 共19页
FPGA交通灯实验报告.docx_第16页
第16页 / 共19页
FPGA交通灯实验报告.docx_第17页
第17页 / 共19页
FPGA交通灯实验报告.docx_第18页
第18页 / 共19页
FPGA交通灯实验报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

FPGA交通灯实验报告.docx

《FPGA交通灯实验报告.docx》由会员分享,可在线阅读,更多相关《FPGA交通灯实验报告.docx(19页珍藏版)》请在冰点文库上搜索。

FPGA交通灯实验报告.docx

FPGA交通灯实验报告

 

交通灯实验报告

 

一,实验目的

实现两路信号灯交替亮起,并利用两组数码管分别对两路信号进行倒计时。

两路信号时间分别为:

V:

绿灯(30S)H:

红灯(35S)

黄灯(5s)绿灯(30S)

红灯(35S)黄灯(5S)

二,实验步骤

建立工程

可在欢迎界面点击“CreataNewProject”进入工程建立界面,亦可关闭欢迎界面,点击菜单栏的“File”,点击“NewProjectWizard”进入建立工程界面。

右侧为建立工程界面,点击next。

在此界面选定工程路径,取好工程名,点击“Next”。

注意:

路径中不能有中文,工程名也不能有中文。

一直点击“Next”进入器件设置界面,DE2-70开发工具采用的CycloneII系列的EP2C70F896C6N。

点击“Finish”,完成工程建立

1、点击“File”,点击“New”选择“VerilogHDL”

2,点击主界面工具栏中的选择“VerilogHDL”

3、写入verilog代码。

代码如下:

moduletraffic(Clk_50M,Rst,LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V,Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL,led15);

parameterS1=2'b00;

parameterS2=2'b01;

parameterS3=2'b10;

parameterS4=2'b11;

inputClk_50M,Rst;

outputLedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;

output[6:

0]Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL;

outputled15;

//-------------divfor1Hz-------start----

regClk_1Hz;

reg[31:

0]t_1Hz;

always(posedgeClk_50MornegedgeRst)

begin

if(!

Rst)

begin

t_1Hz<=1;

Clk_1Hz<=1;

end

else

begin

if(t_1Hz>=25000000)

begin

t_1Hz<=1;

Clk_1Hz<=~Clk_1Hz;

end

else

t_1Hz<=t_1Hz+1;

end

end

//-----------divfor1Hz------end-----

reg[7:

0]t30,tH,tV,tHH,tVV;

reg[7:

0]tDis,tDiss;

//-----------30counterandseg7---start---

regLedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;

always(posedgeClk_1Hz)

begin

case(state)

S1:

begin

if(t30>=30)

t30<=1;

else

t30<=t30+1;

end

S2:

begin

if(t30>=5)

t30<=1;

else

t30<=t30+1;

end

S3:

begin

if(t30>=30)

t30<=1;

else

t30<=t30+1;

end

S4:

begin

if(t30>=5)

t30<=1;

else

t30<=t30+1;

end

endcase

end

always(posedgeClk_1Hz)

begin

case(stateV)

S1:

begin

if(tV>=30)

tV<=1;

else

tV<=tV+1;

end

S2:

begin

if(tV>=5)

tV<=1;

else

tV<=tV+1;

end

S3:

begin

if(tV>=35)

tV<=1;

else

tV<=tV+1;

end

endcase

end

always(posedgeClk_1Hz)

begin

case(stateH)

S1:

begin

if(tH>=35)

tH<=1;

else

tH<=tH+1;

end

S2:

begin

if(tH>=30)

tH<=1;

else

tH<=tH+1;

end

S3:

begin

if(tH>=5)

tH<=1;

else

tH<=tH+1;

end

endcase

end

always(negedgeClk_50MornegedgeRst)

begin

case(state)

S1:

tVV=30-tV;

S2:

tVV=5-tV;

S3:

tVV=35-tV;

S4:

tVV=35-tV;

endcase

end

always(negedgeClk_50MornegedgeRst)

begin

case(state)

S1:

tHH=35-tH;

S2:

tHH=35-tH;

S3:

tHH=30-tH;

S4:

tHH=5-tH;

endcase

end

 

//16进制计数器转换为用于显示的10进制计数器

always(posedgeClk_50M)

begin

if(tVV>29)

begin

tDis[7:

4]<=3;

tDis[3:

0]<=tVV-30;

end

elseif(tVV>19)

begin

tDis[7:

4]<=2;

tDis[3:

0]<=tVV-20;

end

elseif(tVV>9)

begin

tDis[7:

4]<=1;

tDis[3:

0]<=tVV-10;

end

else

tDis<=tVV;

end

SEG7_LUThex4(Seg7_VL,tDis[3:

0]);

SEG7_LUThex5(Seg7_VH,tDis[7:

4]);

always(posedgeClk_50M)

begin

if(tHH>29)

begin

tDiss[7:

4]<=3;

tDiss[3:

0]<=tHH-30;

end

elseif(tHH>19)

begin

tDiss[7:

4]<=2;

tDiss[3:

0]<=tHH-20;

end

elseif(tHH>9)

begin

tDiss[7:

4]<=1;

tDiss[3:

0]<=tHH-10;

end

else

tDiss<=tHH;

end

SEG7_LUThex1(Seg7_HL,tDiss[3:

0]);

SEG7_LUThex2(Seg7_HH,tDiss[7:

4]);

//-----------30counterandseg7----end----

reg[1:

0]state,stateH,stateV;

always(posedgeClk_1Hz)

begin

case(state)

S1:

if(t30>=30)

begin

state<=S2;

end

S2:

if(t30>=5)

begin

state<=S3;

end

S3:

if(t30>=30)

begin

state<=S4;

end

S4:

if(t30>=5)

begin

state<=S1;

end

default:

begin

state<=S1;

end

endcase

end

always(posedgeClk_1Hz)

begin

case(state)

S1:

begin

stateH<=S1;

stateV<=S1;

end

S2:

begin

stateH<=S1;

stateV<=S2;

end

S3:

begin

stateH<=S2;

stateV<=S3;

end

S4:

begin

stateH<=S3;

stateV<=S3;

end

endcase

end

always(posedgeClk_50MornegedgeRst)

begin

if(!

Rst)

begin

LedR_H<=0;

LedG_H<=0;

LedY_H<=0;

LedR_V<=0;

LedG_V<=0;

LedY_V<=0;

end

else

begin

case(state)

S1:

begin

LedR_H<=1;

LedG_H<=0;

LedY_H<=0;

LedR_V<=0;

LedG_V<=1;

LedY_V<=0;

end

S2:

begin

LedR_H<=1;

LedG_H<=0;

LedY_H<=0;

LedR_V<=0;

LedG_V<=0;

LedY_V<=1;

end

S3:

begin

LedR_H<=0;

LedG_H<=1;

LedY_H<=0;

LedR_V<=1;

LedG_V<=0;

LedY_V<=0;

end

S4:

begin

LedR_H<=0;

LedG_H<=0;

LedY_H<=1;

LedR_V<=1;

LedG_V<=0;

LedY_V<=0;

end

default:

begin

LedR_H<=0;

LedG_H<=0;

LedY_H<=0;

LedR_V<=0;

LedG_V<=0;

LedY_V<=0;

end

endcase

end

end

assignled15=state;

endmodule

moduleSEG7_LUT(oSEG,iDIG);

input[3:

0]iDIG;

output[6:

0]oSEG;

reg[6:

0]oSEG;

always(iDIG)

begin

case(iDIG)

4'h1:

oSEG=7'b1111001;//---t----

4'h2:

oSEG=7'b0100100;//||

4'h3:

oSEG=7'b0110000;//ltrt

4'h4:

oSEG=7'b0011001;//||

4'h5:

oSEG=7'b0010010;//---m----

4'h6:

oSEG=7'b0000010;//||

4'h7:

oSEG=7'b1111000;//lbrb

4'h8:

oSEG=7'b0000000;//||

4'h9:

oSEG=7'b0011000;//---b----

4'ha:

oSEG=7'b0001000;

4'hb:

oSEG=7'b0000011;

4'hc:

oSEG=7'b1000110;

4'hd:

oSEG=7'b0100001;

4'he:

oSEG=7'b0000110;

4'hf:

oSEG=7'b0001110;

4'h0:

oSEG=7'b1000000;

endcase

end

endmodule

编译工程

保存文件,将文件放在所建工程所在路径下

点击主界面工具栏中的

图标

也可点击菜单栏中“Processing”,点击“Startpilation”

分配关键如下:

Clk_50MInputPIN_AD15

LedG_HOutputPIN_AD9

LedG_VOutputPIN_AJ6

LedR_HOutputPIN_AJ7)

LedR_VOutputPIN_AJ5)

LedY_HOutputPIN_AD8

LedY_VOutputPIN_AK5

RstInputPIN_AA23

Seg7_HH[6]OutputPIN_G1

Seg7_HH[5]OutputPIN_H3

Seg7_HH[4]OutputPIN_H2

Seg7_HH[3]OutputPIN_H1

Seg7_HH[2]OutputPIN_J2

Seg7_HH[1]OutputPIN_J1

Seg7_HH[0]OutputPIN_K3

Seg7_HL[6]OutputPIN_E4

Seg7_HL[5]OutputPIN_F4

Seg7_HL[4]OutputPIN_G4

Seg7_HL[3]OutputPIN_H8

Seg7_HL[2]OutputPIN_H7

Seg7_HL[1]OutputPIN_H4

Seg7_HL[0]OutputPIN_H6

Seg7_VH[6]OutputPIN_AD17

Seg7_VH[5]OutputPIN_AF177

Seg7_VH[4]OutputPIN_AE177

Seg7_VH[3]OutputPIN_AG16

Seg7_VH[2]OutputPIN_AF167

Seg7_VH[1]OutputPIN_AE167

Seg7_VH[0]OutputPIN_AG13

Seg7_VL[6]OutputPIN_AD12

Seg7_VL[5]OutputPIN_AD11

Seg7_VL[4]OutputPIN_AF108

Seg7_VL[3]OutputPIN_AD10

Seg7_VL[2]OutputPIN_AH98

Seg7_VL[1]OutputPIN_AF98

Seg7_VL[0]OutputPIN_AE88

烧写代码

在管脚配置完成后,还需将工程再编译一次,成功后,点击主界面工具栏中的

亦可点击主界面菜单栏中“Tools”,点击“Programmer”

进入代码烧写界面后,点击“Start”,当“Progress”为100%时,表示烧写完成,这是可观察DE2-70板现象

获得预期的效果,两组的信号红黄绿灯交替切换,计数器记为零时信号灯切换状态,红灯35s,黄灯5s,绿灯30s。

三,心得体会

通过本次实验初步了解了EDA技术,熟悉了FPGA开发板的开发流程,锻炼了动手能力。

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2