|
|
@@ -48,12 +48,13 @@ module DecimFilterWrapper
|
|
|
//================================================================================
|
|
|
// REG/WIRE
|
|
|
//================================================================================
|
|
|
- wire signed [FilteredDataWidth-1:0] decimDataI;
|
|
|
- wire signed [FilteredDataWidth-1:0] decimDataQ;
|
|
|
- wire decimDataValI;
|
|
|
- reg decimDataValIR;
|
|
|
- wire decimDataValQ;
|
|
|
- reg decimDataValQR;
|
|
|
+ wire signed [FilteredDataWidth-1:0] filteredData;
|
|
|
+ wire signed [FilteredDataWidth-1:0] decimData;
|
|
|
+
|
|
|
+ wire filteredDataVal;
|
|
|
+ wire decimDataVal;
|
|
|
+
|
|
|
+ reg decimDataValR;
|
|
|
|
|
|
wire signed [FirOutDataWidth-1:0] firDataOut;
|
|
|
wire firDataOutVal;
|
|
|
@@ -70,37 +71,21 @@ module DecimFilterWrapper
|
|
|
reg [24-1:0] ifFtwHReg;
|
|
|
|
|
|
reg [15:0] outDataI;
|
|
|
- reg [15:0] outDataQ;
|
|
|
|
|
|
localparam extendBitNum = FilteredDataWidth-AdcDataWidth;
|
|
|
|
|
|
- // localparam maxWidthForR1 = 10'd16; //msb for R = 2;
|
|
|
- // localparam maxWidthForR2 = 10'd16; //msb for R = 2;
|
|
|
- // localparam maxWidthForR3 = 10'd26; //msb for R = 3;
|
|
|
- // localparam maxWidthForR4 = 10'd30; //msb for R = 4;
|
|
|
- // localparam maxWidthForR5 = 10'd31; //msb for R = 5;
|
|
|
- // localparam maxWidthForR6 = 10'd33; //msb for R = 6;
|
|
|
- // localparam maxWidthForR7 = 10'd34; //msb for R = 7;
|
|
|
- // localparam maxWidthForR8 = 5'd26; //msb for R = 8;
|
|
|
- // localparam maxWidthForR9 = 5'd27; //msb for R = 9;
|
|
|
- // localparam maxWidthForR10 = 5'd28; //msb for R = 10;
|
|
|
-
|
|
|
wire [39:0] firData;
|
|
|
wire firDataVal;
|
|
|
wire bypassData = (DecimFactor_i==3'd0 | DecimFactor_i==3'd1);
|
|
|
+
|
|
|
+ wire [17:0] adcExtData = {{extendBitNum{AdcData_i[AdcDataWidth-1]}},AdcData_i};
|
|
|
//================================================================================
|
|
|
// ASSIGNMENTS
|
|
|
//================================================================================
|
|
|
|
|
|
assign FilteredAdcDataI_o = outDataI;
|
|
|
- // assign FilteredAdcDataI_o = (bypassData)?{{2{AdcData_i[AdcDataWidth-1]}},AdcData_i}:firData[33-:16];
|
|
|
- // assign FilteredAdcDataI_o = (bypassData)?{{2{AdcData_i[AdcDataWidth-1]}},AdcData_i}:firData[33-:16];
|
|
|
|
|
|
- assign FilteredDataVal_o = decimDataValIR;
|
|
|
- // assign FilteredDataVal_o = (bypassData)?1'b1:firDataVal;
|
|
|
-
|
|
|
-
|
|
|
-// {{14{AdcData_i[AdcDataWidth-1]}},AdcData_i}
|
|
|
+ assign FilteredDataVal_o = decimDataValR;
|
|
|
|
|
|
//================================================================================
|
|
|
// CODING
|
|
|
@@ -110,72 +95,97 @@ always @(posedge Clk_i) begin
|
|
|
if (!Rst_i) begin
|
|
|
case(DecimFactor_i)
|
|
|
3'd0: begin
|
|
|
- outDataI <= decimDataI[LsbForR1-1-:16];
|
|
|
- decimDataValIR <= OscWind_i;
|
|
|
+ outDataI <= adcExtData[LsbForR1-1-:16];
|
|
|
+ decimDataValR <= OscWind_i;
|
|
|
end
|
|
|
3'd1: begin
|
|
|
- outDataI <= decimDataI[LsbForR1-1-:16];
|
|
|
- decimDataValIR <= OscWind_i;
|
|
|
+ outDataI <= adcExtData[LsbForR1-1-:16];
|
|
|
+ decimDataValR <= OscWind_i;
|
|
|
end
|
|
|
3'd2: begin
|
|
|
- outDataI <= decimDataI[LsbForR2-1-:16];
|
|
|
- decimDataValIR <= decimDataValI;
|
|
|
+ outDataI <= decimData[LsbForR2-1-:16];
|
|
|
+ decimDataValR <= decimDataVal;
|
|
|
end
|
|
|
// 3'd3: begin
|
|
|
- // outDataI <= decimDataI[maxWidthForR3-1-:16];
|
|
|
- // decimDataValIR <= decimDataValI;
|
|
|
+ // outDataI <= decimData[maxWidthForR3-1-:16];
|
|
|
+ // decimDataValR <= decimDataVal;
|
|
|
+ // end
|
|
|
+ // 3'd4: begin
|
|
|
+ // outDataI <= decimDataI[LsbForR4-1-:16];
|
|
|
+ // decimDataValR <= decimDataVal;
|
|
|
// end
|
|
|
- 3'd4: begin
|
|
|
- outDataI <= decimDataI[LsbForR4-1-:16];
|
|
|
- decimDataValIR <= decimDataValI;
|
|
|
- end
|
|
|
// 3'd5: begin
|
|
|
// outDataI <= decimDataI[maxWidthForR5-1-:16];
|
|
|
- // decimDataValIR <= decimDataValI;
|
|
|
+ // decimDataValR <= decimDataVal;
|
|
|
// end
|
|
|
// 3'd6: begin
|
|
|
// outDataI <= decimDataI[maxWidthForR6-1-:16];
|
|
|
- // decimDataValIR <= decimDataValI;
|
|
|
+ // decimDataValR <= decimDataVal;
|
|
|
// end
|
|
|
// 3'd7: begin
|
|
|
// outDataI <= decimDataI[maxWidthForR7-:16];
|
|
|
- // decimDataValIR <= decimDataValI;
|
|
|
+ // decimDataValR <= decimDataVal;
|
|
|
// end
|
|
|
endcase
|
|
|
end else begin
|
|
|
outDataI <= 16'd0;
|
|
|
- decimDataValIR <= 1'b0;
|
|
|
+ decimDataValR <= 1'b0;
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-cicFilter
|
|
|
-#(
|
|
|
- .N (N), //filter order
|
|
|
- .M (M), //comb delay
|
|
|
- .filteredDataWidth (FilteredDataWidth),
|
|
|
- .inOutDataWidth (FilteredDataWidth),
|
|
|
- .decimCntWidth (7)
|
|
|
-)
|
|
|
-cicFilterInstI
|
|
|
-(
|
|
|
- .Clk_i (Clk_i),
|
|
|
- .Rst_i (Rst_i),
|
|
|
- .DecimFactor_i (DecimFactor_i),
|
|
|
- .Data_i ({{extendBitNum{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
|
|
|
- .DataNd_i (OscWind_i),
|
|
|
- .Data_o (decimDataI),
|
|
|
- .DataValid_o (decimDataValI)
|
|
|
-);
|
|
|
+// cicFilter
|
|
|
+// #(
|
|
|
+ // .N (N), //filter order
|
|
|
+ // .M (M), //comb delay
|
|
|
+ // .filteredDataWidth (FilteredDataWidth),
|
|
|
+ // .inOutDataWidth (FilteredDataWidth),
|
|
|
+ // .decimCntWidth (7)
|
|
|
+// )
|
|
|
+// cicFilterInstI
|
|
|
+// (
|
|
|
+ // .Clk_i (Clk_i),
|
|
|
+ // .Rst_i (Rst_i),
|
|
|
+ // .DecimFactor_i (DecimFactor_i),
|
|
|
+ // .Data_i ({{extendBitNum{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
|
|
|
+ // .DataNd_i (OscWind_i),
|
|
|
+ // .Data_o (decimDataI),
|
|
|
+ // .DataValid_o (decimDataVal)
|
|
|
+// );
|
|
|
|
|
|
// FirFilter FirFilter (
|
|
|
// .aclk(Clk_i), // input wire aclk
|
|
|
- // .s_axis_data_tvalid(decimDataValI), // input wire s_axis_data_tvalid
|
|
|
+ // .s_axis_data_tvalid(decimDataVal), // input wire s_axis_data_tvalid
|
|
|
// .s_axis_data_tready(), // output wire s_axis_data_tready
|
|
|
// .s_axis_data_tdata(outDataI), // input wire [15 : 0] s_axis_data_tdata
|
|
|
// .m_axis_data_tvalid(firDataVal), // output wire m_axis_data_tvalid
|
|
|
// .m_axis_data_tdata(firData) // output wire [39 : 0] m_axis_data_tdata
|
|
|
// );
|
|
|
|
|
|
+systolicFilter DataFitler (
|
|
|
+ .Clk_i(Clk_i),
|
|
|
+ .Rst_i(Rst_i),
|
|
|
+ .Data_i(adcExtData),
|
|
|
+ .DataNd_i(OscWind_i),
|
|
|
+ .Data_o(filteredData),
|
|
|
+ .DataValid_o(filteredDataVal)
|
|
|
+);
|
|
|
+
|
|
|
+decimBlock
|
|
|
+ #(
|
|
|
+ // .R (R),
|
|
|
+ .inOutDataWidth (18),
|
|
|
+ .decimCntWidth (7)
|
|
|
+ )
|
|
|
+ decimBlockInst
|
|
|
+ (
|
|
|
+ .Clk_i (Clk_i),
|
|
|
+ .Rst_i (Rst_i),
|
|
|
+ .DecimFactor_i (DecimFactor_i),
|
|
|
+ .Data_i (filteredData),
|
|
|
+ .DataNd_i (filteredDataVal),
|
|
|
+ .Data_o (decimData),
|
|
|
+ .DataValid_o (decimDataVal)
|
|
|
+ );
|
|
|
endmodule
|
|
|
|
|
|
|