1 //
2 // Copyright (c) 2010-2025 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 #ifndef Wishbone_H
8 #define Wishbone_H
9 #include "bus.h"
10 
11 class WishboneBase
12 {
13 public:
14     uint8_t  *wb_clk = nullptr;
15     uint8_t  *wb_rst = nullptr;
16     uint64_t *wb_addr = nullptr;
17     uint64_t *wb_rd_dat = nullptr;
18     uint64_t *wb_wr_dat = nullptr;
19     uint8_t  *wb_we = nullptr;
20     uint8_t  *wb_sel = nullptr;
21     uint8_t  *wb_stb = nullptr;
22     uint8_t  *wb_ack = nullptr;
23     uint8_t  *wb_cyc = nullptr;
24     uint8_t  *wb_stall = nullptr;
25     uint8_t   granularity;
26     uint8_t   addr_lines;
27 };
28 
29 class Wishbone : public WishboneBase, public BaseTargetBus
30 {
31 public:
Wishbone()32     Wishbone() { }
33     virtual void tick(bool countEnable, uint64_t steps);
34     virtual void write(int width, uint64_t addr, uint64_t value);
35     virtual uint64_t read(int width, uint64_t addr);
36     virtual void reset();
37     bool areSignalsConnected();
38     void timeoutTick(uint8_t *signal, uint8_t value, int timeout);
39 };
40 #endif
41