FPGA之道(65)代码中的约束信息(二)乘法器的相关约束

前言

这是这个话题的第二篇,最重要的前言是本文节选自:《FPGA之道》。

乘法器的相关约束

通常,FPGA开发者们无需显式的使用相关的乘法器约束,因为当需要使用乘法器时,一般都会调用集成开发环境提供的乘法器IP核,并在其中完成乘法器的相关配置即可。这也就是说,编译器通常帮我们完成了在HDL中添加乘法器相关实现约束的工作。不过大量IP核的调用和修改可是一个比较繁琐的过程,因此了解一些基本的乘法器相关实现约束,可以有效的提高我们的工作效率。

use_dsp48

use_dsp48是一个综合约束,从它的名字我们就可以推断出,它肯定和【知己知彼篇->FPGA内部资源介绍->DSP】小节中介绍的这个DSP资源相关。的确是这样,在Xilinx生产的Vertex-4及以后系列的器件中,都普遍采用了这种名为DSP48的资源。它的内部主要是由一个高性能的硬件乘法器组成,不过除此以外它也可以实现加法、累加等基本运算,就连其内部的寄存器也可以另作它用,因此use_dsp48这一综合约束并不仅限于乘法器方面的应用。
下面列举出在HDL中嵌入use_dsp48约束的语法:
– VHDL syntax
– 第一步,先要声明use_dsp48约束;
attribute use_dsp48 : string;
– 第二步,为use_dsp48语法指定约束线网名称和属性取值;
attribute use_dsp48 of <{entity_name|component_name|signal_name}> :
{entity|component|signal} is “{auto|yes|no}”;

// Verilog syntax
(* use_dsp48 = “{auto|yes|no}” *)
// 上述约束会作用于紧随其后调用的实体、模块或信号
从上述语法可以看出,use_dsp48约束具有三个属性值,分别为:auto——由编译器自动调配;yes——使用DSP48资源;no——不使用DSP48资源。
当我们想利用DSP48资源来实现一个高性能的无符号16bits乘16bits乘法器的时候,如果事先知道了use_dsp48这个约束语法,就可以不用通过调用IP核这样一个繁琐的步骤来完成,例如:

-- VHDL example
signal MulA, MulB : std_logic_vector(15 downto 0);
signal Product : std_logic_vector(31 downto 0); 
attribute use_dsp48: string;
attribute use_dsp48 of Product : signal is "yes"; 
	……
	process (clk)
begin
		if (clk'event and clk = '1') then
			Product <= MulA * MulB;
		end if;
end process;
// Verilog example
reg [15:0] MulA, MulB
(* use_dsp48 = "yes" *)
	reg [31:0] Product;
	……
always@(posedge clk)
begin
	Product <= MulA * MulB;
end

mult_style

mult_style是描述乘法器的另一个综合约束。它通常是以DSP资源的约束一起作用的,若use_dsp48约束的属性值为yes或auto时,我们可以使用mult_style的pipe_block属性值来搭建需要多个DSP48资源才能实现的乘法器;若use_dsp48约束的属性值为no时,那我们就只能使用mult_style的pipe_lut、KCM、CSD这些属性值,来表明使用查找表实现乘法器时的风格。
下面列举出在HDL中嵌入mult_style约束的语法:
– VHDL syntax
– 第一步,先要声明mult_style约束;

attribute mult_style : string; 

– 第二步,为mult_style语法指定约束线网名称和属性取值;

attribute mult_style of <{signal_name|entity_name}: {signal|entity}> is
"{auto|block|pipe_block|kcm|csd|lut|pipe_lut}";
// Verilog syntax
(* mult_style = "{auto|block|pipe_block|kcm|csd|lut|pipe_lut}" *)

// 上述约束会作用于紧随其后调用的实体、模块或信号

发布了806 篇原创文章 · 获赞 1541 · 访问量 151万+

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/105020677