1 // http://www.eg.bucknell.edu/~cs320/1995-fall/verilog-manual.html#RTFToC33
3 // Digital model of a traffic light
4 // By Dan Hyde August 10, 1995
6 parameter on
= 1, off
= 0, red_tics
= 35,
7 amber_tics
= 3, green_tics
= 20;
8 reg clock
, red
, amber
, green
;
10 // will stop the simulation after 1000 time units
11 initial begin: stop_at
15 // initialize the lights and set up monitoring of registers
17 red
= off
; amber
= off
; green
= off
;
18 $display(" Time green amber red");
19 $monitor("%3d %b %b %b", $time, green
, amber
, red
);
22 // task to wait for 'tics' positive edge clocks
23 // before turning light off
28 repeat(tics
) // wait to detect tics positive edges on clock
34 // waveform for clock period of 2 time units
35 always begin: clock_wave
40 always begin: main_process
42 light(red
, red_tics
); // call task to wait
44 light(green
, green_tics
);
46 light(amber
, amber_tics
);