超大规模集成电路设计笔记:第二篇
浮点数
浮点数标准
IEEE标准754-1985定义了浮点数的存储格式、运算规则、舍入方式以及特殊值的处理(如无穷大、NaN等)。其核心思想是用科学计数法的形式来表示实数:
R=(−1)s×M×2E=(−1)s×(1+F)×2E\begin{aligned}
R &= (-1)^s \times M \times 2^E \\
  &= (-1)^s \times (1+F) \times 2^E
\end{aligned}
R=(−1)s×M×2E=(−1)s×(1+F)×2E
其中:
s为符号位;
M为尾数,即有效数字部分,在1-2之间;
F为小数部分,在0-1之间;
E为指数,表示以 2 为底的幂次。
IEEE 754 定义了多种精度格式,最常用的是单精度浮点数与双精度浮点数:
单精度浮点数 总共 32 位(4 字节)
1 位符号位
8 位指数(偏移量为 127)
23 位尾数(实际精度为 24 位,因为有隐含的前导 1)
双精度浮点数 总共 64 位(8 字节)
1 位符号位
11 位指数(偏移量为 1023)
52 位尾数(实际 53 位精度 ...
修改Verilog非阻塞赋值的字体样式
前言
经常写Verilog的朋友都知道,Verilog的非阻塞赋值符号是 < = 。但是对于大部分开启了连字的等宽字体,这样子写后,会显示为<=而非<=。显然,前者的显示方法是错误的。如何显示为后者呢?
OpenType字体:随心所欲自定义
微软和 Adobe 在 1996 年开发了 OpenType 字体格式,基于 TrueType 和 PostScript 的技术,旨在提供更强大的功能。最重要的一点,便是支持连字、替代字形、上下标、旧式数字等高级排版特性。此外,为了不同场合下自定义,OpenType 字体包含了许多可开启的特性。
我使用Maple Mono Normal NF CN作为系统与博客的等宽字体,因其对中文十分友好。查看文档可知,在v7.1版本加入了cv63特性,即替代<=为箭头样式。因此,只需手动指定某一语言下的样式即可。
VSCode自定义
我曾经试过在VSCode的配置中搜索@lang:verilog,以确保设置应用于Verilog语言,但是好像字体修改部分并不会生效。没办法,只能修改工作区配置了。
在工作区配置的settings.json中 ...
超大规模集成电路设计笔记:第一篇
加法器
全加器 Full Adder FA
很简单,输入1bit的两个数以及前一级的进位,输出和与进位符:
123456789module f_add (    input  a,    input  b,    input  cin,    output sum,    output cout);    assign {cout, sum} = a + b + cin;endmodule
行波进位加法器 Ripple-Carry Adder RCA
我们把N个上面的全加器f_add首尾串联,便得到了一长串全加器链,它们的计算输入是N位,进位输入与输出均为1位。每次进行计算时,前一个的进位输出都会传进后一个的进位输入,看起来就像是进位在一整条全加器链上产生了波动,因此称其为“行波进位加法器”。
显然,行波进位加法器的优点是结构简单——只需串联就行,但缺点是延时太长。如上图所示,N个全加器串联后,总延时为tripple=N⋅tfat_{ripple} = N \cdot t_{fa}tripple=N⋅tfa,这是很致命的。
超前进位加法器 Carry-Look ...
超大规模集成电路设计笔记:序篇
前言
这门课可以当成是 数字系统设计 的进阶版,内容难了不少,不过老师还是一样的(笑)
目录
目录
第一篇
各种各样复杂的加法器与乘法器
第二篇
浮点数运算、时序乱乱,还有功耗
[转载] 删除某网盘附带的“智能看图”
本文转载自删除某网盘附带的“智能看图” - Xzonn的小站,已取得原作者同意。未经许可禁止转载与商用。
前言
某网盘更新到 7.58 版本之后附带了一个“智能看图”软件,关联了一堆常见图片格式。看了一下路径,确定是百度网盘干的。
处理
目前该网盘里没有删除这个功能的设置,所以需要手动编辑一下注册表,先按 Ctrl + R 打开“运行”窗口,输入regedit并回车,打开注册表编辑器,然后删除以下项目: Ctrl+R打开“运行”窗口,输入regedit并回车,打开注册表编辑器,然后删除以下项目:
123HKEY_CLASSES_ROOT\BaiduNetdiskImageViewerAssociationsHKEY_CURRENT_USER\Software\Baidu\BaiduNetdiskImageViewerHKEY_CURRENT_USER\Software\RegisteredApplications\BaiduNetdiskImageViewer
程序目录位于该网盘的安装目录内,默认为:
1%APPDATA%\baidu\BaiduNetdisk\module\Imag ...
做了一张亚克力鼠标垫!
低成本自制(有机)玻璃鼠标垫
上海之旅
What was your mission in Shanghai ?!
从零开始学RISC:第三篇
Valid_Ready 握手
RISCV的流水线设计需要许多模块共同协作,在外部看来是流水线连续处理指令。对于流水线而言,各阶段也需要模块单独进行处理,处理完毕后交给下一级。各模块之间如何进行交流,从而得知前一级的工作已完成?设计中的valid_ready 协议通过两个信号 valid 和 ready 实现双向握手,确保数据在双方都准备好时才传输:
valid 表示 发送端已经准备好 发送数据,数据是有效的;
ready 表示 接收端已经准备好 接收数据。
只有当 valid == 1 且 ready == 1 时,数据才真正被“传输”。
握手设计
对于前后级模块,不分主从,但为了方便,将发送Ready的前一级与接受Valid的后一级规定为Master,发送Valid的前一级与接受Ready的后一级定为Slave。
对于流水线模块的状态判断,采用四模式的状态机,包含RUN、IDLE、WAIT、SAVE:
RUN:正常运行状态,接收指令并执行。当上游结果可用并且下游流水级可以接收本级结果,则进入此状态;
IDLE:空闲状态,等待新的指令输入。如果上游结果不可用或者是下游流水级忙碌, ...
懒人看片神器:MPV-Lazy配置
嗨,我是颠佬,这是我的看片神器~
兰州-天水之旅
但使龙城飞将在、不教胡马度阴山。







