仅对英特尔可见 — GUID: wtf1467233941832
Ixiasoft
1.1. 部分重配置术语
1.2. 部分重配置过程序列
1.3. 内部主机部分重配置
1.4. 外部主机部分重配置
1.5. 部分重配置设计考量
1.6. 部分重配置设计流程
1.7. 层次化部分重配置(Hierarchical Partial Reconfiguration)
1.8. 部分重配置设计时序分析
1.9. 部分重配置设计仿真
1.10. 部分重配置设计调试
1.11. PR比特流安全性验证( Intel® Stratix® 10和 Intel® Agilex™ 设计)
1.12. PR比特流压缩和加密( Intel® Arria® 10和 Intel® Cyclone® 10 GX设计)
1.13. 避免PR编程错误
1.14. 对PR设计导出与版本兼容的编译数据库
1.15. 创建一个部分重配置设计修订历史
2.1. 内部和外部PR主机配置
2.2. Partial Reconfiguration Controller Intel® FPGA IP
2.3. Partial Reconfiguration Controller Intel® Arria® 10 /Cyclone 10 FPGA IP
2.4. Partial Reconfiguration External Configuration Controller Intel® FPGA IP
2.5. Partial Reconfiguration Region Controller Intel® FPGA IP
2.6. Avalon-MM Partial Reconfiguration Freeze Bridge Intel® FPGA IP
2.7. Avalon-ST Partial Reconfiguration Freeze Bridge Intel® FPGA IP
2.8. 生成和仿真 Intel® FPGA IP
2.9. Intel® Quartus® Prime Pro Edition用户指南:部分重配置存档
2.10. 部分重配置解决方案IP用户指南修订历史
仅对英特尔可见 — GUID: wtf1467233941832
Ixiasoft
1.5.9. 对存有初始化内容的片上存储器实现时钟使能
请遵循以下准则为存有初始化内容的片上存储器实现时钟使能:
- 为避免在PR编程期间对存有初始化内容的存储器进行虚假写入,请在与M20K或MLAB RAM相同的PR区域中实现时钟使能电路。此电路取决于来自静态区域的高电平有效清除信号(active-high clear signal)。
- 在开始PR编程之前,置位此信号以禁用存储器的时钟使能。系统PR控制器必须在PR编程完成时置低清除信号。您可以为此目的使用冻结信号。
- 使用 Intel® Quartus® Prime IP Catalog或者Platform Designer例化On-Chip Memory和RAM Intel® FPGA IP core,其中包括自动添加此电路的选项。
图 16. 用于PR区域的RAM时钟使能电路
Verilog RTL for Clock Enable
reg ce_reg; reg [1:0] ce_delay; always @(posedge clock, posedge freeze) begin if (freeze) begin ce_delay <= 2'b0; end else begin ce_delay <= {ce_delay[0], 1'b1}; end end always @(posedge clock, negedge ce_delay[1]) begin if (~ce_delay[1]) begin ce_reg <= 1'b0; end else begin ce_reg <= clken_in; end end wire ram_wrclocken; assign ram_wrclocken = ce_reg;
VHDL RTL for Clock Enable
ENTITY mem_enable_vhd IS PORT( clock : in std_logic; freeze : in std_logic; clken_in : in std_logic; ram_wrclocken : out std_logic); END mem_enable_vhd; ARCHITECTURE behave OF mem_enable_vhd is SIGNAL ce_reg: std_logic; SIGNAL ce_delay: std_logic_vector(1 downto 0); BEGIN PROCESS (clock, freeze) BEGIN IF ((clock'EVENT AND clock = '1') or (freeze'EVENT AND freeze = '1')) THEN IF (freeze = '1') THEN ce_delay <= "00"; ELSE ce_delay <= ce_delay(0) & '1'; END IF; END IF; END PROCESS; PROCESS (clock, ce_delay(1)) BEGIN IF ((clock'EVENT AND clock = '1') or (ce_delay(1)'EVENT AND ce_delay(1) = '0')) THEN IF (ce_delay(1) = '0') THEN ce_reg <= '0'; ELSE ce_reg <= clken_in; END IF; END IF; END PROCESS; ram_wrclocken <= ce_reg; END ARCHITECTURE behave;