一、对一个南北向和东西向十字路口车辆信号灯和人行道信号灯的显示进行控制,车辆信号灯为红黄绿三色,显示顺序为绿黄红循环显示,人行道信号灯为红绿两色。南北向为主干道,车辆信号灯显示时间依次为绿灯90秒,黄灯5秒,红灯40秒,交通灯点亮的同时2位LED灯倒计数显示该等剩余秒数,当车辆信号灯点亮绿灯时同时点亮人行道信号灯的绿灯,点亮时间为80秒,接着绿灯闪烁10秒,闪烁频率1Hz,然后点亮红灯45秒,如此依次进行。东西向车辆信号灯显示时间依次为绿灯35秒,黄灯5秒,红灯95秒,交通灯点亮的同时2位LED灯倒计数显示该等剩余秒数,当车辆信号灯点亮绿灯时同时点亮人行道信号灯的绿灯,点亮时间为25秒,接着绿灯闪烁10秒,闪烁频率1Hz,然后点亮红灯100秒,如此依次进行。 二、实验环境: 本次实验采用Cyclone IV EP4CE115F29 芯片, 系统时钟为50MHz 。实验环境为:1 、PC 机一台。2 、Altera 的Quartus 软件一套。3 、主芯片为Altera 公司的DE2-115 的EDA 开发板一套。
verilog源码:
- module traffic_led(clkin,con11,con12,con21,con22,t11,t12,t21,t22);
- input clkin;
- output con11,con12,con21,con22,t11,t12,t21,t22;
- reg [1:0] con11,con12,con21,con22;
- reg [3:0] t11,t12,t21,t22;
- reg [7:0] tcont,tout1,tout2; //剩余时间: t11:高位南北,t12:低位南北,t21:高位东西,t22:低位东西// //con11:南北车道,con12:南北人行,con21:东西车道,con22:东西人行//
- always@(posedge clkin)
- begin
- tcont<=tcont+1;
- if(tcont<=80)
- begin
- con11<=0;
- con12<=0;
- con21<=2;
- con22<=2;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else if(tcont<=90)
- begin
- con11<=0;
- con12<=1;
- con21<=2;
- con22<=2;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else if(tcont<=95)
- begin
- con11<=1;
- con12<=2;
- con21<=2;
- con22<=2;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else if(tcont<=120)
- begin
- con11<=2;
- con12<=2;
- con21<=0;
- con22<=0;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else if(tcont<=130)
- begin
- con11<=2;
- con12<=2;
- con21<=0;
- con22<=1;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else if(tcont<=135)
- begin
- con11<=2;
- con12<=2;
- con21<=1;
- con22<=2;
- t11<=tout1/10;
- t12<=tout1-(tout1/10)*10;
- t21<=tout2/10;
- t22<=tout2-(tout2/10)*10;
- end
- else
- tcont<=0;
- end
-
- always@(posedge clkin)
- begin
- if(tcont<=90)
- begin
- tout1<=90-tcont;
- tout2<=95-tcont;
- end
- else if(tcont<=95)
- begin
- tout1<=95-tcont;
- tout2<=95-tcont;
- end
- else if(tcont<=130)
- begin
- tout1<=135-tcont;
- tout2<=130-tcont;
- end
- else if(tcont<=135)
- begin
- tout1<=135-tcont;
- tout2<=135-tcont;
- end
- end
-
- endmodule
复制代码
全部资料51hei下载地址:
traffic_led.zip
(3.68 MB, 下载次数: 110)
|