微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > n维向量的求模

n维向量的求模

时间:10-02 整理:3721RD 点击:
n维向量(a1+b1*i,a2+b2*i,a3+b3*i,......,an+bn*i)的模值的求解,请教有没有相关的硬件实现算法

【1】至今没见过通用意义上的模值运算特别算法,因为这类算法基本都得是数学意义上可化简的。
假设你是欧式空间的定点数求模,需要计算每一级的(an+bn*i)^2,  一个乘一个加,Bn*i不需要乘法, 然后N级流水。特别注意每一级计算结果的小数点后puncture,overflow和underflow处理,会影响精度和正确性。
【2】如果想全并行,直接转化为二叉树的结构,total=delay = log2(N) * delay[(an+bn*i)^2 + (am+bm*i)^2].  根本没必要化简原子操作,gate-count不会有明显区别,反而增加乘加延时。当然肯定是multi-cycle
【3】有一种特殊的方法是,对于每一级的输入,变量有三个an,bn,i. 如果你们应用中三个变量计算完的f(n,i)=an+bn*i结果可以在一个相对稳定的区间,并且最后的结果精度可以保证,可以考虑直接使用f(n,i)的LUT去做。
【4】如果你们有算法组,可以让他们评估一下直接计算,和取Log计算的最终结果有何区别,因为如果log运算可以,【3】中的方法一般来讲是可行的

补习了下维基百科:
向量的模长[编辑]主条目:范数

向量的大小也叫做范数或者模长,有限维空间中,已知向量的坐标,就可以知道它的模长。设向量{\displaystyle {\vec {v}}=(v_{1},v_{2},\cdots ,v_{n})}

范数记作:{\displaystyle \left\|{\vec {v}}\right\|}

模长记作:{\displaystyle \left|{\vec {v}}\right|}

计算表达式由弗罗贝尼乌斯范数(一种同时适用于向量和矩阵的范数计算方法)给出: {\displaystyle \left\|{\vec {v}}\right\|={\sqrt {v_{1}^{2}+v_{2}^{2}+\cdots +v_{n}^{2}}}}
[4]
或: {\displaystyle \left|{\vec {v}}\right|={\sqrt {v_{1}^{2}+v_{2}^{2}+\cdots +v_{n}^{2}}}}


向量的每一个分量也可以是N 维向量,多谢小编。
我想小编想问的应该是复数开方在FPGA中实现的问题,这个确实没想过,大家可以集思广益。

能否问一下,小编这种n维向量求模应用到哪个领域呢?

小编,我推导了一下,你所列的n维向量求模。
发现最后应该是有四个解。具体的求解过程略掉。
求模值平方如“masaka_xlw”所列,不再赘述。
在最后的复数开方的过程中,会用到 sqrt 和除法
这里sqrt推荐cordic, 除法推荐LUT法
希望能有帮助。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top