Intel® Quartus® Prime Pro Edition用户指南: 部分重配置

ID 683834
日期 5/11/2020
Public
文档目录

2.3.10. 为 Intel® Arria® 10或者 Intel® Cyclone® 10 GX设计配置一个外部主机

使用外部主机配置时,外部主机会启动部分重配置,并在用户模式下使用外部PR专用管脚监视PR状态。在这种模式下,外部主机必须对握手信号做出适当响应,以成功进行部分重配置。外部主机将部分比特流数据从外部存储器写入 Intel® Arria® 10或者 Intel® Cyclone® 10 GX器件中。确保准备正确的PR区域用于部分重配置,以协调系统级别的部分重配置。重配置后,将PR区域返回到操作状态。

在设计中使用一个外部主机:

  1. 点击Assignments > Device > Device & Pin Options
  2. Device & Pin Options对话框中选择Enable PR Pins选项。此选项自动创建特殊的部分重配置管脚,并在device pin-out出中定义管脚。此选项还自动将管脚连接到PR控制模块的内部路径。
    注: 如果不选择此选项,那么必须使用一个内部主机或者HPS主机。您无需在设计顶层实体中定义管脚。
  3. 将这些顶层管脚连接到PR控制模块中的特定端口。

下表列出了Enable PR Pins开启时自动约束的PR管脚 ,以及到此引脚的特定PR控制块端口连接:

表 31.  部分重配置专用管脚
管脚名称 类型 PR控制模块端口名称 描述
PR_REQUEST Input prrequest 此管脚上的逻辑高电平表示PR主机正在请求部分重配置。
PR_READY Output ready 此管脚上的逻辑高电平表示PR控制模块已准备好开始部分重配置。
PR_DONE Output done 此管脚上的逻辑高电平表示部分重配置完成。
PR_ERROR Output error 此管脚上的逻辑高电平表示重配置期间器件中的一个错误。
DATA[31:0] Input data 这些管脚对PR_DATA提供连接性,将PR比特流传输到PR控制器。
DCLK Input clk 接收同步的PR_DATA
注:
  1. PR_DATA的宽度可以是8,16或者32-bits。
  2. 确保将PR控制模块的corectl端口连接到0。

Verilog RTL for External Host PR

module top(
     // PR control block signals
     input  logic        pr_clk,
     input  logic        pr_request,
     input  logic [31:0] pr_data,
     output logic        pr_error,
     output logic        pr_ready,
     output logic        pr_done,

     // User signals
     input  logic i1_main,
     input  logic i2_main,
     output logic o1
);

// Instantiate the PR control block
twentynm_prblock m_prblock
(
    .clk(pr_clk),
    .corectl(1'b0),
    .prrequest(pr_request),
    .data(pr_data),
    .error(pr_error),
    .ready(pr_ready),
    .done(pr_done)
);


// PR Interface partition
pr_v1 pr_inst(
   .i1(i1_main),
   .i2(i2_main),
   .o1(o1)
);

endmodule

VHDL RTL for External Host PR

library ieee;
use ieee.std_logic_1164.all;

entity top is
port(
      -- PR control block signals
      pr_clk: in std_logic;
      pr_request: in std_logic;
      pr_data: in std_logic_vector(31 downto 0);
                
      pr_error: out std_logic;
      pr_ready: out std_logic;
      pr_done: out std_logic;
                
      -- User signals
      i1_main: in std_logic;
      i2_main: in std_logic;
      o1: out std_logic
);
end top;

architecture behav of top is

component twentynm_prblock is
port(      
      clk: in std_logic;
      corectl: in std_logic;
      prrequest: in std_logic;
      data: in std_logic_vector(31 downto 0);
      error: out std_logic;
      ready: out std_logic;
      done: out std_logic
);
end component;

component pr_v1 is
port(     
      i1: in std_logic;
      i2: in std_logic;
      o1: out std_logic
);
end component;

signal pr_gnd : std_logic;

begin

pr_gnd <= '0';

-- Instantiate the PR control block
m_prblock: twentynm_prblock port map
(
    pr_clk,
    pr_gnd,
    pr_request,
    pr_data,
    pr_error,
    pr_ready,
    pr_done
);


-- PR Interface partition
pr_inst : pr_v1 port map
(
   i1_main,
   i2_main,
   o1
);

end behav;