- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 【BUG记录】未解决,求大神指点!myhdl.vpi生成错误,使用Myhdl和Iverilog联合仿真,%1 is not a valid Win32 application
本文主要记录一个研究时间较长的Bug,Myhdl与Iverilog在win中生成myhdl.vpi不能用,%1 is not a valid Win32 application
2025-03-22 18:54:38
877
原创 【FPGA学习】Alex开源代码学习之—如何在Win下通过Makefile复现Vivado工程
开发FPGA时,要搞清楚,哪些工作是自己做的,哪些工作是开发工具替我们做的,这样才能不拘泥于表面形式,真正掌握知识。个人开发时,我们经常使用Vivado或Quartus的GUI开发工具,很多开发的理解都与GUI的按钮绑定了,怎么设计输入、怎么综合编译、怎么布局布线,怎么生成bit流,都是傻瓜式的一键操作,这忽视了开发工具替我们做的工作。初学Github Alex的开源代码,就存在这个问题。无法理解其代码架构,既不能复现人家的开发流程,也无法构建自己熟悉的Vivado工程。
2025-03-19 08:59:24
571
原创 【FPGA开发】Verilog-数据截断实现四舍五入效果、模块化改造、对比Matlab验证,Modelsim覆盖率
考虑负数情况,同样把要截断的尾数看成小数,要截断15位,.100_0000_0000_0000也是0.5,不过要注意的是,对于负数的补码来说,符号位的权值是负数((10.10) = (-2+0.5=-1.5)),对于负数来说,-1.5四舍五入后是要变成-2的,如果-1.5的小数位要是进位给整数位,会变成-1,这与实际不符合!所以在理解定点数的四舍五入时,把[31:15]看做整数,把[14:0]看做小数,小数部分大于等于0.5,就进位1;负数向0的方向(数值变大的方向)舍,向数值变小的方向 入。
2025-03-04 20:50:53
1055
原创 【FPGA开发】AXI DMA手册阅读、仿真波形分析
下图中高亮的两个,都是AXI-FULL接口,他们都接ZYNQ上的HP接口,都是主机,其中,MM2S是从内存中读数据,S2MM是向内存中写数据。这个端口命名的规则,可以按照数据流的方向记忆,读数据,是从内存到IP核,所以是MM to Stream;下图中高亮的两个,都是AXI Stream接口(写成了AXIS),一主一从,从机接收来自PL端用户的Stream流数据,主机用来把Stream流数据吐给PL端用户。上面的一堆接口有点绕,结合BD中的模块看,主要是MM和S的那些端口。这里再和上面的功能框图对应一下。
2024-12-02 20:00:57
911
原创 【FPGA开发】Vivado自定义封装IP核,绑定总线
一般xilinx官方的bd中涉及的总线,都会可以直接映射的选,如果是自己定义的总线协议,也可以增加自定义。想把连接ram的端口绑定在一起,这样在BD中连线时,就不用一根根的拉线,就可以一个总线搞定。在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。支持单个文件的封装、整个工程的封装,这里用单个文件举例。因此自定义IP核的地方,也要把这个属性设置一下。选择第三个,指定路径封装,找到文件所在目录。这里自动验证一下,发现有一个严重警告。取个名,选择封装IP的路径。全选中,右键,添加总线。
2024-11-24 16:52:18
956
原创 【FPGA开发】ZYNQ中PS与PL交互操作总结、BRAM,DMA原理浅析、仿真操作
了解了总体框架后,可以对筛选出的,和数据交互有关的总线进行进一步学习,到这一步,就可以借鉴一些网络分享的琐碎知识点(当然也要结合UG585)RegOffset是地址偏移量,也就是在基地址的肩膀上,偏移多少个寄存器,注意,AXI总线是字节寻址的,映射地址时,按照4字节寻址。:注意总线颜色是AXI 32bit总线,PS和PL之间,共4个GP接口,每个方向各有两个,能实现双向的数据传输,和数据交互有关。:加速器一致性端口,PL端可以直接访问PS的缓存,提供缓存一致性访问,实现低延迟数据传输,和数据交互有关。
2024-11-21 21:12:43
2632
2
原创 【FPGA开发】AXI-Stream总线协议解读
AXI-Stream是两个连接在一起的器件进行数据交换的标准协议,他是点对点协议,连接一个发送端和一个接收端。1、数据字节:包含有效信息的数据字节,数据字节在源端和目的端之间传输2、位置字节:指示数据流中数据字节的相对位置,一个占位符,它不包含在源端和目的端之间传输的任何相关数据值。3、空字节:不包含上述两种字节意义的第三种字节。1、Transfer:AXI-Stream协议中的一次数据传输。一次TVALID和TREADY的握手,就是一次transfer。
2024-11-16 16:51:32
2071
原创 【FPGA开发】AXI-Full总线接口介绍、FPGA搭建仿真平台
AWID:写地址ID,这个信号是写地址组的标识标签。实际上,每个传输通道都有一个自己的ID。AWADDR:写地址,该地址给出了写突发事务中第一次传输的地址。AXI协议是基于突发的,主机驱动控制信息和事务中第一个字节的地址传输到从机,从而开始突发。随着突发的进行,从机必须计算突发中后续传输的地址。突发不能跨越4KB的地址边界。AWLEN:突发长度,给出了突发中传输的确切数量。AXI4对INCR突发模式支持1-256次传输,对所有其他突发模式支持1-16次传输,这里所说的突发模式,在下面展开。
2024-11-16 09:11:30
981
原创 三分频电路设计
举例,4分频时,1个输出时钟周期内,有4个输入时钟,按照50%的占空比算,输出时钟需要在4/2=2个时钟周期处翻转。这里clk2的变化是根据下降沿来的,数据稳定,建立时间、保持时间都能满足,所以在时钟沿立即就能变化,不会出现打一拍的现象。更具一般性的,4分频计数两个数,2N分频计数2N>>1个数,又由于计数器从0开始,则有:(2N>>1)-1 通式。最简单的,二分频时,直接把输入时钟加到D触发器上,输出端Q取反后,接回输入D端,就可以了。通常情况下,偶数倍分频器,可以借助计数器实现。两种而已,图示如下。
2024-11-15 08:29:49
1685
原创 移位寄存器设计—FDRE、SRL16E及原语约束
信号处理中,实现数据对齐时,常常对单bit或多bit信号进行打拍操作,这个可以通过移位寄存器实现,SLICEM中的SRL即为移位寄存器。这里主要记录下不同写法的效果。
2024-11-07 09:13:01
1439
原创 【FPGA开发】AXI-Lite总线协议解读、Verilog逻辑开发与仿真、Alex Forencich代码解读
所有的传输突发长度均为1所有的数据访问都使用数据总线的全宽度(只能是32-bitsZ或64-bits)所有的访问都是不可修改的,不可缓冲的不支持独占访问从机代码可以使用Xlinx官方提供的自定义IP自动化产生芯片型号XC7Z020CLG400-1,Vivado2018.3创建 Block Design —> Tools —>Create and Package New IP按照所需配置选好,在Block Design中找到IP。
2024-11-06 13:46:15
1570
原创 【BUG记录】Xilinx复数乘法器、乘法器IP核,在modelsim仿真时,出现一个时钟内先算错,再算对的情况
【BUG记录】Xilinx复数乘法器、乘法器IP核,在modelsim仿真时,出现一个时钟内先算错,再算对的情况
2024-02-27 14:45:21
963
1
原创 Modelsim仿真中,通过编写do文件替代重复手动操作,简化仿真流程
在modelsim仿真时,总会对设计中的一个模块进行反复仿真。因此可以通过编写do文件的方式,简化上述步骤。官方说明书,应有尽有。
2023-11-16 21:42:32
542
原创 Xilinx IP核手册阅读——FIFO
如上图,复位信号拉低后,经过1clk后,写使能拉高,数据开始写入FIFO,再经过2clk,wr_count开始计数,empty信号拉低后,rd_cout信号开始计数,但是注意光标时间,wr_count和rd_count两个信号并不是和clk时钟信号对齐的。至此,Overview看了个大概,总结来说,该章中主要介绍IP核的应用场景、适配性等问题,并会给出IP核接口的详细说明,还会有简略的时序图说明接口之间的关系,力求全面总体,后面的章节一定是对ch1中提到的多有功能做出系统的详细的说明。(是否使用前者更好?
2023-07-27 19:16:08
2412
原创 Xilinx 7系列芯片选型手册的资源量怎么看
总共的块RAM资源,用Block RAM/FIFO w/ ECC (36 Kb each) * 36就是。:切片,7系列中,一个Slice里有4个6输入LUT,3个多路选择器 ,1个快速进位链,和8个触发器。剩下的资源都是封装,尺寸,厚度,IO数和对应封装所具有的(GTP收发器),也就是说,Logic Cell的数量为LUT数量的1.6倍。:速度等级,数越小,速度越高,性能越好,带L的表示低功耗。:块RAM资源的个数,每个36Kb。:最大分布式RAM资源,Kb单位。:逻辑单元,对于7系列来说,
2023-07-25 16:19:25
2880
原创 同步复位、异步复位、亚稳态、建立时间、保持时间、恢复时间、清除时间
同步、异步复位的概念是重要的基础内容,需对其有较清晰的认识,才能在复位电路的设计时得心应手,本文基于前辈分享,结合自己的理解,浅谈亚稳态、复位电路等相关内容。首先需要明确的是,。复位的目标是将寄存器、RAM等单元恢复初始状态,重点应该在于这些单元的变成初始状态,所以同步、异步实际上说的是。不要理解为:复位信号和时钟之间的关系。
2023-07-21 16:06:46
1019
转载 【转载】FPGA设计中的功耗分析(xilinx)
笔者经历过一个项目,整个系统的功耗达到了100w,而单片FPGA的功耗估计得到为20w左右,有点过高了,功耗过高则会造成发热量增大,温度高最常见的问题就是系统重启,另外对FPGA内部的时序也不利,导致可靠性下降。另一个层面是具体的实现方法,设计中所有吸收功耗的信号当中,时钟是罪魁祸首。图5中的功耗是设置成“Write First”时的,图7中是设置成“NO CHANGE”后的功耗,BRAM的功耗从0.614W降到了0.599W,因为只使用了7%的BRAM,如果设计中使用了大量的BRAM,效果能更加明显。
2023-07-05 17:06:33
3003
原创 线阵自然指向性函数图Matlab仿真
%线阵的自然指向性仿真clc;clear;close all;% 阵数目N = 10;N1 = 5;N2 = 8;N3 = 12;N4 = 15;N5 = 20;% 工作频率f = 1000;% 声速c0 = 1500;% 波长lamda = c0/f;d = lamda/2; %布阵间距n = 10000;% xita = (-pi:2*pi/n:pi);xita = (-pi:2*pi/n:pi);fai = pi * d * sin(xita) / la
2022-05-05 11:59:05
2479
3
原创 LFM信号时频的Matlab仿真
目录理论知识编程LFM的频谱LFM的时域信号LFM的模糊度函数理论知识编程LFM的频谱先说频谱,频谱整明白了%%clc;clear;close all;%% 参数初始化A = 1; %信号幅度f0 = 2e3; %频率/HzT = 1; %脉冲宽度/sB = 1e3; %LFM信号带宽1kk=B/T; %LFM调频斜率fs = 10e3; %采样频率10kN = T*fs; %采样点数tt = linspace(-T/2,T/
2022-05-03 08:44:03
3067
1
原创 Error (10003): Can‘t open encrypted VHDL or Verilog HDL file....current license file does not...报错解决
Error (10003): Can't open encrypted VHDL or Verilog HDL file -- current license file does not contain a valid license for encrypted file
2022-02-09 07:41:20
4597
原创 FPGA-状态机
理论知识状态机,全称:同步有限状态机(FSM),同步,指的是状态跳转是在时钟的控制下进行;有限,指的是状态的个数有限。分为两类:Moore型状态机:输出时只与状态有关Mealy型状态机:输出时不止于状态有关,和输入也有关可以用状态机图来表示整个系统的结构流程,十分的好用。在程序的编写中,会有如下三种编码:独热码:最适合高速系统,但是占用的寄存器资源比较多,有多少个状态就要有多少个位宽二进制码:位宽用的少,但是不适合告诉系统,一般不用格雷码:相邻状态只有1位不一样,性能折中的码...
2022-01-19 16:05:02
352
原创 wire、reg都是什么时候用的
reg的应用场景always模块中被赋值的每一个信号都得是reg型initial语句中,得是reg型wire的应用场景input、output、inout得用wire型模块实例化时的输出得用wire型assign赋值语句指定的组合逻辑信号中得用wire型...
2022-01-14 08:45:21
674
原创 阻塞赋值与非阻塞赋值
阻塞赋值:用“=”表示,计算等号右边,期间不允许任何其他语句干扰,必须等这个赋值语句完成后,再进行下一条赋值语句。串行块(begin-end)中 ,各条阻塞赋值语句就像C语言一样按顺序执行。非阻塞赋值:用“<=”表示,在赋值开始时刻,计算所有赋值号右边的语句,赋值结束时刻,同时更新赋值号左边的语句,整个赋值期间,允许其他任何语句的操作。非阻塞赋值只能用于对寄存器变量进行赋值,因此只能用于“initial”和“always”块中,而不能用于连续赋值“assign”。相比于阻塞赋值,非阻塞赋值对应
2022-01-14 08:33:45
1582
原创 Quartus联合modelsim的ip核仿真——以FIFO为例——(报错问题解决)
tips:本文章不涉及fifo的ip核参数含义讲解,只是通一通开发流程,总结一下哪里容易报错,新手向,旨在能够正确出波形,别卡在报错中折磨。在新建工程前,新建文件夹管理文件打开quartus,新建工程,路径设置到quartus_prj目录下,工程名和顶层名均为fifo一路next到选型号,按照板卡型号进行选择。Family->package->pin count---->core speed grade->available devise->nextsimulatio
2022-01-12 11:06:44
3982
9
原创 利用bat文件批量修改文件后缀名
把所有待改文件放在同一个文件夹下该文件夹下新建记事本书写形如:rend *.flac *.mp3 (.flac->.mp3)保存,改记事本后缀名为.bat运行
2022-01-09 21:36:40
2432
原创 ADC中的SPS单位
SPS是采样率,是ADC每秒采样点的数目。注意区别采样率与转换速率。采样率:ADC每秒采样点的数目。转换速率:受两个因素的影响:AD的转换时间AD转换的位数采样速率的高低主要取决于ADC的转换时间。不同类型的转换器转换速度相差甚远。其中并行比较ADC的转换速度最高,逐次比较型ADC次之,间接ADC速度最慢。A/D转换器的分辨率(转换位数)与其转换速率是相互制约的,ADC的分辨率越高(转换位数),其转换所需要的时间就越长,转换速率也就越低。参考ADC里面采样速率的单位SPS怎么解释?
2022-01-01 22:21:53
5063
原创 C语言中#ifndef的作用
图评论截取自链接: #ifndef的用法.的评论区第一条,豁然开朗,记录下来//一般格式: #ifndef <标识> #define <标识> ...... ...... #endif //<标识>在理论上来说可以是自由命名的,//但每个头文件的这个“标识”都应该是唯一的。//标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线....
2021-12-08 22:00:15
666
原创 bat文件建文件夹时乱码及失败问题
乱码问题:.txt文件保存时不要直接ctrl+s,要用“另存为”,把UTF8改成ANSI。失败问题:md与文件名之间要有空格,excel批量处理时,公式是:=“md ”&A2 (注意d后面的空格)
2021-06-23 21:38:35
5192
1
原创 Not enough information to list image symbols. Not enough information to list load addresses in ...
除了绝大部分网上给的解决方法外:Not enough information to list image symbols. Not enough information to list load addresses in …我在向正点原子例程“输入捕获”中添加lcd驱动程序时,发现按照上述链接的做法填了路径什么的,还是报错,最后发现是这个.c文件文件没有添加进来导致这两句话一直是无定义,填进来就好了。...
2021-06-03 01:07:48
28272
1
电调测试程序 https://blog.youkuaiyun.com/weixin-45902229/article/details/121
2024-11-01
UG474 7-series-product-selection-guide
2023-07-25
vscode中,teroshdl插件导致缩略图里面的部分中文注释变大
2024-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人