LocalBus
LocalBus is a custom bus interface. You can use it for your register map, hovewer, it was designed specially to simplify integrating more common bus interfaces to register map. It acts as internal “virtual” interface.
In fact, all other supported buses (APB, AXI-Lite and etc.) in corsair are nothing more than just bridges to LocalBus interface under the hood.
Signals
Signal |
Width |
Direction |
Description |
|---|---|---|---|
waddr |
>1 |
input |
Write address bus |
wdata |
>1 |
input |
Write data bus |
wen |
1 |
input |
Write request enable signal |
wstrb |
>1 |
input |
Write byte strobe bus (one bit for every write data byte) |
wready |
1 |
output |
Write request ready signal |
raddr |
>1 |
input |
Read address bus |
ren |
1 |
input |
Read request enable signal |
rdata |
>1 |
output |
Read data bus |
rvalid |
1 |
output |
Read data valid signal |
Note
Specific bit widths for buses are defined in globcfg section of a csrconfig file.
Transfers
Only simple single transfers are supported. No bursts or stream accesses. Every transfer can be extended with special signals.
Just for example, data bus is 32 bits wide for all the waveforms below.
Simple write
Write data D0 to address A0.
Write with bytes strobes
Byte strobe signalling to write only bytes 1 and 2 (wstrb = 0x6 = 0b0110) of D0 word.
Write with wait states
Write data D0 to address A0, then write D1 to A1 ends (wen goes low) as soon as wready become high.
Simple read
Read data D0 from address A0. Minimum response time - 1 tick. “Combinatoral” (in the same tick) read is not supported.
Read ends (ren goes low) after rvalid is asserted.
Read with wait states
Read data D0 from address A0 with 2 wait states.