如何仅在3个变量精度DSP模块中实现25×18复数乘法器?-Altera-Intel社区-FPGA CPLD-ChipDebug

如何仅在3个变量精度DSP模块中实现25×18复数乘法器?

所有28-nm器件系列,包括Stratix®V,Arria®V和Cyclone®V,均可使用3个可变精度DSP模块支持25×18复数乘法器结构。

当使用使用4个DSP模块实现此结构的Megacore®时,Quartus®II软件存在限制。

解决/修复方法

要解决此限制,请使用Quartus II软件模板中的Complex 25×18 Multiply代码模板来推断您的复数乘数。要使用此代码模板,首先需要打开一个新的设计文件,然后从Quartus II软件中提供的模板中选择该模板。此模板位于Verilog或VHDL模板中的Full Designs> Arithmetic> DSP Features(Stratix-V,Arria-V和Cyclone-V)下。

为方便起见,Verilog的代码模板如下:

// Quartus II Verilog模板
//复数25×18乘法
//用于Stratix V,Arria-V,Cyclone-V及更高版本的器件系列

module complex_25x18(x_r,x_i,y_r,y_i,clock,ena1,ena0,reset,p_r,p_i);
//此模板适用于Stratix-V上的复杂25×18模式
输入[24:0] x_r;
输入[24:0] x_i;
输入[17:0] y_r;
输入[17:0] y_i;
// Stratix-V DSP最多支持3个时钟/ ena对和2个异步复位信号
输入时钟;
输入ena1;
输入ena0;
输入复位;
输出[43:0] p_r;
输出[43:0] p_i;

//必须签署所有输入/输出。
//所有输入寄存器必须使用相同的{clock,ena,reset}
//所有输出寄存器必须使用相同的{clock,ena,reset}
reg签署[24:0] x_r_reg,x_i_reg;
reg签署[17:0] y_r_reg,y_i_reg;
reg签署[43:0] p_r,p_i;

电线签[25:0] a1;
电线签[18:0] a2;
电线签署[18:0] a3;
电线签署[43:0] p1;
电线签名[43:0] p2;
电线签署[43:0] p3;

分配a1 = x_r_reg – x_i_reg;
assign p1 = a1 * y_i_reg;
分配a2 = y_r_reg – y_i_reg;
assign p2 = a2 * x_r_reg;
分配a3 = y_r_reg + y_i_reg;
assign p3 = a3 * x_i_reg;

总是@(posedge clock或posedge reset)
开始
if(reset == 1 \’b1)
开始
x_r_reg <= 0;
x_i_reg <= 0;
y_r_reg <= 0;
y_i_reg <= 0;
p_r <= 0;
p_i <= 0;
结束
其他
开始
if(ena0 == 1 \’b1)
开始
x_r_reg <= x_r;
x_i_reg <= x_i;
y_r_reg <= y_r;
y_i_reg <= y_i;
结束
if(ena1 == 1 \’b1)
开始
p_r <= p1 + p2;
p_i <= p1 + p3;
结束
结束
结束

endmodule

请登录后发表评论

    没有回复内容