打印

Help!!这段算法的FPGA 实现!

[复制链接]
2273|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cuianbin|  楼主 | 2013-3-8 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FPGA, TE, hm, TI, RF
FPGA 做算法,真的是让人难受!
iii=0;
while iteration > 0
    iii=iii+1;
    suma = 0;
    sumb = 0;
    for i = 1:1:frequencyN
   
    frqth = Vb(i);
   denominator = (Vb(i)-primaryIteration)*(Vb(i)-primaryIteration) + FWHM*FWHM;
    f(i) = testValue(i)- FWHM*FWHM / denominator ;
    derf(i)=(-2*gain*FWHM*FWHM*(Vb(i)-primaryIteration)/ (denominator*denominator));    suma = suma + f(i) * derf(i);
    sumb = sumb + derf(i) * derf(i) ;
    end
step = -suma/sumb;
我的终极目标是 让以上这段迭代代码用FPGA 实现,可是我学了两个礼拜的DSPbuilder 悲催的发现,也不好实现,里面出现了除法!  
就这么几行代码,用ARM  很快就搞定了,FPGA怎么这么难呢  没有思路啊 没有思路!!! 大神们支个招吧 不想用嵌入式软核去算,还得增加SDRAM

相关帖子

沙发
drentsi| | 2013-3-8 19:24 | 只看该作者
这是算法设计的问题,用了多个除法,尽量把除法去掉。
除法是非常难缠的,别看在ARM上代码写起来简单,执行起来就非常慢了,即使在最快的CPU哪怕是在显卡上,都会非常慢的。

使用特权

评论回复
板凳
GoldSunMonkey| | 2013-3-8 21:12 | 只看该作者
drentsi 发表于 2013-3-8 19:24
这是算法设计的问题,用了多个除法,尽量把除法去掉。
除法是非常难缠的,别看在ARM上代码写起来简单,执行 ...

这个是实话啊

使用特权

评论回复
地板
cuianbin|  楼主 | 2013-3-9 11:31 | 只看该作者
drentsi 发表于 2013-3-8 19:24
这是算法设计的问题,用了多个除法,尽量把除法去掉。
除法是非常难缠的,别看在ARM上代码写起来简单,执行 ...

受教了,在尝试修改算法!把除法去掉

使用特权

评论回复
5
GoldSunMonkey| | 2013-3-9 21:54 | 只看该作者
cuianbin 发表于 2013-3-9 11:31
受教了,在尝试修改算法!把除法去掉

头像很性感

使用特权

评论回复
6
cuianbin|  楼主 | 2013-3-10 08:01 | 只看该作者
GoldSunMonkey 发表于 2013-3-9 21:54
头像很性感

哈哈,借用了下韩国大明星张东健年轻时的脑袋,不过现在他老了

使用特权

评论回复
7
zyj_hb| | 2013-3-10 13:29 | 只看该作者
可以试试用task或function做成固定的电路功能。然后像C语言里调用子函数一样调用功能模块。上周刚用task试了一下前导零电路的实现,发现挺好用的。还有我记得以前看到有人说for语句是没办法综合的。我在ISE上实际操作了一下。用verilog写了for语句实现优先编码,可以实现综合。在ISE综合后得到的是组合电路,并下载X3SC500上,可行。

使用特权

评论回复
8
cuianbin|  楼主 | 2013-3-11 20:24 | 只看该作者
zyj_hb 发表于 2013-3-10 13:29
可以试试用task或function做成固定的电路功能。然后像C语言里调用子函数一样调用功能模块。上周刚用task试 ...

问题在于除法的实现

使用特权

评论回复
9
lwq030736| | 2013-3-11 21:57 | 只看该作者
你学了DSPbuider的话就用DSPbuider做就可以了,最简单的就是一级一级地做,选好用于运算的定点数的精度就行
如果非要用除法的话可能要加一个比较长的流水线延迟
对速度没要求的话还是能实现的

使用特权

评论回复
10
cuianbin|  楼主 | 2013-3-12 14:45 | 只看该作者
lwq030736 发表于 2013-3-11 21:57
你学了DSPbuider的话就用DSPbuider做就可以了,最简单的就是一级一级地做,选好用于运算的定点数的精度就行 ...

