您的位置 首页 系统

把HDL模块用NGC格局加密并在其他项目中调用

把HDL模块用NGC格式加密并在其他项目中调用-前面创新网网友Ricky Su发了篇博文《 说说FPGA中的黑盒子(BlackBox)》,学习了感觉很好用,最近在网上又找到一篇讲该方面内容的文章,感觉

前面立异网网友Ricky Su发了篇博文《 说说FPGA中的黑盒子(BlackBox)》,学习了感觉很好用,最近在网上又找到一篇讲该方面内容的文章,感觉写的很好转发来与咱们同享,文章如下:
这个办法其实十分简略。给出一个实例。
先用HDL写出该模块,比方:

module my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );
assign o1 = (i1 > i2)? i1: i2;
endmodule

这是一个比较巨细的模块。一看便知。

然后在ISE中树立项目,将该模块导入,作为规划文件,杂乱的规划进程也是相似的。然后运转XST进行归纳,归纳完成后,看看项目目录,就能发现这个NGC文件了。这个NGC文件是2进制加密的,所以,你也不必操心去研讨了。即使可以用ngc2edif将其转换成edif格局,可是关于杂乱规划,得到edif也是无法复原其原本的逻辑目的的。

到此为止,咱们得到NGC格局加密的规划文件。

留意,在制造NGC的时分,要避免把PAD或许IOB都包含进来,由于咱们的NGC是要被其他项目调用的,也便是说NGC这颗螺丝钉有必要能放到任何方位去,而一旦咱们把PAD和IOB也包含进来,则NGC将只能放在客户项目的鸿沟接口方位,这和实际情况是相反的,实际情况咱们的NGC只作为内部的一个部分,这就形成客户项目终究PR失利。
避免NGC带有IOB、PAD的办法: 找到ISE中的Synthesize-XST,然后右键翻开特点,在category的Xilinx Specific OpTIons中将下列两项disable掉。
– iobuf Add I/O Buffers
– iob Pack I/O Registers into IOBs (这个选NO即可)

好了,现在假定其他项目(咱们的客户项目)要调用这个加密模块,怎么做呢?
首要加密后的模块是2进制的,无法在归纳的时分运用,咱们的办法是制造一个等价的black box。所谓黑盒,其实便是一个只要接口,没有完成的模块。比方,上例的黑盒,便是这个姿态。

module my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );

endmodule

去掉中心的完成部分就可以了。

先给咱们供给一个客户项目的比如。

module my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );

my_comp u1 (
.i1 (i1 + 4h1),
.i2 (i2 + 4h2),
.i1 (i1),
);
endmodule

客户项目的代码,加上咱们制造的黑盒代码,一同载入到ISE项目中,然后运转XST归纳即可得到新项目的网表,当然,由于咱们供给的是黑盒,所以对应的规划成果也仍然是黑盒。那么什么时分来替换黑盒呢?

在这个阶段,是要真实替换黑盒的时分。其实要做的很简略。
咱们把生成的NGC文件放到客户项目的作业目录内——作业就完成了。
P—R进行的时分,进行终究的黑盒替换,ISE会企图在作业目录或许其他指定的途径寻觅黑盒的代替,所以咱们把NGC放在了作业目录下。

接下来运转implementaTIon,你会发现一路作业正常,太爽了~

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/179569.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部