summaryrefslogtreecommitdiff
path: root/tb/jtag_uart.hpp
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-19 21:19:18 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-19 21:19:18 -0600
commit6ebe514137fa41ac015122da4dcaba56af84e531 (patch)
tree0582d0684f130b08ec2b7ea73d57642485245ccf /tb/jtag_uart.hpp
parent8ec66f50c64501e30ed6adae94f89b90b48de7f0 (diff)
Implement JTAG-UART input
Diffstat (limited to 'tb/jtag_uart.hpp')
-rw-r--r--tb/jtag_uart.hpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/tb/jtag_uart.hpp b/tb/jtag_uart.hpp
index 6db50f8..3c378c3 100644
--- a/tb/jtag_uart.hpp
+++ b/tb/jtag_uart.hpp
@@ -11,14 +11,25 @@ namespace taller::avalon
{
public:
jtag_uart(std::uint32_t base) noexcept;
+ ~jtag_uart() noexcept;
+
+ void tick() noexcept;
virtual bool read(std::uint32_t addr, std::uint32_t &data) noexcept final override;
virtual bool write(std::uint32_t addr, std::uint32_t data, unsigned byte_enable) noexcept final override;
+ void takeover() noexcept;
+ void release() noexcept;
+
private:
- bool ctrl_re = false;
- bool ctrl_we = false;
- bool ctrl_ac = true;
+ unsigned countdown = 0;
+ unsigned rx_avail = 0;
+ unsigned rx_next = 0;
+ bool ctrl_re = false;
+ bool ctrl_we = false;
+ bool ctrl_ac = true;
+ bool took_over = false;
+ std::uint8_t rx[64];
};
}