xilinx的除法器IP我上了148M会有问题,这个极限速率哪儿能查到吗
本帖最后由 ackyee 于 2022-6-24 09:23 编辑如题,除法的IP上 用了6个时钟延时来输出结果,这里有个疑问乘法器上有个 指标是几级流水线,但是除法只写几个延时,这个是同一个概念吗
另外 除数增大了,数据输出会出错,(算法没问题,在低速下 能运算通过,不存在溢出问题) 除数变小 就不会有问题
另外算法每一步都放到always块里了,而且都是一个always实现一个简单的操作,不存在组合逻辑运算不过来的情况, 问题应该就在除法器上了 你好好做前仿,然后看时序!异步时钟注意把所有reg输出加0.5ns延迟再前仿!时序对了一般不会出问题!再有问题检查你内核供电! 本帖最后由 ackyee 于 2022-6-24 10:05 编辑
wye11083 发表于 2022-6-24 09:51
你好好做前仿,然后看时序!异步时钟注意把所有reg输出加0.5ns延迟再前仿!时序对了一般不会出问题!再有问 ...
(引用自2楼)
好 ,我试试看,其他逻辑都很简单都是赋值 加减这种,应该就是除法这块 有问题了
先找找看 , 不行的话 再把数据流用两个除法器去推 这种情况,明显是时序余量不够 wye11083 发表于 2022-6-24 09:51
你好好做前仿,然后看时序!异步时钟注意把所有reg输出加0.5ns延迟再前仿!时序对了一般不会出问题!再有问 ...
(引用自2楼)
求教:reg输出怎么样加延迟? tjiefk 发表于 2022-6-24 12:41
求教:reg输出怎么样加延迟?
(引用自5楼)
仿真时用always @(*) if(xxx)#0.5 yy<=zz; 本帖最后由 smbxfdbz 于 2022-6-24 13:48 编辑
wye11083 发表于 2022-6-24 12:42
仿真时用always @(*) if(xxx)#0.5 yy
(引用自6楼)
异步时,仿真加0.5延时的目的是什么呢?
应该时,同步时,才加延时吧。你这个代码示例是非阻塞赋值,同步设计时,才会用非阻赛呀? ArthurBruin 发表于 2022-6-24 11:26
这种情况,明显是时序余量不够
(引用自4楼)
对的 现在在查是逻辑时序余量不够 还是说除法器分配的运算时间不足,还是说除法器给的时钟太高了
smbxfdbz 发表于 2022-6-24 13:46
异步时,仿真加0.5延时的目的是什么呢?
应该时,同步时,才加延时吧。你这个代码示例是非阻塞赋值,同步 ...
(引用自7楼)
前仿时默认tsu=0ns。所以跨时钟仿真时会出问题。 看看时序报告? at90s 发表于 2022-6-25 01:33
看看时序报告?
(引用自10楼)
找到问题了除法器的 最佳性能 手册上描述是需要 把延时控制在被除数的 位宽 + 余数的位宽 +2 的 ,我的被除数是 21bit也就是我理论上需要至少23 个clk的延时才能发挥最佳性能
页:
[1]