2 parameter [31:0] INPUT_WIDTH = 8,
3 parameter [31:0] OUTPUT_WIDTH = 1
10 input [INPUT_WIDTH-1:0] data_in,
14 output [OUTPUT_WIDTH-1:0] data_out
18 if (INPUT_WIDTH > OUTPUT_WIDTH) begin
20 reg [INPUT_WIDTH:0] data_in_q;
23 always @(posedge clk) begin
24 if (!has_data && data_in_put) begin
25 data_in_q <= {1'b1, data_in};
29 if (has_data && data_out_free) begin
30 data_in_q <= data_in_q >> OUTPUT_WIDTH;
33 if (data_in_q == 1'b1) begin
38 assign data_out = data_in_q[OUTPUT_WIDTH:1];
39 assign data_out_put = has_data;
42 end
else if (INPUT_WIDTH < OUTPUT_WIDTH) begin
47 assign data_in_free = data_out_free;
48 assign data_out_put = data_in_put;
49 assign data_out = data_in;
module width_adapter(input clk, input reset, input data_in_put, output data_in_free, input[INPUT_WIDTH-1:0] data_in, output data_out_put, input data_out_free, output[OUTPUT_WIDTH-1:0] data_out)