quartusII关于ALTMULT_ACCUM(MAC)IP核的使用

   最近在使用ALTMULT_ACCUM(MAC),该IP核的功能是对输入数据进行相乘后累加,乘子是同一个时钟信号下的输入数据此刻的值,最快输出结果是在输入数据出现后的两个时钟信号后,我用这个IP核时为了在一段时间内对数据进行累加,而后将累加结果清零并重新累加,但是仿真时发现一个很奇怪的问题。如下:

  这是该IP核的例化程序:

quartusII关于ALTMULT_ACCUM(MAC)IP核的使用_第1张图片

 以下是quartusII自带的University Programa VWF文件的仿真结果:

可以看到,在aclr0信号置1时,累加结果清零了,符合我们的要求。

于是我接着用Modelsim仿真:

发现,aclr0置1时,计算结果并没有清0,而是保持不变,我重新看了一下自己对该IP核的设置:

quartusII关于ALTMULT_ACCUM(MAC)IP核的使用_第2张图片quartusII关于ALTMULT_ACCUM(MAC)IP核的使用_第3张图片quartusII关于ALTMULT_ACCUM(MAC)IP核的使用_第4张图片

        如上图,我发现我只对Multpliers设置了异步清零为aclr0,因此猜测只是对mac的乘法器模块清零了,所以累加的结果保持不变,我想清零累加结果,于是理所当然的在Accumlater里面找设置清零信号,但是accum_sload给的介绍是  动态制定累加器的值是否为常熟,高电平时加载乘法器输出到累加器。不能同时使用accum_sload 和sload_accum。而且里面的清零也并没有效果,最后在Extra Mode中找到给output reg设置异步清零,将其设置为aclr0。再次使用modelsim仿真结果符合预期quartusII关于ALTMULT_ACCUM(MAC)IP核的使用_第5张图片

 

 

你可能感兴趣的:(quartusⅡ)