Pseudocode
if MSR[UM] = 1 then
ESR[EC]
else
←
x
FSLx
if x >= C_FSL_LINKS then
←
x
0
←
(rD)
if (n = 1) then
MSR[Carry]
if Sx_AXIS_TLAST
MSR[FSL]
if (e = 1) then
ESR[EC]
ESR[ESS]
EDR
Registers Altered
•
rD, unless an exception is generated, in which case the register is unchanged
•
MSR[FSL]
•
MSR[Carry]
•
ESR[EC], in case a stream exception or a privileged instruction exception is generated
•
ESR[ESS], in case a stream exception is generated
•
EDR, in case a stream exception is generated
Latency
•
1 cycle with
•
2 cycles with
The blocking versions of this instruction will stall the pipeline of MicroBlaze until the instruction
can be completed. Interrupts are served when the parameter C_USE_EXTENDED_FSL_INSTR is set
to 1, and the instruction is not atomic.
Note
To refer to an FSLx interface in assembly language, use rfsl0, rfsl1, ... rfsl15.
The blocking versions of this instruction should not be placed in a delay slot when the parameter
C_USE_EXTENDED_FSL_INSTR
For non-blocking versions, an rsubc instruction can be used to decrement an index variable.
The 'e' bit does not have any effect unless C_FSL_EXCEPTION is set to 1.
These instructions are only available when the MicroBlaze parameter C_FSL_LINKS is greater than
0.
The extended instructions (exception, test and atomic versions) are only available when the
MicroBlaze parameter C_USE_EXTENDED_FSL_INSTR is set to 1.
It is not recommended to allow these instructions in user mode, unless absolutely necessary for
performance reasons, since that removes all hardware protection preventing incorrect use of a
link.
MicroBlaze Processor Reference Guide
UG984 (v2016.2) June 8, 2016
UG984 (v2016.1) April 6, 2016
←
00111
Sx_AXIS_TDATA
←
Sx_AXIS_TVALID
≠
c and Sx_AXIS_TVALID then
←
1
←
00000
←
instruction bits [28:31]
←
Sx_AXIS_TDATA
=0
C_AREA_OPTIMIZED
C_AREA_OPTIMIZED
is set to 1, since this prevents interrupts from being served.
www.xilinx.com
Chapter 5: MicroBlaze Instruction Set Architecture
=1
218
Send Feedback