AHB Bus Matrix
UG0331 User Guide Revision 15.0
231
7.1.4.5
Unimplemented Address Space
The AHB bus matrix performs address decoding based on the memory map defined in
and
page 226, to decide which slave, if any, is being addressed. Any access to
memory space outside of these regions is considered unimplemented from the point of view of the AHB
bus matrix. This access results in the assertion of a SW_ERRORSTATUS register bit of the
MSS_EXTERNAL_SR control register, as well as the assertion of HRESP by the AHB bus matrix to the
master. If any master attempts a write access to unimplemented address space, the AHB bus matrix
completes the handshake to the master with an HRESP error indication. No write occurs to any slave.
If any master attempts a read access from unimplemented address space, the AHB bus matrix
completes the handshake to the master with an HRESP error indication. Undefined data is returned.
There may be further memory areas that are unimplemented, within individual slave memory regions.
Depending on the slave, accesses may be aliased within these areas or not. Firmware should not
perform writes to these locations because the aliasing may cause a write to another location within the
slave. Data read from these intra-slave unimplemented regions may be undefined.
7.1.4.6
Burst Support
AHB-Lite HBURST is supported only for an ICode (IC) bus master accessing eNVM slaves. The AHB
bus matrix handshakes correctly with masters performing AHB bursts to any slave. However, it does not
pass the transactions through to the slaves as bursts. Instead, the AHB bus matrix converts the burst
accesses into single-cycle accesses of the type NONSEQ. This simplifies the design of the slaves (which
can exist in the FPGA fabric), since they do not need to support AHB bursts. It also allows the system
designer to avoid long latencies incurred by bursts of indeterminate length (such as those from the FPGA
fabric).
7.1.4.7
Locked Transactions
MSS supports locked accesses through its internal switch matrix to its slaves (eSRAM, DDR, FIC_0, and
FIC_1). HMASTLOCK signal is not routed to the fabric to allow a matrix to implement a lock-based
arbitration system.
7.1.4.8
Peripheral Bit-Banding
All of the peripherals, including the system registers, are located in the peripheral bit-banded space of the
Cortex-M3 processor memory map. Therefore, bit manipulations may be performed on registers using
bit-banded instructions from the Cortex-M3 processor instruction set. These guarantee atomic read-
modify-write accesses, which are of use if multiple masters may be accessing a particular location.
7.1.4.9
Fabric Memory Map
There are six regions of 256 KB each, which may be allocated to either FIC_0 or FIC_1 (fabric interrupt
controller). This allows large memory mapped windows into the FPGA fabric.
7.1.4.10 Firmware Considerations
The following considerations should be taken into account while implementing Fabric logic:
•
Configuring the AHB bus matrix:
For the mode changes (change of protection region, memory
map mode, programmable weights and programmable maximum latency), user firmware should
take care that all the masters are in IDLE STATE (where no data transfer is required) for a sufficient
amount of time—10 IDLE cycles (ten clock cycles)—before and after the mode change.
•
HBURST support in eNVM slave:
HBURST is supported for an IC bus master to eNVM slaves
only. SW_WEIGHT_IC of MASTER_WEIGHT0_CR is configured such that the value of
SW_WEIGHT_IC is equal to or greater than the number of bursts. For example, for a burst of 8, the
SW_WEIGHT_IC should be at least 8 or greater than 8.
•
Avoid using infinite firmware loops in eSRAM which result in preventing WRR masters from
accessing the eSRAM. A typical example would be a tight polling loop in the Cortex-M3 processor
firmware, executing code from eSRAM, which is polling a location in the same eSRAM and
consuming its full bandwidth, thereby not allowing a lower-priority master (such as Ethernet MAC) to
access the eSRAM in order to perform the write of the data for which the polling loop is waiting. This
leads to a hung system.
This is due to the use of the fixed priority for processor masters in the arbitration algorithm and the
possibility of eSRAM being used for both instruction fetches (I and D busses) and data accesses