|
|
@@ -21,12 +21,12 @@
|
|
|
module RomCtrl
|
|
|
#(
|
|
|
parameter OutWidth = 9,
|
|
|
- parameter [8:0] BaseAddrR2 = 0,
|
|
|
- parameter [8:0] BaseAddrR3 = 35,
|
|
|
- parameter [8:0] BaseAddrR4 = 70,
|
|
|
- parameter [8:0] BaseAddrR5 = 105,
|
|
|
- parameter [8:0] BaseAddrR6 = 140,
|
|
|
- parameter [8:0] BaseAddrR7 = 175
|
|
|
+ parameter BaseAddrR2 = 0,
|
|
|
+ parameter BaseAddrR3 = 64,
|
|
|
+ parameter BaseAddrR4 = 70,
|
|
|
+ parameter BaseAddrR5 = 105,
|
|
|
+ parameter BaseAddrR6 = 140,
|
|
|
+ parameter BaseAddrR7 = 175
|
|
|
)
|
|
|
(
|
|
|
input Clk_i,
|
|
|
@@ -43,18 +43,18 @@ module RomCtrl
|
|
|
//================================================================================
|
|
|
reg [2:0] decimFactor;
|
|
|
reg [OutWidth-1:0] currBaseAddr;
|
|
|
+reg [OutWidth-1:0] currMaxAddr;
|
|
|
reg [8:0] coefAddr;
|
|
|
|
|
|
reg changeFlag;
|
|
|
reg coefDataVal;
|
|
|
-reg coefDataValReg;
|
|
|
|
|
|
//================================================================================
|
|
|
// ASSIGNMENTS
|
|
|
//================================================================================
|
|
|
// assign changeFlag = (decimFactor!= DecimFactor_i);
|
|
|
assign CoefAddr_o = coefAddr;
|
|
|
-assign CoefDataVal_o = coefDataValReg;
|
|
|
+assign CoefDataVal_o = coefDataVal;
|
|
|
|
|
|
//================================================================================
|
|
|
// CODING
|
|
|
@@ -84,7 +84,8 @@ always @(posedge Clk_i) begin
|
|
|
if (changeFlag) begin
|
|
|
coefDataVal <= 1'b1;
|
|
|
end
|
|
|
- if (coefAddr==currBaseAddr+34) begin
|
|
|
+ // if (coefAddr==currBaseAddr+63) begin
|
|
|
+ if (coefAddr==currMaxAddr) begin
|
|
|
coefDataVal <= 1'b0;
|
|
|
end
|
|
|
end else begin
|
|
|
@@ -94,54 +95,70 @@ end
|
|
|
|
|
|
always @(posedge Clk_i) begin
|
|
|
if (!Rst_i) begin
|
|
|
- coefDataValReg <= coefDataVal;
|
|
|
+ case (DecimFactor_i)
|
|
|
+ 1: begin
|
|
|
+ currMaxAddr <= 9'd63;
|
|
|
+ end
|
|
|
+ 2: begin
|
|
|
+ currMaxAddr <= 9'd63;
|
|
|
+ end
|
|
|
+ 3: begin
|
|
|
+ currMaxAddr <= 9'd127;
|
|
|
+ end
|
|
|
+ endcase
|
|
|
end else begin
|
|
|
- coefDataValReg <= 0;
|
|
|
+ currMaxAddr <= 0;
|
|
|
end
|
|
|
-end
|
|
|
+end
|
|
|
|
|
|
+// always @(posedge Clk_i) begin
|
|
|
+ // if (!Rst_i) begin
|
|
|
+ // if (changeFlag) begin
|
|
|
+ // case (DecimFactor_i)
|
|
|
+ // 1: begin
|
|
|
+ // currBaseAddr <= 9'd0;
|
|
|
+ // end
|
|
|
+ // 2: begin
|
|
|
+ // currBaseAddr <= 9'd0;
|
|
|
+ // end
|
|
|
+ // 3: begin
|
|
|
+ // currBaseAddr <= 9'd64;
|
|
|
+ // end
|
|
|
+ // 4: begin
|
|
|
+ // currBaseAddr <= BaseAddrR4;
|
|
|
+ // end
|
|
|
+ // 5: begin
|
|
|
+ // currBaseAddr <= BaseAddrR5;
|
|
|
+ // end
|
|
|
+ // 6: begin
|
|
|
+ // currBaseAddr <= BaseAddrR6;
|
|
|
+ // end
|
|
|
+ // 7: begin
|
|
|
+ // currBaseAddr <= BaseAddrR7;
|
|
|
+ // end
|
|
|
+ // endcase
|
|
|
+ // end
|
|
|
+ // end else begin
|
|
|
+ // currBaseAddr <= 0;
|
|
|
+ // end
|
|
|
+// end
|
|
|
|
|
|
always @(posedge Clk_i) begin
|
|
|
if (!Rst_i) begin
|
|
|
- if (changeFlag) begin
|
|
|
+ if (coefDataVal) begin
|
|
|
+ coefAddr<=coefAddr+1;
|
|
|
+ end else begin
|
|
|
case (DecimFactor_i)
|
|
|
- 0: begin
|
|
|
- currBaseAddr <= BaseAddrR2;
|
|
|
- end
|
|
|
1: begin
|
|
|
- currBaseAddr <= BaseAddrR2;
|
|
|
+ coefAddr <= 9'd0;
|
|
|
end
|
|
|
2: begin
|
|
|
- currBaseAddr <= BaseAddrR2;
|
|
|
+ coefAddr <= 9'd0;
|
|
|
end
|
|
|
3: begin
|
|
|
- currBaseAddr <= BaseAddrR3;
|
|
|
- end
|
|
|
- 4: begin
|
|
|
- currBaseAddr <= BaseAddrR4;
|
|
|
- end
|
|
|
- 5: begin
|
|
|
- currBaseAddr <= BaseAddrR5;
|
|
|
- end
|
|
|
- 6: begin
|
|
|
- currBaseAddr <= BaseAddrR6;
|
|
|
- end
|
|
|
- 7: begin
|
|
|
- currBaseAddr <= BaseAddrR7;
|
|
|
+ coefAddr <= 9'd64;
|
|
|
end
|
|
|
endcase
|
|
|
- end
|
|
|
- end else begin
|
|
|
- currBaseAddr <= 0;
|
|
|
- end
|
|
|
-end
|
|
|
-
|
|
|
-always @(posedge Clk_i) begin
|
|
|
- if (!Rst_i) begin
|
|
|
- if (coefDataValReg) begin
|
|
|
- coefAddr<=coefAddr+1;
|
|
|
- end else begin
|
|
|
- coefAddr <= currBaseAddr;
|
|
|
end
|
|
|
end else begin
|
|
|
coefAddr <=0;
|