【一步一步设计Vivado IP】制作随机输出IP

添加IP repo的方法:

工程打开后->Flow Navigator->PROJECT MANAGER->Settings->IP->Repository->IP Repositories->点击加号->选中IP所在的目录(可以选上级目录,它会自动查找子目录IP)->OK->OK;即可被Vivado的IP Catalog使用。

建议看本文前,先阅读Vivado IP Integrator: Using TTCL

本文设计一个IP,它具有以下功能:

  • 它有32bit位宽;
  • 每次综合生成的值不一样,但可以追溯这个值;

本次设计平台:Vivado2017.2 @ Windows7 x64;

第一步打开Vivado,建立一个Dummy工程;

第二步,建立一个空目录,在目录内建立以下几个文件:

  • top_wrapper.v

module top_wrapper(output [31:0] data);

    top inst(.data(data));
endmodule
  • fpgabuild.ttcl

<: set ComponentName [getComponentNameString] :>
<: setFileName [ttcl_string_concat [getComponentNameString] "_TOP"] :>
<: setFileExtension ".v":>
<: setOutputDirectory [getComponentNameString]  :>
<: set curtime [format "%-16x" [clock seconds]]:>

module top #(
    parameter WIDTH = 32
)(
	output [WIDTH-1:0] out
);
<: puts "Hello" :>
	assign out = 'h<=: $curtime :>;
<: puts "Hello" :>
endmodule

第三步,使用创建IP的第三种方法创建IP

Directory为top_wrapper.v和fpgabuild.ttcl所在的目录;

在之前

上述图的Project name可以随意,Project location选一个空目录;

第四步,点击Package IP即可。欲知效果,可以添加IP,使用generate一下即可。

下面介绍fpgabuild.tcl

<:tcl语句:>:此刻执行tcl 8.5的支持语法,并包括一些vivado的扩展;

<=:tcl变量引用:>:此语句只允许变量,如需要复杂语句,可先使用上面的语法将计算值赋予一个新变量,再使用本语句;

ttcl内可以使用puts函数进行打印调试;下面是ttcl生成的verilog:


module top #(
    parameter WIDTH = 32
)(
	output [WIDTH-1:0] out
);
	assign out = 'h5f12a680        ;
endmodule

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值