![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数字IC设计
文章平均质量分 83
小wang的IC自习室
这个作者很懒,什么都没留下…
展开
-
流水线的dependence问题(指令相关性)
今天被问到了流水线的dependence问题,一开始没听懂,然后硬猜应该问的是指令相关性,之后查询了一下,硬猜满分(手动狗头),顺便总结一下。指令的相关性,指令流水线的一个特点是流水线中的各条指令之间存在一些相关性,使得指令的执行受到影响。要使流水线发挥高效率,就要使流水线连续不断地流动,尽量不出现断流情况。然而,由于流水过程中存在的相关性冲突,断流现象是不可避免的。原创 2022-08-21 11:05:19 · 1635 阅读 · 2 评论 -
编程:输入日期(月、日)判断是否有效、并输出是今年的第几天(IC笔试题)
有一段时间没认真写过C代码了,顺便回顾一下基础语法:2022联发科实习笔试题:(15分) [简答题] 给出2022年的某一个日期(月日用空格分隔) e.g. 5 30,输出以下内容:1)该日期是否为有效日期(如2月29为无效日期) (Valid/Invalid)2)若该日期有效,则同时输出该日期为该年第几天思路:2022年12个月每个月的天数是固定的,可以用一个数组保存下来; 如果输入的月数小于1或者大于12,输入日期无效;输入的日数在当月范围之外,则输入日期无效; 若日期有效,用原创 2022-05-14 15:42:32 · 639 阅读 · 0 评论 -
VS Code如何配置C\C++环境 步骤详解
目录1 下载vscode(若提前下载好,直接跳转到3 配置C/C++环境:)2 配置为中文界面3 配置C/C++环境:3.1 准备3.2 配置环境变量3.2.1 首先安装MinGW编译器:3.2.2 然后配置环境变量:3.3配置编译器:3.3.1vscode安装C/C++扩展3.3.2 配置编译器1 下载vscode(若提前下载好,直接跳转到3 配置C/C++环境:)去vscode官网Visual Studio Code - Code E...原创 2022-05-14 12:52:07 · 13720 阅读 · 6 评论 -
verilog中的可综合和不可综合语句总结
Verilog是描述硬件电路的,它是建立在硬件电路的基础上的。有些语法结构是不能与实际硬件电路对应起来的,也就是说我们在把一个语言描述的程序映射成实际硬件电路中的结构时是不能实现的。task和function都是可综合的,不过综合出来的都是组合逻辑电路。要想可综合,task和function内部必须是组合逻辑。 循环语句(repeat、while、for)也可以用于可综合电路设计,当采用循环语句进行计算和赋值操作时,可以综合得到逻辑电路。verilog中可综合语句:input、output、p.原创 2022-04-12 22:36:18 · 10966 阅读 · 2 评论 -
数字设计基础——卡诺图的应用
目录1 完成逻辑函数的逻辑运算2用卡诺图记忆格雷码3卡诺图消除组合逻辑中的冒险(毛刺)1 完成逻辑函数的逻辑运算eg.已知两逻辑函数F1(A,B,C)=∑m(0,1,3),F2(A,B,C)=∑m(0,4,5,7),试用卡诺图分别求出F1+F2;Fl·F2和Fl+F2。解:将逻辑函数Fl、F2在同一张卡诺图中表示出来,将函数出现的1填在卡诺图小方格的左上角,将函数F2出现的l填在卡诺图小方格的左下角,如图4; 求Fl+F2时,将Fl、F2卡诺图中出现的所有1都画入包围圈,...原创 2022-04-08 11:34:13 · 3432 阅读 · 0 评论 -
RAM、ROM及其细分存储器对比详解笔记
以下是根据B站up主:爱上半导体,所发布的视频制作的PPT如需要原版PPT可以在下边链接中获取哦~不要客气哦(手动狗头)提取码:ba64各类存储器介绍https://www.aliyundrive.com/s/rJ9pMGAUaf4...原创 2022-03-24 11:52:47 · 1031 阅读 · 1 评论 -
数字IC设计流程相关名词梳理及各流程EDA工具总结
目录1. 数字IC设计流程相关名词梳理半定制设计(ASIC):RTL ( Register Transfer Level)设计:功能验证:逻辑综合:形式验证:STA ( Static Timing Analysis,静态时序分析) :时钟树综合CTS(Clock Tree Synthesis):布局布线:Extrat RC和STA:版图物理验证:GDSII文件:2. IC设计过程中用到的EDA工具总结1. 数字IC设计流程相关名词梳理 半定制设计原创 2022-03-16 20:02:31 · 4171 阅读 · 0 评论 -
数字IC设计(ASIC设计)完整流程详解
目录I、ASIC设计流程一、确定项目需求二、前端流程三、后端流程II、IC设计流程相关名词梳理(含各流程EDA工具梳理)III、IC设计流程整理(图片)I、ASIC设计流程一、确定项目需求1. 确定芯片的具体指标:物理实现制作工艺(代工厂及工艺尺寸);裸片面积(DIE大小,DIE由功耗、成本、数字/模拟面积共同影响);封装(封装越大,散热越好,成本越高)。性能指标:速度(时钟频率);...原创 2022-03-16 19:56:08 · 28655 阅读 · 0 评论 -
十一、RISC-V SoC外设注解——UART接口 时序设计 代码讲解(终篇)
十一、RISC-V外设解析——UART模块(终篇)上一篇博文中注释了TIMER模块,现在来介绍UART模块。终于迎来了最后一篇关于RISC-V SoC软核注解的博文,在本篇的最后会上传额外添加详细注释的工程代码,完全开源,如有需要可自行下载。目录1. 结构2.基础知识3. UART模块3.1 输入和输出端口3.2 程序注解4.后记1. 结构如下图,UART模块也是通过总线与内核进行交互的。2.基础知识(1)UART是指通用异步收发传输。(2)同..原创 2022-03-08 20:45:49 · 3582 阅读 · 3 评论 -
十、RISC-V SoC外设——timer定时器 代码讲解
上一篇博文中注释了SPI外设模块,现在来介绍timer定时器模块。目录1. 结构2. timer模块2.1 输入和输出端口2.2程序注解3.总结参考:1. 结构如下图,TIMER模块也是通过总线与内核进行交互的。该模块的主要功能是通过计数器达到计数阈值,来触发定时器中断。2. timer模块2.1 输入和输出端口inputwireclk,inputwirerst, //内核给外设inputwir...原创 2022-03-08 13:43:22 · 4578 阅读 · 1 评论 -
九、RISC-V SoC外设——SPI接口 代码讲解
3.SPI模块 3.1基础知识SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线。 SPI通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据传输速率较快;缺点是没有指定的流控制,没有应答机制确认数据是否接收。 一主多从(无论有多少个从设备,都共同使用这3条总线;而每个从设备都有独立的这一条 CS_N 信号线,低电平有效)如下图所示:CPOL/CPHA及通讯模式 SPI通讯协议一共有四种通讯模式,模式 0、模式原创 2022-03-08 09:46:07 · 2640 阅读 · 0 评论 -
八、RISC-V SoC外设——GPIO接口 代码讲解
八、RISC-V外设解析——GPIO&SPI前几篇博文中注释了RISC-V的内核CPU部分,从这篇开始来介绍RISC-V总线上挂载的外设部分。结构如下图,我们之前介绍的RISC-V内核部分,是图中左上角的RISC-V处理器核。而内核和所有的外设都挂载在总线上,内核通过总线和外设进行数据交互。这六个外设中,RAM和ROM外设已经在之前的博文中进行了解析,因此不再赘述。现在我们来介绍外设中的GPIO外设。2.GPIO模块2.1 输入和输出端口inputwireclk,...原创 2022-03-08 09:46:11 · 4710 阅读 · 0 评论 -
六、RISC-V SoC内核——通用寄存器 代码讲解
tinyriscv这个SoC工程的内核cpu部分,采用经典的三级流水线结构进行设计,即大家所熟知的:取值—>译码—>执行三级流水线。上一篇博文中注释了中断模块,现在来介绍通用寄存器reg.v模块:目录1. reg在内核中的位置2.RISC-V通用寄存器3. reg.v4.主要功能5. 代码注释参考:1. reg在内核中的位置如下图,绿色的方块是通用寄存器reg,从位置上可以看出,通用寄存器在功能上,主要承担译码和执行部分的临时数据存储:2.R...原创 2022-03-07 11:24:35 · 3864 阅读 · 4 评论 -
五、RISC-V SoC内核——中断 代码讲解
tinyriscv这个SoC工程的内核cpu部分,采用经典的三级流水线结构进行设计,即大家所熟知的:取值—>译码—>执行三级流水线。上一篇博文中注释了执行模块,现在来介绍中断模块:目录1. 中断结构图2. csr_reg 控制与状态寄存器2.1 中断和异常概述2.2 csr_reg.v基础知识2.3 csr_reg.v注解3. clint.v 模块注解3.1 接口定义3.2 程序内容4. ctrl.v模块(跳转和流水线暂停)4.1 ctrl接口定义原创 2022-03-07 10:01:41 · 9109 阅读 · 4 评论 -
七、RISC-V SoC内核——总线 代码讲解
上一篇博文中注释了中断模块,现在来介绍总线模块rib.v:(这个RIB总线协议为工程原作者自定义的总线协议)目录1. rib.v功能2. rib总线接口注解3. 总线工作机制3.1. 总线仲裁机制3.2. 主设备选择访问从设备4. 对RIB总线的理解参考:1. rib.v功能设想一下一个没有总线的SoC,处理器核与外设之间的连接是怎样的。可能会如下图所示:可见,处理器核core直接与每个外设进行交互。假设一个外设有一条地址总线和一条数据总线,总共有N..原创 2022-03-06 16:40:06 · 5929 阅读 · 1 评论 -
四、RISC-V SoC内核注解——除法(试商法)代码讲解
inyriscv这个SoC工程的内核cpu部分,采用经典的三级流水线结构进行设计,即大家所熟知的:取值—>译码—>执行三级流水线。上一篇博文中注释了执行模块,现在来介绍执行模块中的除法模块:这个软核内部的除法单元是在div.v文件中实现。采用试商法来实现除法运算,试商法的计算过程如下:注意要点:1.每次除法运算至少需要33个时钟周期才能完成,用状态机来实现;2.主要需要判断并执行的指令有4种类:wire op_div = (op_r == `INST_DIV); /原创 2022-03-06 16:32:25 · 3497 阅读 · 3 评论 -
一、RISC-V SoC内核——取指 代码讲解
RISC-V内核结构——取指:tinyriscv这个SoC工程的内核cpu部分,采用经典的三级流水线结构进行设计,即大家所熟知的:取值—>译码—>执行三级流水线。在注解工程中的“取指”代码之前,先回顾一下CPU执行指令的简略过程(以三级流水线为例):CPU内部主要由:寄存器(Register):多种寄存器各司其职,有程序计数器(即程序指针PC,Program Counter),用来记录要执行的指令的地址;指令寄存器,用来暂存指令内容;数据寄存器,一般为通用寄存器,用来保存指令执行原创 2022-02-20 18:38:40 · 7860 阅读 · 5 评论 -
零、RISC-V SoC软核代码笔记详解——前言
前言:过去几年RISC-V飞速发展,这股从美国兴起的RISC-V大流愈演愈烈。由于目前中国IC行业受到国外不同程度的排挤,在国内大力发展RISC-V这个完全开源的精简指令集架构,显得尤为重要。而目前国内很多芯片的龙头企业都已经进军RISC-V架构的芯片领域,如紫光展锐、华为海思、阿里平头哥等。从市场角度来说,RISC-V还是有很多事情要做的,其生态建设,高端场景应用都需要进一步发展。所以推动RISC-V的教学和发展就愈发重要。如果想要拿RISC-V架构的SoC来参加FPGA开发或者数字IC设计相关的原创 2022-04-27 14:57:31 · 8860 阅读 · 6 评论 -
数字电路复位信号设计(异步复位、同步释放)笔记详解
复位信号设计(异步复位、同步释放)笔记详解1 时序设计1.1 复位信号设计(异步复位、同步释放)1.1.0 复位恢复时间和清除时间首先解释一下恢复时间(recovery time)和清除时间(removal time):(以复位信号低电平有效为例)复位恢复时间(recovery time):撤销复位时,复位信号无效到时钟有效沿来临之间需要维持的最小的时间,类似于同步时钟的建立时间setup time;复位清除时间(removal time):复位时,在时钟有效沿来临之后复位信号还需要保持复位原创 2021-09-09 21:49:30 · 6631 阅读 · 8 评论 -
Verilog实现1位全加器及输出逻辑解析
Verilog实现1位全加器及输出逻辑解析1、半加器、全加器是什么 半加器电路指对两个输入数据位(a、b)相加,输出一个结果位(sum)和进位(cout),但没有计算进位输入的加法器电路。 相比半加器,全加器是将进位输入也代入计算的加法电路,同样输出一个结果位和进位。1位全加器就是计算带进位输入的1位二进制数的加法电路,多个一位全加器进行级联可以得到多位全加器。2、1位全加器的Verilog实现 了解了什么是1位全加器,那怎么有Verilog实现它呢,首先直接上代码:module full原创 2021-08-22 20:53:26 · 27284 阅读 · 13 评论