blob: 70f83672791461a12e32d4e587fbee161eb3327c [file] [log] [blame]
/* Generated by Yosys 0.22+1 (git sha1 c4a52b1b0, clang 14.0.0-1ubuntu1 -fPIC -Os) */
module adamgreig_tt02_adc_dac(io_in, io_out);
reg \$auto$verilog_backend.cc:2083:dump_module$1 = 0;
wire [8:0] \$1 ;
wire [8:0] \$2 ;
wire [8:0] \$4 ;
wire [8:0] \$5 ;
reg [7:0] acc = 8'h00;
reg [7:0] \acc$next ;
wire clk;
wire [7:0] dac_data;
wire dac_out;
input [7:0] io_in;
wire [7:0] io_in;
output [7:0] io_out;
wire [7:0] io_out;
reg [9:0] ready_sr = 10'h000;
reg [9:0] \ready_sr$next ;
wire rst;
wire [7:0] uart_tx_data;
wire uart_tx_ready;
wire uart_tx_tx_o;
wire uart_tx_valid;
assign \$2 = acc - 1'h1;
assign \$5 = acc + 1'h1;
always @(posedge clk)
acc <= \acc$next ;
always @(posedge clk)
ready_sr <= \ready_sr$next ;
dac dac (
.clk(clk),
.data(dac_data),
.out(dac_out),
.rst(rst)
);
uart_tx uart_tx (
.clk(clk),
.data(uart_tx_data),
.ready(uart_tx_ready),
.rst(rst),
.tx_o(uart_tx_tx_o),
.valid(uart_tx_valid)
);
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
(* full_case = 32'd1 *)
casez (io_in[2])
1'h1:
\acc$next = \$2 [7:0];
default:
\acc$next = \$5 [7:0];
endcase
casez (rst)
1'h1:
\acc$next = 8'h00;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
\ready_sr$next = { ready_sr[8:0], uart_tx_ready };
casez (rst)
1'h1:
\ready_sr$next = 10'h000;
endcase
end
assign \$1 = \$2 ;
assign \$4 = \$5 ;
assign uart_tx_valid = ready_sr[9];
assign uart_tx_data = acc;
assign io_out[1] = uart_tx_tx_o;
assign io_out[0] = dac_out;
assign io_out[7:2] = 6'h00;
assign dac_data = acc;
assign rst = io_in[1];
assign clk = io_in[0];
endmodule
module dac(rst, data, out, clk);
reg \$auto$verilog_backend.cc:2083:dump_module$2 = 0;
wire [8:0] \$1 ;
reg [8:0] acc = 9'h000;
reg [8:0] \acc$next ;
input clk;
wire clk;
input [7:0] data;
wire [7:0] data;
output out;
wire out;
input rst;
wire rst;
assign \$1 = acc[7:0] + data;
always @(posedge clk)
acc <= \acc$next ;
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\acc$next = \$1 ;
casez (rst)
1'h1:
\acc$next = 9'h000;
endcase
end
assign out = acc[8];
endmodule
module uart_tx(rst, data, tx_o, ready, valid, clk);
reg \$auto$verilog_backend.cc:2083:dump_module$3 = 0;
wire \$1 ;
wire \$3 ;
wire \$5 ;
wire [4:0] \$7 ;
wire [4:0] \$8 ;
input clk;
wire clk;
input [7:0] data;
wire [7:0] data;
output ready;
reg ready;
input rst;
wire rst;
reg [3:0] tx_cnt = 4'h0;
reg [3:0] \tx_cnt$next ;
output tx_o;
wire tx_o;
reg [9:0] tx_reg = 10'h001;
reg [9:0] \tx_reg$next ;
input valid;
wire valid;
always @(posedge clk)
tx_reg <= \tx_reg$next ;
always @(posedge clk)
tx_cnt <= \tx_cnt$next ;
assign \$1 = ! tx_cnt;
assign \$3 = ! tx_cnt;
assign \$5 = ! tx_cnt;
assign \$8 = tx_cnt - 1'h1;
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
(* full_case = 32'd1 *)
casez (\$1 )
1'h1:
ready = 1'h1;
default:
ready = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\tx_reg$next = tx_reg;
(* full_case = 32'd1 *)
casez (\$3 )
1'h1:
casez (valid)
1'h1:
\tx_reg$next = { 1'h1, data, 1'h0 };
endcase
default:
\tx_reg$next = { 1'h1, tx_reg[9:1] };
endcase
casez (rst)
1'h1:
\tx_reg$next = 10'h001;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\tx_cnt$next = tx_cnt;
(* full_case = 32'd1 *)
casez (\$5 )
1'h1:
casez (valid)
1'h1:
\tx_cnt$next = 4'ha;
endcase
default:
\tx_cnt$next = \$8 [3:0];
endcase
casez (rst)
1'h1:
\tx_cnt$next = 4'h0;
endcase
end
assign \$7 = \$8 ;
assign tx_o = tx_reg[0];
endmodule