PUTD - 2024.1 简体中文

MicroBlaze V 处理器参考指南 (UG1629)

Document ID
UG1629
Release Date
2024-05-30
Version
2024.1 简体中文
图 1. 置入串流接口动态

描述

MicroBlaze V 将寄存器 rs1 的值写入由 rs2 的 4 个最低有效位所定义的链路接口。如果 C_FSL_LINKS 设置的可用链路数小于或等于 rs2 的 4 个最低有效位,则使用链路 0。

PUTD 指令有 16 种变体。

阻塞版本(当 n 为 0 时)会停滞,直至接口中空间变为可用为止。非阻塞版本不会停滞,如果空间可用,则将 mstream 中的 C 位设为 0,如无空间可用,则将 C 位设为 1。

所有数据 PUTD 指令(当 c 位为 0 时)都将接口的控制位设为 0。所有控制 PUTD 指令(当 c 位为 1 时)都将控制位设为 1。

测试版本(当 t 位为 1 时)照常处理,但链路的写入信号不会断言有效,因此无需任何源寄存器。测试版本要求 rs1 为 x0。

机器外部中断或外部断点无法中断原子版本(当 a 位为 1 时)。每条原子指令都会防止后续指令被中断。这意味着可以将一连串原子指令组合在一起,不会发生中断而引发程序流程断点。

伪代码

x ← rs2[3:0]
if x >= C_FSL_LINKS then
   x ← 0
Mx_AXIS_TDATA ← (rs1)
if n = 1 then
   mstream.C ← Mx_AXIS_TVALID ˄ Mx_AXIS_TREADY
Mx_AXIS_TLAST ← c

更改寄存器

mstream

时延

  • 1 个周期,C_OPTIMIZATION = 0、2 或 3
  • 2 个周期,C_OPTIMIZATION = 1

该指令的阻塞版本会使流水线停滞,直至完成该指令为止。当参数 C_USE_EXTENDED_FSL_INSTR 设为 1 时,将提供中断服务,且指令不是原子指令。

注释

  • 仅当参数 C_FSL_LINKS 大于 0 时,才能使用这些指令。
  • 仅当参数 C_USE_EXTENDED_FSL_INSTR 设为 1 时,才能使用扩展指令(测试和原子版本)。