集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 499|回复: 0

FPGA学习笔面试记录(三)——重难点知识汇总

[复制链接]
dameihuaxia 发表于 2022-7-9 11:18:45 | 显示全部楼层 |阅读模式
锁存器和触发器
1.名词解释
锁存器(latch)是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,尽当锁存器处于使能状态时,输出才会随着数据输入发生变化。

触发器(flipflop)是边沿敏感的存储单元,数据存储的动作由某一信号的上升或者下降沿行同步的。(钟控D触发器其实就是D锁存器,边沿D触发器才是真正的D触发器)

寄存器(register)是用来暂时存放参与运算的数据和运算结果。在实际的数字系统中,通常把能够用来存储一组二进制代码的同步时序逻辑电路称为寄存器。

2.锁存器和触发器的区别
锁存器同其所有的输入信号相关,是电平触发,当输入信号变化时锁存器就变化,没有时钟端,属于异步电路设计,时序分析困难且浪费大量芯片资源。

触发器受时钟控制的边沿触发,只有在时钟触发时才采样当前的输入产生输出,当然因为锁存器和触发器二者都是时序逻辑,所以输出不但同当前的输入相关,还同上一时间的输出相关。

3.触发器、锁存器、寄存器的区别?
由于触发器内有记忆功能,因此利用触发器可以方便地构成寄存器。由于一个触发器能够存储一位二进制码,所以把n个触发器的时钟端口连接起来就能构成一个存储n位二进制码的寄存器。从寄存数据的角度来讲,寄存器和锁存器的功能是相同的;它们的区别在于寄存器是同步时钟控制,而锁存器是电位信号控制。

4.锁存器有哪些缺点?
锁存器在不锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓存器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。因此锁存器也称为透明锁存器,指的是不锁存时输出对输入是透明的。此外锁存器还有以下一些缺点:

(1)对毛刺敏感,不能异步复位,所以上电后处于不确定的状态。

(2)锁存器会使静态时序分析变得非常复杂。

(3)在 FPGA 中,基本的单元时由查找表和触发器组成的,若生成锁存器反而需要更 多的资源。

5.触发器有哪些类型?
根据逻辑功能不同:RS触发器、D触发器、JK触发器、T触发器和T'触发器等。

根据触发方式不同:电平触发器、边沿触发器和主从触发器等。

根据电路结构不同:基本RS触发器,同步触发器、维持阻塞触发器、主从触发器和边沿触发器等。

6.D锁存器
所谓的 D 锁存器,就是能够将输入的单路数据D存入到锁存器中的电路,D锁存器的电路图如下图所示:



D锁存器的特性表如下所示,Qn指触发前的状态,Qn+1指触发后的状态。



当CLk为0时,Qn+1=Qn,即保持之前的状态;

当CLK为1时,Qn+1=D,即状态由D来决定;

现在来看一下波形,在以后的设计中的Q实际上是Qn+1,不要搞错了!这里要多说一点,很多书介绍D锁存器时喜欢将C写成CLK,实际上大多时候这个地方不是CLK。



从 D 锁存器的波形图图中我们可以看出,D 是锁存器的输入信号,C 是锁存器的控制信号,Q 是锁存器的输出信号,当控制信号 C 为高电平时,输出信号 Q 将跟随输入信号 D 的变化而变化,大家看虚线内,Q 的波形等于 D 的波形。当控制信号 C 从高电平变为低电平时,输入信号 D 的状态将会决定锁存器将要锁存的状态。大家可以看到,C 由高变低的那两条虚线内,所对应的输入信号 D 为低电平,那么输出信号 Q 也将会锁存低电平。最后面的那两条虚线也同理,D 为高电平,Q 锁存高电平。

7.D触发器
D触发器的分析和D锁存器几乎一致,唯一区别是触发方式是边沿触发。边沿触发器D输入端对于毛刺不敏感,只需要满足 setup/hold,不需要专门加滤波器。D 触发器D 触发端毛刺对它没有影响

D触发器电路图:(第一种和第二种是一样的效果)

(1)电路结构1





(2)电路结构2





