| module alat |
| ( input d, en, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @(*) |
| if ( clr ) |
| `ifndef BUG |
| q <= 1'b0; |
| `else |
| q <= d; |
| `endif |
| else if (en) |
| q <= d; |
| endmodule |
| |
| module alatn |
| ( input d, en, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @(*) |
| if ( !clr ) |
| `ifndef BUG |
| q <= 1'b0; |
| `else |
| q <= d; |
| `endif |
| else if (!en) |
| q <= d; |
| endmodule |
| |
| module latsr |
| ( input d, en, pre, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @(*) |
| if ( clr ) |
| `ifndef BUG |
| q <= 1'b0; |
| `else |
| q <= d; |
| `endif |
| else if ( pre ) |
| q <= 1'b1; |
| else if ( en ) |
| q <= d; |
| endmodule |
| |
| module nlatsr |
| ( input d, en, pre, clr, output reg q ); |
| initial begin |
| q = 0; |
| end |
| always @(*) |
| if ( !clr ) |
| `ifndef BUG |
| q <= 1'b0; |
| `else |
| q <= d; |
| `endif |
| else if ( !pre ) |
| q <= 1'b1; |
| else if ( !en ) |
| q <= d; |
| endmodule |
| |
| module top ( |
| input en, |
| input clr, |
| input pre, |
| input a, |
| output b,b1,b2,b3 |
| ); |
| |
| latsr u_latsr ( |
| .en (en ), |
| .clr (clr), |
| .pre (pre), |
| .d (a ), |
| .q (b ) |
| ); |
| |
| nlatsr u_nlatsr ( |
| .en (en ), |
| .clr (clr), |
| .pre (pre), |
| .d (a ), |
| .q (b1 ) |
| ); |
| |
| alat u_alat ( |
| .en (en ), |
| .clr (clr), |
| .d (a ), |
| .q (b2 ) |
| ); |
| |
| alatn u_alatn ( |
| .en (en ), |
| .clr (clr), |
| .d (a ), |
| .q (b3 ) |
| ); |
| |
| endmodule |