目录
一、前言
二、USE_DSP
2.1 工程代码
2.2 结果
2.3 参考资料
一、前言
对于逻辑运算,加、减、乘、除等可以使用逻辑资源LUT实现,也可以使用专用的运算资源DSP来实现。在一些计算量较大时,使用DSP可以节省许多逻辑资源,占用的面积更小。
二、USE_DSP
属性USE_DSP可以指定逻辑运算实现方式,属性可以直接加入到代码或约束文件XDC中。
格式样例:(* USE_DSP=value*) moduel dsp_test(in,out);
可设置的值为:logic,simd,yes,no
logic:使用DSP的异或结构实现,此时属性只能放置到模块级别
simd:通过综合工具将SIMD(单命令多数据)放入DSP中
yes/no:设置为yes时,综合工具将逻辑单元放入DSP中,属性可以设置到信号或模块上,信号的优先级高于模块。
2.1 工程代码
(* USE_DSP="yes" *)module USE_DSP(num1,num2,multi );
input [3:0] num1,num2;
output reg [7:0] multi;
reg [7:0] temp0;
reg [7:0] temp1;
integer i;
always@(*)
begin
temp0=8'b0;
temp1={4'b0,num1};
for(i=0;i<=3;i=i+1)
begin
if(num2[i]==1)
temp0=temp0+temp1;
temp1={temp1[6:0],1'b0};
end
multi=temp0;
end
endmodule
2.2 结果
结果如下图,根据网表图和RTL图可知,使用DSP来实现乘法运算
将USE_DSP设为no,此时使用LUT来实现
2.3 参考资料
用户手册:《ug901-vivado-synthesis.pdf》