8.锁存器触发器优缺点
上面已经说了锁存器的缺点,但只是文字,可能比较难懂。归根结底都是书上喜欢在介绍D锁存器时就写上CLk的字眼。我们再回顾一下锁存器和触发器概念,锁存器是电平触发,触发器是边沿触发,所以很多人看到CLK就不会分析了,殊不知,这里的CLK是看电平高低判别的,不是看边沿的,看边沿就属于D触发器了,数电书上区别如下所示:



              D锁存器



              D触发器

我们再来看看代码层面,他们的区别:





现在再来看一下经典题型:



可以看出,只要一般来说组合逻辑里else、case不全、未写default、else后保持,这些情况大多会生成latch。

同步和异步
1.组合电路、时序电路
(1) 组合逻辑电路:数字电路满足任意时刻的输出仅仅取决于该时刻的输入;

(2) 时序逻辑电路:数字电路任意时刻的输出不仅取决于当前时刻的输入,而且还取决于数字电路原来的状态;

2.同步电路、异步电路
(1) 同步电路:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。所有触发器的状态的变化都与所加的时钟脉冲信号同步。同步电路的时钟之间有固定的因果关系;

(2) 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步,由外部输入的变化直接引起。各时钟之间没有固定的因果关系;

3. 同步复位
判定:always @(posedge clk)

优点:

1).有利于仿真器的仿真;
2).有利于静态时序分析工具的分析;
3).由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺。
缺点:

1).由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会一方面额外增加 FPGA 内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。
2).复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑诸如时钟偏移、组合逻辑路径延时、复位延时等因素(所以复位信号有时需要脉冲展宽,用以保证时钟有效期间有足够的复位宽度)
3).同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。
4.异步复位
判定:always @(posedge clk or negedge rst_n)

优点:

1). ASIC库或FPGA器件的DFF都提供异步复位端口,无需多加的逻辑资源产生;
2).设计相对简单
3).复位信号不依赖于时钟,产生和响应都很方便。
缺点:

1) .属于异步逻辑,复位释放接近时钟有效沿时容易使得触发器的输出进入亚稳态;
2) 可能因为噪声或者毛刺造成虚假复位信号;
3) 静态时序分析困难,静态时序分析一般是针对同步设计,基于时钟周期分析时序;
4) 对于 DFT设计,如果复位信号不是直接来自于 I/O 引脚,在 DFT 扫描和测试时,复位信号必须被禁止,因此需要额外的同步电路。
5.异步复位同步释放
异步复位同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。



6.什么是亚稳态
触发器无法在某一个规定时间段内产生一个确定的状态。

原因:由于触发器的建立时间和保持时间不满足,当触发器进入亚稳态,使得无法预测该单元的输出,这种不稳定是会沿着信号通道的各个触发器级联传播。

消除:两级或多级寄存器同步。理论上亚稳态不能完全消除,只能降低,一般采用两级触发器同步就可以大大降低亚稳态发生的概率,再加多级触发器改善不大。

7.如何消除亚稳态?
(1)双D触发器打拍;
(2)用反应更快的D触发器;
(3)引入同步机制;
(4)改善时钟质量,用边沿变化快速的时钟信号消除;
(5)降低时钟频率
8.为什么两级触发器可以防止亚稳态传播?
假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。

9.如何处理跨时钟域信号?
  单bit:

(1)双D触发器打拍同步;
(2)脉冲展宽处理
  多bit:

(1)格雷码+双D触发器打拍;
(2)DMUX数据使能选通设计;
(3)异步握手协议
(4)异步FIFO或RAM
竞争与冒险
1.毛刺
信号在器件内部通过连线和逻辑单元时有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。

2.竞争与冒险
竞争:门电路两个输入信号同时向相反的逻辑电平跳变的现象。

冒险:由于竞争而在输出端可能产生尖峰脉冲的现象。

3.怎么判断竞争和冒险?
(1)两个输入变量:

①代数法,输出端的逻辑函数某一个变量同时以原变量和反变量的两种形式出现。
②卡诺图法,只要在卡诺图中存在两个相切但不相交的圈。
(2)多个输入变量

①计算机辅助分析
②实验检查
4.怎么消除毛刺(竞争和冒险)?
(1)输出接滤波电容;

(2)组合逻辑输出加寄存器;

