`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    16:47:07 10/26/2020 
// Design Name: 
// Module Name:    intFilterWrapper 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module intFilterWrapper
#(	parameter	filteredDataWidth	=	25,
	parameter	inOutDataWidth	=	18
)
(
	input Clk_i,
	input [inOutDataWidth-1:0] Data_i,
	input DataNd_i,
	output [filteredDataWidth-1:0] Data_o,
	output DataValid_o
);

	wire [filteredDataWidth-1:0] intOutData;
	wire intOutDataValid;
	
	intFilterBlock 
	#(	.inOutDataWidth	(inOutDataWidth),
		.filteredDataWidth	(filteredDataWidth)
	)
	intFilterBlockInst
	(
		.Clk_i(Clk_i),
		.Data_i(Data_i),
		.DataNd_i(DataNd_i),
		.Data_o(intOutData),
		.DataValid_o(intOutDataValid)
	);
	
	roundSymmetric 
	#( 
		.inDataWidth(filteredDataWidth),
		.outDataWidth(filteredDataWidth)
	)
	intRoundInst
	(
		.Rst_i(1'b0),
		.Clk_i(Clk_i),
		.Data_i(intOutData),
		.DataNd_i(intOutDataValid),
		.Data_o(Data_o),
		.DataValid_o(DataValid_o)
	);	
endmodule
