打印

FPGA与C++

[复制链接]
3793|8
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zjp8683463| | 2010-7-7 22:26 | 只看该作者
如果你要深入学FPGA的话还是学HDL,如果只是某个项目用到一些不复杂FPGA的话,有高级语言的编译器.
甚至用labview都可以.

使用特权

评论回复
板凳
wajtmusic|  楼主 | 2010-7-20 16:07 | 只看该作者
zjp8683463
假如有段在PC可以运行的C++算法程序,我现在想把它移植到FPGA上运行,你知道有这样的编译器吗?

使用特权

评论回复
地板
sleepybear| | 2010-7-20 16:36 | 只看该作者
还是自己老老实实用HDL设计实现吧。。。
Altera的有DSP Builder,Xilinx有 Accel DSP,都是把matlab的转化成HDL代码的。但是,一来对输入语法有要求;二来,输出的模块端口也是相当标准,一般情况下都要做一定的接口工作,有时候很麻烦。要是跑个流程,学习学习还行。真做项目,不推荐。如果是简单算法,直接用HDL没多少工作量;如果算法比较复杂,用工具生成的,一来资源耗费多;二来可控性太差,接口工作量大。

使用特权

评论回复
5
wajtmusic|  楼主 | 2010-7-21 13:53 | 只看该作者
sleepybear
熟悉用FPGA做算法吗?假如一段算法在PC上运行很慢,假如把它移植到FPGA上运行,这样会比在PC上运行快吗?

使用特权

评论回复
6
钻研的鱼| | 2010-7-22 08:26 | 只看该作者
没有具体的环境,这怎么对比?好像鳄鱼和老虎,谁厉害?

使用特权

评论回复
7
wajtmusic|  楼主 | 2010-7-22 08:56 | 只看该作者
可以说一些你曾经移植过的,然后比较他们的运行速度。从理论上来解释的话,因为PC上的CPU好像是没有乘法器,但是FPGA上有乘法器,这样遇到一些具有很多乘法运算的算法是不是就会快点呢?(不知道这样的推断不知道对不对?)

使用特权

评论回复
8
sleepybear| | 2010-7-22 12:41 | 只看该作者
CPU硬件是定死的,你只能通过指令去完成你的算法。为了保证其通用性,CPU设计时采用了大量的冗余逻辑,针对其中某一种计算操作都不可能是最优的。
你一个指令需要好几个时钟周期,涉及到数据量大的算法,还有很多存储操作(Cache——内存——磁盘等几级存储的交互,开销一个比一个大,能差几个数量级),不是一般的慢。
FPGA纯硬件,不是软件指令级的操作能比的。这么说吧,FPGA设计是比汇编还要底层的设计层次,这个你能理解吧?
举个例子,我们用FPGA做的硬件下变换,可以做到超实时(正常的1080i转PAL的,每秒25帧,我们可以做到50帧,甚至更高。这里指的是一路),而软件部门做的算法做不到实时,经过大量优化后,在一个双6核平台上才能跑到实时(差不多35帧左右)。注意,我们做的是高质量下变换,不是简单的抽点、bob、weave这些的。

使用特权

评论回复
9
ETETETT| | 2010-8-24 13:55 | 只看该作者
LS说的很对。

在Xilinx新的带ARM Core的FPGA出来之后LZ的这种应用可能能有所改观。软件自动运算出最耗时的function,尝试用FPGA硬件来实现这一部分最耗时的功能,其他代码由ARM执行,尽量减少代码的改动。

但是要等到一个完美可用的Solution出现,可能不是近两年可以盼到的。现在还是得手工做。

使用特权

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

本版积分规则

263

主题

754

帖子

2

粉丝