自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (3)
  • 收藏
  • 关注

原创 FPGA时序优化之Reduce MUXF Mapping

在Ultrascale系列的FPGA中,MUXF*是指MUXF7,MUXF8和MUXF9,需要注意的是:他们不是7选1,8选1和9选1的MUX,具体解释如下图:MUXF7有F7MUX_AB、F7MUX_CD、F7MUX_EF、F7MUX_GH这4个,每个MUXF7均可以与其后面的2个相邻的LUT构成一个8:1 MUX;MUXF8有F8MUX_BOT和F8MUX_TOP,每个MUXF8均可以与其后面的邻近2个F7MUX以及后面的邻近4个LUT构成一个MUX16_1;

2024-03-31 21:44:19 877

原创 UVM手把手教程系列(二)Phase机制介绍

对于同一component来说,其12个run-time的phase是顺序执行的,但是它们也仅仅是顺序执行,并不是说前面一个phase执行完 就立即执行后一个phase。以main_phase和post_main_phase为例,对于A component来说,其main_phase在0时刻开始执行,100时刻 执行完毕;对于B component来说,其main_phase在0时刻开始执行,200时刻执行完毕;

2024-02-28 15:16:00 370 1

原创 UVM手把手教程系列(一)UVM基础

先抛开UVM,回想一下我们在平时写完程序后,是不是肯定需要灌一个激励给DUT,然后再从DUT获取结果,并跟一个参考模块进行对比,检查结果是否正确。就像下面这个图:在UVM中,引入了sequence机制,这个机制的最大作用就是将test case和testbench分离开来。对一个项目而言,testbench是相对稳定的框架,而针对各个module要有不同的测试内容,所以具体的test case 的差异非常大。

2024-02-28 15:11:07 917

原创 经过BUFGMUX的时钟该如何约束

再回到最上面的问题,如果路径A、B和C有一条存在,说明时钟之间有交互,就不能简单的使用logical_exclusive,而是要为这两个时钟都创建一个衍生时钟,但这两个衍生时钟属于physical_exclusive。而physical_exclusive两个时钟的source是一样,比如在同一个时钟输入口,但可能会输入两个不同的时钟。时序场景如下图所示,clk0和clk1两个时钟输入,经过BUFGMUX后,输出到后面的逻辑,但同时clk0和clk1还分别驱动了其他逻辑。

2023-12-11 13:29:25 632

原创 lwip代码分析

lwIP(Lightweight IP)是一个为嵌入式系统设计的轻量级TCP/IP协议栈。它旨在为资源受限的环境提供完整的网络协议功能,同时保持低内存使用和代码大小。由于其模块化的设计,开发者可以根据需要选择包含或排除特定功能,以满足特定应用的资源要求。Xilinx的lwIP是基于开源lwIP TCP/IP协议栈的一个适应版本,专门为Xilinx的硬件平台,如Zynq-7000和MicroBlaze,进行了优化和集成。

2023-10-29 15:16:08 466

原创 vitis如何更新xsa?

再refresh application project,然后build。把platform_project clean一下,然后重新build。在platform_project选择。欢迎关注公众号:傅里叶的猫。选择对应的xsa文件。

2023-08-13 22:19:37 872

原创 Vivado中SmartConnect和InterConnect的区别

A:这应该是很多工程师的困惑,都有了InterConnect,为啥又有smartConnect,首先直观上的体现就是smartConnect的接口要少,这个就不多说了。的问题,并汇总成文章,如果问题多的话就每周整理一期,如果问题少就每两周整理一期,一方面是希望能帮到不经常看群消息的小伙伴,另一方面也算是我们的技术积累。A:对于约束的问题,我们可以在Vivado的tcl中先执行一下这些约束指令,如果有问题的话会报出来的,然后就再将指令拆开执行,看是不是指令中的。没有获取到正确的结果。微信公众号:傅里叶的猫。

2023-08-08 11:13:30 778 1

原创 Xilinx AXI VIP使用教程

