自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 dB/dBm/dBFS

本文转载自:转载为了方便查找。请查看作者原文。相关视频。

2024-08-11 16:04:41 129

原创 【算法】FFT后的频谱

得出真实幅值,需要把除了第1个点(直流分量)以及第(N/2+1)个点除以N(N为参与FFT运算的点数)以外,其余点需要求得的模除以N(N为参与FFT点数的序号数)/2。假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。dB:主要为了用较小的坐标描述很宽的范围,以及把难搞的乘法变成简单的加法。本文不做公式上的推导,仅对FFT得到的结果进行分析的相关知识点和结论进行记录,以便查询。式中:Fs为采样率,N为FFT的点数,因此只要Fs和N定了,频域就定下来了。

2024-08-11 15:58:27 456

原创 【vivado】ila观测信号被拆分问题

在FPGA中用ILA观测设计中的信号时,有时一些多比特信号会被拆分成一些零散的信号,这会增大信号观测的难度。这一问题的产生与vivado的综合工具有关,viavdo在综合时会对一些逻辑信号进行优化、重命名等操作,从而导致信号被拆分。

2024-07-28 11:27:00 1233

原创 【verilog语法】$clog2(IEEE Std 1364-2005)

在进行Verilog设计时,有时需要根据内存大小来计算地址的位宽,或者根据变量的值来确定变量的位宽,这时可以自己编写相关的可综合函数,或者verilog-2005起开始支持的$clog2系统函数。此处直接粘贴Verilog-2005标准的截图,从图中可以清楚看到该函数以2为底求log,而不是网上有人说的以自然数e为底来求log。同样从图中也可以看出该函数是向上取整(符合求地址位宽或者向量位宽的需求),且当输入为0时输出也为0.二、自己编写的function。三、$clog2()系统函数。

2024-07-16 22:46:46 616

原创 【vivado】 管脚约束(io constraints)

在FPGA工程中,所有的输入输出端口最终都要与FPGA IO 引脚进行绑定,需要根据需求对输入输出端口进行位置、电平标准、端口变换速率等进行约束,本文对io相关约束语法含义进行记录以便查询。

2024-07-14 15:52:28 422

原创 【ic-tool】timegen使用

timegen软件界面布局如下图所示:鼠标放到相应图标上就会有基本明了的介绍,使用时根据其介绍就能基本上手。

2024-06-17 19:55:53 491

原创 【vivado】 IBERT GT收发器误码率测试

协议是线速/数据宽度/参考时钟速率的组合。一个 IBERT 内核最多可以定义三个协议,并且可以将任意数量的可用 Quad 指定为定义的任何协议。Silicon Version:选择“常规 ES/产品”或“初始 ES”按钮以匹配目标芯片,这两者的区别暂时还没弄清楚,一般来说使用过程中默认选第一个。Number of Protocols:选择协议的数量, 一个IBERT 最多可定义三个协议。Protocol:在Protocol框中,选择自定义(custom)或其他预定义协议。

2024-05-14 21:58:51 2140

原创 【vivado】debug相关时钟及其约束关系

在xilinx fpga的degug过程中,经常出现由于时钟不对而导致的观测波形失败,要想能够解决这些问题需要了解其debug的组成环境以及之间的数据流。本文主要介绍debug过程中需要的时钟及各时钟之间的关系。

2024-05-10 21:34:40 2189

原创 【verilog-语法】编译命令( compiler directives )

编译器指令的范围是从它的出现的点延伸到处理的所有文件,直到另一个编译器指令取代它或处理结束。编所有的编译命令都有重音符 " ` "引出。在IEEE std1364-2005中共介绍了19条编译命令,这19条命令又可分为11组命令进行独立或组合使用。本文将对这些编译命令进行介绍。

2024-05-07 23:18:16 1068

原创 【Verilog-语法】 条件编译 `ifdef/`ifndef

