前进7

258 阅读28分钟

1 真值表求逻辑表达式方法

从真值表内找 输出端为 1 的各行,把每行的输入变量写成乘积形式,遇到 0 的输入变量加非号。

把各乘积项相加,即可得到逻辑函数的表达式

2 fork join

fork块中begin和end之间的语句会顺序执行。 并发执行。

fork join中的语句为并执行执行的,为并行语句块。语句之间同时开始,并行执行,虽然无法综合,但是用于testbench的编写时非常有用。

特点:

  • 块内语句同时执行的,程序流程控制进入该模块时刻,块内语句即开始同时并行执行;
  • 当耗时最长的语句执行完成后,程序才跳出该并行模块;

3 CDC

CDC(不同时钟之间传数据)问题是ASIC/FPGA设计中最头疼的问题。

CDC本身又分为同步时钟域和异步时钟域。

这里要注意,同步时钟域是指时钟频率和相位具有一定关系的时钟域,并非一定只有频率和相位相同的时钟才是同步时钟域。异步时钟域的两个时钟则没有任何关系。这里假设数据由clk1传向clk2。

单bit同步时钟域:

单bit传输时,同步时钟域因为频率和相位关系都是已知的,可以推导的,所以不需要采用额外的硬件电路就可以解决CDC问题,只需要源数据在clk1端保持足够长时间即可。

让其保持足够长时间有两个好处:即便出现亚稳态,也可以在两个clk2时钟周期后数据变得稳定下来,从而采到正确的结果。还可以防止低频采高频时,因为频率跟不上而导致数据丢失。

单bit异步时钟域:

单bit传输时,异步时钟域的传输就必须使用额外的电路模块(同步器)来保证数据正确的传输。最基本的同步器是双锁存结构的电平同步器,其余的同步器都是由其衍生而来。该同步器的基本原理,也是让数据至少在clk2的时钟下保存两个周期,消除亚稳态。当然同步器能解决异步时钟域的同步问题,自然也可以拿来解决同步时钟域的问题,毕竟同步时钟域更简单一些。

单bit异步时钟域:快时钟域到慢时钟域,扩展脉冲宽度,握手信号。

多bit:

对多个bit各自采用单bit的同步机制,会导致输出一些错误的中间状态。对于多bit传输,只能使用握手信号或者异步fifo。

有关系的时钟之间传单bit数据,理论上只需要源数据保持足够长的时间(clk2的两个周期)即可;

无关系的时钟之间传单bit数据,必须要使用同步器;

不管有无关系的时钟进行单bit传输,脉冲同步器都可以解决这个问题;

多bit传输只能使用握手机制或者异步fifo;

低频采高频,为防止数据不丢失,应当让源数据变慢,多保持一些周期;高频采低频则不需要,但是高频采低频得到的结果可能带有很多冗余。

4 同步——快时钟域到慢时钟域 低频采集高频

慢时钟域到快时钟域中:同步器的控制传递是单向的,即仅从源时钟域到目的时钟域,目的时钟域并没有状态反馈。

在快时钟域到慢时钟域 中可能存在问题: 源时钟域中的第一个脉冲和第二个脉冲间隔过短,第一个脉冲未完成同步,第二脉冲又将状态清空,导致最终脉冲同步丢失。

要解决以上同步问题,需要引入异步握手机制,保证每个脉冲都同步成功,同步成功后再进行下一个脉冲同步。握手原理如下:

  • sync_req: 源时钟域同步请求信号,高电平表示当前脉冲需要同步;
  • sync_ack: 目的时钟域应答信号,高电平表示当前已收到同步请求;

源时钟域 目的时钟域:

(1) 同步请求产生;当同步器处于空闲(即上一次已同步完成)时,源同步脉冲到达时产生同步请求信号sync_req;   

(2) 同步请求信号sync_req同步到目的时钟域,目的时钟域产生脉冲信号并将产生应答信号sync_ack;   

(3) 同步应答信号sync_ack同步到源时钟域,源时钟域检测到同步应答信号sync_ack后,清除同步请求信号;   

(4) 目的时钟域检测到sync_req撤销后,清除sync_ack应答;源时钟域将到sync_ack清除后,认为一次同步完成,可以同步下一个脉冲。

5 cache

高速缓冲存储器(Cache)实际上是为了把由DRAM组成的大容量内存储器都看做是高速存储器而设置的小容量局部存储器,一般由高速SRAM构成。

