使用DSP48乘法器IP生成乘法器multer_27_8_35,行为仿真中,乘法结果返回时间不同

使用Vivido中的乘法器IP,生成乘法器multer_27_8_35,

输入A位宽为27

输入B位宽为8

输出P位宽为35

发现返回数据的时序与时钟上升沿不严格对齐,具体代码如下:

cpp 复制代码
    multer_27_8_35 cnv1_Mulm0 (
        .CLK(w_clk),  // input wire CLK
        .A(fea_add_bias),      // input wire [26 : 0] A
        .B(m0),      // input wire [7 : 0] B
        .P(mul_m0)      // output wire [34 : 0] P
    );
    //  stage3 移位降低位宽 进行relu激活
    assign  shift_mul = mul_m0[21:14]   ;
cpp 复制代码
输入 fea_add_bias 的仿真结果
cpp 复制代码
输入 m0 的仿真结果
cpp 复制代码
输出 mul_m0 的仿真结果
cpp 复制代码
输出 mul_m0 的仿真结果
cpp 复制代码
猜测原因:是由于multer_27_8_35使用的两个DSP48乘法器,返回数据的时间不同

解决方法:

cpp 复制代码
将 
assign  shift_mul = mul_m0[21:14]   ; 
修改为时序逻辑
always @(posedge w_clk or negedge nw_rst) begin
   if (!nw_rst) begin                                 
       shift_mul       <=     8'b0  ;
   end
   else begin
       shift_mul       <=      mul_m0[21:14]   ;
   end
end

修改后仿真结果

相关推荐
bnsarocket25 分钟前
Verilog和FPGA的自学笔记9——呼吸灯
笔记·fpga开发·verilog·自学·硬件编程
国科安芯5 小时前
基于AS32A601型MCU芯片的屏幕驱动IC方案的技术研究
服务器·人工智能·单片机·嵌入式硬件·fpga开发
cmc10286 小时前
145.vivado采信号时ILA用一个probe要比用多个节约资源
fpga开发
白又白、7 小时前
数据cdc (clock domain cross)
fpga开发
FakeOccupational21 小时前
fpga系列 HDL : Microchip FPGA开发软件 Libero 中导出和导入引脚约束配置
fpga开发
贝塔实验室1 天前
LDPC 码的构造方法
算法·fpga开发·硬件工程·动态规划·信息与通信·信号处理·基带工程
Moonnnn.1 天前
【FPGA】时序逻辑计数器——仿真验证
fpga开发
三贝勒文子1 天前
Synopsys 逻辑综合之 ICG
fpga开发·eda·synopsys·时序综合
byte轻骑兵1 天前
【驱动设计的硬件基础】CPLD和FPGA
fpga开发·cpld
dadaobusi1 天前
看到一段SVA代码,让AI解释了一下
单片机·嵌入式硬件·fpga开发