| module adff |
| ( input d, clk, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @( posedge clk, posedge clr ) |
| if ( clr ) |
| q <= 1'b0; |
| else |
| q <= d; |
| endmodule |
| |
| module adffn |
| ( input d, clk, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @( posedge clk, negedge clr ) |
| if ( !clr ) |
| q <= 1'b0; |
| else |
| q <= d; |
| endmodule |
| |
| module dffs |
| ( input d, clk, pre, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @( posedge clk, posedge pre ) |
| if ( pre ) |
| q <= 1'b1; |
| else |
| q <= d; |
| endmodule |
| |
| module ndffnr |
| ( input d, clk, pre, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @( negedge clk, negedge pre ) |
| if ( !pre ) |
| q <= 1'b1; |
| else |
| q <= d; |
| endmodule |
| |
| module top ( |
| input clk, |
| input clr, |
| input pre, |
| input a, |
| output b,b1,b2,b3 |
| ); |
| |
| dffs u_dffs ( |
| .clk (clk ), |
| .clr (clr), |
| .pre (pre), |
| .d (a ), |
| .q (b ) |
| ); |
| |
| ndffnr u_ndffnr ( |
| .clk (clk ), |
| .clr (clr), |
| .pre (pre), |
| .d (a ), |
| .q (b1 ) |
| ); |
| |
| adff u_adff ( |
| .clk (clk ), |
| .clr (clr), |
| .d (a ), |
| .q (b2 ) |
| ); |
| |
| adffn u_adffn ( |
| .clk (clk ), |
| .clr (clr), |
| .d (a ), |
| .q (b3 ) |
| ); |
| |
| endmodule |