From b40c7b3d2605e99c4044ea7484114270eb96a010 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sat, 15 Oct 2022 13:55:52 -0700 Subject: Some trivial arbiter improvements. --- infra/arbiter.h | 3 +-- infra/bus.h | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 infra/bus.h (limited to 'infra') diff --git a/infra/arbiter.h b/infra/arbiter.h index 5dd1647..74e37be 100644 --- a/infra/arbiter.h +++ b/infra/arbiter.h @@ -1,8 +1,7 @@ #pragma once +#include #include -#include -#include #include "infra/sim.h" diff --git a/infra/bus.h b/infra/bus.h new file mode 100644 index 0000000..e986174 --- /dev/null +++ b/infra/bus.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +#include "infra/sim.h" + +namespace infra { + template struct shared_bus : public sim { + std::array, peers> peerp; + port *outp = nullptr; + + void clock() { + for (unsigned int i = 0; i < peers; ++i) { + if (peerp[i].can_read()) { + assert(outp->can_write()); + outp->write(peerp[i].read()); + } + } + } + }; +} -- cgit v1.2.3