数字ic设计_总结复习

文章目录

  • 前言
  • 一、数字集成设计、EDA工具使用
    • 1. 同步/异步电路
    • 2.时序设计的本质就是让每一个触发器的建立时间和保持时间满足要求
    • 3.时序约束
    • 4.FPGA 和CPLD的区别
    • 5.IC设计:从前端走向后端
    • 6.上拉电阻
    • 7.为什么在标准INV单元里PMOS管的宽长比大于NMOS?
    • 8.Cache与堆栈
    • 9.分支延迟槽
    • 10.静态功耗与动态功耗
  • 二、数字电路基础
    • 1.竞争与冒险
    • 2.Moore、Meeley 状态机
    • 3.SRAM, FALSH, MEMORY, DRAM, SSRAM及SDRAM的区别
    • 4. 几种名词的解释
    • 5. 扇出
    • 6. 组合逻辑、时序逻辑
    • 7.数据选择器、数据分配器
    • 8. flipflop与latch
    • 9.阻抗匹配
  • 总结


前言

因为本人在学习方面记忆力确实不大好,做纸质笔记又容易丢,干脆上传到网上随时方便查阅。
这一篇文章的内容,主要是关于数电/数集两本书相关知识点的复习,希望可以帮助到期末复习、面试的各位。


如有错误,欢迎斧正

一、数字集成设计、EDA工具使用

1. 同步/异步电路

  • 前者所有触发器的时钟用的是同一个
    后者电路里面没有统一的时钟,时钟端有可能是其他触发器的输出端形成的组合逻辑电路

提示:在HDL里,主要敏感列表里面的信号是什么,如果只是clk那么就是同步;如果还有其他敏感信号,则为异步。一般来说,现在电路主要用的都是同步了,异步的比较少(请思考为什么?)。

  • 此外,我们还需要注意,如果是跨时钟通讯,一般容易产生亚稳态,消除的方法是异步信号同步化,常见的方法就是加两级flipflop(所谓同步器,注意只适用于慢到快!)/握手。
    常见的产生亚稳态的原因还有异步信号的采集,我们可以用FIFO进行缓冲。

请思考为什么使用两级触发可以防止亚稳态?
假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后允许有一个周期的时间输出亚稳态,所以其亚稳态特性会减弱。如果此时前级触发器输出信号已经稳定,并且稳定的数据满足第二级触发器的建立时间,那么在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态相当于多给了寄存器一个时钟周期的时间恢复稳定,因此出现亚稳态的几率就会大大减小。当然,如果此时前级稳定时间小于后级的建立时间,那么第二级输出也会产生亚稳态,不过这种故障出现的概率比较小,一般电路中,一位同步器就已经足够满足要求了。
同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间<= 时钟周期。

何为亚稳态?
触发器无法在某个规定的时间段内到达一个可以确认的状态。
即:如果触发器的输入电压采样时间过短,则触发器需要花很长时间来实现输出逻辑达到标准电平,在这段时间里输出端在高低电平之间处于振荡状态,而不是等于理想输出值。也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。
亚稳态中间态时间变长:亚稳态是触发器的一个固有特性,正常采样也会有一个亚稳态时间。当建立时间和保持时间满足时,触发器也会经历采样—亚稳态—随后稳定输出。而出现亚稳态问题时,亚稳态(中间态)时间变长;
亚稳态的输出不一定正确:正常工作时,触发器经历较短的亚稳态时间,随后会正确输出;而出现亚稳态问题时,触发器经历较长的亚稳态时间,最终输出稳定但无法保证正确(是稳定的标准电平信号,但难以保证是输入对应输出)。
避免亚稳态,可以降低时钟频率/使用反应更快的flipflop/使用同步电路/使用边沿快速变化的时钟信号。