AXI接口虽然经常使用,很多同学可能并不清楚Vivado里面也集成了AXI的Verification IP,可以当做AXI的master、pass through和slave,本次内容我们看下AXI VIP当作master时如何使用。仿真代码放到文章末尾,代码中中导入的axi_demo_axi_vip_0_0_pkg,就是下面axi vip的component_name再加上后缀。可以看到,我们一开始向地址0xc0001000写入0x12345678,又发起一次读操作,可以将该数据读出。

2023-07-26 21:44:41 1502

原创 FPGA问答系列--clock skew是影响时序收敛吗?

如下图所示,图中左侧为建立时间时序报告,可以看到Clock Uncertainty,而右侧为保持时间时序报告,是没有Clock Uncertainty。A:这跟锯齿波的频谱有很大关系,如果我们画一下锯齿波的频谱,会发现它的频谱是很宽的,不像正弦波是单一的频点,所以当锯齿波信号带宽超过DAC的带宽时,输出的信号就会被削弱。的问题,并汇总成文章,如果问题多的话就每周整理一期,如果问题少就每两周整理一期,一方面是希望能帮到不经常看群消息的小伙伴,另一方面也算是我们的技术积累。Q:有什么好用的时序绘图工具?

2023-06-11 18:10:01 693

原创 FPGA问答系列--Vivado Schematic中的实线和虚线有什么区别?

如果在schematic中观察这两个图的差别,就很容易看出,显示虚线是因为这个net还连到了其他地方,但并没有在当前的schematic中显示出来,而实线则表示该net并未连接到其他地方,该schematic已经显示出了这个net的全部连接。A:在查时序报告时,很多工程师都希望能直接定位到源码处,此时我们可以打开时序违例处的schematic中的cell,然后右键,就可以直接跳转了。

2023-06-04 16:36:55 943

原创 vcs+verdi仿真Verilog代码

我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。

2023-05-07 20:56:54 1346 1

原创 set_input_delay中-add_delay的作用

在默认情况下,一个port只需要一个min和max的dealy值,如果我们设置两次,那么第二次设置的值会覆盖第一次的值:下面的第一行就无效了。但其实,第一行也是无效的,因此2.5比2.1要大,如果满足2.5了,那一定满足2.1。参数,那么第二条会覆盖第一条约束,那么上升沿的约束就没有了。但有时也会在后面增加一个。微信公众号:傅里叶的猫。

2023-04-12 20:23:16 1057

原创 set_input_delay如何使用?

FPGA时序约束之set_input_delay

2022-09-06 20:55:37 4212 1

原创 FPGA中BEL Site Tile FSR SLR分别指什么?

在Xilinx FPGA中,从底层到整个设备可以划分为6个层次:BELSiteTileFSRSLRDevice下面我们从下到上依次来看一下各个定义。BEL(Basic Element of Logic)  BEL是最底层的基本元素,也可以叫atomic unit(原子单位),BEL是FPGA中最小、不可分割的组件。BEL有两种:Logic BEL和Routing BEL。像我们常说的LUT、FF、CARRY都属于Logic BEL,Routing BEL我们平时不常说,很多工程师可

2022-02-17 20:28:50 2929

原创 vivado如何快速找到schematic中的object

  在Vivado中,可能由于某些逻辑输入悬空而导致Implementation的opt_design时会错,比如:报的错误是dac_spi_i0/bit_cnt[4]_i_4的这个LUT有个输入悬空了,这个工程的逻辑比较简单,例化的嵌套也比较少,因此在schematic一层层找也很容易可以找到,但如果工程比较复杂,在很内部的一个LUT的输入悬空了,找起来就很费劲了。  笔者碰到的问题是在vivado的axi-interconnect ip中报了这个错误,而且是ip内部套了好几层的地方,如果再一层层往

2022-02-13 16:06:57 1686 2

原创 Xilinx FPGA中HP HR HD bank分别是什么用途

