⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fir_compiler_st.v

📁 fir滤波器
💻 V
📖 第 1 页 / 共 3 页
字号:
defparam Ur1_n_7_pp.mem_core = "M4K";
wire [12:0] lut_val_1_n_8_pp;
ram_lut Ur1_n_8_pp(.clk_in(clk), .clk_out(clk), .addr_in( {sym_res_15_n[8],sym_res_14_n[8],sym_res_13_n[8],sym_res_12_n[8],sym_res_11_n[8] } ), .wr_en(1'b0),.data_out( lut_val_1_n_8_pp[12:0]) ) ;
defparam Ur1_n_8_pp.device_family = "CYCLONE";
defparam Ur1_n_8_pp.init_file = "fir_compiler_coef_1_inv.hex";
defparam Ur1_n_8_pp.data_width = 13;
defparam Ur1_n_8_pp.addr_width = 5;
defparam Ur1_n_8_pp.depth = 32;
defparam Ur1_n_8_pp.mem_core = "M4K";


// ---- partial product adder tree ----

wire [20:0] lut_0_bit_0_fill;
wire [20:0] lut_0_bit_1_fill;
wire [20:0] lut_0_bit_2_fill;
wire [20:0] lut_0_bit_3_fill;
wire [20:0] lut_0_bit_4_fill;
wire [20:0] lut_0_bit_5_fill;
wire [20:0] lut_0_bit_6_fill;
wire [20:0] lut_0_bit_7_fill;
wire [20:0] lut_0_bit_8_fill;
assign lut_0_bit_0_fill = {lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12], lut_val_0_n_0_pp[12],  lut_val_0_n_0_pp };
assign lut_0_bit_1_fill = {lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12], lut_val_0_n_1_pp[12],  lut_val_0_n_1_pp, 1'd0 };
assign lut_0_bit_2_fill = {lut_val_0_n_2_pp[12], lut_val_0_n_2_pp[12], lut_val_0_n_2_pp[12], lut_val_0_n_2_pp[12], lut_val_0_n_2_pp[12], lut_val_0_n_2_pp[12],  lut_val_0_n_2_pp, 2'd0 };
assign lut_0_bit_3_fill = {lut_val_0_n_3_pp[12], lut_val_0_n_3_pp[12], lut_val_0_n_3_pp[12], lut_val_0_n_3_pp[12], lut_val_0_n_3_pp[12],  lut_val_0_n_3_pp, 3'd0 };
assign lut_0_bit_4_fill = {lut_val_0_n_4_pp[12], lut_val_0_n_4_pp[12], lut_val_0_n_4_pp[12], lut_val_0_n_4_pp[12],  lut_val_0_n_4_pp, 4'd0 };
assign lut_0_bit_5_fill = {lut_val_0_n_5_pp[12], lut_val_0_n_5_pp[12], lut_val_0_n_5_pp[12],  lut_val_0_n_5_pp, 5'd0 };
assign lut_0_bit_6_fill = {lut_val_0_n_6_pp[12], lut_val_0_n_6_pp[12],  lut_val_0_n_6_pp, 6'd0 };
assign lut_0_bit_7_fill = {lut_val_0_n_7_pp[12],  lut_val_0_n_7_pp, 7'd0 };
assign lut_0_bit_8_fill = { lut_val_0_n_8_pp, 8'd0 };
wire [21:0] tree_0_pp_l_0_n_0_n;
sadd_lpm_cen Uadd_0_lut_l_0_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_0_bit_0_fill), .bin(lut_0_bit_1_fill), .res(tree_0_pp_l_0_n_0_n) );
defparam Uadd_0_lut_l_0_n_0_n.IN_WIDTH = 21;
defparam Uadd_0_lut_l_0_n_0_n.PIPE_DEPTH = 2;
wire [21:0] tree_0_pp_l_0_n_1_n;
sadd_lpm_cen Uadd_0_lut_l_0_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_0_bit_2_fill), .bin(lut_0_bit_3_fill), .res(tree_0_pp_l_0_n_1_n) );
defparam Uadd_0_lut_l_0_n_1_n.IN_WIDTH = 21;
defparam Uadd_0_lut_l_0_n_1_n.PIPE_DEPTH = 2;
wire [21:0] tree_0_pp_l_0_n_2_n;
sadd_lpm_cen Uadd_0_lut_l_0_n_2_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_0_bit_4_fill), .bin(lut_0_bit_5_fill), .res(tree_0_pp_l_0_n_2_n) );
defparam Uadd_0_lut_l_0_n_2_n.IN_WIDTH = 21;
defparam Uadd_0_lut_l_0_n_2_n.PIPE_DEPTH = 2;
wire [21:0] tree_0_pp_l_0_n_3_n;
sadd_lpm_cen Uadd_0_lut_l_0_n_3_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_0_bit_6_fill), .bin(lut_0_bit_7_fill), .res(tree_0_pp_l_0_n_3_n) );
defparam Uadd_0_lut_l_0_n_3_n.IN_WIDTH = 21;
defparam Uadd_0_lut_l_0_n_3_n.PIPE_DEPTH = 2;
wire [21:0] tree_0_pp_l_0_n_4_n;
sadd_lpm_cen Uadd_0_lut_l_0_n_4_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_0_bit_8_fill), .bin(21'd0), .res(tree_0_pp_l_0_n_4_n) );
defparam Uadd_0_lut_l_0_n_4_n.IN_WIDTH = 21;
defparam Uadd_0_lut_l_0_n_4_n.PIPE_DEPTH = 2;

wire [22:0] tree_0_pp_l_1_n_0_n;
sadd_lpm_cen Uadd_0_lut_l_1_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_0_n_0_n), .bin(tree_0_pp_l_0_n_1_n), .res(tree_0_pp_l_1_n_0_n) );
defparam Uadd_0_lut_l_1_n_0_n.IN_WIDTH = 22;
defparam Uadd_0_lut_l_1_n_0_n.PIPE_DEPTH = 2;
wire [22:0] tree_0_pp_l_1_n_1_n;
sadd_lpm_cen Uadd_0_lut_l_1_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_0_n_2_n), .bin(tree_0_pp_l_0_n_3_n), .res(tree_0_pp_l_1_n_1_n) );
defparam Uadd_0_lut_l_1_n_1_n.IN_WIDTH = 22;
defparam Uadd_0_lut_l_1_n_1_n.PIPE_DEPTH = 2;
wire [22:0] tree_0_pp_l_1_n_2_n;
sadd_lpm_cen Uadd_0_lut_l_1_n_2_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_0_n_4_n), .bin(22'd0), .res(tree_0_pp_l_1_n_2_n) );
defparam Uadd_0_lut_l_1_n_2_n.IN_WIDTH = 22;
defparam Uadd_0_lut_l_1_n_2_n.PIPE_DEPTH = 2;

wire [23:0] tree_0_pp_l_2_n_0_n;
sadd_lpm_cen Uadd_0_lut_l_2_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_1_n_0_n), .bin(tree_0_pp_l_1_n_1_n), .res(tree_0_pp_l_2_n_0_n) );
defparam Uadd_0_lut_l_2_n_0_n.IN_WIDTH = 23;
defparam Uadd_0_lut_l_2_n_0_n.PIPE_DEPTH = 2;
wire [23:0] tree_0_pp_l_2_n_1_n;
sadd_lpm_cen Uadd_0_lut_l_2_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_1_n_2_n), .bin(23'd0), .res(tree_0_pp_l_2_n_1_n) );
defparam Uadd_0_lut_l_2_n_1_n.IN_WIDTH = 23;
defparam Uadd_0_lut_l_2_n_1_n.PIPE_DEPTH = 2;

wire [24:0] tree_0_pp_l_3_n_0_n;
sadd_lpm_cen Uadd_0_lut_l_3_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_0_pp_l_2_n_0_n), .bin(tree_0_pp_l_2_n_1_n), .res(tree_0_pp_l_3_n_0_n) );
defparam Uadd_0_lut_l_3_n_0_n.IN_WIDTH = 24;
defparam Uadd_0_lut_l_3_n_0_n.PIPE_DEPTH = 2;

