自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(229)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Verilog】 有符号加法溢出判断

/ 负 + 负 = 正。overflow = ( a[n-1] & b[n-1] & ~s[n-1]) // 正 + 正 = 负。令 a[n-1]、b[n-1] 为操作数的符号位, s[n-1] 为和的符号位。a 和 b 同号(都为 0 或都为 1),且 和 s 与它们符号相反。- 有符号加法的溢出只可能发生在“正+正=负”或“负+负=正”两种情况;- 可用符号位直接判断,也可用最高位的进位进出异或来判断。

2025-04-29 14:14:00 266

原创 同步电路与异步电路

电路中所有受时钟控制的单元,全部由一个统一的全局时钟控制,并建议采用统一的触发方式(上升沿触发或下降沿触发)

2025-04-28 17:13:16 910

原创 同步时钟与异步时钟

在单时钟域,这很容易满足。但在多时钟域,很容易出现一个时钟域的输出在另一个时钟域的时钟上升沿来临时发生改变的现象,这将会引起第二个时钟域中的触发器的输出处于亚稳态,由此导致一系列错误的结果。

2025-04-28 13:47:33 954

原创 【verdi】截取波形、波形切片

截取xxx.fsdb波形文件的第1000ns时刻到2000ns时刻这段时间的波形输出到yyy.fsdb中。xxxns -et xxxns 是要截取的波形时间段,ns 是纳秒。yyy.fsdb是截取波形后输出的波形文件。xxx.fsdb是要截取的波形,

2025-04-27 17:11:04 500

原创 【DC】buffer详解

buffer是一种常见的器件缓冲器,这种器件不仅在时钟树上,在数据路径上也有着大量的应用。buffer的结构一般是偶数个反相器的级联或者是类似结构的电路,buffer的一个特点是其输出的信号和输入的信号是相同的,不会改变逻辑值。如下面的真值表所示:buffer的功能既然buffer不会改变信号的逻辑值,那么其作用到底是什么呢?提高驱动能力。优化时序。这里的驱动能力指的是:前级电路的输出信号可以在规定时间内被后级电路有效响应。如果电路的负载过大,将导致其输出电流不够,输出信号上下边沿不够陡峭。

2025-04-25 17:13:55 1030

原创 【持续更新】 CDC 跨时钟域处理

的处理办法,但是感觉还是太宽泛了些,不太好理解。在这篇博客里,将主要参考《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》这篇论文,系统整理CDC处理方法。在之前的专栏《硬件架构的艺术》里,有讲过。

2025-04-25 15:38:52 253

原创 乒乓操作(Ping-Pong)

乒乓操作” 是一个常常应用于数据流控制的设计思想, 典型的乒乓操作方法如下图 所示:​其中,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。

2025-04-25 14:44:54 598

原创 【verilog】单/多if语句优先级

多if语句(if...if...if)与单if语句类似,具有优先级,且消耗二选一组合逻辑器件。故而可以画出此段代码描述的电路,因调整了优先级顺序,故于上文中单if语句的电路一致。单if语句(if-else if-else)通常会被逻辑综合成多个。故对于if-else语句结构都是通过二选一的数据选择器搭建而来。组合而成,其具有隐含的优先级,优先级由上往下,其中d具由最高优先级依次递减,a的优先级最低。以上述代码为例,其描述的电路为。与vivado综合电路一致。综合出来的电路如下图所示。

2025-04-24 16:47:48 338

原创 vivado 时钟IP核(MMCM PLL)

FPGA中时钟管理模块(CMT)包括PLL和MMCM,用于将时钟倍频(比如输入时钟25M,我们要产生50M时钟)、分频(在不影响系统功能的前提下,较低的工作时钟,能够降低系统功耗)、改变相位偏移或占空比等。当需要上板时,由于板上晶振时钟固定,所以其他频率的时钟产生就要用到PLL或者MMCM。两者类似,MMCM可以完成PLL的所有功能外加一些高级功能。

2025-04-16 14:10:12 481

转载 Xilinx FPGA 原语:IBUFDS差分输入缓冲器