这种局部存储器是面向CPU的,引入它是为减小或消除CPU与内存之间的速度差异对系统性能带来的影响。

Cache 通常保存着一份内存储器中部分内容的副本(拷贝),该内容副本是最近曾被CPU使用过的数据和程序代码。

Cache的有效性是利用了程序对存储器的访问在时间上和空间上所具有的局部区域性,即对大多数程序来说,在某个时间片内会集中重复地访问某一个特定的区域。

如PUSH/POP指令的操作都是在栈顶顺序执行,变量会重复使用,以及子程序会反复调用等,就是这种局部区域性的实际例证。因此,如果针对某个特定的时间片,用连接在局部总线上的Cache代替低速大容量的内存储器,作为CPU集中重复访问的区域,系统的性能就会明显提高。

系统开机或复位时,Cache 中无任何内容。当CPU送出一组地址去访问内存储器时,访问的存储器的内容才被同时“拷贝”到Cache中。此后,每当CPU访问存储器时,Cache 控制器要检查CPU送出的地址,判断CPU要访问的地址单元是否在Cache 中。若在,称为Cache 命中,CPU可用极快的速度对它进行读/写操作;若不在,则称为Cache未命中,这时就需要从内存中访问,并把与本次访问相邻近的存储区内容复制到 Cache 中。未命中时对内存访问可能比访问无Cache 的内存要插入更多的等待周期,反而会降低系统的效率。而程序中的调用和跳转等指令,会造成非区域性操作,则会使命中率降低。因此,提高命中率是Cache 设计的主要目标。

cache叫做高速缓冲存储器,是介于中央处理器和主存储器之间的高速小容量存储器。

CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。

整体说来cache是CPU与内存之间的桥梁,用于平衡高速设备(CPU)与低速设备(内存)之间的速度差异。

速度由快到慢:寄存器〉cache〉内存〉外存

存储的容量由高到低:外存〉内存〉cache〉寄存器

6 电路基础 -- 三极管 - MOSFET ---CMOS --

三极管有三个极:集电极、发射极和基极。对应有三种接法:共集电极、共发射极和共基极。

MOSFET:

MOS (Mental-Oxide-Semiconductor)就是金属氧化物半导体,是它最初的制作材料,不过现在已经不用金属氧化物了,改用多晶硅了。FET (Field-Effect-Transistor)指的是场效应管。

MOS管有4个极:栅极、源极、漏极、体极。根据沟道类型分为NMOS和PMOS。

BJT和MOS区别:

  1. BJT是电流驱动型的,功耗大,传输延迟小,基极电流限制了它的集成度没法很高。
  2. MOS管是电压驱动型的,功耗小,输入阻抗大,输出阻抗小,栅极几乎没有电流,因此集成度高。

CMOS

下拉网络里,输入驱动NMOS的栅极,上拉网络里,输入驱动PMOS的栅极。

TP和TN总是一管导通而另一管截止,流过TP和TN的静态电流极小(纳安数量级),因而CMOS反相器的静态功耗极小,这是CMOS电路最突出的优点之一。

7 锁存器和触发器

同步RS触发器:

基本的RS锁存器是当 S=1&R=0时,输出Q=1;

S=0&R=1时,输出Q=0;

R=S=0时状态保持;

但是不能同时给R=S=1,输出Q和~Q同时置1之后会不确定。

主从RS触发器:解决了同步RS触发器在cp=1期间,输出状态随着输入信号的改变而多次翻转的问题。

JK触发器:JK触发器是主从RS触发器加了反馈,解决了RS触发器不允许R=S=1的约束。

D触发器: JK触发器+一个反相器 。 时钟沿触发

触发器和锁存器的区别:触发器是边沿触发,锁存器是电平触发。锁存器在不锁存数据时,输出会随输入变化,但一旦锁存数据,输出不受输入影响。

8 最大项和最小项

最小项:n个变量的逻辑乘,即与形式,每个变量以原变量或者反变量的形式出现一次。

n个变量共有2^n个最小项。用m表示,如ABC,表示为m0。

最大项:n个变量的逻辑和,即或形式,每个变量以原变量或者反变量的形式出现一次。

n个变量共有2^n个最大项。用M表示,如A+B+C,表示为M0。

全部最小项之和恒等于1;全部最大项之积恒等于0。

最小项的反是最大项,最大项的反是最小项。

9 加法器

半加器: 一位的加法器

co是进位,s是加数和被加数的和。