2.时序设计的本质就是让每一个触发器的建立时间和保持时间满足要求

  • 所谓建立时间,就是在clk上升沿到来之前输入数据要保持不变的最小时间
    保持时间,就是在clk上升沿到来之后输入数据要保持不变的最小时间
  • 为什么会有这种要求,我们可以把flipflop看成两个相接的latch
    t_su就是clk上升沿来之前将数据锁存所需要的时间(为了稳定的设置前级门的状态需要一段稳定时间)
    t_hd就是clk上升沿来之后将锁存的数据输出所需要的时间(在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间)
    点击查阅原理
  • 相关补充定义有:
    e.g.: t_co / clock skew / clock jitter / setup slack / timing violation
    点击查看定义

3.时序约束

  • 网上有个比喻很有意思,较为形象地解释了什么是时序约束:告诉各种电路,要按照我安排的先后顺序做事,不能乱来,所以电路就像是按照课表上课的学生。
  • 主要包括:周期约束、偏移约束、静态时序路径约束。通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。
  • 附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加时序偏移约束,对全组合逻辑的 PAD2PAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快慢速例外路径和周期路径,以及其他特殊路径。

请思考静态时序分析和功能仿真(动态时序模拟)的区别?
前者分析速度快,不需要激励输入,时序路径覆盖率可以达到百分百,但是只能分析同步电路,并且无法验证功能的正确性;
后者则需要激励源,分析速度虽然慢,但是适用于更多的设计类型,还可以验证功能的正确性,但是时序问题在仿真中无法得到暴露。

4.FPGA 和CPLD的区别

  • CPLD:复杂可编程逻辑器件, Complex Programming logic device。
CPLD FPGA
基于乘积项 基于LUT
适合完成算法/组合逻辑 适合用于时序电路
功耗高,速度快 功耗低,速度慢
可加密 保密性差
CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集中式的。
  • FPGA里的存储资源主要包括BRAM和LUT,想想在HDL里这两种写法有什么区别?使用哪种较为合适呢?
  • 在FPGA设计里,如果要对时钟进行相移或者变频,我们一般不对时钟进行逻辑操作,因为这样容易让时钟带上毛刺,并且放大skew和jitter。建议使用FPGA里自带的时钟管理器(PLL…)。

5.IC设计:从前端走向后端

  • 前段设计,一般指的是逻辑设计,后端则为物理设计,二者一般来说并没有明确的界限。
  • 敲代码->功能仿真->逻辑综合->静态时序分析->管脚约束->实现->生成比特流
    数字ic设计_总结复习_第1张图片

6.上拉电阻

  • 由于TTL电路一般在0.3-3.6v之间,而CMOS则微12V/5V,CMOS可以直接输出到TTL,但是使用TTL驱动CMOS时就需要增加一个上拉电阻。
    TTL速度快功耗高,CMOS速度慢功耗低
  • 在某些电路的节点或者悬空管脚增加上拉电阻提高节点电平,从而增强抗干扰能力,提高驱动能力,输出正确逻辑。
  • 选择上拉电阻时,如果从节约功耗和增强灌电流能力的角度思考,应该选择电阻大、电流小的;如果单纯考虑驱动能力,应该选择电阻小、电流大的。

7.为什么在标准INV单元里PMOS管的宽长比大于NMOS?

PMOS管采用空穴导电,空穴迁移率低于电子, 所以同样的电场下,P管电流比较小。只有增加PMOS的宽长比,才能使得二者上升时间和下降时间相同、高低电平的NM相同、充放电时间相同。

8.Cache与堆栈

  • 处理器通常会在芯片中包含硬件缓存以提高内存访问性能
    L1: 通常分为指令缓存和数据缓存,在处理器芯片上,用SRAM做
    L2: 同时缓存指令和数据,用总线连接到处理器上,用SRAM做
    L3: 更大一级的缓存可选
    一级缓存通常按虚拟内存地址空间寻址,二级及以上按物理内存地址寻址。具体取决于处理器
    数字ic设计_总结复习_第2张图片

  • 栈使用的是一级缓存, 存取速度快,他们通常都是被调用时处于存储空间中,调用完毕立即释放。
    堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定。所以调用这些对象的速度要相对来得低一些。

  • 栈:从高地址向低地址扩展的数据结构,栈顶的地址和栈的最大容量是系统预先规定好,如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
    堆:从低地址向高地址扩展的数据结构,是不连续的内存区域。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
    因此,也不过就是给系统管理的数据空间起了个名字,叫栈;给程序员使用的空间,起了个名,叫堆
    CPU,缓存,内存,外存全解析
    数字ic设计_总结复习_第3张图片

