作者:桂。

时间: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. python多进程和多线程

    多任务才有多进程和线程: 线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 多进程和多线程的程序涉及到同步.数据共享 ...

  2. Codeforces 585D Lizard Era: Beginning

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

  3. Codeforces 1102F Elongated Matrix 状压dp

    Elongated Matrix 预处理一下两两之间的最小值, 然后直接dp. #include<bits/stdc++.h> #define LL long long #define f ...

  4. Mysql索引为什么用B+树而不用B-树

    先从数据结构的角度来看 我们知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. 这就决定了B+树更适合用来存储外部数据,也就是所 ...

  5. 【*】Redis实战场景中相关问题

    一.Redis简介 redis主要解决的问题 分布式缓存是分布式系统中的重要组件,主要解决高并发.大数据场景下,热点数据访问的性能问题,提供高性能的数据快速访问. 使用缓存常见场景 项目中部分数据访问 ...

  6. shell 安装使用VIM

    安装:http://jingyan.baidu.com/article/046a7b3efd165bf9c27fa915.html ubuntu系统: 普通用户下输入命令:sudo apt-get i ...

  7. 潭州课堂25班:Ph201805201 WEB 之 jQuery 第七课 (课堂笔记)

    jq 的导入 <body> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js">< ...

  8. Cocos Creator代码编辑环境配置

    1,可以使用较为适合js的webstorm,亦可以采用VS: 2,若需要webstorm,在下载之后,在文件,设置内外部编辑器选用webstorm.exe,即可: 3,Visual Studio Co ...

  9. Kaggle Titanic solution 纯规则学习

    其实就是把train.csv拿出来看了看,找了找规律,调了调参数而已. 找到如下规律: 1.男的容易死,女的容易活 2.一等舱活,三等舱死 3.老人死,小孩活 4.兄弟姐妹多者死 5.票价高的活 6. ...

  10. 添加 vip

    两台机器:172.16.91.101 172.16.91.107 在91.101上增加虚拟ip,92网段的 ifconfig eth0:1 172.16.92.2 netmask 255.255.25 ...