全加器: 实现全加运算的逻辑电路。

Ci-1:为相邻低位的进位。

CI为相邻高位的进位。 S为本位和

多位二进制加法器

串行进位二进制加法器:

全加器的个数等于相加数的位数,高位的运算必须等低位运算结束,送来进位信号后才能进行。电路简单,连接方便,缺点是速度低。

超前进位并行加法器:

进位信号不再逐级传递,而采用超前进位技术。

10 SRAM的结构和基本原理

SRAM的结构 主要是一个Memory的array阵列,里面是具体存放的数据;通过control模块来控制读写操作。

控制模块有CS片选端,WE(Write Enable)和OE(Output Enable);还有row decoder和column decoder,功能类似是一个N输入的选择器,用来选择具体哪一行和哪一列;还有一般会有个FIFO,来作为写memory时候的缓冲;

SRAM的读写操作 1)读数据:首先通过地址总线来传地址,送到整个SRAM的Addr 输入引脚;

之后用CS具体选到某一个SRAM里,把地址送到row decorder和column decoder里;

然后使能OE来知道是要读出数据;之后decorder定位到的地址里的数据读出来,从Dout送到数据总线。

(2)写数据:通过地址总线传地址,送到Addr输入引脚;并且数据总线把数据传到Data in引脚;然后CS片选选到某一个SRAM,使能WE,并且通过送到decorder的地址来定位到要写数据的具体某一行某一列,然后把数据写进去。

SRAM和DRAM:

都是可擦除的,也就是掉电数据会消失的。SRAM主要用在CPU cache里,因为它的访问速度很快,但它存储量不大;DRAM一般用在主Memory里,需要周期性地刷新。靠电容来存储。

DRAM(Dynamic Random Access Memory,动态随机存储器)使用电容存储,需要每隔一段时间刷新。

SRAM(Static Random Access Memory,静态随机存储器)

11 SDRAM