唯一值得探讨的一点是,条件编译的FLAG是否必须由`define语句宏定义,可不可以在代码中自己定义?答案是必须要`define来定义,也即条件编译的使用与`define是紧密相关的。比如下面的例子尝试自定义变量在条件编译中使用,但编译工具并不支持,对比可以发现并不认同自己定义的变量。在Verilog项目开发过程中某功能是,一部分代码可能有时候用,有时候不用,为了避免全部编译占用资源,可以使用条件编译语句;其中,`ifdef/`ifndef和`endif之间的`elsif和`else都是可选的。

2024-04-28 22:53:08 972

原创 【ZYNQ】zynq启动模式及程序固化

由于zynq含有arm cpu ,其启动模式由ps主导,与纯逻辑的fpga不相同,此处做一个记录。

2024-04-25 22:20:51 771

原创 【vivado】vivado导出hardware问题

答案:出现这个问题的原因是需要导出的block design 不在顶层或者不报包含在顶层文件中。解决办法也很简单,如果实际设计只需要block design,则将其直接右键set as top即可;如果还有其他PL逻辑,则将block design 例化到顶层模块当中去。问题:Cannot write hardware definition file as there are no IPI block design hardware handoff files present.

2024-04-25 21:07:19 904

原创 【verilog 设计】 reg有没有必要全部赋初值?

在知乎发现“reg有没有必要全部赋初值”这个问题,与自己近期对Verilog reg的进一步学习相契合,此文对这个问题进行总结。

2024-04-16 21:47:00 1509

原创 【verilog】 reg与寄存器的关系

在Verilog中经常用reg定义具有数据寄存功能的单元,但在verilog的使用中,并不代表其一定就是寄存单元,reg还能进行组合逻辑描述,并且在一些场景下,只能使用reg来申明变量。在Verilog过程块(always块,initial块)中,被赋值的变量只能是reg类型。如果用always块来描述组合逻辑,则虽然变量是reg类型,但会被综合为组合逻辑。二、reg型变量生成组合逻辑。

2024-04-15 21:50:47 330

原创 【算法】Cordic算法的原理及matlab/verilog应用

单片机或者FPGA等计算能力弱的嵌入式设备进行加减运算还是容易实现,但是想要计算三角函数(sin、cos、tan),甚至双曲线、指数、对数这样复杂的函数,那就需要费些力了。通常这些函数的计算需要通者查找表或近似计算(如泰勒级数逼近)等技术来转换为硬件易于实现的方式。CORDIC(Coordinate Rotation Digital Computer, 坐标旋转数字计算方法)算法就是一种化繁为简的算法,通过基本的加减和移位运算代替乘法运算,逐渐逼近目标值,得出函数的数值解。

2024-04-10 23:03:32 1538 4

原创 xilinx fpga 程序固化(含sdk)

xilinx 旗下的产品主要有包含有处理器的系列,也有只有纯逻辑的fpga,两者的程序固化的方法并不相同,本文介绍含有处理器或者microblaze中有程序的固化。

2024-04-09 22:29:14 1111

原创 【matlab】计算精度指定

d指的是s的有效数字的个数。

2024-04-08 22:25:37 323

原创 xilinx 7系列fpga上电配置

Xilinx FPGA通过加载比特流到内部存储单元来进行配置。Xilinx FPGA存在两种数据配置路径,一种是满足最小引脚需求的串行路径,一种是可用8位、16位或32位来连接到行业的高性能通用接口,如处理器,8位或者16位并行的闪存。与处理器和处理器外围设备一样, FPGA可以在系统中按需无限次重新编程。由于Xilinx FPGA 配置数据存储在 CMOS 配置锁存器 (CCL) 中,因此必须在断电后重新配置。比特流每次都通过特殊的配置引脚加载到器件中。

2024-04-07 20:59:02 1886

原创 xilinx fpga程序固化(不含sdk)

