Skip to content

Commit

Permalink
Eth: transmitter model
Browse files Browse the repository at this point in the history
  • Loading branch information
imihajlow committed Oct 24, 2023
1 parent 4aaf5be commit fa30839
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 13 deletions.
2 changes: 1 addition & 1 deletion doc/waveforms/eth/tx-begin.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
{name: "tx_shift_q7", wave: "0..2.2.2.2.2.2.2.2.2.2.2.2.2.2.", data: "x.0 x.1 x.2 x.3 x.4 x.5 x.6 x.7 b0.0 b0.1 b0.2 b0.3 b0.4 b0.5"},
{name: "tx_buf_d", wave: "x..........2...............2...", data: "b0 b1"},
{name: "n_tx_shift_pl", wave: "1..01..............01.........."},
{name: "tx_shift_cp", wave: "0..1010101010101010101010101010"},
{name: "tx_shift_cp", wave: "1...010101010101010101010101010"},
{name: "tx_byte_cnt", wave: "x..2...............2...........", data: "0 1"},
{name: "tx_cnt", wave: "x..2222222222222222222222222222", data: "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11"},
],
Expand Down
20 changes: 11 additions & 9 deletions doc/waveforms/eth/tx-end.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
/* https://wavedrom.com/editor.html */
{signal: [
{name: "n_tx_hold", wave: "1..............0..."},
{name: "tx_cp_in", wave: "p..................", period: 0.5},
{name: "tx_sck", wave: "1010101010101010..."},
{name: "tx_mosi", wave: "2.2.2.2.2.2.2.2.0..", data: "b1023.0 b1023.1 b1023.2 b1023.3 b1023.4 b1023.5 b1023.6 b1023.7"},
{name: "tx_shift_q7", wave: "22.2.2.2.2.2.2.0...", data: "..23.0 b1023.1 b1023.2 b1023.3 b1023.4 b1023.5 b1023.6 b1023.7"},
{name: "n_tx_shift_pl", wave: "1..............0..."},
{name: "tx_shift_cp", wave: "010101010101010...."},
{name: "tx_byte_cnt", wave: "2..............2...", data: "1023 0"},
{name: "tx_cnt", wave: "2222222222222222...", data: "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0"},
{name: "n_tx_hold", wave: "1..................0..."},
{name: "tx_cp_in", wave: "p......................", period: 0.5},
{name: "tx_oe", wave: "1.................0...."},
{name: "tx_sck", wave: "101010101010101010....."},
{name: "tx_mosi", wave: "2.2.2.2.2.2.2.2.2.0....", data: "b1022.7 b1023.0 b1023.1 b1023.2 b1023.3 b1023.4 b1023.5 b1023.6 b1023.7"},
{name: "tx_shift_q7", wave: "22.2.2.2.2.2.2.2.0.....", data: "..22.7 b1023.0 b1023.1 b1023.2 b1023.3 b1023.4 b1023.5 b1023.6 b1023.7"},
{name: "tx_buf_d", wave: "2........2.............", data: "b1023 b0"},
{name: "n_tx_shift_pl", wave: "101..............01...."},
{name: "tx_shift_cp", wave: "010101010101010101....."},
{name: "tx_byte_cnt", wave: "2x...2...........2.....", data: "1023 1024 0"},
{name: "tx_cnt", wave: "222222222222222222.....", data: "15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11"},
],
foot: {text:"Frame transmission end"},
config: {hscale: 1},
Expand Down
24 changes: 22 additions & 2 deletions model/eth/test/test_transmitter.v
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,19 @@ module test_transmitter();
$display("recv failed: expected %0h, got %0h", expected_data, x);
#5
$fatal;
end else begin
// $display("recv %0h ok", x);
end
end
endtask

function [7:0] get_tx_data;
input [15:0] addr;
begin
get_tx_data = (addr[7:0] + 16'd1) * 16'd239 + addr[9:2] * 16'd113;
end
endfunction

initial begin
$dumpfile("test_transmitter.vcd");
$dumpvars;
Expand Down Expand Up @@ -133,23 +142,34 @@ module test_transmitter();
n_rst = 1'b1;
#101
for (i = 16'hf000; i != 16'hf400; i = i + 1) begin
write(i[15:0], i[7:0]);
write(i[15:0], get_tx_data(i[15:0]));
end
write(TX_RST_ADDR, 8'b0);
end


integer j;
reg wait_for_extra_sck;
initial begin
wait(~n_rst);
wait(n_rst);
#50
for (j = 0; j != 1024; j = j + 1) begin
recv_and_check(j[7:0]);
recv_and_check(get_tx_data(j[15:0]));
end
wait_for_extra_sck = 1'b1;
#50000
$finish;
end

initial begin
wait_for_extra_sck = 1'b0;
wait(wait_for_extra_sck);
wait(tx_sck);
$display("unexpected sck transition after receiving all data");
$fatal;
end

initial begin
#2500000
$display("timeout");
Expand Down
2 changes: 1 addition & 1 deletion model/eth/transmitter.v
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ module eth_transmitter(
assign #10 n_tx_buf_we = n_a_buf_sel | n_we;
assign tx_a_sel = n_tx_buf_we;

wire #10 n_tx_hold_set = n_rst & ~tx_byte_cnt[10];
wire #10 n_tx_hold_set = n_rst & ~(tx_byte_cnt[10] & n_tx_byte_clk);
d_ff_7474 ff_hold(
.q(tx_hold),
.n_q(n_tx_hold),
Expand Down

0 comments on commit fa30839

Please sign in to comment.