SDRAM:(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器 ,为DRAM的一种,,同步是指Memory工作需要同步时钟,动态是指存储阵列需要不断的刷新来保证数据不丢失;;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。

DDR SDRAM(Double Data Rate SDRAM):为双信道同步动态随机存取内存,是新一代的SDRAM技术。DDR内存芯片的数据预取宽度(Prefetch)为2 bit(SDRAM的两倍)。

DDR2 SDRAM(Double Data Rate Two SDRAM):为双信道两次同步动态随机存取内存。DDR2内存Prefetch又再度提升至4 bit(DDR的两倍)

DDR3 SDRAM(Double Data Rate Three SDRAM):为双信道三次同步动态随机存取内存。DDR3内存Prefetch提升至8 bit,即每次会存取8 bits为一组的数据

12 竞争与冒险

由于向相反方向变化的输入信号经过不同的路径,有不同的延时,导致到达某个门的时间不一致,叫竞争

由于竞争现象所引起的电路输出产生了毛刺,就叫冒险

如何判断是否存在竞争与冒险

(1)通过布尔表达式来判断:如果布尔表达式中有相反的信号,比如Y=A·B+A_not·C,当B和C都为1的时候,如果A的值跳转,就会发生竞争,进而在跳转的过渡时间段可能会产生毛刺,也就是冒险。

(2)通过卡诺图来判断:如果有相切的框,就可能会有竞争冒险。

竞争与冒险的解决方法

1 加滤波电容,消除毛刺的影响:在门电路的输出端引入滤波电容,来滤掉毛刺

2 加选通信号,避开毛刺

3 增加冗余项,消除逻辑冒险

4 改用时序逻辑,用D-FF打一拍

5 转换成格雷码再输入,因为格雷码每次只有1bit变化

冗余项消去逻辑冒险

改用格雷码输入,格雷码只有一位变化

门电路输出加滤波电容,消除毛刺

改用时序逻辑,用D触发器打一拍

冒险的分类:根据冒险的产生原因分为逻辑冒险和功能冒险:逻辑冒险是指因为电路中一个输入信号发生变化产生的冒险,

;功能冒险指因为两个或者多个信号同时发生变化,但到达门的输入端有时间差而产生了毛刺,叫功能冒险。

13 计算机体系架构/SOC

SoC是系统级的芯片。

CPU的基本基本结构

cpu主要分为 控制单元、算术逻辑单元ALU、存储单元。ALU做算术运算(加减乘)和逻辑运算(移位)。

控制单元首先从存储器取出各种指令,放在指令寄存器IR里,之后做指令译码来分析要做什么操作。

ALU做算术运算(加减乘等)和逻辑运算(移位等),ALU是接收控制单元的command来运算的。

冯诺伊曼将程序指令和数据一起存储,常见的是计算机 CPU、GPU;

哈佛结构将程序指令和数据分开存储,常见的 ARM、DSP 等微处理器。

哈佛结构具有较高的执行效率,程序指令和数据指令分开,可以预先读取下一条指令,可以同时取指令并取操作数,取指令和执行能够完全重叠运行。

14 cache

在传统的CPU计算机架构里面,cache架构目前分为两大架构诺依曼架构跟哈维架构。在诺依曼架构里面,一个cache同时用于指令与数据,是统一的一个Cache。在哈维架构里面,指令与数据总线是分开的,所以同时出现两个Cache。

Cache是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。目的是提高CPU对存储器的访问速度。

当CPU试图从主存中load/store数据的时候, CPU会首先从cache中查找对应地址的数据是否缓存在cache 中。如果其数据缓存在cache中,直接从cache中拿到数据并返回给CPU。

15 AMBA总线协议 AHB是半双工的,读和写共用地址总线

AMBA总线的全称为高级微处理器总线架构,是ARM架构下SoC设计的一种总线架构。 AMBA包括AHB(Advanced High-perfomance Bus,高级高性能总线),ASB(Advanced System Bus,高级系统总线),APB(Advanced Peripheral Bus,高级外设总线)。

AHB的强大之处在于可以将高速ARM微控制器(High-performance ARM processor)、高带宽的片上RAM(High-bandwidth on-chip RAM)、高带宽的外部存储器接口(High-bandwidth Memory Interface)、DMA总线master等各种拥有AHB接口的控制器连接起来构成一个完整的SoC系统。

AHB总线里有:一个仲裁器(Arbiter)用于仲裁多个主设备(Master)同时访问总线的情况;三个多路选择器(地址选择,写数据选择,读数据选择)用于选通master和slave之间的data和addr。
AHB的ADDR没有分读和写的ADDR:AHB是半双工的,读和写不能同时进行,因此性能上比AXI一般来讲是要弱的。

APB,Advanced Peripheral Bus,高级外设总线,主要应用在低带宽的外设上,如UART,I2C,中断控制、定时器、GPIO等。对性能要求不高,主要是低功耗。

APB的架构不像AHB那样是多主设备的架构,APB只有唯一的主设备APB桥(与AXI或AHB相连),因此不需要仲裁一些BUSREQ,GRANT,接口信号很简单。下图是一个典型的慢速APB Slave需要的接口。

AHB:

高性能(High performance)

并发操作(Pipelined operation)

支持多个总线主设备(Multiple bus masters)

支持突发传输(Burst transfers)

支持分段传输(Split transactions)

单个时钟边沿操作

APB:

低功耗(Low power),尤其在非外设总线活动时APB的接口零功耗

锁存的地址和控制(Latched address and control)

接口简单(Simple interface),控制逻辑简单,只有4个控制信号
适用许多外设(Suitable for many peripherals)
两个时钟周期传输

16 AXI --将数据写入和数据读出的信号相分离,可以同时进行写入和读出动作

AXI(Advanced eXtensible Interface)总线是AMBA总线架构中,最新并且性能最好的一个总线标准。

AXI的设计目标是可以在高时钟频率下运行,并在延滞时间长的状况下仍可达成高数据吞吐率。

AXI总线将读/写请求与读/写结果相互分离、将数据写入和数据读出的信号相分离,可以同时进行写入和读出动作,从而最大限度地提高总线的数据吞吐率。

相反AHB是半双工的,读和写不能同时进行,因此性能上比AXI一般来讲是要弱的。

握手协议:
AXI总线的master和slave的端口分为5个双向流量控制的通道,所谓双向流量控制是指发送端用valid表示数据是有效的,接收端用ready表示可以接受数据;

只有在vaild和ready同时为1时,数据才成功被传送。vaild/ready机制可以使发送接收双方都有能力控制传输速率。

突发传输

是指在同一行中对相邻的存储单元连续进行数据传输的方式,连续传输的周期就是突发长度(Burst Length,一般为4或8)

在进行突发传输时,只需指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作,而不再需要控制器提供列地址。这样,除了第一笔数据的传输需要若干个周期,其后每个数据只需一个周期即可获得。

17 FPGA的基本结构

FPGA是可编程逻辑单元:

1 可编程IO单元

2 可编程逻辑单元:LUT和寄存器。通过LUT实现组合逻辑

3 丰富的布线资源:包括专用布线资源,长线资源,短线资源

4 嵌入式块RAM: 可以配置为单端口RAM,双端口RAM,fifo等

5 底层嵌入式功能单元:DSP PLL等

6 内嵌专用硬核:通用性较弱的硬核

18 通信协议

1 UART

异步半双工,RS232中最常用的是 八个数据位,无奇偶校验,一个停止位。

异步是指: 发送方发出数据后,不等待接受方发回响应,接着发送下个数据包的通讯方式。

接口信号有TX和RX,TX用于发送数据,RX用于接收数据。数据传输前,发送端和接收端都要设置一样的波特率。传输时,发送端先发出一个0表示起始位,后面跟着数据位,数据位的最后有一个奇偶校验位,最后有高电平的停止位(可以是1/1.5/2位),空闲位是1,表示没有数据传输。

2 SPI 四线

同步全双工

是一个主设备对应多个从设备。接口有CS(片选信号,用来选定通信的从设备. MOSI主输出从输入 MISO主输入从输出 SCLK时钟 cs片选信号

3 IIC:

同步半双工

只有一个时钟线SCL和一个数据线SDA。

比如A给B发数据,二者的时钟线和数据线要对应接好,最开始时钟线和数据线上的电平都是高电平,然后A发送端先把数据线拉低,等到数据线变成低电平后,再把SCL拉低(这两个动作构成了通信的起始信号),之后数据线SDA就可以发送数据了,同时时钟线发送脉冲,并且时钟线会在上升沿对数据线进行采样,

所以数据线必须在时钟线是高电平时保持有效,在低电平时发送下一个数据。

19 DMA

DMA(Direct Memory Access,直接存储器访问)

在实现DMA传输时,不需要通过CPU调度,是由DMA直接控制总线。是一种快速传送数据的机制。

即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。

  1. 请求:CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。

  2. 响应:DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。

  3. 传输:DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。

在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。

  1. 结束:当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序
DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。

20 流水线

单指令周期处理器:

一条CPU指令的执行,由FDE三步组成。这个执行过程,至少需花费一个时钟周期。因为在取指令的时候,我们需要通过时钟周期的信号,来决定计数器的自增。

一个时钟周期可执行一条指令,CPI=1,看着就比执行一条指令要多个时钟周期性能好。这就是单指令周期处理器(Single Cycle Processor):一个时钟周期内,处理器正好能处理一条指令。

虽然CPI能够保持在1,但时钟频率却没法太高。太高,有些复杂指令没法在一个时钟周期内完成。在下个时钟周期到来,开始执行下条指令时,前一条指令执行结果可能还没写入寄存器。下一条指令读取的数据就不准确了。

无论是Intel CPU or ARM CPU,都不是单指令周期处理器,而是采用一种叫作指令流水线(Instruction Pipeline)的技术。

现代处理器的流水线设计:

指令执行过程会拆分成“取指令、译码、执行”三步。

还包含从寄存器或内存读数据,通过ALU运算,把结果写回寄存器或内存。

CPU的指令执行过程,其实也是由各电路模块组成:

  • 取指令时,需要译码器,把数据从内存取出来,写入寄存器
  • 指令译码时,需要另外一个译码器,把指令解析成对应控制信号、内存地址和数据
  • 指令执行时,需要一个完成计算工作的ALU。这些都是一个一个独立的组合逻辑电路,

这就不用把时钟周期设置成整条指令执行的时间,而是拆分成完成这样的一个一个小步骤需要的时间。

这样的协作模式,就是指令流水线。这里每个独立步骤,称为流水线阶段或流水线级(Pipeline Stage)。

把一个指令拆分成“取指令-指令译码-执行指令”三部分,那这就是一个三级流水线。

进一步把“执行指令”拆分成“ALU计算(指令执行)-内存访问-数据写回”,就变成一个五级流水线。

五级流水线:同一时钟周期里,同时运行五条指令的不同阶段。这时,虽然执行一条指令的时钟周期变成5,但可提高CPU的主频。

无需确保最复杂那条指令在时钟周期里执行完成,只要保障一个最复杂的流水线级操作,在一个时钟周期内完成即可。

若某一操作步骤时间太长,可考虑把该步骤拆分成更多步骤,让所有步骤需执行时间尽量差不多长。这就可解决在单指令周期处理器中遇到的,性能瓶颈来自最复杂的指令的问题。

像ARM或IntelCPU,流水线级数都已到14级。

虽然不能通过流水线,减少单条指令执行的“延时”指标,但通过同时在执行多条指令的不同阶段,提升了CPU的“吞吐率”。

21 低功耗

功耗主要分为三部分,分别是浪涌功耗、静态功耗和动态功耗。 在进行IC设计时一般不需要关注浪涌功耗。

功耗的组成:

动态功耗有switching power翻转功耗(充放电电容引起的。和负载电容、电压、01翻转的频率、时钟频率有关)、short circuit power短路功耗(瞬时的短路引起的,比如说反相器,输入信号翻转时,中间会有很短的时间PMOS和NMOS同时导通,形成短路电流。和电压、MOS管的阈值电压、01翻转的频率有关);

动态功耗是指由于逻辑转换所产生的功耗。

静态功耗是因为漏电流引起的,亚阈值状态下MOS管的漏电流。栅极漏电流(因为工艺方面,栅极不是完全绝缘的,从栅极到衬底有一部分漏电流。

动态功耗:

翻转功耗------降低电压、降低01翻转的频率、降低时钟频率、减小负载电容

短路功耗------降低电压、降低01翻转的频率、降低时钟频率、选用阈值电压更大的MOS管。

22 动态功耗:

动态功耗是指由于逻辑转换所产生的功耗。

1  合理规划芯片的工作模式,通过功耗管理模块控制芯片各模块的Clock,Reset信号起到控制功耗的目的。
2 门控时钟,有效降低动态功耗

在数据无效时,将寄存器时钟关闭的技术

3 多电压供电:通过控制模块的电压降低功耗

动态功耗与供电电压成正比,因此降低供电电压可以有效的降低功耗。

4 多阈值电压:对性能要求较高的电路使用低阈值电压单元,对功耗要求较高的电路使用高阈值电压单元。
5 寄存器传输级降低功耗技术:优化代码来实现。如选择合适的编码:格雷码。

数据翻转率角度
(1)使用格雷码等状态翻转比较少的编码;
(2)数据不操作说,保持上次的值,而不是强制置0或者置1;
(3)使用使能信号、片选信号,减少不必要的切换;

\

23 静态功耗 ---亚阈值状态下MOS管的漏电流。

静态功耗是因为漏电流引起的,亚阈值状态下MOS管的漏电流。栅极漏电流(因为工艺方面,栅极不是完全绝缘的,从栅极到衬底有一部分漏电流。

P_static = V*I_leak,和 电压、漏电流 有关,而漏电流和工艺有关;

 电压角度 V:
(1)降低工作电压;
(2)多电压域;
(3)动态电压缩放DVS技术(处理器在不同工作模式下使用不同电压);
(4)电源关断技术,power-gatin

电流角度 I_leak(漏电流):
(1)使用HVT高阈值晶体管,漏电流小;
(2)多阈值;

24 数字ic设计流程

制定设计需求

要进行系统级设计,

就要进行前端设计Synopsys 的VCS--对RTL做功能仿真,

Cadence--逻辑综合,RTL代码转化成门级电路,Design Compiler生成网表文件。

--STA静态时序分析,套用一些时序模型来针对电路分析有没有时序为例--

就把网表文件给后端

后端最终会生成GDSII格式的文件,就可以找工厂流片了,流片回来的demo要再做测试。

25 逻辑综合的流程

逻辑综合是将RTL电路转换成基于具体工艺库的门级网表。

  1. 转译:把电路转换成EDA内部数据库,这个数据库跟工艺库是独立无关的;

  2. 优化:根据工作频率、面积、功耗来对电路进行优化,进而推断出满足设计指标要求的门级网表

  3. 映射:将门级网表映射到晶圆厂给定的工艺库上,最终形成该工艺库对应的门级网表。

工作频率 面积 功耗来进行优化

DC逻辑综合的流程:

1 预综合过程:启动DC -> 设置各种库文件(link_library, target library, symbol library) -> 创建启动脚本文件 -> 读入设计文件(analyze, elaborate, read_file) -> DC中的设计对象 -> 各种模块划分 -> Verilog的编码

2 施加设计约束:设计环境约束

3 设置时序约束

  1. 设计综合
  2. 后综合