技术
最近在做载波同步锁相环的时候,需要用到FFT核对AD采样数据进行傅里叶变换,以得到锁相环中NCO的初始频率控制字。关于FFT蝶形算法,包括高版本的FFT核(带AXI4协议)在这先不阐述了。
本文主要是记录7.1版本的FFT核学习仿真记录,把摸索过程中遇到一些问题和解决方法都记录下来,方便以后借鉴和使用。
相信很多朋友在调试ZYNQ的时候也遇到过这个问题,在SDK模式先DEBUG电路板的时候,执行完debug后,分布运行有时候进入C语言的main函数,有时候进入编译后的汇编main函数。
对于我这种汇编小白,C函数显得更容易理解,也方便调试。下面解释一下为什么会出现这两种现象,完全是因为我们操作的原因,因而完全可以避免。
1. Precision:仿真计算时可按任意精度定点数进行,Full Precision,提供足够的精度;User defined Percision,由开发人员定义位数和小数位。(FPGA上运行的是浮点型?)
2. Aritchmetic Type:可以定义无符号或带符号位(二进制补码)作为输出类型。
3. Number of bits:定义定点数的数据格式:位数,小数位。最大位数为4096。
本文是该系列的第10篇,上一篇介绍了在System Generator设计中使用MCode模块调用MATLAB代码来完成逻辑控制。本文将介绍System Generator支持的所有MATLAB语法。
限于篇幅,本文只记录了经常用到或相对重要的内容,更详细的信息可以参考xilinx官方文档ug958->第一章->MCode小节。
<strong>MCode block特性</strong>
MCode用于在Simulink环境下执行MATLAB函数。MCode的名称与管脚即为函数名称与函数接口。在将System Generator设计导出到FPGA时,软件会将MATLAB代码转换为对应的HDL模型。MCode经常用于实现一些简单的算法功能、有限状态机和控制逻辑。
<font color="#FF8000">作者:NingHeChuan(宁河川)</font>
对于电子工程师来说,很多电路设计仿真软件都是特别大的,安装下来一般都是上G,甚至几十G,而且win7的兼容性也是最好的,不愿意升级win10是因为麻烦,而且没有必要,对于很多的设计软件来说win10还没有完全兼容,而且还不停自动更新,时间很珍贵的,谁愿意浪费大把时间搞什么兼容性问题,而不是code or design。所以EE一般会把Wndows自动更新关闭。对于普通用户来说就无所谓了,用电脑写写报告,看看片子,跟着win10升级还能体验到很多新功能,完全不会被兼容性问题困扰。关闭Windows10自动更新的方法请自行百度。
<strong>简介 </strong>
本篇博客大部分内容前三篇博客都已经包含了,此处重点叙述不同之处,主要对比Tcl命令的不同和解决SDSoc程序找不到基地址的问题。
使用ZedBoard开发板,SDSoc 2017.4, Win10系统;此处通过AXI_GPIO点亮ZedBoard板子上连接在PL端的8个LED灯。
<strong>Tcl命令</strong>
搭建平台的步骤在 SDSoc学习(二)中进行了较为详细的描述,同时也可以参见官方文档 ug1146 和 ug1236 。
<strong>作者 | Conor Dewey</strong>
<strong>编译 | 专知</strong>
<strong>整理 | Yingying, Jiahui</strong>
不管是参加Kaggle比赛,还是开发一个深度学习应用,第一步总是数据分析,这篇文章介绍了8个使用Python进行数据分析的方法,不仅能够提升运行效率,还能够使代码更加“优美”。
本文是该系列的第9篇。FPGA设计中经常用到一些控制逻辑,如有限状态机(FSM),如果用各种block搭建一个FSM比较麻烦。System Generator支持调用MATLAB代码,通常可以编写MATLAB代码来实现FSM等控制逻辑,通过MCode block调用到System Generator设计中。
本文将使用MATLAB代码设计一个FSM,对“1011”这个序列进行检测。序列检测应该是很多Verilog/VHDL学习者在学习FSM时接触到的一个简单设计。本文将以该设计在System Generator中的实现为主题,介绍MCode的使用。
本设计使用到的block
1.Xilinx block:
MCode(->Index):调用MATLAB函数
近日,想必各位科技爱好者的朋友圈都被一篇发表在第25届IEEE国际讨论会上,用Python开发FPGA的论文刷屏了吧,那么这是如何实现的呢?今天,就请各位看官和小编一起来了解一下,这个构想的实现基础——PYNQ。
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/news/201808/13256-38595-…; alt="图为该篇论文"></center>
<font color="#FF8000">作者:Paul S.Levy, 赛灵思功能安全系统高级工程师</font>
“功能安全(Functional Safety)”研究的是机器发生故障或运行环境中断时如何降低其对人和设备造成的危害的方法和措施。试想一下,在刚刚结束的 2018年的足球世界杯(2018 FIFA)中,如果我们将这种研究应用到足球比赛中,裁判员就有能力和权力在他们觉得有犯规行为时暂停比赛。当然,这也不能让他总能发现所有犯规并且总能作出正确的判罚。
<strong>简介 </strong>
前段时间买了一块米联客的7010开发板,打算尝试为这块开发板搭建一个简单平台。
用户自定义开发板与SDSoc直接支持的开发板的区别在于,直接支持的开发板已经根据板子上的硬件完成了一系列重要配置(如时钟、DDR型号),所以在为用户开发板搭建平台时,只需要根据该开发板的硬件实际情况进行相应的配置即可。
这里先尝试着点亮一个直接连在MIO(MIO7)上的LED。
<strong>第一步:搭建平台</strong>
平台地搭建在SDSoc学习(二)中已经进行了较为详细的描述,且大部分操作的是一样的,所以这里就着重叙述不同之处。
1.定义
FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
<strong> 前言</strong>
利用vivado高层次综合工具可将C代码综合成HDL语言。本文将详细解析一维有限长离散卷积的例子,并分析综合结果。另外,vivado HLS的使用方法见笔者另一篇博文: http://xilinx.eetrend.com/blog/13178 本文不再赘述。
PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。理想适用于提升设计生产力,该解决方案与 Xilinx 硬件设计工具协同工作,为 Zynq® UltraScale+™ MPSoC、 Zynq®-7000 SoC、和 MicroBlaze™ 简化了 Linux 系统的开发。
本文是该系列的第8篇。第2篇中以数字滤波器的设计为主题,介绍了System Generator的完整设计流程;第7篇介绍了其中数据类型的选择与位宽截断的问题。本文将对其中使用到的Reinterpret和Convert模块进行详细介绍。
<strong>模块功能概述</strong>
数据转换,数据类型、位宽等问题都会影响到计算精度,对于设计者而言,需要考虑的就是相关影响是否可以接受,即是否会影响到实际的系统性能。FPGA设计中还经常需要截位,否则位宽在整个系统中不断积累,大大增加资源的消耗。
数据类型的转换和截位是FPGA系统设计的重要内容,博主在《FPGA数字信号处理》系列的很多设计中都有详细讨论。而在System Generator设计中,完成这项任务的便是Reinterpret和Convert模块。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。无论是做项目还是写论文,我们都会遇到把Matlab画的图形(默认为matlab自带的图像格式.fig)转换为其他格式并导出的问题。用的最多的图片格式是eps格式(用latex编辑时用)和jpg(用word编辑时用)。下面以matlab 2011b为例介绍多种导出方法。
<strong>方法一:</strong>
最简单的方法,但是不灵活。选择Figure文件的“File”菜单下面的“Save As...”。
<font color="#FF8000">作者:Manuel Mota,Synopsys公司模拟IP部产品营销经理</font>
需要数据转换器的传感器应用涉及十分广泛的范围,例如用于识别不同发动机状态的温度传感器,或者支持汽车驾驶辅助系统(ADAS)的雷达/激光雷达等。涉及到数据转换器的其他应用还包括用于与其他车辆或固定网络进行通信的无线收发器。数据转换器IP(“模拟-数字”和“数字-模拟”)为汽车片上系统(SoC)提供了多种模拟传感器的接口。对于ADAS而言,电子系统及其组件,例如SoC和IP,都必须提供最高程度的可靠性和安全性,同时还要能够经受极端温度范围考验并具备较长的使用寿命。由于这个原因,汽车电子系统及其组件必须遵守一套严格的汽车可靠性和功能安全性标准。
<strong>简介</strong>
这是学习SDSoc的第二个入门实验,通过EMIO点亮连接在PL上的8个LED。与上一个实验不一样,在这一个实验中,由于ZedBoard平台中没有使能EMIO,因此想直接通过SDSoc编写程序驱动MIO是不行的,所以这一个实验需要自己搭建包含EMIO的平台。
我用的是ZedBoard开发板,SDSoc2017.4。
本文是该系列的第7篇。第2篇中以数字滤波器的设计为主题,介绍了System Generator的完整设计流程。不过仍然有些问题需要解决:
1. 如何选择一个最合适的数据类型(以最少资源达到性能需求)?
2. 如何选择系统的输出位宽(保证信号不失真)?
传统的HDL模型设计方法中,博主通常会用MATLAB进行仿真,确认位宽对数据量化的影响;或在Vivado中仿真,截取合适的滤波器输出位数。System Generator提供的相关特性可以大大简化该流程,本文将对此做介绍。