1. 如何用cordic算法实现高斯核函数
核函数一般是为了解决维度过高导致的计算能力不足的缺陷,实质就是特征向量内积的平方。
2. 求利用cordic算法来得到自然对数in(t)的verilog代码,数据输入是16位
其实我也想知道。。。最近一直被这个问题困惑。cordicIP 对输入数据有要求。
http://wenku..com/link?url=_
详情参考以上链接
python">wirea,b;
regc,d;
wire[15:0]n;
reg[15:0]m;
reg[31:0]data;
reg[47:0]datab;
wire[23:0]odata;
cordic_1arctanh(
.aclk(clk),//inputwireaclk
.s_axis_cartesian_tvalid(c),//inputwires_axis_cartesian_tvalid
.s_axis_cartesian_tuser(m),//inputwire[15:0]s_axis_cartesian_tuser
.s_axis_cartesian_tlast(d),//inputwires_axis_cartesian_tlast
.s_axis_cartesian_tdata(datab),//inputwire[31:0]s_axis_cartesian_tdata
.m_axis_dout_tvalid(a),//outputwirem_axis_dout_tvalid
.m_axis_dout_tuser(n),//outputwire[15:0]m_axis_dout_tuser
.m_axis_dout_tlast(b),//outputwirem_axis_dout_tlast
.m_axis_dout_tdata(odata)//outputwire[15:0]m_axis_dout_tdata
);
initialbegin
#200c=1;
d=0;
m=0;
datab=48'h0a00004a0000;
#20datab=48'h000000580000;
end
3. cordic.算法什么时候作用到蓝牙中
Cordic算法是坐标旋转数字计算方法,之前是用来进行坐标变换的算法。之后经过发展可以进行很多其他的数学运算。Cordic的可以用迭代计算很多数学运算。但是真正cordic比较牛的地方,是可以用硬件来实现。从以上的伪代码,可看出,x和y的运算有个乘以2^(-i)的这个因子。而这个因子,在硬件中,只要是乘以2,或者除以2,都是通过简单的右移和左移来实现的。这样,迭代就简单的用移位,加法实现了。而atan(1/2^i),这个因子,因为i的值是固定从整数0到我们需要迭代次数的值。因此,对于确定的每个迭代i,这个atan(1/2^i)是个确定的值。因此,我们可以将这些预先知道的值存进一个rom里面,然后再调用的时候在用就行了。这样的话,就发现,cordic算法,用硬件来实现就很简单了。只需要移位,加法,查表,然后再迭代,就可以得出我们想要的结果了。
4. 请教CORDIC算法
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数、双曲线、指数、对数的计算。该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数、乘法、开方、反三角、指数等函数。
5. 有木有学过cordic算法的,用Verilog实现了的!
ise自带cordic IP核,不用自己实现吧。
6. 如何用fpga实现sin函数
两条路
第一条路:如果需要一个cycle出答案,用FPGA实现一块ROM做一张lookuptable。地址输入角度值,在ROM中对应的地址放对应的sin的值。该方法对于0-90度的每一个可能的输入于输入角度值,需要在ROM中做一个entry。当然你也可以做一点近似。在90度附近,由于sin的变化率小,entry可以少放一点,在0度附近的采样多放一些
第二条路:Cordic算法,这是一种迭代算法,通过不同的迭代次数可以实现不同的精度。迭代越多,精度越高。但是因为是迭代算法,不能一个周期出结果。
对于cordic算法可以参照一下网页的介绍
网页链接
7. 怎么用cordic算法实现dds matlab
时序要求:
写地址、数据、命令时,nCE、nWE信号必须为低电平,它们在nWE信号的上升沿被锁存。命令锁存使能信号CLE和地址锁存信号ALE用来区分I/O引脚上传输的是命令还是地址。
8. 怎么用verilog实现cos,sin等三角函数
最简单的,用NCO,直接可以产生正弦波和余弦波
自己做也很简单。存一个周期的正弦波数据到ROM中(也可以存1/4周期,新手建议还是一个周期简单些)比如1024个点,然后你用一个递增的地址去去这个ROM中的数据,出来的数据经过DA就是波形了,三角波原理类似。出来的波形频率是根据你的采样频率和你ROM中的波形点数有关的,如果你1024个点都才出来的话(其实不需要采这么多点),你的采样频率是50MHz,那么出来的波形频率就是50MHz/1024了,当然其实你一个周期不需要采1024个点,有几十个就够了,关键在于你的rom地址是怎么增加的,步进式多少。
做的更好一点的DDS就是可以采样出任意频率(理论上)的波形,也就是说采样频率不一定要是才出来的波形频率的整数倍,那就相对难一点了,不过也不是很复杂~~~~呵呵~~~~
一句话,关键在于你的地址是怎么递增的!
9. FPGA后面DA的程序设计问题,望高手指导!!
不知道你具体想要干什么,只能简单说下:根据你的设计需求选取一个DA芯片(问老师),每个芯片都有配套的手册,上面写了使用方法,包括输入输出管脚,输入输出信号的格式,每个管脚的外围电路怎么连,最重要的提供芯片的内部配置(就是配置DA芯片的寄存器)。自己编写硬件描述语言配准DA芯片,FPGA连接DA。
比如我现在用的CH7301是DVI接口的DA芯片,使用VHDL语言,根据IIC总线协议配置 CH7301的工作方式。 还是比较麻烦的。
10. 如何用CORDIC的FPGA算法计算平方和开根号
用向量模式cordic算法
输入x,y
输出x即为伸缩系数乘以sqrt(x^2+y^2)