「 第一次去卢浮宫 并无什么特别的感觉
因为独属于我的蒙娜丽莎 我早已遇见 」
超大规模集成电路设计笔记:第五篇
这一章不考,至少往年题没有考过。
SoC总线
总线提供了系统中各个设备之间一种互连的访问共享硬件机制
在数字系统中,总线承担数据传输任务,如处理器和存储器之间的数据传输
总线的传输能力由总线的带宽和工作频率决定
总线的设计通常要考虑4个因素:总线宽度、时钟频率、仲裁机制和传输类型
常见的总线有:
AMBA:ARM公司定义的总线体系,广泛用于嵌入式SoC,包括 AHB、APB、AXI 等多个子协议
OCP:开放式核心接口协议,模块化设计,适合IP核集成
Wishbone:由OpenCores定义的开源SoC总线,简单易用,适合教学或FPGA设计
Avalon:原Altera公司定义的片上总线协议
AMBA
常见IP
SoC中的常见IP包括:中断控制器、实时时钟、SPI、定时器、看门狗等。
一个完整的 SoC 通常包含如下模块(IP):
123456789101112131415┌──────────────────────────┐│ CPU / DSP │ ← 控制/计算IP├──────────────────────────┤│ ...
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
...
更适合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
额外的参数就会被打印到终端了。




