芯片设计
狮子座硅农(Leo ICer)
努力成为卓越的芯片研发人员!
展开
-
反相器动态功耗计算和短路电流
反相器动态功耗计算原创 2022-11-14 21:21:56 · 873 阅读 · 0 评论 -
反相器下降沿延迟时间计算
反相器结构。原创 2022-11-14 20:57:32 · 1311 阅读 · 0 评论 -
编写arduino独立工程,不使用原库支持
当创建一个空的工程,先按下ctrl+s保存一下。这个时候弹出对话框,命名工程。假如命名为LED,并保存在我自己的Arduino工作目录下。于是IDE会自动帮我们在Prj_Arduino下创建1个文件夹,并将sketch主文件放在里面,而且主文件和文件夹同名。原创 2022-10-24 19:41:24 · 2699 阅读 · 0 评论 -
SSD1306 OLED驱动芯片 详细介绍(使用I2C)
SSD1306 OLED驱动芯片 详细介绍(使用I2C)原创 2022-10-24 18:11:00 · 13646 阅读 · 1 评论 -
I2C协议
I²C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。以上是I²C的一些重要特点,下面会进一步对I²C进行介绍。原创 2022-10-24 11:33:38 · 304 阅读 · 0 评论 -
SPI协议
综上几种情况,下图总结了所有时钟配置组合,并突出显示了实际采样数据的时刻;其中黑色线为采样数据的时刻;蓝色线为SCK时钟信号;原创 2022-10-22 11:27:58 · 1588 阅读 · 0 评论 -
systemVerilog的interface(接口)介绍
systemVerilog的接口使用例子原创 2022-10-20 21:23:04 · 741 阅读 · 0 评论 -
报告里面生成git commit id信息
便可以将commit id 打印到./report/batch.log里面了。若是包括多个子模块,进入子模块后输入。命令,即可得到commit id。原创 2022-10-20 16:55:10 · 484 阅读 · 0 评论 -
数字IC设计全流程
当RTL Coding满足市场需求,进入后面流程。原创 2022-10-20 11:04:09 · 349 阅读 · 1 评论 -
数字IC设计具体指标
数字ic设计具体指标原创 2022-10-20 10:26:45 · 393 阅读 · 0 评论 -
`timescale理解
timescale命令是用来说明该命令后的模块的时间单位和时间精度。原创 2022-10-19 17:06:40 · 408 阅读 · 0 评论 -
systemVerilog语法测试(小东西,很好用)
测试数组赋值情况。原创 2022-10-19 16:37:54 · 291 阅读 · 0 评论 -
Moore型状态机和Mealy状态机
所以绘制状态转移图需要知道以下三个要素:(1)输入:根据输入可以确定是否需要进行状态转移以及输出,是影响状态机系统执行过程的重要驱动力。(2):根据当前时刻的状态以及输出,是。(3)状态:根据输入和上一个状态决定当前时刻所处的状态,是状态机系统执行的一个稳定过。根据这些抽象出的要素我们就可以绘制状态转移图了,首先我们根据分析的状态数先画出5个状态,如下图所示,每个状态我们取一个状态名(题目中有要求用S0, S1, S2, …标识):接收的到值为0的状态我们取名为S0,该状态也成为初始状态;原创 2022-10-19 09:29:52 · 2311 阅读 · 0 评论 -
One-hot编码,状态机使用
上图为普通的状态机编码方式。当芯片受到辐射或者其他干扰时,可能会造成状态机跳转失常,甚至跳转到无效的编码状态而出现死机。如:状态机因异常跳转到某状态,而此状态需要等待输入,并作出应答,此时因为状态运转不正常,不会出现输入,状态机就会进入死等状态。原创 2022-10-18 22:00:33 · 779 阅读 · 0 评论 -
LFSR(线性反馈移位寄存器, Linear-feedback shift register
移位寄存器(Shift Register,SR)曾在SM4中提到过,是指有若干个寄存器排成一行,每个寄存器中都存储着一个二进制数(0或1)。移位寄存器每次把最右端(末端)的数字输出,然后整体向右移动一位。原创 2022-10-18 21:29:12 · 942 阅读 · 0 评论 -
移位寄存器
移位寄存器在时钟的触发沿,根据其控制信号,将存储在其中的数据向某个方向移动一位。移位寄存器也是数字系统的常用器件。图 Fig. 48 中是一个由4个D触发器构成的简单向右移位寄存器,数据从移位寄存器的左端输入,每个触发器的内容在时钟的正跳变沿(上升沿)将数据传到下一个触发器。图 Fig. 49 是一个此移位寄存器的序列传递实例。原创 2022-10-18 21:07:18 · 4957 阅读 · 0 评论 -
存储器的初始化
Listing 20 是一个存储器实例,实例中为此存储器设置了三个输出端口,请分析存储器结构和工作过程,查看此存储器的RTL图,检查存储器的输入输出和存储体的结构,并分析其三个输出端的结构的不同。初始化存储器时可以选择存储器的部分单元进行初始化,其他单元不初始化。如,假设存储器ram有8个存储单元,下面的初始化表示只对存储器的$0 ~ $5 号单元进行初始化,这也是可以的。假设存储器ram有8个存储单元,下面的初始化试图对存储器的0~8号单元,共9个单元进行初始化,这是 不可以 的。原创 2022-10-18 20:02:47 · 493 阅读 · 0 评论 -
二维数组定义存储器
在Verilog HDL中,可以用二维数组定义存储器。例如,假设需要一个32字节的8位存储器块,即此存储器共有32个存储单元,每个存储单元可以存储一个8位的二进制数。存储单元为 memory_array [0] ~ memory_array [31],每个存储单元都是8位的存储空间。在读取时,可以用memory_array [13][3:0]直接读取第13号单元的低4位。原创 2022-10-18 19:47:02 · 743 阅读 · 0 评论 -
位运算(按位与、按位或、异或)
即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1。即 0 ^ 0=0 , 0 ^ 1= 1 , 1 ^ 0= 1 , 1 ^ 1= 0。运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。运算规则:参加运算的两个数,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。运算规则:参加运算的两个数只要两个数中的一个为1,结果就为1。原创 2022-10-18 14:57:58 · 900 阅读 · 0 评论 -
Verilog语法一元约简运算符
首先将操作数a的第一位和第二位进行与计算,将得到的计算结果进行和第三位与计算,依次类推,直到最后一位。今天在工程中遇到了单目运算符,一查才知道是verilog基本操作符,又称一元约简运算符。同理,或,非的计算。原创 2022-10-18 09:13:30 · 439 阅读 · 1 评论 -
实验:优先编码器
优先编码器允许同时在几个输入端有输入信号,即输入不止一个 1 ,编码器按输入信号排定的优先顺序,只对同时输入的几个信号中优先权最高的一个进行编码。我们可以利用for循环语句可以很方便地实现优先编码器,一个4-2优先编码器的示例如下所示。Makefile代码。原创 2022-10-17 22:01:34 · 1050 阅读 · 0 评论 -
实验:译码器
【代码】实验:译码器。原创 2022-10-17 21:39:30 · 173 阅读 · 0 评论 -
实验:多路选择器设计流程,卡诺图
根据表达式画出其逻辑电路如下图所示。原创 2022-10-16 21:45:19 · 494 阅读 · 0 评论 -
芯片开发所使用的仿真器和模拟器
芯片开发所使用的模拟器和仿真器原创 2022-10-10 19:15:05 · 523 阅读 · 0 评论 -
自制freestanding运行时环境+指令集模拟器
设计一个面向RISC-V程序的简单freestanding运行时环境。原创 2022-10-09 22:48:54 · 277 阅读 · 0 评论 -
如何进行跨时钟域设计
左侧写,右侧读,而且读写时钟频率不一样。特点:相邻比特只有一个bit发生变化,避免毛刺。例如:4’b0111变化到4’b1000,假设中间变化经过1111和0100,那么在读fifo的中间过程,有毛刺会产生各种奇怪信号,而使用格雷码则不会。原创 2022-10-01 00:07:13 · 264 阅读 · 0 评论 -
门控时钟介绍
功耗是芯片设计中非常重要的一个指标,研究表明,在芯片功耗的组成中,有高达40%甚至更多是由时钟树消耗掉的。这个结果的原因也很直观,因为这些时钟树在系统中具有最高的切换频率,而且有很多时钟buffer,而且为了最小化时钟延时,它们通常具有很高的驱动强度。此外,即使输入和输出保持不变,接收时钟的触发器也会消耗一定的功耗。而且这些功耗主要是动态功耗。减少时钟网络的功耗消耗,最直接的办法就是在不需要时钟的时候,把时钟关掉。这种方法就是所谓的。原创 2022-09-30 11:33:35 · 1096 阅读 · 3 评论 -
静态时序分析和动态时序分析区别
静态时序分析(STA)通过方式分析每条路径的延时。在综合后使用。原创 2022-09-30 10:31:03 · 864 阅读 · 0 评论 -
阻塞赋值(=)与非阻塞赋值(<=)
阻塞赋值,顾名思义即在一个 always 块中,后面的语句会受到前语句的影响,具体来说就是在同一个always 中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行,即被“阻塞”。也就是说 always 块内的语句是一种顺序关系,这里和 C 语言很类似。符号“=”用于阻塞的赋值(如:b = a;)阻塞赋值“=”在 begin 和 end 之间的语句是顺序执行,属于串行语句。原创 2022-09-30 10:16:59 · 1236 阅读 · 0 评论 -
什么是亚稳态,如何消除?
亚稳态亚稳态是指时序电路中触发器无法在某个规定的时间段内到达一个可以确认的状态。影响:亚稳态是指触发器无法在某个规定的时间内达到可以确认的状态。一旦触发器进入亚稳态,则既无法预测触发器的输出电平,也无法预测什么时候稳定在某个确认的电平上。(稳定所需时间不定、输出结果不定)原创 2022-09-30 09:40:30 · 3667 阅读 · 0 评论 -
竞争与冒险
A非是A通过非门得到的,因此延迟会大。A和A’到达与门时间不同,产生竞争现象,由于竞争现象,产生毛刺现象。组合逻辑中,门电路输入信号由于经过的路径不同,到达该门时间不一致,叫做。由竞争而在输出时可能产生尖峰毛刺或脉冲的现象,叫做。举例:F=A’& A。原创 2022-09-29 23:31:53 · 214 阅读 · 0 评论 -
接口背靠背请求
背靠背连接为电信及电脑网络的一个名词,简单来说,背靠背连接就是直连。即两台设备不通过通信网络,而直接通过电缆来连接。发送设备需要把输出直接连接到接收设备的输入上.原创 2022-09-28 14:20:44 · 147 阅读 · 0 评论 -
需求跟踪矩阵
需求跟踪矩阵(Requirement Tracking Matrix,RTM)是用于通过测试用例映射和跟踪用户需求的文档。它在软件部署生命周期结束时提供的单个文档中捕获了客户提出的所有需求和需求可追溯性。需求跟踪矩阵的主要目的是验证是否通过测试用例检查了所有需求,以便在软件测试期间不取消任何功能。在整个项目中,将创建项目和产品可交付成果的生命周期清单,并根据商定的项目和产品需求来开发这些清单。原创 2022-09-28 09:20:52 · 2055 阅读 · 0 评论 -
linux中uboot、kernel、文件系统、用户程序执行顺序
它负责整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM或Quota等文件系统等等,如果内核不认识某个最新的硬件,那么硬件也就无法被驱动,你也就无法使用该硬件。引导加载程序(Bootloader)是固化在硬件Flash中的一段引导代码,用于完成硬件的一些基本配置,引导内核启动。Linux文件系统(File System)中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。原创 2022-09-24 09:13:48 · 640 阅读 · 0 评论 -
状态机角度,理解程序如何在计算机上执行
通过编译器实现;将C程序的。原创 2022-09-19 19:50:14 · 88 阅读 · 0 评论 -
指令集手册不仅是指令集
指令集手册通过定义状态机进行状态转移的规则, 来描述一台抽象计算机所具备的, 程序可以使用的功能。原创 2022-09-19 18:59:31 · 112 阅读 · 0 评论 -
ERAT读和写指令(eratre和eratwe)
最后,被选ERAT word的内容传输到指定的target或source GPR(the MMUCR0 GS,TS,TID,ExtClass,和TID_NZ fields, for TLB word 0;执行eratwe时,硬件计算出的parity会记录在entry中。注意,ERAT word 0的GS、TS、TID、ExtClass和TID_NZ的field分别与MMUCR0[TGS]、[TS]、[TID]、[ECL]和[TID_NZ]的field对应,而不是与target或source GPR对应。原创 2022-09-12 10:30:54 · 1136 阅读 · 0 评论 -
power线程识别寄存器TIR
线程识别寄存器原创 2022-09-12 09:40:07 · 107 阅读 · 0 评论 -
dark silicon(暗硅现象)
由于功耗的限制,一个很高端的处理器,比如多核的,其实同一时刻只能有很少的一部分门电路能够工作,其余的大部分处于不工作的状态,这部分不工作的门电路,就叫做“暗硅”。如果所有核和晶体管工作,导致功耗过大,芯片会烧毁。原创 2022-09-11 15:45:21 · 310 阅读 · 0 评论 -
分页内存管理——虚拟地址到物理地址的转换
因此,指令里面的地址是程序空间(虚拟空间)的虚拟地址(程序地址)。一般页的大小有4KB、8KB、16KB。在该管理机制下内存分配单位化而且不需要空闲连续在一起即可使用(比如第四页和第8页都空闲则可以组合起来给一个程序使用,但在分页内存管理发明之前是不可以的,因为两段空间不连续,至于为什么~~~~~~此处不予解释,需要了解的同学可以参阅相关资料)通过页表我们就可以发现,每个虚拟页面号都对应着一个物理页面号,比如虚拟页面号是1,查询该表我们就可以知晓虚拟页面号1对应的物理页面号在哪里。原创 2022-09-08 20:19:40 · 3258 阅读 · 0 评论