本文主要参考资料xilinx手册,《一、原语使用说明IBUFDS是一个支持低压差分信号的输入缓冲器,用于接收差分信号对(如LVDS),并将其转换为单端信号输出。它可以用于时钟信号、数据总线信号等。差分输入:IBUFDS 接受两个差分信号(差分信号正输入I和差分信号负输入IB)作为输入,并将其转换为单端输出(单端输出信号O)。端口示意图如下:逻辑表和端口描述:I: 差分信号的正输入;IB: 差分信号的负输入;O: 单端输出信号。

2025-04-15 22:40:05 98

原创 【verdi】【持续更新】Verdi 实用技巧

统计出某个信号在特定时间段内的跳变的次数。这个结合下一节的逻辑运算,可以把一些复杂的波形分析用直观的形式表现出来。还是右键点击波形窗口左边的某个信号名字,在弹出菜单中选择。在弹出的对话框中,可以关注感兴趣的内容,比如Rising#,指的是默认Markers标定的时间段内,该信号的上升沿次数。这样就不用很辛苦的放大波形,用眼睛一个一个去数了。

2024-12-18 15:31:59 1975

原创 【verdi】vmware workstation 不可恢复错误: (mks) isbrenderercomm: lost connection to mkssandbox (3093)

打开verdi的时候,虚拟机崩溃,报错:vmware workstation 不可恢复错误: (mks) isbrenderercomm: lost connection to mkssandbox (3093):虚拟机设置->显示器设置->加速3D图形(取消勾选)

2024-12-16 23:43:19 692

原创 【verilog】胶合逻辑

1. **连接功能**:胶合逻辑通常用于将不同的电路模块(如处理器、存储器、外设等)连接起来,确保它们能够有效地通信和协作。4. **减少复杂性**:通过将复杂的电路拆分为多个简单的模块,胶合逻辑有助于降低设计的复杂性,使得电路更易于理解和调试。2. **简单性**:胶合逻辑电路通常由基本的逻辑门(如与门、或门、非门等)构成,设计相对简单。- **信号选择**:实现多路选择器(MUX)等功能,根据控制信号选择不同的输入信号。- **时序控制**:在时序逻辑设计中,胶合逻辑可以用于生成必要的控制信号。

2024-12-16 16:53:37 442 2

原创 【已解决】git push需要输入用户名和密码问题

需要注意的是,改动完之后直接执行git push是无法推送代码的,需要设置一下上游要跟踪的分支,与此同时会自动执行一次git push命令,此时已经不用要求输入用户名及密码。4)测试git push。

2024-11-28 16:35:32 1418

原创 《硬件架构的艺术》笔记(九):电磁兼容性能设计指南

电子线路易于接收来自其他发射器的辐射信号,这些EMI(电磁干扰)使得设备内毗邻的元件不能同时工作。这就有必要进行电磁兼容设计以避免系统内有害的电磁干扰。确保设备不产生多余的辐射,设备也不易受到射频辐射的干扰,采用好的EMC(电磁兼容)设计原则使这些成为可能。EMC不能只通过设计来保证,其必须受到测试EMC是一个系统在预期的电磁环境内运行而不对其他系统产生不利影响或不受其它系统不利影响的能力。一个系统的电磁兼容性应满足:1、不干扰其他系统2、不易受其他系统的干扰3、自身不干扰。

2024-11-26 11:10:41 2032

原创 《硬件架构的艺术》笔记(八):消抖技术

在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。(就是每次断开闭合只对应一个操作)。抖动在某些模拟和逻辑电路中可能产生问题,因为这些电路反应太快会将开关脉冲误当作数据流。时序逻辑数字电路特别容易收到触点抖动的影响。开关抖动产生的电压波形干扰正常逻辑电路的振幅和时序规格要求。结果是亚稳定性、竞争、小脉冲和故障等问题导致电路失效。

2024-11-26 11:06:47 1546 1

原创 《硬件架构的艺术》笔记(七):处理字节顺序

本章主要介绍字节顺序的的基本规则。(感觉偏软件了,不知道为啥那么会放进《硬件架构的艺术》这本书)。字节顺序定义数据在计算机系统中的存储格式,描述存储器中的MSB和LSB的位置。对于数据始终以32位形式保存在存储器中的真32位系统,字节顺序没有实际意义,若要将字节或16位半字映射到存储器中32位字的系统,字节顺序不匹配就会影响数据的完整性。大端模式:将MSB保存在最低存储器地址处。小端模式:把LSB保存在最低存储器地址处。下面是将0xAABBCCDD分别以大端和小端模式保存在存储器中。