xilinx 旗下的产品主要有包含有处理器的SOC系列,也有只有纯逻辑的fpga,两者的程序固化的方法并不相同,本文介绍只包含纯逻辑而不涉及处理器的fpga的代码固化。将工程综合,实现,并得到比特流后,开始固化程序到片外非易失性存储器中。2.2 将存储器配置文件固化到flash。2.1 生成*.mcs存储器配置文件。

2024-04-02 22:30:37 1025 1

原创 verilog设计-cdc:多比特信号跨时钟域(DMUX)

多比特一般为数据,其在跨时钟域传输的过程中有多种处理方式,比如DMUX,异步FIFO,双口RAM,握手处理。本文介绍通过DMUX的方式传输多比特信号。

2024-03-28 23:15:17 3638 2

原创 【vivado】ILA使用心得

ILA抓取的信号数量和深度应尽可能的少,如无必要,不要加到ILA中观测。ILA主要用于验证,而不要主要用于debug。

2024-03-28 19:22:04 150

原创 【vivado】在原有工程上新建工程

该方法的缺点为:新工程只有工程文件夹及vivado自动生成的一级目录及其子目录的文件夹。至于自己新建的与一级目录并列的其他文件目录及其子目录则不会被带到新工程文件路径中,而是索引的原工程下的文件。在工作中,我们经常需要接触到别人的工程,并在别人的工程上新加设计功能,此时我们需要以别人工程为基础新建工程。该方法的优点为:可以直接修改整个工程及工程子目录的文件路径名称为新的工程名,并且可以自由选择位置。该方法的缺点为:所有的一级目录与原工程完全相同,若修改的话需要一个一个修改,也很麻烦。

2024-03-27 21:04:45 699

原创 windos11 连上wifi但浏览器依然显示网络未连接的解决办法

1. windows + i 打开设置中网络和internet选项;2. 进入代理页面,并进入代理页面的手动设置代理选项;3.关闭使用代理服务器。

2024-03-25 20:58:10 323

原创 verilog设计-CDC:单bit脉冲快时钟域到慢时钟域

当单bit信号由快时钟域传递给慢时钟域时,快时钟域的异步信号最小可为快时钟信号的一个时钟周期脉冲,快时钟域的单时钟周期脉冲长度小于慢时钟域的时钟周期,很有可能该脉冲信号在慢时钟域的两个时钟上升沿之间,导致该脉冲没有被慢时钟域采集到,从而导致信号数据丢失。因此与单bit信号从慢时钟域到快时钟域直接打两拍不同,单bit信号从快时钟域到慢时钟域还需要特殊的处理。

2024-03-21 23:25:54 1091

原创 【vivado】ILA使用

4)ILA信号过多影响时序收敛,甚至影响设计功能,比如JESD204204B协议恢复时钟驱动的很多信号被添加到ILA中观测后可能会导致建链不稳定。使用ILA IP核或者在相应信号或者端口前添加(* mark_debug = "true" *)后实现相应波形观测。3) 如果需要新加debug信号,需要重新做ILA,再Place&Route,费时费力;虽然ILA在一些情况下比较好用,但不建议靠ILA来debug。1) ILA分析的波形长度有限;2) ILA抓取的信号数量有限;

2024-03-19 22:04:31 842

原创 【vivado】时序约束-set_false_path

false path指逻辑上存在,但不需要分析是否满足建立/保持时间的时序路径。使用set_false_path去不对指定路径其进行任何时序约束,进而在时序报告中屏蔽相关错误,但不会停止对其进行延迟计算,因为这条false path上的组合逻辑可能应用于其他的path。这一点区别于set_disable_timing,set_disable_timing完全不对路径做任何时序分析。

2024-03-18 23:29:44 2157

原创 【vivado】fpga时钟信号引入

