fpga: rfnoc: reverse FIR filter coefficients to get embedded in DSPE48
Original-commit: ea164a936b924b05a5b4cb9dd50df8acc3700c1a
This commit is contained in:
@@ -132,7 +132,7 @@ module noc_shell_fir_filter #(
|
||||
wire [63:0] data_o_flush_done;
|
||||
|
||||
backend_iface #(
|
||||
.NOC_ID (32'hF1120000),
|
||||
.NOC_ID (32'hF1120002),
|
||||
.NUM_DATA_I (0+NUM_PORTS),
|
||||
.NUM_DATA_O (0+NUM_PORTS),
|
||||
.CTRL_FIFOSIZE ($clog2(32)),
|
||||
|
||||
@@ -27,7 +27,7 @@ module rfnoc_block_fir_filter_tb #(
|
||||
// Local Parameters
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
localparam int NOC_ID = 32'hF112_0000;
|
||||
localparam int NOC_ID = 32'hF112_0002;
|
||||
|
||||
// Simulation parameters
|
||||
localparam real CHDR_CLK_PER = 6.0; // 166 MHz
|
||||
@@ -255,7 +255,7 @@ module rfnoc_block_fir_filter_tb #(
|
||||
// If using embedded register, coefficients must be preloaded
|
||||
if (USE_EMBEDDED_REGS_COEFFS) begin
|
||||
int i;
|
||||
for (i = 0; i < num_coeffs_to_send-1; i++) begin
|
||||
for (i = num_coeffs_to_send-1; i > 0; i--) begin
|
||||
write_reg(port, REG_FIR_LOAD_COEFF, COEFFS_VEC_0[COEFF_WIDTH*i +: COEFF_WIDTH]);
|
||||
end
|
||||
write_reg(port, REG_FIR_LOAD_COEFF_LAST, COEFFS_VEC_0[COEFF_WIDTH*i +: COEFF_WIDTH]);
|
||||
@@ -351,7 +351,7 @@ module rfnoc_block_fir_filter_tb #(
|
||||
end
|
||||
|
||||
test.start_test("Load new coefficients", 20us);
|
||||
for (i = 0; i < num_coeffs_to_send-1; i++) begin
|
||||
for (i = num_coeffs_to_send-1; i > 0; i--) begin
|
||||
write_reg(port, REG_FIR_LOAD_COEFF, COEFFS_VEC_1[COEFF_WIDTH*i +: COEFF_WIDTH]);
|
||||
end
|
||||
write_reg(port, REG_FIR_LOAD_COEFF_LAST, COEFFS_VEC_1[COEFF_WIDTH*i +: COEFF_WIDTH]);
|
||||
|
||||
@@ -108,6 +108,8 @@ module rfnoc_fir_filter_core #(
|
||||
//---------------------------------------------------------------------------
|
||||
// Registers
|
||||
//---------------------------------------------------------------------------
|
||||
localparam COMPAT_MAJOR = 16'h1;
|
||||
localparam COMPAT_MINOR = 16'h1;
|
||||
|
||||
`include "rfnoc_fir_filter_regs.vh"
|
||||
|
||||
@@ -154,6 +156,9 @@ module rfnoc_fir_filter_core #(
|
||||
if (reg_addr == REG_FIR_NUM_COEFFS) begin
|
||||
s_ctrlport_resp_data <= NUM_COEFFS;
|
||||
s_ctrlport_resp_ack <= 1;
|
||||
end else if (reg_addr == REG_FIR_COMPAT_NUM) begin
|
||||
s_ctrlport_resp_data <= {COMPAT_MAJOR, COMPAT_MINOR};
|
||||
s_ctrlport_resp_ack <= 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -48,4 +48,14 @@ localparam REG_FIR_LOAD_COEFF = 'h4;
|
||||
// [31:(32-COEFF_WIDTH)] : Reserved
|
||||
// [COEFF_WIDTH-1:0] : The next coefficient to be loaded
|
||||
//
|
||||
localparam REG_FIR_LOAD_COEFF_LAST = 'h8;
|
||||
localparam REG_FIR_LOAD_COEFF_LAST = 'h8;
|
||||
|
||||
|
||||
// REG_FIR_COMPAT_NUM (R)
|
||||
//
|
||||
// Contains the compatibility number of the block.
|
||||
//
|
||||
// [31:16] : Returns the major compatibility number (read-only)
|
||||
// [15:0] : Returns the minor compatibility number (read-only)
|
||||
//
|
||||
localparam REG_FIR_COMPAT_NUM = 'hC;
|
||||
|
||||
Reference in New Issue
Block a user