HDLBits刷题之生命游戏
纪念约翰·霍顿·康威,他因新冠于2020年4月11日逝世,享年82岁。
前言
Conwaylife - HDLBits
康威的生命游戏在科学美国人上刊登过,小时候还看到过,印象很深。
简单来说,就是对一个矩阵进行轮次变换,对每个元素的变换规则如下:
0-1 个邻居:单元格变为 0
2 个邻居:单元格状态不变
3 个邻居:单元格变为 1
4 个及以上邻居:单元格变为 0
要注意的是矩阵四周是“连续”的,即首尾相接。可以理解成桌面壁纸的平铺。
思路
连续的意思就是说边界处会发生“跳变”。那我整一个四周大一圈的矩阵把它包进去就可以了。
然后在每个时钟沿进行判断,再赋新的值给寄存器即可。
代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960module top_module ( input clk, input load, input ...
雨落长安
九月的西安,不是在下雨,就是即将要下雨。
骗你的,其实十月也一样。
仍记得四年前刚来到西安——这是身为南方人的我,第一次来到真正意义上的北方。尽管从纬度上来看,老家连云港和西安差不多,但一个沿海一个内陆,气候差异还是蛮大的。八月来到学校的时候正是万里无云的好天气——灼热的阳光直晒几乎要将人烤焦。如果说南京是南方特有的“蒸笼热”,那西安便是北方的“直射热”。毕竟,树荫底下,仍存留一丝清凉。若有微风拂面,更是惬意。不走在太阳下,便还是很凉快的。
八月都这么热,九月想必也是一样的吧?可惜,想错了。
刚步入九月,开学后便是连绵不断的雨、雨、雨。雨并不大,但很让人恼火——哪怕是小雨,你也没有办法骑车在外,更不用说稍微密集一点的毛毛雨了,它会迅速打湿衣服外层。与雨一同而来的,是冷空气群。气温一度降低到十几度,出门甚至都要穿上羽绒服。极大的温差也容易让人感冒。有趣的是,这雨似乎真和集体活动有关——不论是开学典礼,还是校内举办的露天演唱会,亦或者运动会,前几天还一直是阴天,只要到了活动当天,必定会开始下雨。是活动没选好时间,还是天公作美呢?
记得大一的国庆就没出去玩,因为雨连绵不断。大二的国庆,与室 ...
超大规模集成电路设计笔记:第三篇
RISC-V简介
也可以看一下 数字系统设计复习笔记:第十二篇
寄存器
RV32/64I指令集定义了32个32/64位的通用整数寄存器x0~x31,其中x0固定用于存放数据0;寄存器位数决定了其可以访问的地址空间大小。
寄存器
别名
常见用途
x1
ra
返回地址 (Return Address):jal 指令自动将返回地址存入此处。
x2
sp
栈指针 (Stack Pointer):指向当前栈顶。
x3
gp
全局指针 (Global Pointer):指向 2048 字节的小数据区(.sdata),用于高效访问小全局变量。
x4
tp
线程指针 (Thread Pointer):用于线程本地存储(TLS)。
x5
t0
临时寄存器 (Temporary):调用者保存(caller-saved)。
x6–x7
t1, t2
额外的临时寄存器。
x8
s0 / fp
保存寄存器 / 帧指针:被调用者保存(callee-saved)。也可用作帧指针。
x9
s1
保存寄存器。
x10–x17
a0–a7
函数参数和返回值:传递前 8 个参数 ...
隐秘参数APP使用ADB打印更多信息
最近在用“隐秘参数”这款APP查看手机信息。软件内有提示说无法获取的信息要用ADB命令,奈何软件太久没更新,帮助链接已经失效了。
上网查询了一下,要在CMD里运行下面命令(Powershell执行时会报错,不知道为啥):
1FOR /F "tokens=2 delims=:" %p IN ('adb shell pm path com.x1y9.probe') do adb shell CLASSPATH=%p app_process / com.x1y9.app.MainActivity
额外的参数就会被打印到终端了。
超大规模集成电路设计笔记:第二篇
浮点数
浮点数标准
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 ...
超大规模集成电路设计笔记:序篇
前言
这门课可以当成是 数字系统设计 的进阶版,内容难了不少,不过老师还是一样的(笑)
目录
目录
第一篇
各种各样复杂的加法器与乘法器
第二篇
浮点数运算、时序乱乱,还有功耗
第三篇
RISC-V介绍与各种数据通路
第四篇
存储器相关
第五篇
总线、外设与调试
第六篇
应试相关
[转载] 删除某网盘附带的“智能看图”
本文转载自删除某网盘附带的“智能看图” - 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 ...
做了一张亚克力鼠标垫!
低成本自制(有机)玻璃鼠标垫