9.分支延迟槽

  • 分支延迟槽的目的主要是为了提高流水线的效率,位于分支指令后面的一条指令不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支跳转目标指令提交。
  • 为了提高流水线的效率,避免气泡,MIPS的架构做了两个改进:
    1、分支指令的判断提前到译码阶段,一部分比较逻辑在译码时完成,而不用等到执行阶段。这样可以少一个气泡。
    2、索性不清空取指阶段指令,让它继续执行,反正下一个指令是跳转指令,只要有个标记知道它是“多出”的指令,称为“延迟槽指令”。所以把转移指令后面的指令位置称为“延迟槽”。这样流水线就没有气泡了。
    如果指令不跳转,那么正好执行下一条;如果跳转指令不久又跳回来,那么从原来跳转指令下两条开始执行;;如果不跳回来,那么相当于白运算了一次,

10.静态功耗与动态功耗

  • 动态功耗包括翻转功耗和短路功耗。当门翻转时,负载电容充电和放电,称为翻转功耗;pmos和nmos管的串并联结构都导通时的有短路电流,称为短路功耗。翻转功耗比较大,其表达式为alphaCV_DD^2*f。降低翻转功耗,可以减小毛刺,减小负载电容,对电路不同模块采用不同电压域。
  • 静态功耗主要来源于:
    (1)流过截止晶体管的亚阈值泄漏电流(subthreshold leakage)
    (2)流过栅介质的泄漏电流(gate leakage)
    (3)源漏扩散区的p-n节泄漏电流(junction leakage)
    (4)在有比电路中的竞争电流

二、数字电路基础

1.竞争与冒险

  • 竞争:某一输入变量经过不同路径传输后,到达某一汇合点的时间存在差异。
    冒险:由于竞争使得电路出现毛刺的现象。
    冒险是因为电路中的时延问题导致,但是有竞争的时候不一定会出现冒险。

请回忆流水线设计里的三种冒险:结构冒险(哈佛架构:DCache和ICache)、数据冒险(数据前推)、控制冒险(分支预测)。

  • 判断:卡诺图(存在相切且未被包围的卡诺圈)、bool表达式里存在相反的信号
若逻辑表达式能转换为 A·(~A),则该电路存在1型冒险(该为 0 的时候出现了为 1 的错误数据,1 型冒险);

若逻辑表达式能转换为 A+(~A),则该电路存在0型冒险(该为 1 的时候出现了为 0 的错误数据,0 型冒险)。
  • 如何解决?
    1.加滤波电容,去除毛刺
    2.设置选通信号
    3.选择合适的卡诺圈,增加冗余逻辑项
    4.采用其他编码方式(格雷码etc.)

2.Moore、Meeley 状态机

  • 前者输出只跟当前状态有关,只有在时钟边沿才会发生状态的改变。
  • 后者的输出值不仅仅跟当前状态值有关,还跟当前输入值有关。

3.SRAM, FALSH, MEMORY, DRAM, SSRAM及SDRAM的区别

  • SRAM:静态随机存储器,存取速度快,不需要反复刷新,掉电后数据丢失,制造成本高,一般用于Cache。
    不妨回忆一下微纳器件课程中关于SRAM最小单元的结构。

  • Flash:闪存,存取速度慢,容量大,掉电不丢失。
    不妨回忆一下单片机课程中关于51使用的存储器。

  • DRAM:动态随机存储器,存取速度慢,需要不断刷新,耗电量大,一般用于内存制造。

  • SSRAM:同步静态随机存储器,对其访问都在适中的边沿启动,各种数据及控制信号都与时钟相关。

  • SDRAM:同步动态随机存储器。

