四款开源软件,打造最强墨水屏阅读器
开源什么的最棒了!
为学习而生の魔法传送门
模拟CMOS
一天一道简答题:模拟CMOS
数字CMOS
一天一道简答题:数字CMOS
数字CMOS集成电路复习笔记:序篇
数电芯片设计道 堂堂连载!
模拟集成电路设计II
模拟集成电路设计 考试复习提纲
数字系统设计基础
数字系统设计复习笔记:序篇
超大规模集成电路设计
超大规模集成电路设计笔记:序篇
计算机原理与嵌入式系统
计算机原理与嵌入式系统笔记:序篇
嵌入式系统设计道 堂堂连载!
集成电路制造技术
集成电路制造技术复习笔记:目录
半导体物理
半导体物理复习笔记:序篇
功率半导体器件
TCAD进行PN结的工艺仿真与IV特性曲线
英语
英语作文句式整理
图表作文模板
应用文写作 捆绑包
超大规模集成电路设计笔记:第五篇
SoC总线
总线提供了系统中各个设备之间一种互连的访问共享硬件机制
在数字系统中,总线承担数据传输任务,如处理器和存储器之间的数据传输
总线的传输能力由总线的带宽和工作频率决定
总线的设计通常要考虑4个因素:总线宽度、时钟频率、仲裁机制和传输类型
常见的总线有:
AMBA:ARM公司定义的总线体系,广泛用于嵌入式SoC,包括 AHB、APB、AXI 等多个子协议
OCP:开放式核心接口协议,模块化设计,适合IP核集成
Wishbone:由OpenCores定义的开源SoC总线,简单易用,适合教学或FPGA设计
Avalon:原Altera公司定义的片上总线协议
AMBA
常见IP
SoC中的常见IP包括:中断控制器、实时时钟、SPI、定时器、看门狗等。
一个完整的 SoC 通常包含如下模块(IP):
12345678910111213141516┌──────────────────────────┐│ CPU / DSP │ ← 控制/计算IP├──────────────────────────┤│ Cache / MMU / M ...
LaTeX代码开启连字等特性
前言
在 LaTeX插入代码并设置高亮中,使用minted和listings 为代码块添加了高亮。但许多等宽字体都包含连字(Ligature)特性,可以增强代码的可读性,视觉效果更好。那如何在代码块里也开启连字特性呢?
这里安利Maple Mono字体,对中文显示极其友好,完美的中英文2:1比例,还支持Nerd Font。我已经将所有等宽字体都换成Maple Mono Normal NF CN了。
修改样式
首先要确保使用了fontspec宏包:\RequirePackage{fontspec}
接着指定等宽字体,并添加:
12345678910\setmonofont[ AutoFakeBold=true, ItalicFont=MapleItalic, % 指定斜体字体 Contextuals = Alternate, % 开启连字 Ligatures = Common, % liga CharacterVariant={1,62,63}, % cv特性 StylisticS ...
超大规模集成电路设计笔记:第四篇
Cache
可参考 计算机原理与嵌入式系统笔记:第六篇
直写与回写
Write-Through(直写) 和 Write-Back (回写)是两种 Cache 写策略,用来决定当 CPU 写数据时,数据如何更新到主存的。
当 CPU 对 cache 写数据时,同时也把数据写入主存,称为直写;
数据一致性好(cache 和 主存内容始终同步)
对系统可靠性高
简单易实现
写操作慢,写操作频繁时会增加总线带宽占用
当 CPU 写 cache 时,只更新 cache 中的数据,不立即写入主存,只有当该 cache block 被替换时,才将其写回主存,称为回写。
写操作快,节省总线带宽
数据一致性较差
实现复杂,需要 dirty 位标记
系统崩溃时可能丢失尚未写回的数据
均可使用写缓冲区来缓解问题。
性能例子
假设:
I-Cache命中缺失率2%
D-Cahce命中缺失率4%
未命中惩罚为100周期
基础CPI为2
数据存取类指令占总共的36%
则可计算每次指令的缺失周期数:
I-Cache: 0.02 x 100 = 2
D-Cache: 0.36 x 0.04 x 1 ...
更适合Powershell体质的grep
前言
Powershell下筛选字符串有findstr指令。但我用grep习惯了,一时半会不想改主要是findstr字太多了
所以自己写一个脚本来模拟grep功能。
代码
1234567891011121314151617181920@echo offsetlocal enabledelayedexpansion:: 检查参数if "%~1"=="" ( echo 用法: grep 搜索词 echo 示例: command | grep 搜索词 exit /b 1):: 搜索词是第一个参数set "searchterm=%~1":: 处理标准输入并搜索for /f "usebackq tokens=*" %%a in (`findstr /i /L /C:"%searchterm%" 2^>nul`) do ( echo %%a)endlocalexit /b 0
HDLBits刷题之旅鼠冲冲冲
前言
百战小旅鼠1991年由DMA Design(今rockstar north,蓝R)开发。
旅鼠会左右走,还会挖洞。如果下落太久了还会摔得四分五裂坠机了
思路
七个状态:左右、下落左右、向下挖时原本朝向左右,以及四分五裂。
代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124module top_module ( input clk, input areset, // Freshly brainwashed Lemmings walk left. input bump_lef ...
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
额外的参数就会被打印到终端了。





