基-2 16点fft的verilog实现

本文介绍了一个使用Verilog实现的16点基-2 FFT,涉及8位输入和输出,利用ROM存储旋转因子,RAM存储实部和虚部数据。通过状态机控制11个状态完成蝶形运算,最后输出结果与MATLAB计算对比,误差在可接受范围内。文章探讨了误差来源及改进方案,并提到可使用IP核提高运算效率。
摘要由CSDN通过智能技术生成

本文是采用输入8位数据,输出8位数据的16点fft实现,旋转因子采用8位rom存储,分为cos和sin2个rom存储;输入数据以及每一级的输出数据采用8位的ram进行存储,分为实部和虚部进行存储。采用顺序输入,那么输出则为倒序。

生成rom,可先在matlab中,计算出cos和sin的值,然后写入coe文件,再由ip核生成,具体过程自行百度,懒得百度的话,可以发我的邮箱来获得具体的程序。因为本文采用的16点的fft,点数比较少,所以自己动动手就可以写一个rom了,就可以不用上面的步骤。

生成ram,使用ip核生成与生成rom的过程类似,也是要先获取coe文件,来初始化ram。当然,本文点数比较少,又偷懒了,自己写了一个小ram,初始化ram的值即为输入数据的值。读写分离,即只能读或者只能写。

乘法器单元,采用8x8的带符号的四个乘法器,分别计算real*cos,real*sin,imag*cos,imag*sin。当然这个用ip核生成,自己写的话,是比较麻烦的。

接下来就是控制单元,使用状态机来实现,分为11个状态(s0-s10),其中s0-s9来完成一次蝶形单元的计算,s10为停止状态。当然就可以计算出总共的时间为T*10*8*4(T为时钟周

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值