User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 11: Generic/Boot Bus Page
371
The additional burst_width parameter is used to specify the duration of the gap between transfers in a burst,
to this is added 2 cycles. Thus the fastest sequence for a cache line burst to a region configured for 32 bit bus
width and with burst_width=0 and the other parameters at their minimum values is 5-3-3-3-3-3-3-3 (the initial
5 being ale_width, ale_to_cs and the first 3 cycle access), giving 32 bytes in 26 cycles. Factoring in request
and response buffering in the I/O bridge and generic interface, for multiple cache line transfers both reads and
writes should achieve a little over 100 MBytes/s (reads will be slightly slower on parts with system revision <
PERIPH_REV3).
The burst mode is enabled by setting the io_burst_en bit in the
io_ext_cfg
register. If this is done then all
transactions to the region must be smaller than or a multiple of the data width of the region and any uncached
accelerated transactions (merged writes from the CPU) must have contiguous byte enables. If this is not done
then extra locations will be accessed during the transfer so the result could be UNPREDICTABLE. The byte
enables put out with the address are valid only for the first data transfer on the generic bus.
In burst mode the acknowledgement mode may be used. For the fastest burst the rdy_smpl must be set to 0
and the cs_width equal to cs_to_oe. In addition the IO_RDY signal should be made synchronous. This allows
the interface to detect the IO_RDY signal (and the data for reads) during the first cycle the strobe is asserted.
In the read case the ready and data are sampled and the IO_OE_L will be deasserted after one cycle. The
ready signal should be held asserted for the remainder of the cycle to ensure the fastest burst (or can be
deasserted to delay the remaining accesses). The chip select width can still be used to ignore the IO_RDY
signal, but this only applies to the first transfer in the burst (i.e. ready is ignored from the chip select assertion
for the cs_width but then must be valid for the rest of the cycle). If the IO_RDY detection is asynchronous the
internal detection can be as much as two cycles behind the external signal; this does not pose a problem if the
ready indication is only used to delay the first transfer in the burst and remains asserted through the rest of the
burst, but if the IO_RDY is going to be used for each transfer in the burst then burst_width will need to be at
Table 249: Burst Cycle Summary
Ref
Duration (cycles)
Min Duration
(cycles)
Action
t0
ale_width
1
ALE asserted and address driven on IO_AD
t1
ale_to_cs
1
Gap
t2
Rd
: cs_to_oe
Wr
: ale_to_wr -
ale_to_cs
0
IO_CS_L asserted, Strobe remains deasserted.
On write the data becomes valid based on chip select assertion.
t3
Rd
: cs_width - cs_to_oe
- oe_to_cs
Wr
: wr_width
1
IO_CS_L and strobe asserted, first data transfers.
In acknowledgement mode this width is a minimum of cs 1 +
rdy_smpl, and will be more if the IO_RDY is not asserted after the
cs_width holdof period.
Repeat next two lines while there is more data
t4
2 + burst_width
2
IO_CS_L asserted, Strobe deasserted.
On write the new data becomes valid after 2 of the gap cycles.
t3
Rd
: cs_width - cs_to_oe
- oe_to_cs
Wr
: wr_width
1
IO_CS_L and strobe asserted, next data transfers.
In acknowledgement mode this width is a minimum of 1 + rdy_smpl.
End the cycle when there is no more data
t5
Rd
: oe_to_cs
Wr
:
((cs_width - wr_width) -
(ale_to_wr - ale_to_cs))
0
IO_CS_L asserted, Strobe deasserted.
(optional gap).
In acknowledgement mode oe_to_cs is used for both reads and writes.
t6
1 + idle_cycles
2
IO_CS_L and strobe deasserted, bus idle time passes and cycle ends