使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)

前面一篇文章介绍了Xilinx FPGA平台下如何封装用户的源代码,形成网表文件的操作教程,具体见:
使用Vivado将包含Xilinx IP的用户模块封装成网表文件(也适用不包含Xilinx IP的用户模块)

今天就来讲一讲在Altera/Intel FPGA平台下如何封装用户的源代码,形成网表或加密文件并在其他工程中调用的具体实现。
本文共分为两部分,每部分各两小节,详细叙述Quartus17.0及之前版本的网表文件(.qxp文件)产生及调用过程、Quartus17.1及之后版本的网表文件(.qdb文件)产生及调用过程。

1、Quartus17.0及之前版本用户逻辑封装及调用教程

1.1、用户逻辑封装

参考:

如何在不包含源设计文件的情况下创建设计网表?

如果出于安全原因要保密设计文件,一种选择是使用Quartus®II导出分区文件(.qxp)来创建后合成或后拟合网表,而不包括任何源设计文件。这些增量编译功能需要完整的Quartus II订阅许可证(并且不包含在免费的网络版许可证中)。请参阅下面的“相关解决方案”,以获取其他替代方法和其他相关信息。

将设计作为附件发送的步骤。Quartus II手册的“基于层次和基于团队的设计的Quartus II增量编译 ”一章中的“使用导出的分区发送设计而不包含源文件”部分中记录了qxp文件,该文件包含在此处,以方便使用。

要导出完整的设计或设计的一部分以供其他人重复使用,请创建一个设计分区,将其导出,然后收件人将分区导入到一个新项目中。要使用增量流程的这一简单方面,您不必创建任何其他设计分区或为项目添加平面布置图分配。有关使用增量编译命令的更多详细信息,请参阅手册章节。

执行以下步骤以导出设计块并将其发送给其他人:
1.将设备系列名称提供给收件人。如果您通过综合网表发送放置信息,还请提供确切的设备选择,以便他们可以设置其项目以进行匹配。
2.创建定义设计模块端口接口的文档或示例实例,并将其提供给接收者,以便他或她可以将模块实例化为顶层设计中的空分区。

在Quartus II软件7.2 SP3和更早版本中,您必须发送一个空的黑匣子模块/实体定义,其中列出了设计模块的端口宽度和方向。从8.0版开始不需要这样的文件。

3.将适当的层次结构级别导出到单个.qxp文件。如果使用Quartus II GUI,则在Project菜单上,选择Export Design Partition,然后选择要导出的Partition层次结构。
4.如果不需要发送放置信息,请选择仅包含合成后网表的选项。如果收件人希望重现准确的Fitter结果,则可以选择“ 后拟合网表”选项,还可以选择启用“ 导出路由”以同时包含路由信息。
5.提供.qxp文件发送给收件人。请注意,您不必发送任何设计源代码。

实战:

步骤1

打开包含待封装模块的工程,并至少完成综合阶段,即至少完成下图中“1”所示过程,然后就可以看到整个工程的层级结构。
若待封装的模块就是该工程的顶层,那么直接进入步骤2.
否则按照序号顺序执行,其中假定“2”为待封装模块。完成“4”指示步骤后我们会看到在待封装模块的后面出现“6”指示的图标。然后需要再次执行综合过程,即至少完成下图中“1”所示过程。
使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)_第1张图片

步骤2

当工程的顶层即为待封装模块时,按照下图所示,点击“Export Design Partition”,然后点击“OK”,网表文件.qxp将会在指定路径下生成。
使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)_第2张图片
当工程的顶层不是待封装模块时,按照下图所示,点击“Export Design Partition”,再弹出的对话框中选择要生成的网表模块,然后点击“OK”,网表文件.qxp将会在指定路径下生成。注意,top之外的层级只有在步骤1中设置了“Set as Design Partition”并执行综合阶段后才会在下拉列表中显示出来。

使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)_第3张图片

1.2、网表调用

参考:

作为收件人.qxp文件,通过执行以下步骤将设计模块合并到顶层设计中:
1.创建一个用于顶层设计的Quartus II项目,并确保您的项目针对发送方指定的同一设备(如果.qxp文件不包含放置信息,则至少针对同一设备系列)。
2.使用提供的端口信息实例化设计模块。
3.在“处理”菜单上,指向“ 开始”,然后单击“ 执行分析和细化”以标识设计层次结构。
4.为设计块实例创建一个设计分区。在“项目浏览器”中右键单击实例名称,然后选择“ 设为设计分区”。
5.导入适当分区层次结构的.qxp文件。如果使用Quartus II GUI,则在Project菜单上,选择Import Design Partition,选择设计模块的分区,然后浏览到。提供的qxp文件。
6.如果发件人提供了钳工信息,则可以使用Fitter Preservation Level控制是否仅保留导入的网表,放置或放置和路由。在“分配”菜单上,选择“ 设计分区窗口”,然后根据需要调整设置。

现在,您具有使用原始设计网表的完整设计,但不包括源设计文件。该项目包括导入的作业以及中包含的所有编译后信息.qxp文件。

实战:

当调用上述生成的网表文件时,只需提供.qxp即可,另外,在代码中调用时和一般情况一样。
将.qxp添加到工程中的方法:

图形界面下添加

使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)_第4张图片

脚本模式下添加

打开工程的.qsf脚本,并在其中加入下述代码:

set_global_assignment -name QXP_FILE xxxxx.qxp

2、Quartus17.1及之后版本用户逻辑封装及调用教程

英特尔Quartus Prime专业版用户指南:基于块的设计 —英文版
相关内容:1.5. Design Block Reuse Flows

中文版 中文版 中文版 ----提醒三遍哦
Intel Quartus Prime Pro Edition用户指南: 设计编译 ----中文版
相关内容:1.6. 导出编译结果

实战内容见:

使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(下)

你可能感兴趣的:(FPGA基础,fpga)