- 博客(22)
- 收藏
- 关注
原创 CPU设计之分支预测
如果我们在取指令阶段的时候,就可以“提前知道”该指令是否为分支指令,并且可以知道它的方向(跳或不跳),以及相应的目标地址(target address)的话,那么就可以直接在下一个周期从分支指令的目标地址开始取指令,这样就不会对流水线产生影响,从而避免了做无用功。对于这种不需要等待分支指令的结果真的被计算出来,而是提前就预测结果的过程就是分支预测。一件东西之所以可以被预测,一定是它本身具有某些特点,使得预测其成功的概率是大于百分之五十的,这种情况下做预测才有相应的意义,我们后面再展开讲这一点。
2024-02-19 23:43:26
1098
原创 $monitor和$strobe都看的是啥
monitoron的效果与$monitoroff刚好相反,主要用于再次启动激活$monitor任务,在$monitoron执行后,如果$monitor监测的参数发生变化,则会触发$monitor的执行。示例中,$monitor位于过程块中,sig从0时刻开始,每发生一次变化,$monitor就会执行一次,可见$monitor会持续监测其中参数的变化,只要其中参数发生变化,$monitor就会执行。Ø$strobe和$monitor监测的相关变量的值,都是这些变量在当前时间槽中的最终稳定值;
2024-01-27 22:02:59
890
原创 数字前端/FPGA设计——握手与反压问题
声明:本文来自0431大小回前言:在芯片设计或者FPGA设计过程中,流水设计是经常用到的,但是考虑数据安全性,需要与前后级模块进行握手通信,这时候就需要对流水数据进行反压处理,本文将具体介绍握手与反压。本文讲述valid-ready握手,下面列出三种握手情况,目的是解释清楚握手的时序。
2024-01-15 21:52:25
2000
2
原创 两万多字分析CPU硬件工作流程------以Intel CPU体系结构为例
内存层次结构的意义在于利用引用的空间局部性和时间局部性原理,将经常被访问的数据放到快速的存储器中,而将不经常访问的数据留在较慢的存储器中。一般情况下,除了寄存器和L1缓存可以操作指定字长的数据,下层的内存子系统就不会再使用这么小的单位了,而是直接移动数据块,比如以缓存线为单位访问数据。对于组冲突,可以这么理解:与上文相似,假设一个缓存,由512条缓存线组成,每条线64字节,容量32KB。
2024-01-14 21:07:31
1053
1
原创 深入Linux内核代码------万字讲解你写的代码是如何跑起来的?
在我们编写的代码编译完生成可执行程序之后,下一步就是使用 shell 把它加载起来并运行之。一般来说 shell 进程是通过fork+execve来加载并运行新进程的。一个简单加载 helloworld 命令的 shell 核心逻辑是如下这个过程。// shell 代码示例...if (pid==0){ // 如果是在子进程中//使用 exec 系列函数加载并运行可执行文件} else {......shell 进程先通过 fork 系统调用创建一个进程出来。
2024-01-14 17:11:54
1179
1
原创 CPU入门扫盲篇之MMU内存管理单元------万字长文带你搞定MMU&TLB&TWU
声明:以下文章来源于TrustZone ,作者Hcoco最近一直在学习内存管理,也知道MMU是管理内存的映射的逻辑IP,还知道里面有个TLB。
2024-01-14 11:00:00
4051
1
原创 传统芯片封装工艺流程简介
塑封是将工件和树脂安装在模具中,加热模具,使树脂液化充满模具,降温保持一定时间后,树脂凝结为固态即可取出。它将一个大的晶圆切割成许多单独的小块,每个小块是一个“芯片”(Chip,die),这些芯片是单个集成电路的基本单位。对裸露在外的引线框架外脚电镀Sn-Pb合金,这样不仅可以提高外脚的抗氧化性,还有利于后续与印刷电路板的焊接。导电胶粘贴法:将含有银粉的环氧树脂(银浆)涂敷在框架或基板上,再将芯片放置其上,固化后可以将芯片牢牢粘接。引线框架的各腿是用筋连接着的,起支撑作用,塑封固化后,需要将其连筋切掉。
2024-01-13 21:44:45
768
1
原创 FPGA节省资源篇------正确处理设计优先级
幸运的是,由于所有触发器的内部结构都是相同的,一旦我们知道了它们的优先级规则,那编写符合它们工作方式的代码就很容易了。在上面的示例中,由于设计中的时钟使能信号ce的优先级高于置位信号set,这违反了定义的优先级顺序(reset>set>ce),所以综合工具只能使用多余的资源来实现这一功能,这就是为什么会多出来一个LUT的原因。可以看到,这个6输入与门的使用的资源是4输入与门的两倍。下面的代码也是4输入的与门,但是增加了复位信号reset、置位信号set和时钟使能控制信号ce:。
2024-01-13 21:36:54
1413
1
原创 时空联合3D降噪算法
图像是2D的空间域上的像素,随着时间的延续,每秒25、30、60帧,就成了视频,那么2D也就扩展到了3D,因此我们直接从3D来解释如何降噪(当然3D也包含了2D)。
2024-01-12 17:05:33
2008
原创 FPGA怎么用Vivado做verilog代码覆盖率分析
第三步:做如下设置,其中cover是我们想要设置的覆盖率的名字,这个可以自己设置,./是覆盖率信息放置的位置,这两项都可以根据自己的使用来设置。sbct是设置想要收集哪些覆盖率信息,s是行覆盖率,b是分支覆盖率,c的条件覆盖率,t是翻转覆盖率。这样在我们仿真的时候就会进行覆盖率的收集了。然后就可以看到在对应的仿真目录下生成一个xsim.codeCov的目录,因为我设置的./所以生成的信息放在了这个目录下。在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
2024-01-12 16:36:07
998
原创 FPGA时序分析实例篇(下)------底层资源刨析之FDCE和Carry进位链的合理利用
声明:本文章部分转载自傅里叶的猫,作者猫叔本文章部分转载自FPGA探索者,作者肉娃娃本文以Xilinx 7 系列 FPGA 底层资源为例。。其中最为主要的是可编程输出输出单元、可编程逻辑单元和布线资源。这些逻辑单元的内部结构像大型“停车场”。
2024-01-12 15:17:53
1528
原创 FPGA时序分析实例篇(上)------逻辑重组和DSP资源合理利用
本篇介绍了一次时序调优的过程,也就是重新修改代码逻辑,解决时序瓶颈(本文是缩小Logic delay)。在设计初期就应该考虑到这个问题,比如DSP的流水线寄存器,BRAM的输出寄存器这些在设计初期就考虑使用到它们,来获取更好的时序。
2024-01-12 14:34:39
1644
原创 FPGA应用领域/细分方向
这一并行机制使得 FPGA 特别适合于完成 FIR 等数字滤波这样重复性的数字信号处理任务,对于高速并行的数字信号处理任务来说,FPGA性能远远超过通用 DSP 处理器的串行执行架构,还有就是它接口的电压和驱动能力都是可编程配置的不像传统的 DSP 要受指令集控制。传统的做法是对应的接口使用对应的接口芯片,例如 PCI 接口芯片,当我需要很多接口时我就需要多个这样的接口芯片,这无疑会使我们的硬件外设变得复杂,体积变得庞大,会很不方便,但是如果使用 FPGA 优势立马就出来了。
2024-01-12 13:56:38
374
原创 二、手把手设计CPU篇之RISC-V架构
目前的“RISC-V 架构文档”分为“指令集文档”和“特权架构文挡”。RISC-V指令总共只有几十条常用指令。 “指令集文档” 的篇幅为 10 多页,而“特权架构文档”的篇幅也仅为 100 左右。熟悉体系结构的工程师 仅需一两天便可将其通读,虽然RISC-V 的架构文档还在不断地丰富,但是相比x86 的架构文档与ARM 的架构文档,RISC-V 的篇幅可以说是极其短小精悍。
2024-01-12 10:00:00
525
原创 一、手把手设计CPU篇之CPU与ISA
CPU 灵魂一一指令集架构 Clnstructio Set Architecture, ISA),它是一组指令的集合,而指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读/写存储器数据)。通俗来讲,处理器架构的位数是指通用寄存器的宽度,其决定了寻址范围的大小、数据运算能力的强弱。 本系列还将结合开源的蜂鸟E200(基于RISC-V架构的Soc)实例详细介绍如何设计一款面向嵌入式领域的RISC-V处理器。为32位,能够寻址的范围为2的32方,即4GB的寻址空间,运算指令可以操作的操作数为32位。
2024-01-10 22:46:15
548
1
原创 CPU入门扫盲篇之一文搞懂多 CPU、多核 CPU、超线程技术、SMP
上,如果某个物理核心在执行指令流时需要等待指令数据,那么该核心就有一段时间处于空闲状态(虽然可能很短暂)。,非对称多处理器,指某些处理器用来运行特殊的程序,比如操作系统,而另外的处理器用来运行非特殊程序,比如用户程序。的时候,需要等待指令需要的数据到达,那么,在这个等待的时间内,才可以切换到指令流。,是指任何程序,不管运行在内核空间,还是用户空间,都可以运行在任意一个处理器上。物理核,物理核之间通过片内总线相连,相比主版上的系统总线,片内总线速度非常快。为了实现超线程技术,一个物理核心内部,会同时包含。
2024-01-07 14:32:12
4823
1
原创 基于普中51实验板+proteus的51单片机8*8点阵贪吃蛇(附代码)
系统硬件部分由STC89C516RD+单片机,8*8点阵屏,9个按键,软件部分在keil环境下用c51语言编写,包括游戏蛇的段数,死亡判定等,游戏结束时蜂鸣器响,全屏点亮。食物的出现是一种随机行为,所以必须做一个随机数,而且食物出现的位置不能与蛇的位置相同,也不能超出墙外,否则就要重置食物。这里使用的是C语言里的stdlib.h文件库,先利用 srand ( TL0)产生一个随机数的种子,再使用里面的随机函数rand (),加上蛇尾的坐标,再利用两次%8分别得到食物出现的横纵坐标的位置,防止溢出。
2023-07-07 23:52:44
4061
2
原创 Petalinux学习笔记(持续更新)
source setting.sh :我们使用bash登录shell,source脚本文件setting.sh对petalinux进行环境配置,可通过echo $PETALINUX命令验证是否配置成功 ps_init是fsbl程序中的一个函数,来源为导入的hdf文件 petalinux字符界面3大快捷键:/:搜索配置项 ?:作用跟Help等同 双击Esc:返回上级菜单 镜像文件(BOOT.BIN、image.ub) 1)BOOT.BIN包括:fsbl镜像文件、bitstream文件、U-Bo
2023-06-30 17:13:10
152
转载 Synopsys EDA Tools安装和使用过程中出现的问题及解决方法
说启动了多个snpslmd,但是又kill不掉。后来我发现出现这种情况是因为之前设定的。首先去snpslmd所在目录。
2023-06-30 13:14:09
1633
原创 基于FPGA的UART多字节环回实验verilog代码(含帧头帧尾和解码部分)
发送数据为:aa ff 03 00 0E 03 B1 86 10 00 40 01 11 00 00 00 00 00 00 00 11 00 00 00 00 00 11 11 55 CC。链接:https://pan.baidu.com/s/1M_E8hh8MNzZKfbq3mVitig?采用VIVADO开发环境,频率50MHz,波特率 256000,8位数据位,1位停止位。串口接收程序源自正点原子的例程。
2023-04-09 22:21:20
2332
16
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人