| module SRLC32E ( | |
| output Q, | |
| output Q31, | |
| input [4:0] A, | |
| input CE, CLK, D | |
| ); | |
| parameter [31:0] INIT = 32'h00000000; | |
| parameter [0:0] IS_CLK_INVERTED = 1'b0; | |
| reg [31:0] r = INIT; | |
| assign Q31 = r[31]; | |
| assign Q = r[A]; | |
| generate begin | |
| if (IS_CLK_INVERTED) begin | |
| always @(negedge CLK) if (CE) r <= { r[30:0], D }; | |
| end else begin | |
| always @(posedge CLK) if (CE) r <= { r[30:0], D }; | |
| end | |
| end endgenerate | |
| endmodule |