wire [24:0] lut_val_0_n;
assign lut_val_0_n=tree_0_pp_l_3_n_0_n;


// ---- partial product adder tree ----

wire [20:0] lut_1_bit_0_fill;
wire [20:0] lut_1_bit_1_fill;
wire [20:0] lut_1_bit_2_fill;
wire [20:0] lut_1_bit_3_fill;
wire [20:0] lut_1_bit_4_fill;
wire [20:0] lut_1_bit_5_fill;
wire [20:0] lut_1_bit_6_fill;
wire [20:0] lut_1_bit_7_fill;
wire [20:0] lut_1_bit_8_fill;
assign lut_1_bit_0_fill = {lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12], lut_val_1_n_0_pp[12],  lut_val_1_n_0_pp };
assign lut_1_bit_1_fill = {lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12], lut_val_1_n_1_pp[12],  lut_val_1_n_1_pp, 1'd0 };
assign lut_1_bit_2_fill = {lut_val_1_n_2_pp[12], lut_val_1_n_2_pp[12], lut_val_1_n_2_pp[12], lut_val_1_n_2_pp[12], lut_val_1_n_2_pp[12], lut_val_1_n_2_pp[12],  lut_val_1_n_2_pp, 2'd0 };
assign lut_1_bit_3_fill = {lut_val_1_n_3_pp[12], lut_val_1_n_3_pp[12], lut_val_1_n_3_pp[12], lut_val_1_n_3_pp[12], lut_val_1_n_3_pp[12],  lut_val_1_n_3_pp, 3'd0 };
assign lut_1_bit_4_fill = {lut_val_1_n_4_pp[12], lut_val_1_n_4_pp[12], lut_val_1_n_4_pp[12], lut_val_1_n_4_pp[12],  lut_val_1_n_4_pp, 4'd0 };
assign lut_1_bit_5_fill = {lut_val_1_n_5_pp[12], lut_val_1_n_5_pp[12], lut_val_1_n_5_pp[12],  lut_val_1_n_5_pp, 5'd0 };
assign lut_1_bit_6_fill = {lut_val_1_n_6_pp[12], lut_val_1_n_6_pp[12],  lut_val_1_n_6_pp, 6'd0 };
assign lut_1_bit_7_fill = {lut_val_1_n_7_pp[12],  lut_val_1_n_7_pp, 7'd0 };
assign lut_1_bit_8_fill = { lut_val_1_n_8_pp, 8'd0 };
wire [21:0] tree_1_pp_l_0_n_0_n;
sadd_lpm_cen Uadd_1_lut_l_0_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_1_bit_0_fill), .bin(lut_1_bit_1_fill), .res(tree_1_pp_l_0_n_0_n) );
defparam Uadd_1_lut_l_0_n_0_n.IN_WIDTH = 21;
defparam Uadd_1_lut_l_0_n_0_n.PIPE_DEPTH = 2;
wire [21:0] tree_1_pp_l_0_n_1_n;
sadd_lpm_cen Uadd_1_lut_l_0_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_1_bit_2_fill), .bin(lut_1_bit_3_fill), .res(tree_1_pp_l_0_n_1_n) );
defparam Uadd_1_lut_l_0_n_1_n.IN_WIDTH = 21;
defparam Uadd_1_lut_l_0_n_1_n.PIPE_DEPTH = 2;
wire [21:0] tree_1_pp_l_0_n_2_n;
sadd_lpm_cen Uadd_1_lut_l_0_n_2_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_1_bit_4_fill), .bin(lut_1_bit_5_fill), .res(tree_1_pp_l_0_n_2_n) );
defparam Uadd_1_lut_l_0_n_2_n.IN_WIDTH = 21;
defparam Uadd_1_lut_l_0_n_2_n.PIPE_DEPTH = 2;
wire [21:0] tree_1_pp_l_0_n_3_n;
sadd_lpm_cen Uadd_1_lut_l_0_n_3_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_1_bit_6_fill), .bin(lut_1_bit_7_fill), .res(tree_1_pp_l_0_n_3_n) );
defparam Uadd_1_lut_l_0_n_3_n.IN_WIDTH = 21;
defparam Uadd_1_lut_l_0_n_3_n.PIPE_DEPTH = 2;
wire [21:0] tree_1_pp_l_0_n_4_n;
sadd_lpm_cen Uadd_1_lut_l_0_n_4_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_1_bit_8_fill), .bin(21'd0), .res(tree_1_pp_l_0_n_4_n) );
defparam Uadd_1_lut_l_0_n_4_n.IN_WIDTH = 21;
defparam Uadd_1_lut_l_0_n_4_n.PIPE_DEPTH = 2;

wire [22:0] tree_1_pp_l_1_n_0_n;
sadd_lpm_cen Uadd_1_lut_l_1_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_0_n_0_n), .bin(tree_1_pp_l_0_n_1_n), .res(tree_1_pp_l_1_n_0_n) );
defparam Uadd_1_lut_l_1_n_0_n.IN_WIDTH = 22;
defparam Uadd_1_lut_l_1_n_0_n.PIPE_DEPTH = 2;
wire [22:0] tree_1_pp_l_1_n_1_n;
sadd_lpm_cen Uadd_1_lut_l_1_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_0_n_2_n), .bin(tree_1_pp_l_0_n_3_n), .res(tree_1_pp_l_1_n_1_n) );
defparam Uadd_1_lut_l_1_n_1_n.IN_WIDTH = 22;
defparam Uadd_1_lut_l_1_n_1_n.PIPE_DEPTH = 2;
wire [22:0] tree_1_pp_l_1_n_2_n;
sadd_lpm_cen Uadd_1_lut_l_1_n_2_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_0_n_4_n), .bin(22'd0), .res(tree_1_pp_l_1_n_2_n) );
defparam Uadd_1_lut_l_1_n_2_n.IN_WIDTH = 22;
defparam Uadd_1_lut_l_1_n_2_n.PIPE_DEPTH = 2;

wire [23:0] tree_1_pp_l_2_n_0_n;
sadd_lpm_cen Uadd_1_lut_l_2_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_1_n_0_n), .bin(tree_1_pp_l_1_n_1_n), .res(tree_1_pp_l_2_n_0_n) );
defparam Uadd_1_lut_l_2_n_0_n.IN_WIDTH = 23;
defparam Uadd_1_lut_l_2_n_0_n.PIPE_DEPTH = 2;
wire [23:0] tree_1_pp_l_2_n_1_n;
sadd_lpm_cen Uadd_1_lut_l_2_n_1_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_1_n_2_n), .bin(23'd0), .res(tree_1_pp_l_2_n_1_n) );
defparam Uadd_1_lut_l_2_n_1_n.IN_WIDTH = 23;
defparam Uadd_1_lut_l_2_n_1_n.PIPE_DEPTH = 2;

wire [24:0] tree_1_pp_l_3_n_0_n;
sadd_lpm_cen Uadd_1_lut_l_3_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(tree_1_pp_l_2_n_0_n), .bin(tree_1_pp_l_2_n_1_n), .res(tree_1_pp_l_3_n_0_n) );
defparam Uadd_1_lut_l_3_n_0_n.IN_WIDTH = 24;
defparam Uadd_1_lut_l_3_n_0_n.PIPE_DEPTH = 2;

