Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module D_FF(q, d, clk, reset);
- output q;
- input d, clk, reset;
- reg q;
- always @(posedge reset or negedge clk)
- if(reset) q <= 1'b0;
- else q <= d;
- endmodule
- module ticker(q, clk, reset);
- output [2:0]q;
- input clk, reset;
- wire d0, d1, d2;
- wire q0n, q1n, q2n, d00, d01;
- not not0(q0n, q[0]);
- not not1(q1n, q[1]);
- not not2(q2n, q[2]);
- //D0
- and and00(d00, q[1], q[0]);
- or or0(d01, q1n, d00);
- and and01(d0, q2n, d01);
- //D1
- and (d1, q2n, q[0]);
- //D2
- and(d2, q2n, q[1], q[0]);
- D_FF dff0(q[0], d0, clk, reset);
- D_FF dff1(q[1], d1, clk, reset);
- D_FF dff2(q[2], d2, clk, reset);
- endmodule
- module reverse(qout, qin);
- output [2:0]qout;
- input [2:0]qin;
- reg [2:0]qout;
- always @* qout[0] = qin[2];
- always @* qout[1] = qin[1];
- always @* qout[2] = qin[0];
- endmodule
- module resetgenerator(resetout, resetin, selector);
- output resetout;
- input resetin, selector;
- wire rnors;
- nor nor0(rnors, resetin, selector);
- or or0(resetout, rnors, resetin);
- endmodule
- module taillights(qleft, qright, left, right, emergency, clk, reset);
- output [2:0]qleft;
- output [2:0]qright;
- input left, right, emergency;
- input clk, reset;
- wire [2:0]qrightrev;
- wire resetl, resetr, releft, reright;
- or orl(releft, left, emergency);
- or orr(reright, right, emergency);
- resetgenerator rl(resetl, reset, releft);
- resetgenerator rr(resetr, reset, reright);
- ticker tl(qleft, clk, resetl);
- ticker tr(qrightrev, clk, resetr);
- reverse rrev(qright, qrightrev);
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement