| module SLE ( | |
| output Q, | |
| input ADn, | |
| input ALn, | |
| input CLK, | |
| input D, | |
| input LAT, | |
| input SD, | |
| input EN, | |
| input SLn | |
| ); | |
| reg q_latch, q_ff; | |
| always @(posedge CLK, negedge ALn) begin | |
| if (!ALn) begin | |
| q_ff <= !ADn; | |
| end else if (EN) begin | |
| if (!SLn) | |
| q_ff <= SD; | |
| else | |
| q_ff <= D; | |
| end | |
| end | |
| always @* begin | |
| if (!ALn) begin | |
| q_latch <= !ADn; | |
| end else if (CLK && EN) begin | |
| if (!SLn) | |
| q_ff <= SD; | |
| else | |
| q_ff <= D; | |
| end | |
| end | |
| assign Q = LAT ? q_latch : q_ff; | |
| endmodule | |
| module CFG1 ( | |
| output Y, | |
| input A | |
| ); | |
| parameter [1:0] INIT = 2'h0; | |
| assign Y = INIT >> A; | |
| endmodule | |
| module CFG2 ( | |
| output Y, | |
| input A, | |
| input B | |
| ); | |
| parameter [3:0] INIT = 4'h0; | |
| assign Y = INIT >> {B, A}; | |
| endmodule | |
| module CFG3 ( | |
| output Y, | |
| input A, | |
| input B, | |
| input C | |
| ); | |
| parameter [7:0] INIT = 8'h0; | |
| assign Y = INIT >> {C, B, A}; | |
| endmodule | |
| module CFG4 ( | |
| output Y, | |
| input A, | |
| input B, | |
| input C, | |
| input D | |
| ); | |
| parameter [15:0] INIT = 16'h0; | |
| assign Y = INIT >> {D, C, B, A}; | |
| endmodule |