资源描述:
《基于verilog交通灯仿真系统设计与仿真》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于Verilog交通灯仿真系统设计与仿真姓名:班级:1501011学号:基于Verilog交通灯的设计与实现一、选题意义1.1背景介绍交通信号灯是现代交通系统中必不可少的元素,用Verilog语言对交通信号灯进行模拟,设计一个交通灯信号控制电路。具体要求为:输入为50MHz的时钟和复位信号,输出为红、绿、黄三个信号(高电平为亮)。复位信号(高电平)有效,红、绿、黄灯灭;接着进行如下循环:绿灯亮1分钟,黄灯闪烁10秒,红灯亮1分钟。在此基础上再加两个数码管,对倒计时的数显示。1.2研究价值通过交通灯的
2、设计与仿真综合,体会复杂时序的实现方法,学会用框图表示程序的设计思想,掌握中小规模集成电路的系统综合设计方法。二、系统设计设计思路概述:考虑一个红绿黄交通灯及倒计时显示器设计首先复位电平置1,所有的交通灯电平为低,即灭。首先绿灯亮60s,然后黄灯闪烁10s;红灯再接着亮60s;而后绿灯亮60s,黄灯闪烁10s,红灯亮60s……以此循环,直至复位电平置1,所有交通灯灭。三、模块设计与仿真顶层模块(modulelights):模块例化,对控制模块和译码模块进行例化控制模块:交通灯颜色和倒计时时钟分频(fr
3、equencies):将50MHZ的频率分成我们所需要的1HZ;颜色变化:状态循环及倒计时,状态用light_status,如果状态light_status为0,绿灯亮,时间(60s)给统计灯亮时间的变量light_long,并且把显示灯亮的变量light_select赋值100(高电平表示亮),最后把状态标志位light_status赋1,控制倒计时。交通灯亮灭情况:light_out交通灯亮灭情况001红灯亮010黄灯亮100绿灯亮倒计时:灯亮或闪烁时间(绿、黄、红分别为60s、10s、60s)用
4、BCD码表示(分别为60h、10h、60h),倒计时的时候个位和十位分别是高四位和低四位,首先是低四位倒数,当倒数到0时,重新赋值为9,且高四位减1,如此循环,直到这个数减到0,灯亮的时间到,接着进行下一个状态,在时间减到0的时候,给使能端enable赋值0;高四位和低四位分别显示十位和个位。译码模块:黄灯闪烁及倒计时译码输出。黄灯闪烁:黄灯在1s内亮0.5s灭0.5s,中间位当分频时钟y_flicker为高且输入light_select为高时,输出light_out才为高(黄灯亮),别的情况ligh
5、t_out中间位都为低(黄灯灭)。七段译码:3—8译码器,把倒计时译码输出显示模块框图:3.时序说明在0时刻,加上系统时钟,首先进行reset置1,计数器清零,所有交通灯为灭的状态,二进制代码为00,七段译码无显示。在reset为0时,系统开始正常工作。计数器开始工作,纵向路口的路灯亮,横向路口的红灯亮,二进制代码为01,同时两个倒计时显示器工作,从59到0的倒计时。经过60s(也就是经过60*50M个系统时钟上升沿之后)纵向路口,横向路口的黄灯开始闪烁(1秒内只有半秒,黄灯是亮的,从9秒到8.5秒之
6、间黄灯是亮的,然后8.5到8是灭的,如此继续下去,知道10秒结束)又经过10s(70*50M个系统时钟上升沿),状态转移到红灯,然后显示及七段译码过程与绿灯相似。至此一个周期已经完成,接下来就是循环执行以上步骤的过程,直到有reset清零端打断其正常工作。4.计框图及相关时序四、系统仿真//顶层模块modulelights(clk50MHz,reset,light_out,led_ctrlge,led_ctrlshi);inputclk50MHz;inputreset;output[2:0]light
7、_out;output[6:0]led_ctrlge;output[6:0]led_ctrlshi;wire[3:0]dataoutge;wire[3:0]dataoutshi;wire[2:0]light_selccted;controlcontrollk50MHz),.reset(reset),.doutge(dataoutge),.doutshi(dataoutshi),.light_select(light_selccted));//控制模块例化decodeU_decode(.sysclk_5
8、0MHz(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