2024-11-25 11:18:21 1627

原创 《硬件架构的艺术》笔记(五):低功耗设计

能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。

2024-11-21 11:45:35 2136 1

原创 《硬件架构的艺术》笔记(六):流水线的艺术

流水线通过在较长的组合逻辑路径中插入寄存器降低了组合逻辑延迟,增加了时钟频率并提高了性能。图中分别为插入流水线前后的逻辑。长路径插入寄存器后最大时钟频率明显增加,但是也带来了额外的开销,并且增加了系统延迟。

2024-11-21 11:41:31 839

原创 【verdi】systemverilog编译显示很多语法错误

添加上-sv选项。

2024-11-19 12:00:58 392

原创 《硬件架构的艺术》笔记(四):时钟分频器

偶数时钟分频很好实现,使用一个计数器累加到一定值再清零,同时翻转电平就可以了。本章主要讲的是奇数分频和小数分频。

2024-11-19 11:59:22 457

原创 【已解决】git push一直提示输入用户名及密码、fatal: Could not read from remote repository的问题

在账户选项中选择 “Settings”–>“SSH and GPG keys”–>“New SSH key”,然后打开之前新生成的id_rsa.pub文件,将密钥复制后填写到账户中【注意填写时的格式要求】如果是客户端与服务端的ssh key 不匹配,此时需要先将本地生成的 id_rsa以及id_rsa.pub这两个文件【一般在用户名下的.ssh文件夹下】删除掉,然后再使用上述指令生成新的rsa密钥;先移除旧的http的origin,在添加新的ssh方式的origin。生成新的SSH key。

2024-11-14 15:26:08 914

原创 《硬件架构的艺术》笔记(三):处理多个时钟

单时钟设计更易于实现,也更少出现亚稳态、建立和保持时间违例方面的问题。但在实践中,很少有设计只在一个时钟下运行。

2024-11-14 12:03:46 779

原创 SystemVerilog学习笔记(十一):接口

在Verilog中,模块之间的通信是使用模块端口指定的。

2024-11-14 11:30:48 1112

原创 SystemVerilog学习笔记(十):进程/细粒度进程控制

进程或线程是作为独立实体执行的任何代码片段。fork-join块创建并行运行的不同线程。在下面的图-1中,可以看到进程的类型和进程控制。

2024-11-14 11:21:23 937

原创 SystemVerilog学习笔记(九):Schedule

systemverilog是为离散事件执行模型(discrete event execution)所定义的一种语言。怎么理解呢?离散指的是仿真时间(simulation time)上的离散性,仿真基于时间片(time slot)进行,只对有效的时刻点进行仿真。事件执行模型指的是仿真基于事件进行建模和整体的调度。

2024-11-13 23:08:48 837

原创 【Verilog】case、casex、casez的区别

case(不是casez/casex的时候)的列表里面的x和z,都被综合工具认为是不可达到的状态就被去掉了。casez和casex里面的x/z都被认为是don’t care。在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。

2024-11-13 18:07:54 387

原创 《硬件架构的艺术》笔记(二):时钟与复位

本章主要针对ASIC设计给出建议,独立于CAD工具以及工艺,主要针对模块设计和存储器接口。

2024-11-12 12:07:27 1132

原创 emulator总结

做IC设计的人应该都知道软件仿真和FPGA原型验证,可以把硬件仿真器理解为这二者之间的产物,它同时具备二者的优点。软件仿真(simulator)全面,支持UVM、assert、coverage收集、可以很方便的dump 波形来debug,但速度很慢,尤其是在做大分辨率图像处理的时候,一条case甚至可以跑一个礼拜,且相当耗内存,所以在debug一些大分辨率或者多帧之后才出现错误的case时如果只用仿真的话,效率就会很低。

2024-11-12 11:01:11 1492

原创 SystemVerilog学习笔记(八):循环

