
FPGA
文章平均质量分 62
renggang
这个作者很懒,什么都没留下…
展开
-
几个基础点(FFT8)
前阵子纠结在c语言的思路里难以自拔,其实硬件电路语言综合了c语言的串行思维,和电路的并行思维。在完全copy c语言时,用到的for语句,在fpga综合时不推荐使用,因为电脑只是很笨地把for里的电路复制了n遍,并没有利用的概念。同理对于functino的调用,调用几次也会直接复制几次电路,这在实际设计中会浪费大量资源。这些基础的东西,却是很重要。自己摸索,慢慢来吧。 逻辑大致理清,下一步要做原创 2011-11-17 19:54:27 · 1676 阅读 · 0 评论 -
基2蝶算模块(fft8)
满眼的管脚线看得眼晕,尤其是在测试的时候,才发现测试对象的思考更纠结。对于蝶算模块,其功能是由控制器输出4个控制计数,butter_fly在每一个时钟接收一组数。内部设两级缓存交替存储输入,同时计算出结果按原址存到ram里。如下图所示:对于cmul,每个时钟接收8个数据,异步得出结果。基二的蝶型公式是 A=A+B*Wn, A=A-B*Wn,涉及到小数运算,将小数定标,提高64倍,考虑到原创 2011-11-18 18:26:22 · 1930 阅读 · 2 评论 -
出发
一个人摸索,很纠结,不过许许多多的先辈就是这样过来的,也没有什么好抱怨。开始这个技术贴,记录点滴的今天。明天依旧未知,只知道一路埋头前行,不管前方是怎么的风景。原创 2011-10-24 17:07:23 · 530 阅读 · 0 评论 -
DIT基2点fft的编程实现
找了很多资料,发现这个最有用,思路简单清晰,结合自己的理解贴出来。彻底弄懂基2点流程之后,基4也就不难。下一次贴出基4FFT编程实现。蝶形公式:X(K) = X’(K) + X’(K+B)W PN , X(K+B) = X’(K) - X’(K+B) W PN 其中W PN= cos(2πP/N)- jsin(2πP/N)。设 X(K+B) = XR(K+B) + jXI(转载 2011-11-03 12:34:28 · 4580 阅读 · 0 评论 -
关于FFT IP CORE的记忆(altera fft ip core配置)
现成的东西已经很高端了,自己编的怎么也不好,就像别人家的孩子一样。IP CORE有最优化的代码,效率和资源的兼顾,所以君子性非异也,善假于物也。之前实验了很久结果老是不对,费尽了各种周折,最终知道自己的测试方法不对。ip core是根所实际信号优化过的,所以要加以实际信号,如正弦波,而我的思路还停留在教书。展开来说,ip core对于小信号不敏感,比如对于N点fft,输入N个1和输入N个2,结原创 2012-03-28 16:21:17 · 11940 阅读 · 19 评论 -
小小的注意点(持续更新)
verilog&quartus1. 使用signed的符号,如将 b[12]和b均是带符号的数时,可以直接赋值,其符号位也会自动变换。2. 做移动运算是要注意移位的对象是否为负值,如果是负值,移位后的结果将不会是“*2^-n”的效果。要想得到这种效果,需要将负数变成正数,移位,再将结果变成负数---------------------------------原创 2012-04-18 18:41:29 · 714 阅读 · 0 评论 -
CORDIC的FPGA实现
输入:I,Q,输出:相位,幅度 CORDIC算法的核心在于利用加减和位移运算(对于FPGA很合适的运算),计算一个矢量的相位和幅度。我们知道FPGA上没有开根号这样的运算,所以如果给定I,Q信号,计算其幅度sqrt(I^2+Q^2),无法直接使用该公式。一个矢量P0旋转一定角度后变为P1,其坐标的关系如下:每一步移动一个角度,角度越小,移位的越大。在N步的计算中,K原创 2012-04-18 19:32:46 · 9339 阅读 · 2 评论