在开发FPGA绑定管脚时,经常会看到HP Bank、HR Bank和HD Bank,它们分别是什么意思?分别可以适用于哪些应用个?  首先我们要明确一点,这几个概念都是在7系列之后才有的,其中7系列的FPGA中有HP Bank和HR Bank,UltraScale FPGA有HP Bank、HR Bank和HD Bank,但并不是一个FPGA中会同时包含HP/HR/HD Bank。HP:High PerformanceHR:High RangeHD:High Density  HP

2022-02-08 20:35:43 3331

原创 Linux Matlab快捷键设置

  在Windows下,Matlab的快捷键就是常规的,复制就是Ctrl+C,粘贴就是Ctrl+V。但到了Linux版的Matlab中,复制粘贴的快捷键都变了,复制变成了Alt+W,粘贴变成了Ctrl+Y,剪切变成了Ctrl+W。用起来是相当不顺手,所以就经常通过鼠标右键来操作,但好在Matlab支持自定义快捷键。将常用的复制、粘贴、剪切、保存、查找都改成Windows中常用的快捷键。欢迎关注微信公众号:Quant_Times...

2022-01-27 18:34:51 3496 1

原创 false path和asynchronous的区别

  在FPGA的开发中,对于两个异步时钟,如果我们可以在RTL的设计中保证这两个时钟域之间的处理都是正确的,那就可以让工具不分析这两个时钟域之间的交互。如果不设置的话,Vivado默认都会分析的,这样会大大增加Implementation的时间。  常用的不让工具分析两个时钟域交互的方式有两种,一种是设置为伪路径(False Path),一种是设置为异步(Asynchronous)。那这两种设置方式有什么区别呢?(假设工程中有两个异步时钟clka和clkb)伪路径的设置是单向的,而异步时钟的约束是双向

2021-11-12 00:27:00 1791 1

原创 Xilinx FPGA的DNA是什么?

  对于Xilinx的FPGA,每一片都有一个专门的ID,就像我们的身份证号一样,每个都不一样,Xilinx也形象的把这个ID叫做DNA。7系列以及之前FPGA的DNA有57bit,Ultrascale FPGA的DNA有96bit,Zynq Ultrascale+的FPGA有两个DNA,PL端一个,PS端也有一个。DNA都是只读的,我们不可以修改。  有两种方法可以读到这个DNA的值,一种是连上JTAG后,可以直接看到FPGA的DNA信息,以K7为例:  第二种方法就是通过例化DNA_PORT模

2021-11-10 13:30:51 2836

原创 Xilinx Ethernet MAC IP调试的小坑

  本篇文章要写的是调试Xilinx网络IP时踩到的一个坑,也是控制PHY芯片时的一个坑,板卡上的PHY芯片是非常经典的88E1111,使用MDIO接口控制。  本身MDIO接口的时序也不是很难,非常类似I2C接口,内部寄存器的读写控制都是通过MDIO接口来实现。在MDIO的协议中,有一个PHY ADDR,这个是由PHY芯片的硬件决定的。Xilinx的IP也提供了mdio接口,我们可以直接通过配置IP内部寄存器来实现MDIO接口的配置。在IP Core的内部设置中,有一个MDIO PHY ADDR

2021-11-01 22:13:27 3067

原创 管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?

在FPGA开发中,我们经常遇到因为管脚忘记约束,导致最后生成bit的时候报错1.管脚电平未约束  像上面这个图中,由于在约束中忘记指定mdc和mdio的电平,再经过了长时间的综合和实现后,最后的Generate Bitstream报错了。  这种情况下,如何才能不重新Implementation的情况下生成bit呢?打开实现后的routed.dcp文件:如果不知道routed.dcp为何物,请参考之前的文章:Vivado的Implementation都包含哪些步骤?open_checkpo

2021-10-18 20:19:57 1087

原创 vscode启动Python调试 找不到指定模块

vscode在启动python调试时,要导入numpy模块,而且非常确定numpy已经安装了,但还是提示找到numpy模块Exception has occurred: ImportErrorIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!Importing the numpy C-extensions failed. This error can happen formany reasons, often d

2021-09-30 15:16:37 6108 2

