
FPGA
mail-mail
路漫漫其修远兮,吾将上下而求索。
展开
-
Xilinx FIFO使用小结
2,较大的存储应用,建议用bram;零星的小ram,一般就用dram。但这只是个一般原则,具体的使用得看整个设计中资源的冗余度和性能要求。3,dram可以是纯组合逻辑,即给出地址马上出数据,也可以加上register变成有时钟的ram。而bram一定是有时钟的。1,物理上看,bram是fpga中定制的ram资源,dram就是用逻辑单元拼出来的。原创 2024-04-03 15:34:52 · 350 阅读 · 0 评论 -
Vivado 布局布线约束之pblock
布局约束Pblock设置方法原创 2023-01-04 18:06:07 · 1564 阅读 · 0 评论 -
zynq启动模式详解及启动过程详解
zynq启动模式详解及启动过程详解原创 2022-05-11 13:19:56 · 283 阅读 · 0 评论 -
C语言 一个crc32校验算法
#include <stdint.h>static const uint32_t crc32tab[] = { 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82原创 2022-05-05 17:10:42 · 1176 阅读 · 0 评论 -
C语言 一个32位数怎么转化成四个八位数
例如:int data = 0x11223344; char b[4];想让 b[0] = 44; b[1] = 33; b[2] = 22; b[3] = 11;移位操作符 美其名约 移位是指以2进制位为单位进行操作对应你的应该是b[0] =data;b[1] = (data >> 8) & 0xff;b[2] = (data >> 16) & 0xff;b[3] = (data >> 24) & 0xff;...原创 2022-05-05 16:22:54 · 3072 阅读 · 0 评论 -
.gitignore文件 新增忽略文件并没有生效
新增的忽略文件没有生效,是因为git是有缓存的,而之前的文件在缓存中,并不会清除掉,还会继续提交,所以更新.gitignore文件,要清除缓存文件git rm -r --cached .git add .git commit -m ‘update .gitignore’...原创 2022-05-05 10:30:34 · 219 阅读 · 0 评论 -
如何删除git仓库
1.在本地仓库的目录下调用命令行删除根目录下的.git文件夹,输入find . -name “.git” | xargs rm -Rf这样本地仓库就清除了,像下面这样,master不见了。2.手动删除掉残留的.git文件3.在命令行中输入rm -rf + github仓库地址,例rm -rf https://github.com/NeroSolomon/VLearning.git4.在github的对应的库中到setting删除库。...原创 2022-05-05 09:06:02 · 910 阅读 · 0 评论 -
FPGA基础知识-同步复位和异步复位
fpga中的信号都有时钟域的,时钟域说的是驱动那个信号的时钟,同步说的是那个控制信号是从跟被控制信号同一个时钟域来的。异步的话,就很好理解了,控制信号和被控制信号属于两个不同的时钟域。如果属于后者的话,就要小心有跨时钟域的问题了。同步就是你想操作的时候,即使你执行了,他也会等到边沿变化的时候才执行。就是在posedge和negedge的时候。异步就是我不管你是上升沿还是下降沿,只要有信号,就立刻执行。这样的方式不好。还是同步比较好。防止出错。同步复位 是指复位信息只有在时钟上升沿到来时,才能有效,否则原创 2022-04-13 09:12:37 · 574 阅读 · 1 评论 -
FPGA基础知识-锁存器和触发器
锁存器 和 触发器1、概念锁存器-latch :是电平触发的存储单元, 数据存储的动作只取决于 输入信号 的电平值 ,只有当锁存器处于使能 状态, 输出才会随着 输入发生变化;触发器-Flip flops: 当收到 输入脉冲时,又称为触发。触发器 输出会根据 规则 改变 状态,然后保持这种状态直到 收到 另一个 触发 ;2. 两者区别a, latch 同 所有的输入信号相关,当输入信号变化时,latch 就会变化; DFF 由 时钟沿触发, 只有当时钟触发时,才会采样当前的输入,产生输出;原创 2022-04-13 09:10:08 · 387 阅读 · 0 评论 -
timequest timing analysis 使用教程
添加链接描述比较详细,可以研究添加链接描述原创 2022-04-07 14:53:54 · 474 阅读 · 0 评论 -
新手入门FPGA网站
新手入门FPGA网站《HDLbits》也在列,下面看下这个网站的介绍。此站点包含可帮助您学习计算机设计基础知识的工具HDLBits:在Verilog中练习数字电路设计的问题集和在线判断ASMBits : 就像 HDLBits,但用于练习 Nios II 或 ARMv7 汇编语言CPUlator:浏览器内全系统 MIPS、Nios II 和 ARMv7 模拟器和调试器这些工具最初是为了补充多伦多大学二年级本科计算机工程(数字逻辑和计算机组织)课程而创建的,此后已被其他类似课程使用。为什么创建这些原创 2022-04-07 11:22:32 · 200 阅读 · 0 评论 -
时序约束三
转载:转载时序分析的题目是FPGA逻辑岗和数字IC岗最常考的题型之一,也是我们第一次讲解关于时序分析相关的题目,希望大家能够通过这道题解析和扩展对时序分析的概念、原理、公式、计算、应用都能够有一个初步的了解。4、假设时钟周期为T,寄存器时钟端到数据输出端的延迟为Tcq,时钟到第一级寄存器的时钟端的延迟为Tcd1,时钟到第二级寄存器时钟端的延迟为Tcd2,两级寄存器之间的组合逻辑延迟为Tpd,寄存器的建立时间为Tsetup,Tpd的最大延迟为( )。(大疆FPGA逻辑岗B卷)A Tpd ≤ T -原创 2022-04-05 13:53:40 · 395 阅读 · 0 评论 -
时序约束二
一、建立时间的检查建立时间的检查是指检查电路里每一个触发器的数据和时钟的关系是否满足建立时间的要求。我们以上图为例进行建立时间检查。由图可知,我们主要针对第二个触发器UFF1进行检查。我们可以梳理时序关系如下:通过这个图,我们可以得到满足建立时间需要达成以下目标即我们之前说到的Setup slack = Data Required Time(setup) - Data Arrival Time > 0 <===> 1+2+3<6+7-5在考虑skew和jitte原创 2022-03-30 13:57:53 · 237 阅读 · 0 评论 -
时序约束一
一、基本术语二、基本概念1.建立时间(setup time)触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器2.保持时间(hold time)触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据将不能被打入触发器。3.时间裕量(time slack)传输中的信号的真实时间于需求时间之间的差值。通常用来表示设计是否满足时序要求。Setup slack = Data Required Time(setup)原创 2022-03-30 11:27:33 · 403 阅读 · 0 评论 -
modelsim基本命令
(1) +incdir+:如:vlog +incdir+YOUR_SOURCE_PATH foo.v+incdir+YOUR_SOURCE_PATH 选项是指在verilog文件中出现`include “xxx.v” 时,包含文件的搜索路径。缺省是搜索当前路径,然后是 YOUR_SOURCE_PATH 指定的路径。vlog +incdir+$UVM_HOME/src -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF $UVM_HOME/src/uvm_pkg..原创 2021-11-16 09:35:39 · 954 阅读 · 0 评论 -
2021-11-11
一、硬件环境二、源码1、只有一个文件tb_top.sv`timescale 1ns/1ns`include "uvm_pkg.sv"module tb_top; import uvm_pkg::*; `include "uvm_macros.svh" initial begin `uvm_info ("info1","Hello World!", UVM_LOW) end endmodule2、准备脚本文件run.dovdel -all -li原创 2021-11-11 12:01:15 · 331 阅读 · 0 评论 -
modelsim基本命令
以前在使用ModelSim进行仿真的时候,一直是使用其GUI进行操作的,但是这样很繁琐也很费时。故希望学习其自动化仿真do文件,下面是学习的一些总结。一、编写基本的do文件下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令。1、quit -sim ---- 退出原来的仿真工程;2、cd ---- 设置工作目录的路径,就是仿真工程路径;3、vlib work ---- 在工作目录下建立一个work目录,请注意不要用操作系统直接新建一个work的文件夹,因为用操作系统建立的work文件夹并原创 2021-11-11 09:28:55 · 15137 阅读 · 2 评论 -
有关vivado中ila的使用
链接一链接二原创 2021-10-08 15:36:25 · 761 阅读 · 0 评论 -
ZYNQ+PetaLinux控制AXI GPIO实现LED灯亮灭
https://blog.youkuaiyun.com/u011239266/article/details/108947559原创 2021-04-16 14:13:10 · 890 阅读 · 0 评论 -
如何使用dual port 来进行fpga与nios的数据交互
一、说明1、本文主要是验证verilog和C混合编程的功能,即同时使用verilog和C语言来操作双端ram;2、本文是在nios系统中建立的双端ram,而非在verilog编程下例化的双端ram;二、本文参考链接https://blog.youkuaiyun.com/programmer_guan/article/details/102720059三、过程1、在nios中添加双端ram2、双端ram的rtl视图3、verilog操作双端ram/*-------------原创 2021-02-07 14:57:11 · 815 阅读 · 1 评论 -
nios :如何定义自己的ip核
一、为什么要自定义IP1、常规的单片机外设是固定的,无非是定时器、串口、SPI接口、IIC接口等等,这些外设受MCU核控制。那如果想添加进去自己的外设,然后让它受MCU内核控制该怎么办呢?就是本文说的自定义IP核;二、所需文件接口文件寄存器文件逻辑文件三、步骤1、最好是要建的IP 核单独建立一个工程,其RTL视图如下2、在qsys系统中配置ip核相关信息3、将建立好的ip核添加到自己的工程中4、在nios系统中控制led亮灭时间四、工.原创 2021-02-05 15:45:24 · 785 阅读 · 0 评论 -
NIOS II 自定义IP核的静态地址对齐和动态地址对齐
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addressAlignment {NATIVE}在软件编程时可以使用IOWR(基地址,寄存器编号(n),数据)对自定义IP的第n个寄存器进行写入操作可以使用IORD(基地址,寄存器编号(n)) 对自定义IP的第n个寄存器进行读出操作如果使用动态地址对齐,(每个寄存器在Avalon总线上占 数据位宽/8个字节的原创 2021-02-02 14:22:45 · 480 阅读 · 0 评论 -
Nios II——定制自己的IP1之Nios接口类型
接口前缀 接口类型 asi Avalon-ST宿端口(输入) aso Avalon-ST源端口(输出) avm Avalon-MM主端口 avs Avalon-MM从端口 axm AXI主端口 axs AXI从端口 ...原创 2021-01-18 14:26:24 · 294 阅读 · 0 评论 -
动态范围
动态范围bai是指使接收机能够对接收信du号zhi进行检测而又使接收信号不失真的输dao入信号的大小范围,一般zhuan指幅度。如果接收信号过大,会引起放大器的失真和引入噪声,信号过小,信号无法被检测到。动态范围就是指这个最大最小的范围。http://mp.ofweek.com/sensor/a245693023866...原创 2021-01-05 10:00:48 · 1825 阅读 · 0 评论 -
wireshark相关知识
1、如何设置wireshark网卡混杂模式https://blog.51cto.com/1453735/23301422、WireShark默认不检查校验和的解决办法https://blog.youkuaiyun.com/stephenxu111/article/details/12945893在checksum的field上点右键,选protocolpreferences->validatethetcpchecksumifpossible3、WireShark 无法抓取...原创 2020-12-07 11:21:50 · 381 阅读 · 0 评论 -
时序命令表
时序命令 含义概述 create clock 创建基准时钟,一般是本地晶振时钟或者是级联时钟。门控时钟也需要在此处创建。 create generated clock 创建基准时钟的派生时钟,一般是PLL产生的时钟信号,或者分频电路产的时钟信号。 set clock latency 外部clock信号来源到芯片的clock输入端的delay,级联时钟时需要考虑。 set clock uncertainty 时钟不确定性,为时钟指定一个大致的扭斜范围,增大一些时序原创 2020-12-01 09:37:41 · 647 阅读 · 0 评论 -
如何生成批处理文件
https://jingyan.baidu.com/article/6b182309fce768ba59e15944.html批处理文件如何在cmd界面显示中文https://jingyan.baidu.com/article/ce436649f44d4d3773afd302.html原创 2020-11-27 11:08:16 · 252 阅读 · 0 评论 -
2020-11-26
时序分析一定是基于特定器件,这个器件要具体到一定型号的特定速度等级。时序分析一定是基于逻辑设计经过布局布线后形成的网表。一、本次设计讨论基于芯片EP4e75f23最高频率是多少。二、Timing Analyer报告clocks:1000Mhz(这个是软件报告设计中的时钟信号的约束频率):因为用户没有对时序加约束,软件会自动对时钟加入最大的可能约束。Slow 1200mV 100C Model:芯片内核供电电压1200mV,工作温度100度情况下的慢速传输模型。Slow 1200m.原创 2020-11-26 10:36:07 · 413 阅读 · 0 评论 -
Windows7下arp的绑定和解除绑定 netsh命令
1、首先以管理员身份运行CMD打开命令行程序(开始-程序-附件-命令提示符 击右键选择“以管理员身份运行” )2、运行 netsh i i show in3、记住你所要绑定的端口的idx4、绑定(假设idx=12,绑定本地网络)netsh -c "i i" add neighbors 12"192.168.10.2" "00-0a-35-01-fe-c0"5、解除netsh i i reset6、重启生效(如果使用的是固定ip,那么此步骤会将固定ip删除,需重新设定)..原创 2020-11-11 09:53:25 · 2240 阅读 · 0 评论 -
Verilog语言中产生随机数的方法
在Verilog语言中,系统任务 $random函数提供了一个产生随机数的方法。当函数被调用时返回一个32bit的随机数,它是一个带符号的整形数。$random一般的用法是:$ramdom % b ,其中 b>0.它给出了一个范围在(-b+1):(b-1)中的随机数。例1:reg[23:0] rand; rand = $random % 60; 给出了一个范围在-59到59之间的随机数。例2:reg[23:0] rand; rand = {$random} % 60; 通过位并接操作产生.原创 2020-10-19 16:51:26 · 12553 阅读 · 0 评论 -
signal tap ii观察wire和reg类型信号
在待观察的wire信号旁边加上/*synthesis keep*/;wire [31:0] readdata/* synthesis keep = 1 */;对于没有output的reg信号,Quartus在综合时也采用了最佳方式,因此,在SIgnalTap II中不能观察该信号。解决方法:对于reg信号则加/*synthesis noprune*/或者/* synthesis preserve */两者的不同之处在于:/*synthesis noprune*/避免Quart...原创 2020-10-16 09:20:06 · 1424 阅读 · 0 评论 -
RTL8211E应用(二)之信号输入、输出接口
网络通信路径常可总结为:网络数据–>RJ45接口–>网络变压器–>网络PHY芯片–>MAC–>CPU,如图1。其中网络变压器到PHY之前传输接口一般为MDI,而PHY到MAC之前的传输接口一般包括有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等,下面我们以RTL8211E为例对网络通信路径接口做一次梳理与总结:对应于RTL8211E,在物理网线与RTL8211E之间,主要通过M转载 2020-09-01 17:13:35 · 2016 阅读 · 0 评论 -
RTL8211E应用(一)之芯片功能介绍
TL8211E是Realtek瑞昱推出的一款高集成的网络接收PHY芯片,它符合10Base-T,100Base-TX和1000Base-T IEEE802.3标准,可以通过CAT 5 UTP电缆及CAT 3 UTP电缆传输网络数据,该芯片在网络通信中属于物理层,用于MAC与PHY之间的数据通信。目前有RTL8211E-VB-CG、RTL8211E-VL-CG、RTL8211EG-VB-CG等三个版本。主要应用于网络接口适配器,网络集线器,网关以及一些嵌入式设备当中。RTL8211E的主要功能特性包括转载 2020-09-01 17:11:07 · 7214 阅读 · 0 评论 -
could not find include file alt_types.h on include path 解决方法
一、报错二、解决方法1、2、3、4、原创 2020-08-20 14:50:59 · 1513 阅读 · 0 评论 -
ddr与sdram的区别
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指 Memory工作需要同步时钟。SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(显卡上的DDR已经发展到DDR5)。 很多人将SDRAM错误的理解为第一代,也就是 SDR SDRAM,并且作为名词解释,皆属误导。DDR即Double Data Rate双倍速率同步动态随机存储器原创 2020-08-17 10:58:19 · 6548 阅读 · 0 评论 -
nios 和arm 是硬核还是软核?
核(CORE)是一个数字系统的核心,负责整个系统的内存调度,中断管理,算术逻辑运算等,如同整个系统的大脑,是由物理电气实现逻辑功能的关键。尽管复杂,但不可忽略的是,核同其他数字器件一样,也是一个典型的逻辑器件(准确的说是时序逻辑),也由逻辑门、触发器构成,那么也就可以由硬件描述语言来描述。 既然核可以由HDL来描述,那么对于每一个特定功能和性能(即逻辑的时序和功能特定)的核而言,必有一组HDL描述等价于它,而具体的器件信号、封装等,只不过是这组HDL依赖具体工艺的一种物理实现罢了。因此,我们应该认识原创 2020-08-11 11:37:41 · 1580 阅读 · 0 评论 -
关于QuartusII中Pin Planner里面的引脚符号含义说明
Assignments-->Pin Planner-->Pin Legend,即可查看引脚符号说明。。原创 2020-08-07 16:17:09 · 7832 阅读 · 1 评论 -
fpga片上资源查看
一、明确fifo和ram是使用内部的m9k来完成的。如果一个m9k完成不了,会使用更多个m9k来完成;二、什么是m9k在编程中会需要一些存储器,如果用逻辑构成的话就会占用大量逻辑,很浪费,于是在内部做了一些M4K,M9K等存储器,专门给FIFO,RAM等使用,这样就节约了逻辑用来做其他事。每一块中包含8192个存储位,加上校验位共9216位,故称M9K。三、如何查看使用的fpga有多少个m9k个数统计方法:42396/9216=46四、分析当fifo的宽度和深度符合表3-1中的各原创 2020-07-29 09:47:03 · 3673 阅读 · 0 评论 -
fpga如何使用tcl文件分配引脚
一、在引脚分配界面,点击file-export,选择保存为tcl文件格式。二、导入tcl文件。选中指定的tcl文件,直接点击run即可。原创 2020-07-27 11:10:32 · 1358 阅读 · 0 评论 -
timequest使用
1、介绍quartus软件中timequest如何使用的https://blog.youkuaiyun.com/moon9999/article/details/736104552、大方向介绍的https://blog.youkuaiyun.com/code_robot/article/details/6217509?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_原创 2020-07-17 11:30:19 · 395 阅读 · 0 评论