(3)组合逻辑中加入冗余项;

(4)引入选通信号;

(5)采用格雷码;

5.时序逻辑电路是否存在竞争和冒险?
时序电路也存在竞争冒险,这是由D触发器端输入信号之间的竞争产生的。为了保证触发器可靠的翻转,输入信号和时钟信号在时间配合上应该满足一定的要求,然而当输入信号和时钟信号同时改变,而且途经不同的路径到达同一触发器时,便产生了竞争,有可能导致触发器误动作,这种现象称为存储电路的竞争冒险现象。时序电路存在以下两种竞争冒险:

1)异步复位中,clk上升沿与rst_n下降沿同时到达。rst_n信号的优先级高于clk信号,这样在rst_n到来时实现的是复位操作。

2)异步复位中,clk上升沿与rst_n上升沿同时到达。当rst_n上升沿达到时,D触发器在理论上完成复位了,但是此时如果clk恰好在rst_n信号释放周围,系统该听谁的?此时在运行电路中,也会出现短暂的竞争-冒险现象,系统不稳定。

6.什么是流水线冒险?
冒险有结构冒险、数据冒险和控制冒险三种。解决通用办法是在流水线中插入流水线气泡直至冒险消除。

结构冒险:由于资源冲突而使硬件无法支持所有可能的指令组合同时执行。例如在单端口存储器执行读写操作过程,假设流水线要求同一时钟周期内要对存储器进行访问两次,这样的话就会产生存储器读写冲突。这种情况可以再增加一个时钟周期,即将流水线停止一个周期(产生一个流水线气泡)。另一种方法就是使用不同的存储器或者多端口存储器,消耗更多的资源。(采用使能信号推迟时钟,使得流出流水线气泡时间)

数据冒险:指令执行需要之前指令的计算结果,而这个结果在流水线中还没有计算出来。解决办法就是使用数据/寄存器转移,进行纵向气泡延迟,从而解决问题。

控制冒险:分支的流水线和其他指令改变程序计数器的值。由于分支所需的数值需要后续的计算流水才可以 产生 ,这是我们需要将流水停止几个周期知道从重新获取下一条数值进行判断,使风险降低到最小速度与面积

速度与面积
1.速度和面积互换原则
所谓速度,是指整个工程稳定运行所能达到的最高时钟频率,他不仅和FPGA内部各个寄存器的建立时间、保持时间以及FPGA与外部接口的各种时序要求有关,而且还和两个紧邻的寄存器间的逻辑延时、走线延时有关。

所谓面积,可通过一个工程运行所消耗的触发器、查找表数量或者等效门数量来衡量。

速度和面积是一对矛盾的统一体。速度的提高往往需要以面积的扩增为代价,而节省面积也往往会造成速度的牺牲。

2.面积换速度(速度优化)
(1) 并行化

(2) 逻辑复刻;

(3) 模块复用;

(4) 乒乓;

(5) 流水线;

(6) 配平寄存器;

3.速度换面积(面积优化)
(1) 串行化;

(2) 资源共享;

(3) 逻辑优化;

(4) 操作符平衡

存储器
1.存储器分类


2.按存储器方式划分存储器和其特点


(1)随机读写存储器(random access memory,随机存取存储器)

SRAM (Static RAM,静态随机存储器)断电数据丢失
.DRAM. (Dynamic RAM,动态随机存取存储器) 断电数据丢失
SDRAM(Synchronous DRAM,同步动态随机存储器) 断电数据丢失
DDR (DDR SDRAM=双倍速率同步动态随机存储器)
(2)只读存储器(Read-Only Memory,只读存储器的总称)

PROM: 可编程只读存储器,只能写一次
EPROM(Erasable Programmable ROM,可重复擦除和写入)
EEPROM (Electrically Erasable Programmable ROM,电可擦可编程只读存储器)
(3)闪存(Flash)

闪存(FLASH)是一种非易失性存储器,即断电数据也不会丢失. 因为闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。

3.SRAM、FLASH、DRAM的区别


4.NAND FLASH 和 NOR FLASH 的区别

————————————————
版权声明:本文为CSDN博主「是刺猬吖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40305597/article/details/121218801
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:36 , Processed in 0.064351 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表