vt52-fpga  1.0.0 Initial
vt52-fpga is a serial terminal implemented on a FPGA
serial.v
Go to the documentation of this file.
1 module width_adapter #(
2  parameter [31:0] INPUT_WIDTH = 8,
3  parameter [31:0] OUTPUT_WIDTH = 1
4 ) (
5  input clk,
6  input reset,
7 
8  input data_in_put,
9  output data_in_free,
10  input [INPUT_WIDTH-1:0] data_in,
11 
12  output data_out_put,
13  input data_out_free,
14  output [OUTPUT_WIDTH-1:0] data_out
15 );
16 
17  generate
18  if (INPUT_WIDTH > OUTPUT_WIDTH) begin
19  // wide to narrow conversion
20  reg [INPUT_WIDTH:0] data_in_q;
21  reg has_data;
22 
23  always @(posedge clk) begin
24  if (!has_data && data_in_put) begin
25  data_in_q <= {1'b1, data_in};
26  has_data <= 1;
27  end
28 
29  if (has_data && data_out_free) begin
30  data_in_q <= data_in_q >> OUTPUT_WIDTH;
31  end
32 
33  if (data_in_q == 1'b1) begin
34  has_data <= 0;
35  end
36  end
37 
38  assign data_out = data_in_q[OUTPUT_WIDTH:1];
39  assign data_out_put = has_data;
40 
41 
42  end else if (INPUT_WIDTH < OUTPUT_WIDTH) begin
43  // narrow to wide conversion
44 
45 
46  end else begin
47  assign data_in_free = data_out_free;
48  assign data_out_put = data_in_put;
49  assign data_out = data_in;
50  end
51  endgenerate
52 
53 endmodule
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)
Definition: serial.v:4
always(posedge clk)
Definition: uart_rx.v:86