|
本帖最后由 xiaozuowei118 于 2015-12-30 22:22 编辑
我的目的是:亮20秒红灯,亮3秒黄灯,亮20秒绿灯,亮3秒黄灯,依次循环,要求使用系统任务,小弟我正在学这个
但是这三个灯,红,黄,绿都是灭的,并不是按我预想的要求执行,请高手指点下,应该怎么弄才是正确的
现在只有led对应的那个灯是对的,我的时钟是50M的。
- module TrafficLights(
- input sys_clk,
- input rst,
- output reg red_led,yel_led,gre_led,led
- );
- reg clock;
- reg [31:0] count;
- parameter on = 1,off = 0;
- parameter red_ticks = 20,yel_ticks = 3,gre_ticks = 20;
- initial //交通灯初始化
- begin
- red_led = off;
- gre_led = off;
- yel_led = off;
- count = 0;
- end
-
- always @(posedge sys_clk or negedge rst)
- begin
- red_led = on; //开红灯
- light(red_led, red_ticks); //调用等待任务
-
- yel_led = on; //开黄灯
- light(yel_led, yel_ticks); //调用等待任务
-
- gre_led = on; //开绿灯
- light(gre_led, gre_ticks); //调用等待任务
-
- yel_led = on; //开黄灯
- light(yel_led, yel_ticks); //调用等待任务
- end
- task light; //延时关灯任务
-
- output color;
- input[31:0] tics;
-
- begin
- repeat(tics)
- @(posedge clock);
- color = off;
- end
- endtask
- always @(posedge sys_clk) //产生一个1秒的时钟,
- begin
-
- count <= count + 32'b1;
-
- if(count >= 50_000_000)
- count <= 32'b0;
-
- if(count >= 0 && count < 25_000_000)
- begin
- clock = 0;
- led = 0;
- end
- else
- begin
- clock = 1;
- led = 1;
- end
- end
-
- endmodule
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|