打印

一个超级难的简单计算题

[复制链接]
5189|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
drentsi|  楼主 | 2012-3-11 15:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
3个正整数,A为12bit,B和C为10bit,且B<C,C>255
问题是:计算A*B/C的商和余数,无论用什么芯片,时间最短能达到多少?
如果把A,B,C扩展到16bit,又如何?
苦想了一个多月,仍然没有找到一个很好的解决办法,目前只做到了30ns

相关帖子

沙发
Ryanhsiung| | 2012-3-11 16:03 | 只看该作者
如果把A,B,C扩展到16bit,又如何? 若用16位的片子已经是16位的了,不用扩!

30ns  这个已经很快了,5MIPS单片机单周期200ns,ST的M4据说最快为168MIPS,单周期也要6ns。
你用什么芯片运算的啊? DSP ?

加快速度:提升主频,或超频计算!!

使用特权

评论回复
板凳
drentsi|  楼主 | 2012-3-11 16:05 | 只看该作者
我用FPGA整的,ARM能做单周期除法?

使用特权

评论回复
地板
zjp8683463| | 2012-3-11 16:17 | 只看该作者
多少主频都没说,30ns怎么做参考?

使用特权

评论回复
5
Ryanhsiung| | 2012-3-11 19:44 | 只看该作者
我用FPGA整的,ARM能做单周期除法?
drentsi 发表于 2012-3-11 16:05

我可没说这个,我只是例了一下单片机的周期时间,具体要看芯片了!
我的意思是30ns已经很快了!

使用特权

评论回复
6
drentsi|  楼主 | 2012-3-11 21:20 | 只看该作者
FPGA做的,目前最快能做到9个clock,跑333MHz,总延时为30ns
整个数据处理环路为12个clock,延时为40ns,且无法解开环路,无法通过并行化来提升性能。
瓶颈就在这个乘除法,每减少一个clock,都是十分有意义的

使用特权

评论回复
7
zjp8683463| | 2012-3-11 22:28 | 只看该作者

使用特权

评论回复
8
ejack| | 2012-3-12 07:53 | 只看该作者
http://www.docin.com/p-200198263.html
号称2周期
zjp8683463 发表于 2012-3-11 22:28


噢,这个值得好好看看!

使用特权

评论回复
9
Cortex-M0| | 2012-3-12 12:48 | 只看该作者
这个NB !  !  !

2周期 !  !  !

使用特权

评论回复
10
quanbo123| | 2012-3-12 13:45 | 只看该作者
??????????????/

使用特权

评论回复
11
GavinZ| | 2012-3-12 14:06 | 只看该作者
http://www.docin.com/p-200198263.html
号称2周期
zjp8683463 发表于 2012-3-11 22:28

我只懂verilog,看不懂vhdl。不过我仍然保持我的怀疑:
1)作者的vhdl算法实现跟他**开头的文字描述,看上去不一致;文字描述了依赖于时钟的移位操作,既然是这样我认为不可能在两个cycle内就得到除法结果。
2)即便他能在两个两个cycle内得出结果,但在同样的硬件性能下,他的imeplement后的结果只能run到10Mhz,那与用10个cycle得到结果,但能run到200MHz的实现方法相比,那还不如后者了呢

所以,最快的就是用FPGA内部的硬件乘法器(cpu,单片机里都有)实现。但我还是不相信楼主用了9个周期,我觉得不会这么慢,等我有时间,我试试。

使用特权

评论回复
12
21IC之星| | 2012-3-12 15:15 | 只看该作者
学习

使用特权

评论回复
13
nongfuxu| | 2012-3-12 15:23 | 只看该作者
最快的就是用FPGA内部的硬件乘法器,但我还是不相信楼主用了9个周期

是否LZ为了提高速度内插了寄存器?
LZ能再详细说一下用什么器件、加了哪些时序约束就好了。

使用特权

评论回复
14
drentsi|  楼主 | 2012-3-12 19:08 | 只看该作者

使用特权

评论回复
15
drentsi|  楼主 | 2012-3-12 19:23 | 只看该作者
上图是一个月来尝试的各种计算方式。
各种除法器流水线级数各不相同,工作频率也不相同,但总的运算时间却很难突破。
其中有单周期除法,100ns
High-Radix,50ns
xilinx生成的除法器,150ns
查表试商法等等
目前做到最快的有三种方式:
1.先计算A*B,1clk,再经查表试商8clk,总共9clk,工作到333MHz,延时30ns
2.先计算A*B,1clk,再经查表试商5clk,总共6clk,工作到200MHz,延时还是30ns
3.计算M=A*B,同时查表求D=2^S/C,1clk;计算N=M*D,1clk;商Q=N/2^S,直接移位,计算R=Q*C-M,1clk;比较R与C,修正Q,1clk;总共4clk,跑到166MHz,延时24ns;很难提高速度;插入合适的寄存器后,能跑到200MHz,但是需要6clk,延时还是30ns

使用特权

评论回复
16
GavinZ| | 2012-3-12 22:44 | 只看该作者
我大概试了下,确实很难突破。
fpga实现除法是基于组合逻辑,这样的话,光靠eda工具产生除法电路,应该是做不到了,人能干预的仅仅是时序约束部分。

使用特权

评论回复
17
李冬发| | 2012-3-13 05:10 | 只看该作者
我只懂verilog,看不懂vhdl。不过我仍然保持我的怀疑:
1)作者的vhdl算法实现跟他**开头的文字描述,看上去不一致;文字描述了依赖于时钟的移位操作,既然是这样我认为不可能在两个cycle内就得到除法结果。
2) ...
GavinZ 发表于 2012-3-12 14:06


多个移位操作是可以一个时钟内完成的。至少乘法器是可以单时钟内完成。

使用特权

评论回复
18
Ryanhsiung| | 2012-3-15 17:47 | 只看该作者
多个移位操作是可以一个时钟内完成的。至少乘法器是可以单时钟内完成。
李冬发 发表于 2012-3-13 05:10

围观冬发哥!!

使用特权

评论回复
19
dong_dt| | 2012-3-16 13:59 | 只看该作者
那一篇号称只用2周期做除法运算的**不是NB,是SB!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:学习,思考。

144

主题

1718

帖子

43

粉丝