仅对英特尔可见 — GUID: pvj1637416934646
Ixiasoft
仅对英特尔可见 — GUID: pvj1637416934646
Ixiasoft
4.5. 基于 Nios II® 的动态重配置流程
主机软件(host software)通过置位IP的数据路径复位,将“DR-out” IP置于静止(quiescent)状态。主机软件然后将DR待触发,直到它被设置。
接下来,主机软件将配置文件信息(profile information)烧写到DR CSR寄存器中并设置Trigger Reconfig比特。一旦 Nios II® 对Trigger Reconfig比特集进行采样,它将执行内部Tile特定的程序以进行DR切换,从主机软件中抽象出所有tile特定的架构。主机软件轮询特定的DR CSR Ready for New Trigger bit来了解在主机软件能够在同一通道上启动另一个DR之前, Nios II® 何时完成切换流程。一旦 Nios II® 完成切换流程,主机软件就能够将“DR-in” IP从复位状态释放。
右侧的流程图显示了NIOS core在接收到执行DR切换的请求后所进行的操作(直接或者间接地通过其他控制器)。当Trigger Reconfig比特被设置时, Nios II® core会对此比特进行采样以调用内部DR切换流程。 Nios II® 读取新的配置设置并继续启动DR。
下一个是将新的配置写入到相应的Tile IP模块(MAC, PCS, FEC, PMA)寄存器。将要编程的tile寄存器是根据主机软件配置的DR CSR寄存器值决定的。
一旦完成新的tile配置, Nios II® core就会设置DR CSR Ready for New Trigger bit,以便主机软件知道当前DR切换已完成。
典型的动态重配置软件流程
- 持续轮询Dynamic Reconfiguration New Trigger (0x00[1])寄存器,直到该寄存器置位。当该寄存器置位时, Nios II® 准备就绪。
- 复位当前协议IP。例如,将i_p0_rst_n,i_p0_tx_rst_n和i_p0_rx_rst_n比特设置成1'b0。
- 等待当前协议IP复位确认(reset acknowledgment)。例如,将o_p0_rst_ack_n,o_p0_tx_rst_ack_n和o_p0_rx_rst_ack_n比特清除成1'b0。
- 通过编程Dynamic Reconfiguration Next Profile <N> (0x04 - 0x50)寄存器来配置下一个配置文件(next profile)。
- 通过写入Dynamic Reconfiguration New Trigger (0x00[0])寄存器来触发动态重配置。
- 持续轮询Dynamic Reconfiguration New Trigger (0x00[1])寄存器,直到它被置位。
- 使用一个新的配置来配置新的协议IP。例如,对Ethernet Multirate IP寄存器使用0x200 - 0x0208偏移。
- 使新的协议IP退出复位。例如,将i_p0_rst_n,i_p0_tx_rst_n和i_p0_rx_rst_n比特设置成1'b1。
- 等待新的协议IP复位确认(reset acknowledgment)。例如,将o_p0_rst_ack_n,o_p0_tx_rst_ack_n和o_p0_rx_rst_ack_n比特设置成1'b1。
- 动态重配置完成。