summaryrefslogtreecommitdiff
path: root/tb/window.hpp
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-14 21:10:40 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-14 21:10:40 -0600
commit6fb3849e73b797d4610a2b782127f927dec0c9c9 (patch)
tree9d17de8907d860b795761e0644f17d0fd33106de /tb/window.hpp
parentcad870295dfb741d5c24c25016c5bba878bc37e5 (diff)
Implement VGA simulation
Diffstat (limited to 'tb/window.hpp')
-rw-r--r--tb/window.hpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/tb/window.hpp b/tb/window.hpp
new file mode 100644
index 0000000..181f3c1
--- /dev/null
+++ b/tb/window.hpp
@@ -0,0 +1,37 @@
+#ifndef TALLER_wINDOW_HPP
+#define TALLER_wINDOW_HPP
+
+#include <cstdint>
+#include <memory>
+
+#include "avalon.hpp"
+
+namespace taller::avalon
+{
+ class window : public slave
+ {
+ public:
+ inline window(slave &downstream, std::uint32_t base)
+ : slave(base, downstream.address_span(), downstream.word_size()),
+ downstream(downstream)
+ {}
+
+ inline virtual bool read(std::uint32_t addr, std::uint32_t &data) final override
+ {
+ return downstream.read(addr, data);
+ }
+
+ inline virtual bool write
+ (
+ std::uint32_t addr, std::uint32_t data, unsigned byte_enable = 0b1111
+ ) final override
+ {
+ return downstream.write(addr, data, byte_enable);
+ }
+
+ private:
+ slave &downstream;
+ };
+}
+
+#endif