基础006_pg109_IP-Xfft
作者:桂。
时间: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的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- 存储过程,存储函数(Oracle)
存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 存储过程和存储函数的区别? 存储函数:可以通过return 语句返回函数值. 存储过程:不能 除此之外我们可以认为 ...
- Spring日记_01 之基于maven的Spring环境搭建
阿里云镜像:maven.aliyun.com 添加Spring坐标: Spring 是java组件容器,Java饭馆 使用者可以通过getBean(对象ID) 获得Date对象,而不需要自己去new ...
- Burp Suite之爬网模块(二)
Spider功能 Burp Spider爬网介绍 Burp Spider 是一个映射 web 应用程序的工具.它使用多种智能技术对一个应用程序的内容和功能进行全面的清查. 通过跟踪 HTML 和 Ja ...
- C++雾中风景11:厘清C++类型转换(static_cast,dynamic_cast,reinterpret_cast,const_cast)
C++是一门弱类型的语言,提供了许多复杂和灵巧类型转换的方式.笔者之前写的Python与Go都是强类型的语言,对这种弱类型的设计实在是接受无力啊~~ ( 生活所迫,工作还得写C++啊~~)C++语言提 ...
- js基础梳理-内存空间
我估计有很多像我这样非计算机专业的人进入到前端之后,总是在写业务代码,思考什么什么效果如何实现,导致很多基础概念型的东西都理解得并不太清楚.经常一碰到群里讨论的些笔试题什么的,总觉得自己像是一个假前端 ...
- Java中A instanceof B是什么意思?
instanceof用来判断内存中实际对象A是不是B类型 出现这种情况经常是需要强制转换的时候class Dog extends Animal譬如dog定义了自己的方法wangwang Animal ...
- RecylerView动画组件RecylerViewAnimators
RecylerView动画组件RecylerViewAnimators RecyclerView是比ListView和GridView更为强大的布局视图,可以用于展现大量的数据.RecylerVi ...
- OSINT系列:威胁信息挖掘ThreatMiner
OSINT系列:威胁信息挖掘ThreatMiner ThreatMiner.org是一个非营利性组织.它收集各种开放的网络信息和安全信息,然后进行整理,供安全人员检索.它可以提供六大类.十八小类 ...
- 运营商DNS系统安全解决方案
DNS系统面临的主要风险 目前,DNS面临的安全问题主要可以分为三类:DNS欺骗攻击.拒绝服务攻击.系统漏洞,下文将分别进行介绍. DNS欺骗攻击 当一个DNS服务器遭到欺骗攻击,使用了来自一个恶 ...
- Python3练习题系列(10)——项目骨架构建
目标: 如何创建<项目“骨架”目录> 包含:项目文件布局.自动化测试代码,模组,以及安装脚本. 由于编写一个Python文件可以作为一个模块,一个带__init__.py的目录算一个包. ...