wire [24:0] lut_val_1_n;
assign lut_val_1_n=tree_1_pp_l_3_n_0_n;


// ---- final adder tree ----

wire [25:0] fin_atree_l_0_n_0_n;
sadd_lpm_cen Uadd_cen_l_0_n_0_n (.clk(clk),  .gclk_en(clk_en), .ain(lut_val_0_n), .bin(lut_val_1_n), .res(fin_atree_l_0_n_0_n) );
defparam Uadd_cen_l_0_n_0_n.IN_WIDTH = 25;
defparam Uadd_cen_l_0_n_0_n.PIPE_DEPTH = 2;

wire [25:0] mac_res;
assign mac_res=fin_atree_l_0_n_0_n;
wire [25:0] atree_res;
mac_tl Umtl (.clk(clk), 
             .data_in(mac_res),
             .data_out(atree_res));
defparam Umtl.DATA_WIDTH = 26;

// ---- Adder Tree Complete ---- 
wire [20:0] fir_int_res;
assign fir_int_res = atree_res [20:0];

assign fir_result = fir_int_res[ACCUM_WIDTH-1:0];
wire pre_rdy;
assign rdy_to_ld = pre_rdy;
assign done = done_int;
par_ctrl Uctrl(.rst(rst),
		.clk(clk),
		.clk_en(clk_en),
		.done(done_int),
		.rdy_int(rdy_int),
		.rdy_to_ld(pre_rdy));
defparam Uctrl.REG_LEN = 14;
defparam Uctrl.REG_BIT = 4;
defparam Uctrl.CH_WIDTH =0; 
defparam Uctrl.NUM_CH =1; 
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -