在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2797|回复: 4

[求助] FPGA设计时一些复杂的运算怎么处理?

[复制链接]
发表于 2017-10-19 10:59:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近完成一个作业,要求用FPGA实现一个算法,具体就是一种线性回归算法。在软件层面上很简单,但考虑硬件实现是有很多问题。1.算法设计大量的乘法运算,感觉很浪费资源,一般这种情况是怎么处理的?
2.算法中有求矩阵相关性系数、特征向量等操作。实现的话也是考虑怎么将其分解为硬件的一些基本操作(与或加减位移等)吗?
3.还有小问题:如果在FPGA上实现,有很多参数我觉得可以提前算好,写到BRAM中,一次使用完后,下一次修改参数是可以在烧写进去。但是如果在ASIC中实现的话,这种思路是不是就无法成立?
这方面接触的不多,可能有很多理解错误,感谢各位大佬指正!
发表于 2017-10-19 16:43:22 | 显示全部楼层
1,资源问题两种方式:
a,优化结构,类似快速傅里叶变换的实现,通过公式变换减少乘法的次数
b,增加时钟频率,可能需要增加复杂度以及timing风险
2,FPGA内部的资源就是这些,乘法器,加法器,查找表,所以肯定需要分解,而且分解的时候需要注意复用的流水的限制。
3,参数修改asic不清楚,但是FPGA一般设计不需要重新编译版本,都会有主控到FPGA内部的寄存器配置总线,单独一个FPGA芯片的情况没遇到过,能想到也是通过Ila这类的IP进行少量模式的控制,如果是大规模的参数配置的话,不知道是不是有其他好的办法。
 楼主| 发表于 2017-10-23 18:32:44 | 显示全部楼层
回复 2# yydianzi

我再琢磨一下,多谢
发表于 2017-10-27 17:50:25 | 显示全部楼层
asic 的话用parameter,下次使用直接改下参数就能用
发表于 2017-10-30 19:15:53 | 显示全部楼层
1、如果变量与变量的乘法,那就只能用乘法器,或者自己写乘法器(就是移位加法而已,但是速率有限制),如果是常数和变量相乘,可以将常数分解为2^C1 + 2^C2 + 2^C3 ......+ N,N是10以内的数,这样就用多次移位运算和简单加法运算就搞定,不用乘法器;
2、大数据量的相关运算,一般都是用快速卷积实现(将相关序列倒序),快速卷积先将数据FFT,然后进行频域乘法,再进行IFFT,就得到相关结果;如果你能发现很特殊的规律,分解为更简单的算法,也可以。
3、ASIC也有类似rom这种ram单元啊,可以初始化一个固件值,中间再通过接口修改嘛。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 14:20 , Processed in 0.016674 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表