/********************************************** _ _ Cook Darwin __
_ descript: author : Cook.Darwin Version: VERA.0.0 creaded: 2017/3/1 madified: ***********************************************/ `timescale 1ns/1ps module axi_stream_to_axi4_wr (
axi_stream_inf.slaver axis_in, axi_inf.master_wr axi_wr_inf
);
localparam FIELD_LEN = 64/axis_in.DSIZE + (64%axis_in.DSIZE != 0);
axi_stream_inf #(.DSIZE(axis_in.DSIZE)) ps_inf (.aclk(axis_in.aclk),.aresetn(axis_in.aresetn),.aclken(axis_in.aclken)); axi_stream_inf #(.DSIZE(axi_wr_inf.IDSIZE+axi_wr_inf.ASIZE+axi_wr_inf.LSIZE)) id_add_len_inf (.aclk(axis_in.aclk),.aresetn(axis_in.aresetn),.aclken(axis_in.aclken));
logic value;
logic [31:0] addr; logic [31:0] length; logic addr_len_vld;
assign {addr,length} = value;
parse_big_field_table #(
.DSIZE (axis_in.DSIZE ), .FIELD_LEN (FIELD_LEN ), //MAX 16*8 .FIELD_NAME ("Big Filed" ), .TRY_PARSE ("OFF" )
)parse_big_field_table_inst( /* input */ .enable (1'b1 ), /* input [DSIZE*FIELD_LEN-1:0] */ .value (value ), /* output logic */ .out_valid (addr_len_vld ), /* axi_stream_inf.slaver */ .cm_tb_s (axis_in ), /* axi_stream_inf.master */ .cm_tb_m (ps_inf ), /* axi_stream_inf.mirror */ .cm_mirror (axis_in ) );
assign ps_inf.axis_tready = axi_wr_inf.axi_awready || axi_wr_inf.axi_wready;
assign id_add_len_inf.axis_tvalid = addr_len_vld; assign id_add_len_inf.axis_tdata = {{axi_wr_inf.IDSIZE{1'b0}},addr,length};
axi4_wr_auxiliary_gen axi4_wr_auxiliary_gen_inst( /* axi_stream_inf.slaver */ .id_add_len_in (id_add_len_inf ), //tlast is not necessary /* axi_inf.master_wr_aux */ .axi_wr_aux (axi_wr_inf ) );
assign axi_wr_inf.axi_wdata = ps_inf.axis_tdata; assign axi_wr_inf.axi_wvalid = ps_inf.axis_tvalid; assign axi_wr_inf.axi_wlast = ps_inf.axis_tlast;
assign axi_wr_inf.axi_wstrb = '1;
endmodule