diff --git a/logic.v b/logic.v index 105363a..9432530 100644 --- a/logic.v +++ b/logic.v @@ -35,6 +35,30 @@ RC_ADD_SUB_32 twoscomp32_sub(.Y(Y), .A(0), .B(A), .SnA(1'b1)); endmodule +// 32-bit register with parameterized preset pattern +module REG32_PP(Q, D, LOAD, CLK, RESET); +parameter PATTERN = 32'h00000000; +output [31:0] Q; + +input CLK, LOAD; +input [31:0] D; +input RESET; + +wire [31:0] qbar; + +genvar i; +generate + for(i=0; i<32; i=i+1) + begin : reg32_gen_loop + if (PATTERN[i] == 0) + REG1 reg_inst(.Q(Q[i]), .Qbar(qbar[i]), .D(D[i]), .L(LOAD), .C(CLK), .nP(1'b1), .nR(RESET)); + else + REG1 reg_inst(.Q(Q[i]), .Qbar(qbar[i]), .D(D[i]), .L(LOAD), .C(CLK), .nP(RESET), .nR(1'b1)); + end +endgenerate + +endmodule + // 32-bit registere +ve edge, Reset on RESET=0 module REG32(Q, D, LOAD, CLK, RESET); output [31:0] Q;