summaryrefslogtreecommitdiff
path: root/tb/avalon.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'tb/avalon.hpp')
-rw-r--r--tb/avalon.hpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/tb/avalon.hpp b/tb/avalon.hpp
index 38c8792..8964cdb 100644
--- a/tb/avalon.hpp
+++ b/tb/avalon.hpp
@@ -9,8 +9,8 @@ namespace taller::avalon
class slave
{
public:
- virtual std::uint32_t base_address() = 0;
- virtual std::uint32_t address_mask() = 0;
+ virtual std::uint32_t base_address() noexcept = 0;
+ virtual std::uint32_t address_mask() noexcept = 0;
virtual bool read(std::uint32_t addr, std::uint32_t &data) = 0;
virtual bool write(std::uint32_t addr, std::uint32_t data, unsigned byte_enable) = 0;
@@ -20,11 +20,9 @@ namespace taller::avalon
class interconnect
{
public:
- inline interconnect(Platform &plat) noexcept
- : plat(plat)
- {}
+ interconnect(Platform &plat) noexcept;
- void tick();
+ void tick(bool clk);
void attach(slave &dev);
private:
@@ -38,6 +36,11 @@ namespace taller::avalon
Platform &plat;
slave* active = nullptr;
std::vector<binding> devices;
+ std::uint32_t avl_address = 0;
+ std::uint32_t avl_writedata = 0;
+ unsigned avl_byteenable = 0;
+ bool avl_read = false;
+ bool avl_write = false;
};
}