循环只不过是将需要多次运行的语句包含在循环中,而不是重复编写这些语句。循环将根据条件语句运行多次,如果条件始终为真,则它会变成无限循环,系统将挂起。

2024-11-11 20:33:20 1548

原创 SystemVerilog学习笔记(七):函数与任务

函数的主要用途是编写一段可以随时调用n次的代码,只需调用函数名即可,不需要任何模拟时间来执行。函数是返回类型,仅返回函数声明中提到的单个值,如果未声明则返回一个位的值。

2024-11-11 19:42:16 607

原创 SystemVerilog学习笔记(六):控制流

条件语句用于检查块中的语句是否被执行。条件语句创建语句块。如果给出的表达式是 true,执行块中的语句集,如果表达式为 false,则 else 块语句将最后执行。

2024-11-11 19:27:17 826

原创 Implicit nets in Verilog

在Verilog中,net类型的信号可以通过赋值语句或将未声明的内容附加到模块端口来隐式地创建。隐式网络总是位线,如果使用矢量,则会导致错误。禁用隐式网络的创建可以使用' default_nettype none指令来完成。隐式线网通常是难以检测的bug来源。

2024-11-11 16:22:45 234

原创 《硬件架构的艺术》笔记(一):亚稳态

同步系统中如果数据和时钟满足建立保持时间的要求,不会发生亚稳态(meastable)。异步系统中数据和时钟关系不固定,可能违反建立保持时间,就会输出介于两个有效状态之间的中间级电平,且无法确定停留在中间状态的时间,或者过了一定的延迟后才能正常转换,这就是亚稳态。

2024-11-11 15:33:41 1025

原创 SystemVerilog学习笔记(五):运算符

运算符是代表特定数学或逻辑动作或过程的字符。

2024-11-11 14:37:23 1134

原创 SystemVerilog学习笔记(四):用户自定义类型

Typedef 主要用于 System Verilog 中的复杂测试平台,因为它用代码中的标识符替换了较长的数据类型,如 int(unsigned longint,signed Shortint)、byte、bit[7:0]、logic[7:0]。Typedef 在类中的主要用途:有时我们在声明类本身之前使用类变量。因此,为了避免编译错误,我们可以在类本身的声明之前使用“typedef 类变量”。如果没有 Typedef,我们将得到语法错误。Typedef 在类、结构和枚举中使用,使数据类型声明更容易。

2024-11-11 14:33:03 446

原创 SystemVerilog学习笔记(三):结构体与联合体

在 RTL 代码中,压缩结构体被视为单个向量,结构体中的每个数据类型都表示为位字段。不同的变量在结构内部保存不同的数据,称为结构成员。未压缩的结构比压缩的结构具有更多的内存占用。这里“int”是最大的数据类型,因此联合体中的所有其他成员共享 32 位。默认情况下,结构体最初是未压缩的形式,但可以使用“packed”关键字将其转换为压缩结构。“字节”占用 8 位,位[7:0] 为 8 位,逻辑[15:0] 为 16 位。结构与普通数组不同,因为数组仅使用相同类型和大小的元素,而结构体使用不同的数据类型。

2024-11-11 14:25:34 1315

原创 SystemVerilog学习笔记(二):数组

数组是元素的集合,所有元素都具有相同的类型,并使用其名称和一个或多个索引进行访问。Verilog 2001 要求数组的下限和上限必须是数组声明的一部分。System Verilog 引入了紧凑数组声明样式,只需给出数组大小以及数组名称声明就足够了。下图显示了 System Verilog 中使用的不同类型的数组。

2024-11-11 12:09:53 1481

原创 SystemVerilog学习笔记(一):数据类型

在systemverilog中,主要包含以下数据类型:-2^(n-1)到2^(n-1)-1,n表示位数。

2024-11-11 11:45:00 900

原创 【已解决】虚拟机物理内存过大,无法恢复也无法关闭

首先在虚拟机目录下找到.vmss文件,删除 将虚拟机从列表中移除,再添加(否则显示依然是挂起状态) 调整内存 开机

2024-09-02 19:50:45 390

images_background.zip

python mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.py

2020-09-12

images_evaluation.zip

python mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.pypython mainOmniglot.py

2020-09-12

空空如也

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

TA关注的人

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