4. 几种名词的解释

  • MCU:微控制单元(Micro Controller Unit),又称单片微型计算机或者单片机。指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时数计器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。

  • RISC:精简指令集计算机,reduced instruction set computer。起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。
    回忆下MIPS架构采用的是什么指令集?精简指令集和复杂指令集的区别在于什么?提示:观察指令长度,运行周期数。

  • CISC:复杂指令系统计算机,Complex Instruction Set Computer。指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算。

  • DSP:是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,通过ADC转换为数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

  • ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。与门阵列等其它ASIC相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点

  • PCI:外围组件互连,Peripheral Component Interconnect。一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。

  • ECC:容错技术,Error Correcting Code。ECC是一种能够实现“错误检查和纠正”的技术。ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。

  • DDR:双倍速率同步动态随机存储器,Double Data Rate。严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。

  • IRQ:中断请求,Interrupt Request。。IRQ的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。

  • USB:通用串行总线,Universal Serial BUS,一个外部总线标准,用于规范电脑与外部设备的连接和通讯。

  • BIOS:基本输入输出系统,Basic Input Output System。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

5. 扇出

扇出系数指的是正常工作范围内,一个门电路的输出端能够连接同一系列门电路输入端的最大数目。扇出系数越大,门电路的带负载能力就越强,扇出系数等于高电平输出电流比上高电平输入电流。

6. 组合逻辑、时序逻辑

  • 组合电路:从电路结构来看,组合逻辑电路不存在反馈,不包含记忆元件;
    从逻辑功能来看,电路的输出只跟当前输入有关,跟之前的电路状态无关。
  • 时序逻辑:从电路结构来看,时序逻辑电路由存储电路和组合逻辑电路组成,包含了记忆元件;
    从逻辑功能来看,当前输出跟之前的电路状态(和当前输入)有关。
    请思考,如何设计时序/组合逻辑电路,自启动的概念是什么,两种电路在HDL里又该如何表示?
  • 需要注意的是,组合逻辑中出现的是竞争冒险问题;而在时序电路中出现的是亚稳态问题。

7.数据选择器、数据分配器

  • 数据选择器的逻辑功能就是能从多个数据输入中选择出其中一个进行传输的电路。
    数据分配器的逻辑功能是能将一个输入信号根据选择信号的取值不同,来传送至多个输出端。
    请思考如何利用数据选择器实现逻辑函数?

8. flipflop与latch

请思考:

  1. 基本SR锁存器的构成是怎么样的?
  2. 为什么SR触发器不允许两个输入端同时为1的情况出现?
  3. 为什么JK触发器具有一次反转的特性?
  4. 请简述DFF的结构
  • Latch:SR锁存器、门控SR锁存器、D锁存器(将SR两端输入相反信号得到,克服无效情况)
    FF:SR触发器、JK触发器(一次翻转)、D触发器、T触发器
    SR锁存器
    其他FF和Latch
  • 防止在写组合逻辑的时候出现latch的方法:
    1.把if、case的其他情况列清楚 2.把使用到的输入信号全部列在always的敏感列表中 3.给所有输出值赋初值

答案:
1. 两个与非/或非门交叉耦合而成,对应低电平有效和高电平有效。
2.如果SR同时变成1,则与非门的输出端同时趋于变成0。由于变化快慢不同,先变成0的与非门通过反馈使得另一个与非门变成1.如果不知道S和R的变化谁先谁后,就无法确定FF输出结果是什么。
3.因为对于JK触发器来说,在任意时刻里面,J和K输入端只有一个有效。当当前状态为0时,J有效,反之亦然。所以当Q=0时,J一旦为1,主触发器的状态就被确定为1。
4.DFF的结构是两个相反敏感电平的latch相接。

9.阻抗匹配

当负载阻抗的大小和相位与传输线的特征阻抗相同时,传输不会产生反射,所有的能量都被负载吸收了。

总结

不积跬步无以至千里,希望自己迎难而上、愈挫愈勇。

你可能感兴趣的:(面试)