仅对英特尔可见 — GUID: ooi1494232163992
Ixiasoft
仅对英特尔可见 — GUID: ooi1494232163992
Ixiasoft
1.8. 使用Mailbox Client Intel FPGA IP
写命令数据包
写命令描述
当向SDM发送命令时,将命令字写入命令寄存器,即基地址。为了与硬件保持同步,当命令长度(t)大于零时,请将header和自变量写入Command寄存器(基地址+ 0)。当FIFO中有可用空间写入命令(n > t)时,请继续将header或自变量,一次一个字写入Command寄存器(基地址+ 0)。将最后一个字写入 Command last word寄存器(基地址+ 1)。对于不带自变量的命令,请将header写入Command last word寄存器,(基地址+ 1)。
从(基地址+ 2)读取的内容显示FIFO中用于命令的剩余可用空间。当SDM繁忙时,命令FIFO可能会变满。IP需要3个时钟周期来更新Command FIFO empty space的值。您可以在将命令写入IP后开始读取Command FIFO empty space的值3个时钟周期。
您必须先检查Command FIFO empty space寄存器,(基地址+ 2),然后再继续写入Command或Command last word寄存器。如果在 FIFO已满时写入(基地址+ 0)和(基地址+ 1),则IP的行为未定义。写入数据被丢弃。
- 将命令头(header)写入(基址+ 0)。
- 再次将命令头写入(基址+ 1)。
在上述场景中,IP核预计一次3个字的响应(命令头和2个数据字)。然而,SDM仅返回单字响应,即错误响应代码。
您必须以正确的顺序向Command或者Command last word寄存器发送命令,如Writing Command Packet中所述。未能按正确顺序发送命令可能会导致所有邮箱客户端的服务丢失,包括以下独立IP核:
- 温度感应器Intel FPGA IP
- 电压传感器Intel FPGA IP
- 芯片ID Intel FPGA IP
- 高级SEU检测Intel IP
- 部分重配置控制器Intel IP
- 部分重配置外部配置控制器Intel FPGA IP
读响应包
读命令描述
- 读(基地址+ 8)以检查Interrupt status寄存器的位0是否为1,从而表示有效数据可供主机读取。您可以继续轮询(poll)Interrupt status寄存器,直到位0为1。
- 读(基地址+ 6)来检查SOP(数据包的开始),EOP(数据包末尾),以及Response FIFO fill level (n)。
要读取多个字(word),请完成以下步骤:
- 如果SOP = 1并且EOP = 0,则响应有多个字(word)。
- 如果Response FIFO fill level (n)为非零(non-zero),则FIFO具有有效数据。
- 例如,如果您执行QSPI_READ操作从quad SPI flash存储器读取10个字,其返回值为0x0000002d,表示SDM向响应FIFO写入了11个字。这 11 个字包括一个响应头(header)字和 10 个数据(data)字。
要读取单个字,请完成以下步骤:- 如果SOP = 1并且 EOP = 1,则响应只有一个字。
- 如果Response FIFO fill level为非零(non-zero),则FIFO具有有效数据。
- 返回值0x00000007表示SDM将单个字写入响应FIFO。该单字既是单周期数据包的开始也是结束。
- 读取位于(基地址 + 5)处的响应头(header)。LENGTH值指定响应中的字数。如果响应错误代码为零,则继续步骤4。对于不成功的命令,响应错误代码不为零。请参阅Error Codes了解更多信息。
- 当响应header的长度(t)大于零时(LENGTH > 1),读取(基地址+ 5)以检索响应数据。在不断读取响应数据的同时,还必须不断轮询(基地址+ 6)来检查Response FIFO fill level (n)。对于数据包的最后一个字,预计Response FIFO fill level (n)和EOP值同时为1。在继续读取响应数据的最后一个字之前,必须先检查是否EOP = 1。
注:
如果响应FIFO为空,则返回数据未被定义。您必须检查Interrupt status寄存器以确保有效数据可用。在读取响应数据之前您必须验证Response FIFO fill level (n)不为零。
向邮箱发出新命令之前请确保读取或刷新响应FIFO中的内容。连续发送命令(无需从响应FIFO读回有效数据)会逐渐填满响应FIFO。当响应FIFO溢出时,SDM冻结。
如果SDM冻结,您必须重新配置器件。英特尔 Quartus Prime软件从版本19.1开始支持设备重配置。对于早期版本的英特尔 Quartus Prime软件,请重新启动器件以恢复。
限制
- 在向Mailbox Client IP发出新的请求之前,您只能发出一个请求并读回响应。
- 不要在设计中例化超过六个mailbox client。对于需要六个以上mailbox client的设计,请使用Mailbox Client IP取代以下独立IP核:
- Voltage Sensor Intel® FPGA IP
- Chip ID Intel® FPGA IP
- Serial Flash Mailbox Client Intel® FPGA IP
- Temperature Sensor Intel® FPGA IP
从英特尔 Quartus Prime软件的19.2版本开始, 对通过 Avalon® memory-mapped interface访问SDM mailbox的以下mailbox client IP有限制:
- 温度传感器
- 电压传感器
- 芯片ID
- 串行Flash Mailbox Client
- Mailbox Client IP
- 高级SEU检测IP
- 局部重配置IP(Partial Reconfiguration)
如果您在通过英特尔 Quartus Prime Pro Edition软件19.2或更新版本编译的设计中使用Mailbox IP,从版本19.2或更新版本开始必须只能使用SDM固件来配置FPGA。