原创 Vivado ECO实例教程一 增加LUT(GUI操作)

  什么是ECO?ECO 指的是Engineering Change Order,即工程变更指令。目的是为了在设计的后期,快速灵活地做小范围修改,从而尽可能的保持已经验证的功能和时序。ECO 的叫法算是从IC 设计领域继承而来,其应用在FPGA设计上尚属首次,但这种做法其实在以往的FPGA 设计上已被广泛采用。  ECO在一些大的工程中是比较实用的,比如工程编好后,想将一个已有的信号连接到FPGA端口上观察,或者想增加Debug信号、修改寄存器初始值等,都可以直接对route之后的dcp进行修改,而不需要

2021-09-30 09:19:16 1955

原创 如何在阿里云部署GitLab?

  本教程默认阿里云的ECS已经创建好,并在此基础上部署GitLab环境。  GitLab官网上有个手动部署的教程,而且不同操作系统的指令也多多少少有些区别,官网教程链接如下:https://about.gitlab.com/install/#centos-8但官网的教程有点过于理想,完全按照这个教程来,经常会部署失败,因此我们就整理了一下部署方法,笔者用的系统是centos-8,如果是其他系统,请参考官网的部署指令进行修改。安装依赖包sudo dnf install -y curl pol

2021-09-21 23:21:09 1227

原创 Vivado的Implementation都包含哪些步骤?

Vivado的Implementation主要有三大步:opt_design,会生成opt_desgin.dcpplace_design,会生成place_design.dcproute_design,会生成route_design.dcp如果再详细一点:opt_design在这一步,Vivado会对综合后的网表文件做一些优化,删除一些无用的或者Vivado认为可以冗余的逻辑,但如果代码中使用了DONT_TOUCH 和MARK_DEBUG,在此步骤就不会被优化掉。power_opt

2021-09-08 12:47:28 4162 2

原创 Vivado IP中的Shared Logic到底是干嘛的?

  在很多Vivado的高速接口的IP中,比如Ethernet、PCIe、SRIO的设置中,都会有个Shared Logic的页面:可能很多同学并没有很关注这个页面,直接默认设置就完事了。  但其实这个页面的内容也是非常有用的,我们可以看到页面中有两个选择:Include Shared Logic in coreInclude Shared logic in example design首先,什么是Shared Logic?字面意思很好理解,就是共享逻辑,主要包括时钟、复位等逻辑。当选择Sh

2021-09-08 09:29:11 1457 1

原创 GTX/GTH/GTY/GTP/GTZ/GTM有什么区别?

  首先需要明确的一点是,他们都是高速收发器,只是传输速率同,速率大小为:GTP < GPX < GTH < GTZ < GTY < GTM  不同芯片上使用的高速收发器也不同,而且同样是GTX,不同系列芯片上的速率也可能不同。  比如7系列的FPGA,GTP最高可以达到6.6Gb/s,GTX最高12.5Gb/s,GTH最高13.1Gb/s,GTZ最高28.05Gb/s下面几个表展示了7系列FPGA中高速收发器的使用情况:在A7上面使用的高速收发器是GTP:在K

2021-09-08 09:28:02 4314

原创 Python高性能计算之推导和生成器

  在Python中,推导和生成器都是非常常用的,而且它们都是经过极度优化的操作,速度非常快,另外一点是它们的代码可读性也比较强,非常适合用来替代显式的for循环。  当然,有些可能对推导器和生成器不太熟悉,这里我们先介绍一下。推导器在生成列表时经常会用到,采用方括号来表示,并且里面用一个for循环来生成所需数据。data = [x for x in range(10)]data2 = [x for x in range(10) if x % 2 == 0]这种写法就等效于:data = []

2021-08-24 18:40:09 542

原创 导出ILA数据到Python

