交通灯 实习报告.docx
- 文档编号:6241349
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:11
- 大小:190.55KB
交通灯 实习报告.docx
《交通灯 实习报告.docx》由会员分享,可在线阅读,更多相关《交通灯 实习报告.docx(11页珍藏版)》请在冰豆网上搜索。
交通灯实习报告
xxxxxx学院信息工程学院
数字系统课程设计报告书
课题名称:
基于FPGA的交通灯设计
院系:
信息工程学院信工系
姓名学号:
xxxxxxxx
专业班级:
xxxxxxxxxxxx
指导教师:
xxxxxxxxxxx
设计时间:
2015-2016学年第2学期15-16周
2016年6月28日
目录
1、摘要........................................................................................2
2、设计内容及要求....................................................................2
3、系统设计总体方案及设计原理............................................3
4、各模块电路设计与实现.....................................................3
4.1时钟分频模块.................................................................3
4.2计数模块和交通信号灯电路模块..........................................4
4.3时序状态控制模块............................................................6
5、设计检测结果.....................................................................8
参考文献...................................................................................10
摘要:
交通灯控制系统的设计主要利用计数器,用做时间显示电路,定时器构成多谐振荡器为控制系统提供时钟,D触发器在输入高电平时具有翻转特性来控制黄灯闪烁,十字路口东西与南北方向的交通灯相互交替亮,黄灯在红绿灯都不亮时闪烁的特点来设计信号灯控制电路。
在该设计的制作过程中QuartusII9.1综合性PLD开发平台和VerilogHDL硬件描述语言必不可少的工具。
设计的各个模块功能都要运用到VerilogHDL硬件描述语言、QuartusII9.1综合性PLD开发平台对其进行编写和模拟仿真。
本次实习是基于FPGA设计交通灯系统的一种新方案,本设计就是针对交通信号灯控制器的设计问题,提出了基于verilog语言的交通信号灯系统的硬件实现方法。
分频、计时、显示等各个模块的verilog程序,用verilog语言进行电路设计时,应充分认识到verilog语言的特点,从设计思想、语句运用及描述硬件方法上等多方面对电路进行优化设计。
关键词:
可编程逻辑器件;交通灯;QuartusII9.1
2设计内容及要求
(1)设计内容
交通灯控制器是可以自动控制交通灯,以倒计时的方式显示时间。
交通灯控制器是以七段显示数码管显示时间,以发光二极管模仿交通灯,在这次实验中,采用的是基本的数字芯片和发光二极管来实现这样的要求。
(2)设计要求
1.主道路绿、黄、红灯亮的时间分别为30秒、5秒、65秒;
2.次道路绿、黄、红灯亮的时间分别为60秒、5秒、35秒;
3.主、次道路时间指示采用倒计时制,用2位数码管显示。
3系统设计总体方案及设计原理如图3-1
图3-1系统设计框架
采用模块化层次设计,共分为4个模块(分频,计数,交通信号灯,时序状态)
4频模块设计与实现
4.1时钟分频模块
分频模块输入为50MHZ的矩形脉冲信号,要求输出为1HZ(用于时钟计时)、1000H(用于decode显示器显示)分频模块的源代码为:
modulefp50(cp_50mhz,clk_1hz,clk_1khz);
inputcp_50mhz;
outputclk_1hz,clk_1khz;
regclk_1hz,clk_1khz;
reg[27:
0]count,count1;
always@(posedgecp_50mhz)
begin
if(count==24999999)
begin
clk_1hz=~clk_1hz;
count=0;
end
elsebegin
count=count+1;
end
end
always@(posedgecp_50mhz)
begin
if(count1==24999)
begin
clk_1khz=~clk_1khz;
count1=0;
end
elsebegin
count1=count1+1;
end
end
Endmodule
分频模块如图4-1
图4-1分频模块
4.2计数模块和交通信号灯电路模块
交通灯控制器
/*信号定义与说明:
CLK:
为同步时钟;
EN:
使能信号,为1的话,则控制器开始工作;
模块源代码为:
modulejiao_tong_deng(ra,ga,ya,rb,gb,yb,clk1hz,jin,qh,ql);
inputjin;
inputclk1hz;//输入分频信号
outputra,ga,ya,rb,gb,yb;//输出主干道和次干道红绿灯
outputqh,ql;
reg[1:
0]dig;
reg[6:
0]seg;
regra,ga,ya,rb,gb,yb;
reg[1:
0]state,next_state;
parameterstate0=2'b00,state1=2'b01,state2=2'b10,state3=2'b11;
reg[3:
0]one,ten;reg[1:
0]cnt;
reg[3:
0]data;reg[6:
0]seg_temp;
regr1,g1,y1,r2,g2,y2;reg[13:
0]count1;
reg[8:
0]count2;rega;
reg[3:
0]qh,ql;always@(posedgeclk1hz)
Begin//设置各种灯的计数器置数
state=next_state;
case(state)
state0:
begin
if(!
jin)
Beginif(!
a)qh<='b0011;
Beginqh<='b0010;ql<='b0100;a<=1;r1<=1;y1<=0;g1<=0;r2<=0;y2<=0;g2<=1;
end
else
state3:
begin
if(!
jin)
Begin
endcase
one<=ql;
ten<=qh;
End
always@(jin,clk1hz,r1,g1,y1,r2,g2,y2,seg_temp)
begin
if(jin)
begin
ra<=r1||jin;rb<=r2||jin;
ga<=g1&&~jin;gb<=g2&&~jin;
ya<=y1&&~jin;yb<=y2&&~jin;
seg[2]<=seg_temp[2]&&clk1hz;[3]<=seg_temp[3]&&clk1hz;
seg[3]<=seg_temp[3]&&clk1hz;seg[4]<=seg_temp[4]&&clk1hz
seg[5]<=seg_temp[5]&&clk1hz;seg[6]<=seg_temp[6]&&clk1hz;
end
else
beginseg[6:
0]<=seg_temp[6:
0];
ra<=r1;rb<=r2;
ga<=g1;ga<=g1;
ya<=y1;yb<=y2;
end
end
Endmodule
所构建的模块如4-2
图4-2计数模块
4.3数码管驱动模块设计与实现
功能:
动态八位数码管扫描
输入参数:
扫描时钟clk_1k,待显示的数据d
输出参数:
数码管段码输出seg,数码管位码输出dig
/*
功能:
动态八位数码管扫描
输入参数:
扫描时钟clk_1k,待显示的数据d
输出参数:
数码管段码输出seg,数码管位码输出dig
备注:
待显示的数据为16进制格式,例如输入0x12345678,显示12345678
*/
moduledecode(clk_1k,d1,d2,d3,d4,d5,d6,d7,d8,dig,seg);//模块名suan_led
inputclk_1k;//输入时钟
input[31:
28]d1;//输入要显示的数据
input[27:
24]d2;input[23:
20]d3;
input[19:
16]d4;input[15:
12]d5;
input[11:
8]d6;input[7:
4]d7;
input[3:
0]d8;output[7:
0]dig;//数码管选择输出引脚output[7:
0]seg;//数码管输出引脚
reg[7:
0]seg_r;//定义数码管输出寄存器
reg[7:
0]dig_r;//定义数码管选择输出寄存器
reg[3:
0]disp_dat;//定义显示数码寄存器
reg[2:
0]count;//定义计数寄存器
assigndig=dig_r;//输出数码管选择
assignseg=seg_r;//输出数码管译码结果
always@(posedgeclk_1k)//定义上升沿触发进程
begin
count<=count+1'b1;
end
always@(posedgeclk_1k)
endcase
case(count)//选择数码管显示位
endcase
end
always@(disp_dat)
begin
所构建的模块如图4-3
case(disp_dat)//七段译码
4'h0:
seg_r=8'hc0;//显示"0"
4'h1:
seg_r=8'hf9;//显示"1"
4'h2:
seg_r=8'ha4;//显示"2"
4'h3:
seg_r=8'hb0;//显示"3"
4'h4:
seg_r=8'h99;//显示"4"
4'h5:
seg_r=8'h92;//显示"5"
4'h6:
seg_r=8'h82;//显示"6"
4'h7:
seg_r=8'hf8;//显示"7"
4'h8:
seg_r=8'h80;//显示"8"
4'h9:
seg_r=8'h90;//显示"9"
4'ha:
seg_r=8'h88;//显示"a"
4'hb:
seg_r=8'h83;//显示"b"
4'hc:
seg_r=8'hc6;//显示"c"
4'hd:
seg_r=8'ha1;//显示"d"
4'he:
seg_r=8'h86;//显示"e"
4'hf:
seg_r=8'h8e;//显示"f"
default:
seg_r=8'hff;//不显示
endcase
end
endmodule
模块如图:
2-5图2-5
图4-3数码管驱动模块
5设计检测结果
模块电路:
如图5-1
图5-1模块电路
建立波形文件:
创建一个新的矢量波形文件步骤如下:
(1)选择QuartusⅡ主界面File菜单下的New命令,弹出新建对话框;
(2)在新建话框中选择Verification/DebuggingFiles文件下的VectorWaveformFile,点击OK按钮,则打开一个空的波形编辑器窗口,主要分为信号栏、工具栏和波形栏。
仿真图如图5-2
图5-2仿真图
参考文献
[1]刘天浩.基于CPLD交通灯控制系统的设计研究[J].实验室科学,2010
[2]孟先军.基于泛布尔代数的交通灯控制系统[D].武汉:
武汉大学,2007
[3]文畅.基于FPGA和VHDL语言的交通灯设计[D].西安:
西安电子科技大学,2008
[4]康佳霞.FPGA应用技术教程[D].人民邮电出版社,2013
[5]范松.黄继业.EDA技术使用教程[D].北京:
科学出版社,2002.10
[6]翟玉文等编著.电子设计与实践[D].北京:
中国电力出版社,2005.05
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 实习报告 实习 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)