如果设计时管脚分配没做好、或者管脚不够用了,那么就有可能将本该接入专用时钟管脚的信号,接到了普通IO口上,如果仅和从专用时钟引脚一样添加普通时钟约束时,此时vivado执行implement的时候往往就会报error或者critical warning、导致工程出现问题。FPGA的时钟信号一般由板上晶振经由时钟引脚引入,有时由于工程需要也会从pin脚引入其他外部时钟,这时为了该时钟能够正常工作,满足xilinx fpga的外部时钟引入规则。一、从专用的MRCC/SRCC时钟引脚引入。

2024-03-15 23:53:07 922

原创 【vivado】 clock wizard 时钟IP

原因如下:与PLL输出时钟驱动的逻辑单元需要保持复位状态,直到PLL的LOCKED信号输出拉高为时,此刻表明时钟被锁定,PLL处于稳定的状态,因此LOCKED在设计常会用作复位信号。MMCM和PLL是在FPGA设计中不可避免需要使用到的时钟资源,对于其功能及使用方法的理解是正确进行FPGA设计的前提。clk_in 输入时钟,一般为班上晶振引入时钟或者serdes恢复时钟以及其他专用时钟引脚输入时钟;时钟IP会自动在综合实现中生成相应的时钟约束,因此不需要在约束文件中在对相关时钟进行时钟约束。

2024-03-12 21:48:17 2014

转载 【matlab】matlab函数拟合

(3) Fourier:傅里叶级数逼近,默认形式:f(x) = a0 + a1*cos(x*w) + b1*sin(x*w),在"Number of terms"中可以选择公式中正余弦项的个数,范围1~8。(4) Gaussian:高斯逼近,默认形式:f(x) = a1*exp(-((x-b1)/c1)^2),在"Number of terms"中可以选择公式中指数项的个数,范围1~8。(12) Weibull:威布尔分布,形式为:f(x) = a*b*x^(b-1)*exp(-a*x^b)。

2024-02-29 22:55:46 2098

原创 【matlab】matlab随机函数

使用random()语句,其一般形式为:y= random(’分布的英文名’,A1,A2,A3,m,n),表示生成 m 行 n 列的 m Xn 个参数为(A1,A2,A3)的该分布的随机数。% hygernd 超几何分布的随机数生成器。% nbinrnd 负二项分布的随机数生成器。% betarnd 贝塔分布的随机数生成器。% chi2rnd 卡方分布的随机数生成器。% exprnd 指数分布的随机数生成器。% gamrnd 伽玛分布的随机数生成器。% geornd 几何分布的随机数生成器。

2024-02-28 21:33:41 594

原创 【matlab】matlab随机函数-rand

含义:生成min到max之间的整数随机矩阵(m行,n列),如果m=n,则可简写为randi ([min,max],m)matlab中rand相关的随机函数包括rand(),randn(),randi()等。含义:生成a-b间均匀分布的随机矩阵(m行,n列),如果m=n,则可简写。的随机矩阵(m行,n列),如果m=n,则可简写为rand(m)矩阵(m行,n列),如果m=n,则可简写为randn(m)

2024-02-28 21:17:02 1068

原创 【matlab】matlab中两个数组交织合并成一个数组的方法

例子:a = [1 3 5] ,b=[2 4 6],将a,b,交织合并为c=[ 1 2 3 4 5 6].

2024-02-28 20:39:37 1033

转载 【matlab】matlab中多个字符串的拼接方法

4、%f 就是输出小数:%8.4f 就是小数点后保留4位,输出总长度为8,比如3.14159,输出后就是"_ _ _3.1415"(前面三个空格);3、%d 就是输出整型:%5d 就是说按照长度为5的整型输出,比如100,输出就是"_ _100","_"代表空格;可以按要求更改a1 b1的顺序,如果要a1和b1分开的话,可在a1最后加个空格或者在b1前加空格。可以按要求更改a1、b1的顺序,如果要a1和b1分开的话,可在c1中两个%s之间加空格。% 根据需要更改顺序,添加空格,方法同上。

