数字集成电路设计之CMOS
数字集成电路设计理论
1、基本的理论结构
现在主流的集成电路器件还是CMOS,所以理论的结构还是基于CMOS。CMOS有N和P两种MOS组合组合在一起。CMOS最简单的器件就是反相器。然后是标准的逻辑门(与门和或门),标准单元是采用w/L=2:1的PMOS和NMOS组成的与非门和或非门。然后,就可以实现所有的数字逻辑。当然,在实际的应用中,还有一些其他的重要结构,但是这三个单元是基本。
2、重要部分
逻辑门:
构建一个逻辑门,需要确定输入和输出,然后使用NMOS拓扑和PMOS拓扑构成逻辑门。这里由于NMOS和PMOS的连接关系一般采用对偶关系(串联对并联,并联对串联),所以只需要采用一个拓扑就可以得到逻辑门所实现的功能。以NMOS为例:串联为与,并联是或,最后的输出加非即可。其他的多输入模型也是基于这个来设计的。
传输特性:
前面提到,串联为与,并联为或。这是基于开关器件来说的。在实际的MOS器件时,串联的结构是具有延时的。例如A和B两个输入,A在B上面,也就是A靠近输出。在A=0,B=0时,F输出高电压。在A高时,NMOS-A的作用为电阻,可以较快地下降;而当B高时,NMOS-B的作用相当于电阻,NMOS-A相当于加了一个下拉电阻,需要更长的时间导通。也就是A=1,B=0->1的延时要比B=1,A=0->1的延时要小。这里区分了与门的两扇入的区别。
这个延时,最直接的结果就是限制了输入的数量。如果扇入过多,延时将增加到不可接受。而且可能出现最上面的MOS栅压大于电源电压而失效。一般输入数小于等于4最好。
对于输入更多的器件,可以采用单元电路组合的方法实现。这种实现方法的延时将转化为多路径,其中最慢的路径就是电路的速度。这里的分析就是要考虑逻辑努力。
逻辑努力:
计算逻辑努力有软件可以仿真,而对于估算来说,使用反相器模型会比较好理解。
一般的设计,MOS的W/L的值是确定的。所以对于一个反相器而言,延时也是一定的。理想的反相器的总延时Di=tp0(1+fi),而我们使用的一般是Di=tp0(p+gi hi)。
这里tp0的作用相当于一个单位延时,和长度的m是一个概念。P则是输入电容的延时,用于输入延时的描述,在空载时就是这个电路的延时。而g则是等效反相器个数,也就是逻辑努力。h则是Cout/Cin,也就是扇出。显然扇出越大,所能容纳的级数越大,延时越大。下面说一下这几个参数的计算:
g,将串联的宽长比除以串联个数,并联不变,相加除以2就是分母,分子就是总和除以2;简单理解就是串联延时增大,体现为分母减小修正。这里一般使用2:1的反相器为标准。
P,与输入个数成正比。
BG:就是连接输出的下一级的个数与g的乘积。一般是同样的输出级,不同的应该要区分写。这里直接相乘就是分别写的缩写。
h:就是Cout/Cin,可以理解为最小延时。
这里就比较奇怪,为什么其他支路会影响分析的干路。个人理解是其他支路的输入电阻与输出电容构成的RC分路会提高延时。具体的原理可能用到模电的分析,这里就不做讨论了。
这就是逻辑努力的基本概念,可以试着分析一下各个输入的延时,理解每一个逻辑电路的延时的概念。
延时优化:
从前面的分析可以看出,一个路径的延时的最小就是h(忽略单位),但是前面提到了一级内部不能加入过多的扇入。所以,多少级的结构合适呢?Fi=Bi*Gi*Hi,这就是每一级延时的乘积。根据数学原理,要使总的延时(也就是每一级的延时之和)最小,等比分布是最小的。
这里使用了一个重要的关系式:h1*h2*……*hi=Cout/Cin,理解为Hi的1~i乘积等于Cout/Cin,当然也可以根据每一级的F,B,G得到每一级的H。
这里理解起来还是比较复杂的。
主要的区分点是每一级的参数还是总的参数。
小结:
后面的内容就是CMOS的改进。一些基于其他的NMOS和PMOS的组合方法可以实现一些特定的功能,这里由于时间关系就不多说,后面有时间再补充。
3、实验部分
实验部分就是绘制版图,在别的部分有过介绍,这里不再赘述。在使用cadence工具中找到过。
数字集成电路设计之CMOS的更多相关文章
- 数字集成电路设计-8-一个简单sobel图像边缘检测加速器的设计,实现,仿真与综合
引言 图像视频处理等多媒体领域是FPGA应用的最主要的方面之一,边缘检测是图像处理和计算机视觉中的基本问题,所以也是最常用的,随着数据量的不断增加以及对实时性的要求,一般软件已经不能满足实际需要,这时 ...
- 数字集成电路设计-14-DPI
引言 在进行IC验证时,尤其是规模较大的时候,单纯用Verilog和SV来构建testbench.可能会稍显吃力. 在这样的情况下,使用C或者C++等软件语言往往会大大加快验证速度,提高验证效率. P ...
- VerilogHDL概述与数字IC设计流程学习笔记
一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是 ...
- 数字IC前后端设计中的时序收敛(六)--Max Fanout违反
本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...
- 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(三)--Hold违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...
- 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(一)前言
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...
- 数字IC设计工程师的知识结构
刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...
随机推荐
- 走出人生的舒适区,告别 CRUD
舒适区(Comfort zone),指的是一个人所处的一种环境的状态,和习惯的行动,人会在这种安乐窝的状态中感到舒适并且缺乏危机感. 工作中的舒适区 很多人工作也每天很累很辛苦,程序员每天都在加班加 ...
- Wireguard笔记(二) 命令行操作
目录 Wireguard笔记(一) 节点安装配置和参数说明 Wireguard笔记(二) 命令行操作 Wireguard笔记(三) lan-to-lan子网穿透和多网段并存 命令行操作 创建wg0网卡 ...
- Js将字符串转数字的方式
Js将字符串转数字的方式 Js字符串转换数字方方式主要有三类:转换函数.强制类型转换.弱类型隐式类型转换,利用这三类转换的方式可以有5种转换的方法. parseInt() parseInt()和Num ...
- Typora关于 插入图片 居中 靠左 靠右设置
style="float: left;" <img src="C:\Users\mlx\AppData\Roaming\Typora\typora-user-ima ...
- Spring Boot图书管理系统项目实战-5.读者管理
导航: pre: 4.基础信息管理 next:6.图书管理 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 <!DOCTYPE ...
- C++ 多线程的错误和如何避免(3)
传递给 C++ 线程的构造函数的参数是通过值传递的 VS 平台:2019 问题:如何在线程中改变传递的参数值? 比如: #include <functional> #include < ...
- win32 - 使用GDI+从资源中获取图像并加载
很多时候我们习惯使用GDI+中Image类来加载本地文件,但是有时候我们需要资源中从加载png格式的图片时,却无法使用该类. 我们可以使用FindResource,LoadResource和LockR ...
- APScheduler可能遇到的问题
uWsgi使用多进程模式启动Django项目,因此我们会有多个进程去执行这个定时任务,导致定时任务被重复执行.解决这个问题的方法,我们直接就会想到采用加锁的方式.第一个拿到锁的进程,执行定时任务,其余 ...
- 【LeetCode二叉树#20】二叉搜索树转换为累加树,巩固二叉树的遍历(特殊的中序遍历)
将二叉搜索树转换为累加树 力扣题目链接(opens new window) 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 no ...
- 【Azure 服务总线】Azure门户获取ARM模板,修改Service Bus的TLS版本
问题描述 在Azure中创建Sverice Bus服务后,如果想修改服务的TLS版本,是否有办法呢? 问题解答 通过Service Bus的ARM模板,修改属性值中的 minimumTlsVersio ...