Slaves¶
The IPbus firmware repository, contains a library of generic slaves that have been used in a wide range of designs. These slaves are listed below; each one can be found under components/ipbus_slaves/firmware/hdl
Registers¶
|
Bank of control / status registers of parameterized size (bus has only read access to ‘status’ registers, but read-write access to ‘control’ registers) |
|
Bank of registers of parameterized size (bus has read & write access to all of them) |
|
Block of read-only registers (i.e. values specified at build time, e.g. for version numbers) |
|
Bank of control / status registers with clock-domain crossing |
Counters¶
|
Block of counters, accessed like ported RAM |
|
Interface to block of externally-provided counters (values of all counters sampled on same clock cycle) |
|
Block of counters |
RAMs¶
The depth of each RAM slave is parameterised through the generic ADDR_WIDTH
. The ‘ported’ RAM slaves have zero wait states; all other RAM slaves have one wait state.
|
32b (or less) wide dual-port memory with IPbus access on one side |
|
36b wide dual-port memory with IPbus access on one side |
|
32b (or less) wide dual-port memory with ported IPbus access on one side |
|
36b wide dual-port memory with ported IPbus access on one side |
|
72b wide dual-port memory with ported IPbus access on one side |
|
72b wide simple-dual-port memory with ported IPbus access on one side |
|
72b wide simple-dual-port memory with IPbus access on one side |
Miscellaneous¶
|
Bus cycle counter (for debugging) |
|
Interface to Xilinx DRP slave (for access to MGT, MAC, etc) |
|
|
|
Generic clock frequency monitor |
|
Generic clock frequency monitor, using separate reference clock |
|
We have also developed IPbus slaves that provide an interface to the Opencores SPI and I2C master cores - these can be found at:
components/opencores_spi/firmware/hdl/ipbus_spi.vhd
components/opencores_i2c/firmware/hdl/ipbus_i2c_master.vhd