Xilinx累加器IP核使用记录

一开始没看IP使用手册,心想这么简单的累加器还不是手到擒来,没想到在使用中发现不少坑,记录一下
使用Xilinx2020.2版本中的Accumulator(12.0)及DSP Macro(1.0)。设计目的是用Accumulator实现256个连续有效数据的累加。另外,使用DSP Macro是实现256个连续有效数据的累乘加。

Accumulator

Accumulator设定输入数据为无符号8bit,累加后16bit,使能CE与SCLR端口,输出延迟2 Latency,设置如下图所示:
Accumulator设置
测试时为简单起见,令输入数据保持8’d1;CE信号使用数据有效信号,在1~256时钟内置1,257时钟及之后置0;SCLR信号在256+2时钟置1,其他时间置0;未测试前想当然的以为在256+2个时钟就会输出累加值256,结果在255+2与256+2时钟输出255,之后被清除。

经过测试发现,因为Accumulator有2拍延迟,CE信号需要在1~257时钟内置1,258时钟及之后置0。SCLR信号仍然保持不变。结果会在256+2时钟输出256,之后被清除。

DSP Macro

DSP Macro设定两输入皆为8bit,累加后的结果选择全精度48bit(其他宽度是从48bit向下截取),同样启用CE与SCLR信号,输出延迟4 Latency。设置如下图所示:
在这里插入图片描述
测试时为简单起见,令两个输入数据都保持8’d1;CE信号使用数据有效信号,在1~256时钟内置1,257时钟及之后置0;SCLR信号在256+4时钟置1,其他时间置0;结果在253+4 ~ 256+4时钟输出253,之后被清除。

经过测试发现,因为DSP Macro有4拍延迟,CE信号需要在1~259时钟内置1,260时钟及之后置0。SCLR信号仍然保持不变。结果会在256+4时钟输出256,之后被清除。

总结

在使用累加或者累加乘之类输出需要重新参与输入运算的IP核时,如果使用CE接口,IP延迟为n Latency,则CE信号需要延长有效n-1个时钟;或者不启用CE接口,在前级控制数据在valid=0时为0。推荐后者,不过要注意在仿真时初始化此类IP核的输入为0,不然会导致累加x,输出x的现象。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值