2024-02-27 21:00:26 1451

原创 【Xilinx sdk】sdk中hw_platform自动增加的问题

在 Vivado 中生成并导出硬件描述后,复制工程或工程更改有时候会在 .sdk 文件夹下产生新的 hw_platform,例如原来的是 hw_platform_0,现在又产生了一个 hw_platform_1,hw_platform_2等。(1)关闭 Xilinx SDK 的情况下,备份 sdk 文件夹中的源文件,清空整个 sdk 文件夹,重新 launch sdk,再将源文件复制到工程目录下;Xilinx employee 给出的答案,并不能更改 BSP 的 Hardware Platform。

2024-02-26 22:22:28 771

转载 【Xilinx FPGA】IO命名规则

首先,FPGA的IO物理命名规则,也就是我们做管脚约束时候的命名,芯片通常是长方体或者正方体,所以命名通常采用字母+数字组合的方式,从上到下是字母(A,B,C,D```),从左到右是数字(1,2,3```),所以诸如:A13(见下图),就是图上标红的位置,这个是xilinx的一颗芯片示意图,其它厂商的FPGA芯片也类似。工程师都是写代码,但是作为硬件编程工程师,如果不熟悉FPGA的底层资源和架构,是很难写出高质量的代码——至少很难写出复杂逻辑的高质量代码,也很难站在系统的层面去考虑芯片的选型等问题。

2024-02-21 22:39:59 235

原创 【JESD204B】一直建链断链的一个原因

JESD204B后面信号添加太多MARK_DEBUG时,也会导致建链不成功。

2024-02-20 21:40:10 609

原创 【数字信号处理】采样定理

欠采样会导致频谱混叠,使得较高频率被折叠成较低的频率。当采样率等于信号频率时,恢复出的型号的频率为0。x(t)为频带有限信号,采样频率大于被采样信号最高频率的2倍时,则x(t)可以从样本值中准确恢复。

2024-02-19 22:48:29 457

原创 利用网线在两台电脑间建立局域网共享大文件

5.找到需要传输的文件,右键属性,点击共享,然后继续点击共享页面中的共享,然后下拉选择要共享的用户,选择Everyone,点击添加,权限级别改为读取/写入;也可以在电脑搜索框中输入cmd运行命令提示符,在其中输入ipconfig查看本机的ip地址,然后修改另一台电脑的ip地址即可。3.右键以太网,点击属性,双击internet协议版本4,选择“使用下面的ip地址”选项,在IP地址那里输入192.168.1.1;2.在控制面板点击网络和Internet,然后点击网络和共享中心,再然后点击更改适配器设置;

2024-01-21 11:32:32 1116

原创 matlab实现十进制数转二进制补码

参数N:输出二进制补码的最小位数,位数不够则自动扩展;输出值c:转换得到的二进制补码字符串数组;参数x:原始十进制数,正负数都可以;输出值n:实际输出的二进制补码位数。

2023-12-11 21:41:39 549

转载 C语言中的局部变量和全局变量

从上面可知,从变量的作用域角度来看,变量可分为全局变量和局部变量;全局变量在整个执行过程中都占据中内存单元,它会使得函数的通用性降低,如果将一个函数移到另一个文件中时,还需要考虑把相关的全局变量及其值一起移过去,而且当该全局变量与其他文件的变量同名时就会出现问题,这会降低程序的可靠性和通用性;设置全局变量的目的是为了增加函数间数据联系的渠道,由于同一个源文件中的所有函数都可以引用全局变量,所以在任意函数中改变全局变量的值,这就会影响到其他函数中全局变量的值,也就是说所有函数中的同一全局变量占用同一块地址;

2023-11-27 23:03:41 121

vivado hls 手册 2021

vivado hls 手册 2021

2023-09-27

IEEE 1800-2017

System Verilog IEEE 1800-2017语言标准

2023-03-22

空空如也

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

TA关注的人

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