导出ILA数据在空白处右键,选择Export ILA Data导出csv格式的文件,并选择文件路径和文件名:上面两步也可以使用tcl脚本代替:write_hw_ila_data -csv_file {C:\usr\zhj\ila\iladata.csv} hw_ila_data_1导出后的文件如下图所示,第一行是标题,有Sample in Buffer、Sample in Window、TRIGGER,后面就是我们采的信号的名称,但这个信号名称是包含例化的层级结构名字的。处理十进制.

2021-08-20 18:13:22 1244

原创 D触发器都有哪几种类型?对应什么样的代码?

  今天我们来研究一下D触发器都有哪几种类型?又对应什么样的代码?  在Xilinx的FPGA中,D触发器是下面这个样子:其中,D是数据输入端口,CE是使能端口,CLK是时钟输入,SR是Set/Reset的意思,可用作置位或者复位,置位和复位又分同步和异步,因此D触发器有如下四种应用类型:异步复位(FDCE)异步置位(FDPE)同步复位(FDRE)同步置位(FDSE)  在Vivado的Language Templates中我们也可以看到,D触发器有下面四种类型:那这四种触发器都对应

2021-08-19 14:18:41 3401

原创 DDR突然初始化失败 Debug记录

背景:板卡用的一直好好的,硬件没有什么问题,DDR跑在2400M,也一直正常工作。但最近有个工程中,需要增加SRIO接口,SRIO接收的数据需要先过DDR,工程编完下载bit后,偶尔会提示DDR初始化失败:分析如下:板卡用了很久,DDR一直没出现过初始化失败的问题,说明硬件应该没有问题;DDR IP中提示时序有问题,本工程中带有PCIe模块,PCIe的IP中也提示时序问题,其它地方没有时序问题;首先想到的是在保证DDR吞吐速率满足系统要求下,降低DDR的主频,由2400M降到1600M,虽然

2021-08-10 15:23:00 4352 1

原创 Python函数参数传递机制

Python3中有6中标准的数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)其中Number、String、Tuple和Sets是不可变类型,List和Dictionary是可变类型。什么是可变类型?什么是不可变类型?1. 可变类型  对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收

2021-07-27 20:12:10 767

原创 如何用Python复现吉布斯现象?

1. 什么是吉布斯(Gibbs)现象?  在信号处理中,有很多很有意思的现象,比如由于栅栏效应引起的频谱泄露,和我们这一讲要讲到的吉布斯现象。  吉布斯现象和频谱泄露多少有些相像,频谱泄露是因为进行DFT时对时域信号进行了截断;而吉布斯现象则是对频域信号进行了截断。  先来看下维基百科上的解释,吉布斯现象是由Henry Wilbraham于1848年最先提出,并由约西亚·吉布斯于1899年证明。在工程应用时常用有限正弦项正弦波叠加逼近原周期信号。所用的谐波次数N的大小决定逼近原波形的程度,N增加,逼

2021-07-12 22:20:11 928 7

