Verilog 用于乘法的DSP48E2实例化

Verilog 用于乘法的DSP48E2实例化,verilog,fpga,zynq-ultrascale+,Verilog,Fpga,Zynq Ultrascale+,我试图实例化zynq ultrascale的DSP48E2进行乘法运算,但它始终返回p输出零,即使正确给出了控制信号。(如下面的实例化代码所示) 在该模块中,连接ACOUT和BCOUT以验证其功能,并且这两个模块正常工作,如以下仿真波形所示。谁能告诉我P输出出了什么问题。(需要返回A和B的乘法输出) 可以对此进行推断和DSP48宏使用。为了利用DSP48E2的完全灵活性,我想进行实例化。因此,这个问题只是关于实例化。通过激活CECTRL时钟使能信号至OPMODEREG和CARRYINSEL,可

我试图实例化zynq ultrascale的DSP48E2进行乘法运算,但它始终返回p输出零,即使正确给出了控制信号。(如下面的实例化代码所示)

在该模块中,连接ACOUT和BCOUT以验证其功能,并且这两个模块正常工作,如以下仿真波形所示。谁能告诉我P输出出了什么问题。(需要返回A和B的乘法输出)


可以对此进行推断和DSP48宏使用。为了利用DSP48E2的完全灵活性,我想进行实例化。因此,这个问题只是关于实例化。

通过激活CECTRL时钟使能信号至OPMODEREGCARRYINSEL,可以通过X和Y多路复用器获得乘法输出的部分乘积,并可以将其与C输入相加(来自端口或CREG)如以下模拟波形所示。(此处结构寄存器未用于将C输入与乘法输出的部分乘积相加)

module top(CLK, A, B, C, ACOUT, BCOUT, P);
    input wire CLK;
    input wire signed [29:0] A;
    input wire signed [17:0] B;
    input wire signed [47:0] C;
    output wire signed [29:0] ACOUT;
    output wire signed [17:0] BCOUT;
    output wire signed [47:0] P;
    DSP48E2#(
    .AMULTSEL("A"), 
    .A_INPUT("DIRECT"),  
    .BMULTSEL("B"),   
    .USE_MULT("MULTIPLY")
    ) 
    DSP48E2_inst (
    .ACOUT(ACOUT), 
    .BCOUT(BCOUT),  
     .P(P),
    .ALUMODE(4'd0), 
    .CARRYINSEL(3'd0), 
    .CLK(CLK), 
    .INMODE(5'd0), 
    .OPMODE(9'd5), 
    .A(A), 
    .B(B), 
    .C(C), 
    .CARRYIN(1'd0),  
    .CEA2(1),
    .CEALUMODE(1), 
    .CEB2(1), 
    .CEC(1), 
    .CEINMODE(1), 
    .CEM(1), 
    .CEP(1), 
    .RSTA(0), 
    .RSTALUMODE(0), 
    .RSTB(0), 
    .RSTC(0), 
    .RSTCTRL(0), 
    .RSTM(0), 
    .RSTP(0) 
    );
endmodule