summaryrefslogtreecommitdiff
path: root/hdl/jtag_uart.sv
diff options
context:
space:
mode:
Diffstat (limited to 'hdl/jtag_uart.sv')
-rw-r--r--hdl/jtag_uart.sv37
1 files changed, 15 insertions, 22 deletions
diff --git a/hdl/jtag_uart.sv b/hdl/jtag_uart.sv
index 2b5f334..096b1c9 100644
--- a/hdl/jtag_uart.sv
+++ b/hdl/jtag_uart.sv
@@ -18,13 +18,6 @@ module jtag_uart
18 , input bit [7:0] tx_data 18 , input bit [7:0] tx_data
19 ); 19 );
20 20
21`input(rx_ready)
22`output(rx_valid)
23`output(rx_data)
24`output(tx_ready)
25`input(tx_valid)
26`input(tx_data)
27
28`ifdef SYNTHESIS 21`ifdef SYNTHESIS
29 22
30alt_jtag_atlantic 23alt_jtag_atlantic
@@ -35,12 +28,12 @@ alt_jtag_atlantic
35 ) real_jtag 28 ) real_jtag
36 ( .clk(clk) 29 ( .clk(clk)
37 , .rst_n(!reset) 30 , .rst_n(!reset)
38 , .r_dat(tx_data_) 31 , .r_dat(tx_data)
39 , .r_val(tx_valid_) 32 , .r_val(tx_valid)
40 , .r_ena(tx_ready_) 33 , .r_ena(tx_ready)
41 , .t_dat(rx_data_) 34 , .t_dat(rx_data)
42 , .t_dav(rx_ready_) 35 , .t_dav(rx_ready)
43 , .t_ena(rx_valid_) 36 , .t_ena(rx_valid)
44 ); 37 );
45 38
46`else 39`else
@@ -55,34 +48,34 @@ bit [7:0] tx_b_data;
55 48
56always_ff @(posedge clk) begin 49always_ff @(posedge clk) begin
57 if (reset) begin 50 if (reset) begin
58 rx_valid_ = 0; 51 rx_valid = 0;
59 tx_ready_ = 0; 52 tx_ready = 0;
60 sim_rx_addr = 0; 53 sim_rx_addr = 0;
61 tx_b_valid = 0; 54 tx_b_valid = 0;
62 end else begin 55 end else begin
63 automatic bit [7:0] sim_rx_data = sim_rx_rom[sim_rx_addr]; 56 automatic bit [7:0] sim_rx_data = sim_rx_rom[sim_rx_addr];
64 57
65 // RX logic 58 // RX logic
66 if (rx_ready_) rx_valid_ = 0; 59 if (`lag(rx_ready)) rx_valid = 0;
67 if (!rx_valid_ && (sim_rx_data != 0)) begin 60 if (!rx_valid && (sim_rx_data != 0)) begin
68`ifdef JTAG_UART_LOCAL_ECHO 61`ifdef JTAG_UART_LOCAL_ECHO
69 $write("%s", sim_rx_data); 62 $write("%s", sim_rx_data);
70`endif 63`endif
71 rx_valid_ = 1; 64 rx_valid = 1;
72 rx_data_ = sim_rx_data; 65 rx_data = sim_rx_data;
73 ++sim_rx_addr; 66 ++sim_rx_addr;
74 end 67 end
75 68
76 // TX logic 69 // TX logic
77 if (tx_ready_ && tx_valid_) begin 70 if (tx_ready && `lag(tx_valid)) begin
78 tx_b_valid = 1; 71 tx_b_valid = 1;
79 tx_b_data = tx_data_; 72 tx_b_data = `lag(tx_data);
80 end 73 end
81 if (tx_b_valid) begin 74 if (tx_b_valid) begin
82 $write("%s", tx_b_data); 75 $write("%s", tx_b_data);
83 tx_b_valid = 0; 76 tx_b_valid = 0;
84 end 77 end
85 tx_ready_ = !tx_b_valid; 78 tx_ready = !tx_b_valid;
86 end 79 end
87end 80end
88 81