- 博客(22)
- 收藏
- 关注
原创 always@(*)组合逻辑--顺序执行
仿真波形如下图所示:next_state的值会在每一次cnt变化后always触发执行后都会先执行一下语句next_state = s0;(覆盖率分析显示alwasy@(*)执行了50次,next_state = s0;1.组合逻辑:always@(*)下的beign...end种的代码是顺序执行的。仿真结果如下图:依据仿真波形图观察可得,next_state 状态一直为s0状态。但是下面的组合逻辑语句之后会覆盖next_state的值。
2025-07-25 19:43:08
207
原创 使用git碰见的问题
Changes not staged for commit”是指我们在工作目录中对文件进行了修改,但这些修改并没有被暂存起来,也就是没有加入到Git的暂存区中。3. 有了远程仓库的URL之后,通过命令(== git remote add origin 仓库地址 ==)作为一个新的远程端点(通常命名为origin)只有将本地仓库与远程仓库绑定之后,它才允许开发者推送本地更改到远程服务器,以及从远程仓库拉取更新。2. 在远程服务器上创建一个新的仓库,然后你会得到一远程仓库的URL。
2025-07-21 14:43:37
375
原创 定性模块化验证环境---架构组成(2)
/ SPI 物理信号logic sclk;logic cs_n;logic mosi;logic miso;// 协议检查:CS_N 拉低时 SCLK 必须稳定rst_n)// 时钟生成(可选)input miso;
2025-07-21 10:51:51
1256
原创 linux帮助命令
(2) man mkdir (详细版)(man命令手册,而且。(1)mkdir --help (简单版)你不懂的命令可以使用2种方法。
2025-07-21 10:40:28
207
原创 滴水---公开课3
这个是为了保留现场(调用其他函数跑到那边,但是在这边保留现场)(把第一步开始时的ebp的值压入堆栈保留),esp=esp-4 的地址处的值为第一步开始时的ebp的地址,但是右ebp的值依旧不会改变(因为改变的只有栈顶,不改变栈底)(2)函数执行完返回的地址(一般也就是call的下一个地址(也就是call的返回地址(而且在执行call的时候,它会将返回地址压栈,保存起来)))存储到堆栈中(这样当函数调用结束后,他还能回来,否则它就回不来了)它不能往一个地址上添啊,它每一次添完之后。
2025-07-21 10:34:21
766
原创 滴水---公开课2
DS :断寄存器,在16位里面主要用来寻址的作用,在32位里面他跟之前关系不大,它跟当前的这个内存的属性(有什么样的属性和特征)有关系。但是你装了一个4G的内存条,它的内存不会到达4G的,因为你的操作系统一些固定的组件已经占用了一部分地址了,所以是3点多的内存。计算机中的数据有一部分是存储在cpu中,我们把cpu中的”容器“称为“寄存器”,运算最快,容器有限,比较昂贵。不是因为它的位宽是32位,在32位的计算机中,有些寄存器它的位宽要远远大于32位。注意观察堆栈,第一次它覆盖了…
2025-07-21 10:33:56
742
原创 滴水---公开课1
游戏公司也可以拿到你的OD,你用的OD某一部分算法是有特征的,游戏公司会根据这个特征在它的游戏运行时检测你的OD特征码识别(它会搜索客户机上的内存中是否包含这个特殊二进制)这就相当于人的指纹,第二行 baseofcode :代码基址,但是并不是游戏数据的基址,游戏数据的基址只不过是全局变量,而这个代码基址是存储一堆数据的起点。扩展:调试游戏的时候,一打开OD直接闪退或者蓝屏,这个是因为你用的OD已经被提取特征码(提串)(1)window存储数据时,地位在前,高位在后,又是DWORD(4字节)
2025-07-21 10:32:53
648
原创 模块化验证框架(1)
模块化的验证思想是:分层次、分模块包括以下组件:待测verilog(vhdl)模块(1)激励生成器(driver):生成输入信号激励。(2)监视器(Monitor):捕获DUT输出信号。(3)参考模型(reference model):提供预期结果的黄金模型。(4)比较器(scoreboard):对DUT输出与参考模型结果进行比较。(5)覆盖率收集器(coverage collector):统计功能覆盖率和代码覆盖率。支持随机化测试、断言(assertions)和自动化回归测试。(1)目标:明确待验证功能点
2025-04-20 11:56:47
1144
原创 在task中,不断在时钟上升沿检测新来的值
*若模块中未声明,将导致编译错误。被调用任务的端口变量:已在任务定义时声明(如input data_in),无需在调用者任务或模块中重复声明。如果被调用任务有输出端口(output),调用者必须提供一个已声明的变量接收该输出值。(2)简化任务结构:仅在需要复用代码时使用任务,并确保其可综合。若在调用者任务内部声明:变量为局部变量,仅在该任务内有效。模块级变量需在模块中声明,直接通过名称传递给被调用任务。传递给被调用任务的变量:必须在调用者的作用域内声明。
2025-04-18 14:21:45
1002
转载 RTL行为级--门级仿真--时序仿真
Xilinx公司的集成开发环境ISE中并不支持综合后仿真,而是使用映射前门级仿真代替,对于Xilinx开发环境来说,这两个仿真之间差异很小。(.vo)加tb仿真(假如在Setting里面设置里输出语言为VHDL的话,则生成的网表文件为” * .vho");ModelSim + 布局布线后的网表 + SDF文件 + FPGA厂商的物理库(如Xilinx的。的门级网表上进行,代码已转换为目标FPGA的底层逻辑单元(如LUT、触发器、MUX等),但尚未布局布线。需要挂载器件库文件。
2025-03-22 16:00:23
1120
原创 SDF和XDC区别---vivado生成SDF文件
1.3 在questasim中进行时序仿真时,通常需要加载SDF文件(standard delay format)来注入门延迟(cell delay)和线延迟(net delay)。而在vivado中,实现步骤后才会生成SDF文件,这个文件中才包含了实际的延迟信息,可以用于时序仿真。(1) XDC文件无法直接导入SDF选项,但可以通过vivado生成SDF文件,再在QuestaSim中加载该SDF进行时序仿真。原因:vivado生成的SDF文件中的模块/实例路径与questasim中的层级结构不一致。
2025-03-21 22:29:22
1290
转载 约束文件sdc、xdc
设计约束就是定义编译过程中必须满足的要求,只有这样才能保证在板子上工作时功能正确。但不是全部约束在所有过程中都会使用,比如物理约束只用在布局和布线过程中。过度约束和约束不足都会造成问题。原文:https://blog.csdn.net/qq_37363005/article/details/99291988。**标准SDC(Synopsys Design Constraints)**格式已经发展超过了20年,且应用最为广泛。XDC(Xilinx Design Constraints)**文件进行约束。
2025-03-12 09:37:40
249
原创 3月9号笔记--验证框架
上述问题错误原因是:任务名称后面加了空括号,但是同时又在任务体内声明端口,因为空括号编译器会认为该任务没有任何输入输出。正确写法1:task dsp_write (input [19:0]addr );正确写法2:task dsp_write;tastcase作用:定义测试场景、问题1:任务task的写法错误。—正常测试、异常测试、随机测试。问题2:2种fpga验证框架。框架2:复杂测试验证。
2025-03-10 13:56:03
130
原创 3月8号笔记
(6)**消除毛刺。**比如,**组合逻辑产生的信号可能会有短暂的毛刺,通过移位寄存器采样多次,只有当连续两个周期采样到相同的值才认为有效,这样可以过滤掉单周期的毛刺。这种情况下,两位宽的移位寄存器可以存储当前和前一个周期的值,当两者相同时才输出,否则保持之前的值。(7)在状态机中,可能需要检测输入信号的某种序列,比如连续两个高电平,这时候移位寄存器可以保存最近两位的状态,当检测到特定模式时触发状态转换。例如,检测上升沿通常是当前信号为高,前一个周期为低,这时候两位移位寄存器的值就是01,或者10之类的。
2025-03-09 09:45:43
292
原创 3月7号笔记
例如,任务计算两个数的和,并将结果通过output参数返回,这样调用任务后,当任务需要外部传入某些值,但不需要修改这些值,或者修改后的值不需要传递回调用者时,应该声明为input。,一个任务需要计算两个数的和,并将结果存储到某个寄存器中,这时候这两个数应该作为input传入任务。避免在任务中使用inout,除非必要,特别是在可综合代码中,通常应避免使用任务中的inout。使用inout:当任务需要读取并修改调用者传递的变量,将修改后的值传回。确保在任务内部正确赋值所有输出参数,防止未定义的行为。
2025-03-07 09:25:33
588
原创 3月6号笔记
reason:那个clk_mod中有关于rst的不同时间拉低拉高,那个关于clk的test_case中也存在rst的赋值拉低拉高,他们都在initial中赋值,但是有次赋值时间上不一样,由此产生了问题。(2)systemverilog中可以,可以通过interface和class更灵活的调用。(1)verilog中不可以,只能在该模块中调用。可以根据时序,在始终上升沿到来之后,延迟#2ns。笔记4:task任务编写2种写法。笔记5:相对路径的索引问题。
2025-03-06 09:33:08
239
转载 modelsim仿真使用.do文件的编写与运行步骤
原文:https://www.cnblogs.com/xianyuIC/p/11057787.html。它是verilogHDL的扩展,增加了一些新的特性,如。附加systemverilog笔记。上面已经写好.do/tcl文件。等,使得开发者可以更加方便的。下面这个方法之前常用。
2025-02-25 10:07:09
121
转载 modelsim波形笔记:https://blog.csdn.net/lum250/article/details/120954760
原文:https://blog.csdn.net/lum250/article/details/120954760。对于一些比较耗费时间的仿真,可以保存波形结果,下次可以直接打开查看。保存的时候,要注意先点击选中wave或者sim窗口,保持在选中状态。此时,因为library已经没有源文件了,所以只能查看,不能仿真。,有了这两个文件就可以还原波形。
2025-02-24 18:28:50
187
原创 判断下降沿(上升沿)的方法--边沿检测
上升沿: data & ~data_reg。下降沿:~data & data_reg。借助----- 移位寄存器。
2025-02-16 22:07:37
206
原创 利用移位的方式,在2个不同的时钟下,判断某一时钟上升沿和下降沿来做条件
现有2个不同时钟,50mhz(周期短)和1mhz(周期长),在50mhz条件下,通过移位的方式来做位1mhz的上升沿(或下降沿)操作判断。
2025-02-16 21:00:01
121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人