原创 自适应滤波器(二)NLMS自适应滤波器

  前一篇文章我们讲了LMS自适应滤波器,我们先回顾一下LMS算法流程:yy(n)=wT(n)x(n)e(n)=d(n)−y(n)w(n+1)=w(n)+2μe(n)x(n)yy(n)=\boldsymbol{w}^{T}(n) \boldsymbol{x}(n) \\\boldsymbol{e}(n)=d(n)-y(n) \\\boldsymbol{w}(n+1)=\boldsymbol{w}(n)+2 \mu e(n) \boldsymbol{x}(n)yy(n)=wT(n)x(n)e(n

2021-03-27 14:51:09 3603 5

原创 自适应滤波器(一)LMS自适应滤波器

1. 自适应滤波器简介  在很多信号处理系统中,并没有信号的先验统计特性,不能使用某一固定参数的滤波器来处理,比如信道均衡、回声消除以及其他因素之间的系统模型等,均采用了调整系数的滤波器,称为自适应滤波器。这样的滤波器结合了允许滤波器系数适应于信号统计特性的算法。自适应滤波器的特点没有关于待提取信息的先验统计知识直接利用观测数据依据某种判据在观测过程中不断递归更新最优化自适应滤波器分类按结构分:横向结构、格型结构按算法分:随机梯度、最小二乘按处理方式分:成批处理、递归处理自

2021-03-19 08:55:51 9340 3

原创 语音信号处理教程(一)音频文件录制、导入、绘图

  这篇文章我们来看下如何用Matlab和Python产生录制音频、播放音频、导入音频文件,并查看音频文件的波形图。  首先来看下Matlab中如何操作。Matlab提供了audio*一系列函数来对音频信号进行处理,下面我们来一一讲解。audiorecorder(Fs, NBITS, NCHANS, ID)该函数用于产生一个audiorecorder的对象,可以用来录制音频信号;其中Fs表示采样率,常用的采样率有:8000, 11025, 22050, 44100, 48000和 96000

2021-02-19 07:56:45 1675 1

原创 Matlab中CIC滤波器的应用

Matlab中CIC滤波器的应用CIC滤波器基本原理  CIC(积分梳状级联)滤波器是工程上经常用的滤波器,因为CIC滤波器不需要乘法,CIC滤波器往往在级联抽取滤波器的第一级和级联插值滤波器的最后一级。这一节我们以CIC抽取滤波器为例来讲CIC滤波器的使用方法,CIC滤波器的数学模式为:可以将其分解为两部分:其中第一级是积分器,就是做累加;第二级是级联梳状滤波器。  CIC滤波器有三个参数:R:抽取倍数M:差分延迟,在工程中一般取1或者2N:滤波器级数,一级CIC的阻带有13.46

2021-02-07 20:02:09 6144 2

原创 零点和极点到底影响了什么?什么是最小相位系统?

零点和极点到底影响了什么?什么是最小相位系统?  零点、极点、稳定、因果、最小相位是信号系统中经常听到名词,也许有的同学对这些概念有所了解,但对它们之间的关系却不甚了解,这篇文章我们就来看一下,它们之间到底有什么关系?零点和极点是怎么对系统产生应影响的?  下面我们先来看几个信号系统中的基本概念,知道了这几个概念才能继续深入下去。1. 信号系统基本概念1.1 静态系统和动态系统  如果一个离散系统在任意时刻n的输出至多依赖于同一时刻的输入样本,而与过去或者将来的输入样本无关,那么该系统就称为静态的

2021-01-28 14:27:35 15501

原创 为什么高斯白噪声的平均功率等于方差?

  功率和方差这两个概念,一个是表示信号的强度,一个是表示随机信号的一个统计量,为什么高斯白噪声的平均功率会等于它的方差呢?什么是高斯白噪声?  维基百科上给出的解释是:在通信领域中指的是一种功率谱函数是常数(即白噪声),且幅度服从高斯分布的噪声信号。因其可加性、幅度服从高斯分布且为白噪声的一种而得名。自相关函数  高斯白噪声是一种平稳的随机过程,假设该过程为$ \xi (t) $,那么其自相关函数的定义如下:R(τ)=E[ξ(t)ξ(t+τ)]R(\tau) = E[\xi(t) \xi(t+

2021-01-17 23:52:54 8087

原创 如何写出高性能的Python之缓存的应用

缓存有什么作用?  能看到这篇文章的同学,应该都对缓存这个概念不陌生,CPU中也有一级缓存、二级缓存和三级缓存的概念。缓存可以解决哪些问题?我们直接把网上的一段话放上来:性能——将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,例如国家列表等,这样能明显提高web程序的反应速度;稳定性——同一个应用中,对同一数据、逻辑功能和用户界面的多次请求时经常发生的。当用户基数很大时,如果每次请求都进行处理,消耗的资源是很大的浪费,也同时造成系统的不稳定。例如

2021-01-07 23:54:39 221

Xilinx Rocketio资料整理

之前看过的关于RocketIO的很多论文,讲的很详细

2015-10-31

vxworks资料

vxworks的多个资料,对于初学者挺有帮助的

2015-10-31

DE2-115开发板的PS2接口模块设计

DE2开发板的PS2接口模块设计 verilog代码

2013-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除