找回密码
 注册
关于网站域名变更的通知
查看: 218|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-31 07:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

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

1 j' T9 N/ H/ Z& U
! A$ T* m- Q# M6 F9 s! Y这个方法其实非常简单。给出一个实例。5 L8 A; r% d" P. U5 }' p. a
先用HDL写出该模块,比如:module my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );
8 f9 l# ^' y" Q2 T+ Qassign o1 = (i1 > i2)? i1: i2;& X6 h+ o0 Z0 t. D
endmodule& P- ]/ z8 n) o% W1 {0 d
这是一个比较大小的模块。一看便知。
# z% m: g3 c, y* U4 x5 _0 L然后在ISE中建立项目,将该模块导入,作为设计文件,复杂的设计过程也是类似的。然后运行XST进行综合,综合完成后,看看项目目录,就能发现这个NGC文件了。这个NGC文件是2进制加密的,所以,你也不用费心去研究了。即便可以用ngc2edif将其转换成edif格式,但是对于复杂设计,得到edif也是无法还原其本来的逻辑意图的。. T0 D; V7 s0 C$ R% Q
到此为止,我们得到NGC格式加密的设计文件。$ c% s0 }; `7 m2 W% E
注意,在制作NGC的时候,要防止把PAD或者IOB都包括进来,因为我们的NGC是要被其他项目调用的,也就是说NGC这颗螺丝钉必须能放到任何位置去,而一旦我们把PAD和IOB也包括进来,则NGC将只能放在客户项目的边界接口位置,这和实际情况是相反的,实际情况我们的NGC只作为内部的一个部分,这就造成客户项目最终P&R失败。0 R& J9 B% w8 U2 t2 W
防止NGC带有IOB、PAD的方法: 找到ISE中的Synthesize-XST,然后右键打开属性,在category的Xilinx Specific Options中将下列两项disable掉。
1 H4 l6 n- Q8 m  Y! ^" q4 F0 k- Y( Q- iobuf Add I/O Buffers
! u9 E4 u8 Y) u- iob Pack I/O Registers into IOBs (这个选NO即可)! y2 A0 L/ r! a/ f; J
好了,现在假设其他项目(我们的客户项目)要调用这个加密模块,怎么做呢?# {5 o) U5 |5 g. d
首先加密后的模块是2进制的,无法在综合的时候使用,我们的方法是制作一个等价的black box。所谓黑盒,其实就是一个只有接口,没有实现的模块。比如,上例的黑盒,就是这个样子。
$ t3 [7 x$ h& U0 e9 O+ T. r0 \module my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );6 v# n2 K/ |( g7 u; n$ {5 P
endmodule# m% v, N/ e! o9 n
去掉中间的实现部分就可以了。
9 w9 @, _7 M$ |, `) c' j$ h. ?先给大家提供一个客户项目的例子。
: c! w( B; `: I5 I' c9 j0 Jmodule my_comp(input [3:0] i1, input [3:0] i2, output [3:0] o1 );
: T7 D0 w2 ^) H6 z7 o% e( |my_comp u1 (8 `, _. o+ q; |6 {9 Z
.i1 (i1 + 4'h1),
& j" Z3 O5 L- p.i2 (i2 + 4'h2),, g7 b6 |, n: h* W  Z5 M, }( K7 v
.i1 (i1),
! L$ {% o: N- L);6 f1 y* z1 D  [: p, M$ a, m" T0 F# @
endmodule
% [' H2 W: z( R$ [8 o, \客户项目的代码,加上我们制作的黑盒代码,一起载入到ISE项目中,然后运行XST综合即可得到新项目的网表,当然,因为我们提供的是黑盒,所以对应的设计结果也仍然是黑盒。那么什么时候来替换黑盒呢?
+ M% G4 g# o2 m4 n! d* A在这个阶段,是要真正替换黑盒的时候。其实要做的很简单。2 x0 u5 A9 V' g: V$ a' C
我们把生成的NGC文件放到客户项目的工作目录内——工作就完成了。/ p2 ]( o7 p( E% U8 o2 C
P—R进行的时候,进行最终的黑盒替换,ISE会试图在工作目录或者其他指定的路径寻找黑盒的替代,所以我们把NGC放在了工作目录下。' n6 H6 b+ I( g1 t  E
接下来运行implementation,你会发现一路工作正常,太爽了~
: B; I: p% |9 k8 K9 j8 v1 W  ?

该用户从未签到

2#
发表于 2019-5-31 15:34 | 只看该作者
真的啊 有机会我去试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 04:58 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表