您说的一级级的做具体是怎么个执行法? 我看DSPbuilder中的除法模块 也是只整出个余数和商来。除一次,只搞出个余数和商,很让人无奈。

使用特权

评论回复
11
lwq030736| | 2013-3-12 14:53 | 只看该作者
cuianbin 发表于 2013-3-12 14:45
您说的一级级的做具体是怎么个执行法? 我看DSPbuilder中的除法模块 也是只整出个余数和商来。除一次,只 ...

FPGA做的除法本来就是给余数和商的,没小数的
你要根据你的精度要求把被除数放大2的n次方倍,自己给自己定个小数点
比如111.000000001,你看下定点数的小数怎么表示的就知道了

使用特权

评论回复
12
lwq030736| | 2013-3-12 15:32 | 只看该作者
好像之前跟你讲过了

使用特权

评论回复
13
cuianbin|  楼主 | 2013-3-12 15:50 | 只看该作者
lwq030736 发表于 2013-3-12 14:53
FPGA做的除法本来就是给余数和商的,没小数的
你要根据你的精度要求把被除数放大2的n次方倍,自己给自己 ...

我理解的您的意思是: 10/3,结果是3.3333. 但是FPGA 只会给出两个数 商是3 余数是1.  如果我 把10 乘以2的10次方,也就是被除数右移10位,再除以3,那么会得到的商是3413,余数是1.   商3413 转换成2进制后 再左移10位,得到的数,转换成小数,与3.3333 更加接近!

我有两个疑问: 余数是否直接丢掉了,只拿商与后面的数做运算?
               整个思路,就是通过扩大缩小,让除数和被除数都转化成整数,进行运算,最后再通过移位移回到真实的数值?
                 DSP builder 里面除法模块数据类型有 Signed  Fractional     这种数据类型,整数位和小数位分别表示。 如果我采用这种类型,得到商和余数,又该如何处理呢?

使用特权

评论回复
14
cuianbin|  楼主 | 2013-3-12 15:57 | 只看该作者
lwq030736 发表于 2013-3-12 15:32
好像之前跟你讲过了

是的,谢谢您! 当时理解不太透彻。一直没有实现。 我尝试着用DSP builder 做算法,学习了一段时间后,发现 除法照样是给出余数和商,有点失望。我又重新回过头来看! 我打算根据你说的再做一下。

使用特权

评论回复
15
lwq030736| | 2013-3-12 16:20 | 只看该作者
cuianbin 发表于 2013-3-12 15:50
我理解的您的意思是: 10/3,结果是3.3333. 但是FPGA 只会给出两个数 商是3 余数是1.  如果我 把10 乘以2的 ...

余数不要了,直接丢掉

使用特权

评论回复
16
cuianbin|  楼主 | 2013-3-12 16:21 | 只看该作者
lwq030736 发表于 2013-3-12 16:20
余数不要了,直接丢掉

好的!!

使用特权

评论回复
17
lwq030736| | 2013-3-12 16:22 | 只看该作者
cuianbin 发表于 2013-3-12 15:57
是的,谢谢您! 当时理解不太透彻。一直没有实现。 我尝试着用DSP builder 做算法,学习了一段时间后,发 ...

你可以先做一些简单的例子,验证一下
不必一开始就做你上面给的那个公式

使用特权

评论回复
18
cuianbin|  楼主 | 2013-3-12 16:49 | 只看该作者
lwq030736 发表于 2013-3-12 16:22
你可以先做一些简单的例子,验证一下
不必一开始就做你上面给的那个公式 ...

嗯 好的,这段时间 我就着手做仿真,此贴暂时不结,我有了新的认识,再来和你讨论。谢谢!

使用特权

评论回复
19
GoldSunMonkey| | 2013-3-12 21:06 | 只看该作者
cuianbin 发表于 2013-3-12 16:49
嗯 好的,这段时间 我就着手做仿真,此贴暂时不结,我有了新的认识,再来和你讨论。谢谢! ...

到時候多來分享啊

使用特权

评论回复
20
cuianbin|  楼主 | 2013-3-13 08:37 | 只看该作者
GoldSunMonkey 发表于 2013-3-12 21:06
到時候多來分享啊

必须的!

使用特权

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

本版积分规则

个人签名:来到这个论坛,乐于分享,好好学习!!

86

主题

439

帖子

5

粉丝