作者:桂。

时间:2018-05-09  07:20:48

链接:http://www.cnblogs.com/xingshansi/p/9012232.html


前言

简要记录xilinx FFT的IP核使用。参考:pg109-xfft.pdf

一、综述

支持FFT点数(8~65536):

精度:

三种工作模式:

  • 浮点(Full-precision unscaled arithmetic):动态最大,电路最复杂
  • 定点(Scaled fixed-point):动态最小,电路最简单,默认scaled. 其中scaling 因此由s_axis_config_tdata配置(具体设置见:二、管脚描述)。
  • 块浮点(Block floating-point):介于定点与浮点之间,是一种折中思路,例如对于16bit定点数17, 17 =  0.5313*25,取小数位7bit,指数为4bit,

0.5313 -> 7bit, 5 -> 4bit, 这样11bit便近似表示了16bit的特性。因此块浮点通常也可用于数据压缩传输技术。

根据表达式特性,FFT结构均可实现IFFT:

内部实现结构为基2、基4、混合基(前级基4+最后一层为基2):

对于Burst I/O结构,采用DIT(decimation-in-time)思路; 对于pipelined streaming I/O结构,采用DIF(decimation-in-frequency)思路。这一点可根据Xilinx 常用模块汇总(verilog)【02】一文的结构图来理解,流水的自然相邻的一起处理,Burst则无此限制。

 二、管脚描述

其中s:slave(从),m:master(主)。 s_axis_config_tdata具体参数:

其中NFFT、CP_LEN为optional,各预留8bit,FWD/INV为确定,例如FWD/INV为3bit,则总共占用19bits. s_axis_config_tdata参数举例

A core has a configurable transform size with a maximum size of 128 points, cyclic prefix insertion and 3 FFT channels. The core needs to be configured to do an 8 point transform, with an inverse transform performed on channels 0 and 1, and a forward transform performed on channel 2. A 4 point cyclic prefix is required.

分析

其中CP_LEN(cyclic prefix length,例如长度1024,则CP_LEN取值0~1023)。由于是8点FFT,根据下表:

确定NFFT:00011 ,由于各个参数8bit,因此padding-000,000 00011

确定CP_LEN:8点FFT,4 point cyclic prefix is required,因此对于128点,CP_LEN为64,1000000,补齐8bit:01000000

确定FWD/INV:3channels,且1代表FFT,0代表IFFT,因此:100,补齐8bit:00000100

确定SCALE_SCH

1. For Burst I/O architectures, the scaling schedule is specified with two bits for each stage, with the scaling for the first stage given by the two LSBs.

2. The scaling can be specified as 3, 2, 1, or 0, which represents the number of bits to be shifted.

3. An example scaling schedule for N =1024, Radix-4, Burst I/O is [1 0 2 3 2] (ordered from last to first stage).

4. For N =128, Radix-2, Burst I/O or Radix-2 Lite, Burst I/O, one possible scaling schedule is [1 1 1 1 0 1 2] (ordered from last to first stage).

5. For Pipelined, Streaming I/O architecture, the scaling schedule is specified with two bits for every pair of Radix-2 stages, starting at the two LSBs. For example, a scaling schedule for N = 256 could be [2 2 2 3]. When N is not a power of 4, the maximum bit growth for the last stage is one bit. For instance, [0 2 2 2 2] or [1 2 2 2 2] are valid scaling schedules for N = 512, but [2 2 2 2 2] is invalid. For this transform length. the two MSBs of SCALE_SCH can only be 00 or 01.

6. This port is only available with scaled arithmetic (not unscaled, block floating-point or single precision floating-point).

三、仿真测试

假设需要2通道8点的FFT运算,通道1进行FFT,通道2进行IFFT,不考虑CP_LEN:

仿真测试,对应us_axis_config_tdata,不包含CP_LEN,不考虑缩放,[ FWD/INV, NFFT ] = [00000000,0 01 00011]【此处参数设置有误,待细究。】,仿真结果:

FFT输出结果:

详细参考:印象笔记:1/0019/013

基础006_pg109_IP-Xfft的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. Codeforces 585D Lizard Era: Beginning

    Lizard Era: Beginning 折半之后搜就完事了, 直接存string字符串卡空间, 随便卡卡空间吧. #include<bits/stdc++.h> #define LL ...

  2. BZOJ1786 [Ahoi2008]Pair 配对 动态规划 逆序对

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1786 题意概括 给出长度为n的数列,只会出现1~k这些正整数.现在有些数写成了-1,这些-1可以变 ...

  3. oracle中tables和views的区别

    tables存储的行和列的数据,可以做任何操作 views存储的是算法,是虚拟的数据

  4. linux centOS服务器部署ssh,免密码登陆linux

    登陆centos,切换用户,切换到你要免密码登陆的用户,进入到家目录 2 创建钥匙, [xun@jzlinux ~]$ ssh-keygen -t rsa Generating public/priv ...

  5. 如何在MacBook的以太网端口上成功运行DHCP服务器?

    我的目标是在我的MacBook以太网端口上安装一个以太网交换机,我将通过DHCP连接几个Raspberry Pi连接,每个都将运行VNC服务器进行远程访问,我希望我的互联网可以从我的MacBook的W ...

  6. Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)

    jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...

  7. 通过 DOM

    通过 DOM,您可访问 HTML 文档中的每个节点. 查找并访问节点 你可通过若干种方法来查找您希望操作的元素: 通过使用 getElementById() 和 getElementsByTagNam ...

  8. 基于zepto的移动端轻量级日期插件

    前言 做过移动Web开发的同学都知道,移动端日期选择是很常见的需求.在PC端,我们有很丰富的选择,比较出名的就有Mobiscroll和jQuery UI Datepicker.个人看来,这些插件存在的 ...

  9. Gephi可视化(二)

    继在园子里写的<Gephi可视化(一)——使用Gephi Toolkit创建Gephi应用>介绍了如何使用Gephi Toolkit工具集进行可视化编程后,本篇对Gephi Toolkit ...

  10. Python学习——Python线程

    一.线程创建 #方法一:将要执行的方法作为参数传给Thread的构造方法 import threading import time def show(arg): time.sleep(2) print ...