微信:HuangL1121
QQ号:1224848052
团队:MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做
地址:北京市-朝阳区-双柳北街18号院
当前位置:首页 > 通信信号 > FPGA代做-基于FPGA的FFT系统设计与实现
项目案例
FPGA代做-基于FPGA的FFT系统设计与实现
FPGA代做-基于FPGA的FFT系统设计与实现
产品说明:

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

       

      对我给的dat文件中的每列数据(一列数据是一个脉冲的回波信号)取每276个点做一次FFT处理(补01024个点做),然后对400列信号的FFT处理结果进行累加,再求模—选大—提取多普勒频率—进行风速解算,这样能达到的距离分辨率为75m左右,最后得到每75m一个风速信息

       根据你的要求,我首先使用MATLAB进行算法的仿真,将matlab的算法仿真结果作为我的FPGA设计的参考。另外,你这个数据太大了,MATLAB和FPGA读取这个数据进行仿真时间长的不得了,所以我根据论文上的资料模拟了一段数据,即276个补0,做1024FFT,然后对400列进行累加。

FFT核的设置:

       Xilinx FFT IPV7.1Xilinx公司配套其FPGA开发工具ISE14.1推出的,其最大的系统时钟频率达到了550MHz,最大的数据吞吐量达到550MSPS,最高可进行65536点的FFT运算,最大输入数据和相位因子位宽为34bit,支持所有的主流Xilinx FPGA芯片。同时,Xilinx FFT IPV7.1可以实现变换长度为N点实数或复数形式的FFT变换及FFT逆变换(IFFT)N的取值范围是(8~65536)。输入数据实部和虚部都要以位宽为M bits的二进制补码形式表示,M取值范围是(8~34);同样,相位因子位宽取值范围也是(8~34)。数据、相位因子以及输出数据重排序的缓存数据,在FFT实现的过程中,都可以用块RAM或者分布式RAM进行存储。对于Burst I/O结构, 块RAM可以存储任意点数的数据和相位因子,而分布式RAM则只能存储点数不大于1024点的数据和相位因子;对于Streaming I/O结构,可采用混合存储的方法,先选择使用块RAM存储器的阶数的数量,然后对剩余的采用分布式RAM

       Xilinx FFT IP核有四种结构可供选择,用户可以在逻辑资源使用的多少和转换时间的长短之间进行取舍,具体情况分别如下:

① 流水线,Streaming I/O结构:允许连续的数据处理,使用最多的逻辑资源。

② 基4Burst I/O结构:提供数据导入/导出阶段和处理阶段,导入数据和处理数据时单独进行的。此结构拥有较小的结构,但是转换时间较长。

③ 基2Burst I/O结构:使用较少的逻辑资源,同基4阶段,提供两阶段的过程。

④ 基2 Lite Burst I/O结构:这是一种基于基2结构的变体,采用了时分复用的方法使用了最少的逻辑资源,但是转换时间最长。

对于Burst I/O结构,使用DIT抽取法;流水线,Streaming I/O结构则使用DIF抽取法。

         在实际硬件操作中,模块的执行速度是很重要的参数,因此本文进行的是基于流水线,Streaming I/O结构的仿真验证,进行连续的数据处理。流水线,Streaming I/O结构对一系列基2蝶形处理引擎采用流水线技术设计,且每个蝶形处理引擎都有自己独立的存储体对输入数据和中间数据进行存储。这种结构下,FFT IP核具有同时处理当前帧N点数据,载入下一帧N点数据,输出前一帧N点数据的能力。

         对于基4结构,数据转换长度N=1024Scale_SCH=[01 10 00 11 10]则表示对阶0右移位2,对阶1右移位3,对阶2右移位0,对阶3右移位2,对阶4右移位1。经验总结(可以防止产生数据溢出):对于1024点的基4Burst I/O结构,Scale_SCH=[10 10 10 10 11];而对于1024点的基2结构,Scale_SCH=[01 01 01 01 01 01 01 01 01 10]

         对于流水线,Streaming I/O结构,把临近的一对基2阶组在一起,即阶0和阶1为组0,阶2和阶3为组1,等等。Scale_SCH的表示方法:对于每一组的压缩比都由指定的一个2 bit的数表示,零组的2 bit数为最低位,具体形式为[?N4,N3,N2,N1,N0],每一个2 bit数分别对应着相应组的压缩比,表示同组内的两个基2阶有相同的压缩比。例:数据长度N=1024Scale_SCH=[10 10 00 01 11]表示对组0(阶0和阶1)右移位3,对组1(阶2和阶3)右移位1,对组2(阶4和阶5)没有移位,对组3(阶6和阶7)右移位2,对组4(阶8和阶9)右移位2。若变换长度N不是4的幂次方的时候,最后一组只包含一个基2阶,只能用00或者01表示。经验总结(可以防止产生数据溢出):N=512时,Scale_SCH=[01 10 10 10 11]N=1024时,Scale_SCH=[10 10 10 10 11]

         压缩比例Scale_SCH的位宽,对于流水线,Streaming I/O结构和基4Burst I/O结构,为2*ceil(0.5*log2(N));对于基2Burst I/O结构和基2 Lite Burst I/O结构,为2*log2(N),其中N为转换数据长度。

 

 

接口说明:

信号名称

XN_RE

 Input

 输入操作数实部,以2的补码输入。

 

XN_IM

 Input

 输入操作数虚部,以2的补码输入。

 

START

 Input

 当此信号变高时,开始输入数据,随后直

 

接进行FFT 转换操作和数据输出

 

SCALE_SCH

 Input

 进行数据缩减运算有用,其总的效果是输出结果/N

 

SCALE_SCH_WE

 Input

 作为SCALE_SCH 的使能信号

 

FWD_INV

 Input

 用以指示IP CoreFFT还是IFFT, 1FFT

 

UNLOAD

 Input

 对于Burst I/O结构,此信号将开始以自然顺序输出处理的结果。对于流水线结构和比特逆序输出的情况,此端口不是必要的。

 

FWD_INV_WE

 Input

 作为FWD_INV端口的使能信号

 

RESET

 Input

 FFT核复位信号

 

CLK

 Input

 工作时钟,与输入数据流有关

 

XK_RE

 Output

 输出数据总线实部,以2的补码输出

 

XK_IM

 Output

 输出数据总线虚部,以2的补码输出

 

XN_INDEX

 Output

 位宽等于log2(N),输入数据的下标

 

XK_INDEX

 Output

 位宽等于log2(N),输出数据的下标

 

RFD

 Output

 输入数据有效信号,高电平有效

 

DV

 Output

 输出数据有效指示信号,当输出端口存在有效数据时变高

 

BUSY

 Output

 IP Core 工作状态的指示信号,在进行FFT转换时为高电平

 

EDONE

 Output

 高有效。在DONE信号变高的前一个时钟变为高电平

 

DONE

 Output

 高有效。在FFT完成后变高,且只存在一个时钟。在DONE变高后,IP Core 开始输出计算结果。


上一篇:MATLAB代做|空域变换-图像亮度均衡

版权所有: MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做 Copyright © 2019 All rights reserved.
微信:HuangL1121 QQ:1224848052
地址:北京市-朝阳区-双柳北街18号院

扫一扫,关注我们