组合逻辑与时序逻辑

组合逻辑电路:任意时刻电路输出的逻辑状态仅仅取决于当时输入的逻辑状态,而与电路过去的工作状态无关。

时序逻辑电路:任意时刻电路输出的逻辑状态不仅取决于当时输入的逻辑状态,而与电路过去的工作状态有关。

在电路的结构上,时序逻辑电路肯定包含有存储电路,而且输出一定与存储电路的状态有关。

COMS与TTL电平

常用逻辑电平:12V,5V,3.3V;TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。

CMOS的高低电平分别为:Vih>=0.7VDD,Vil<=0.3VDD;Voh>=0.9VDD,Vol<=0.1VDD。

TTL的为:Vih>=2.0v,Vil<=0.8v;Voh>=2.4v,Vol<=0.4v。

用CMOS可直接驱动TTL。

TTL加上拉后可驱动CMOS。

时序逻辑电路的三大方程与设计

描述一个时序逻辑电路时,主要由驱动方程、状态方程(由驱动方程代入时序器件的特性方程得到)、输出方程这三大方程进行描述。

详细过程参考《数字电子技术基本教程》P181—gary计数器的设计

在设计时序逻辑电路时可以采用以下流程:

  1. 找出电路的状态转换图或者状态转换表;
  2. 从状态转换图或者状态转换表中画出次态与输出的卡诺图,并进行化简;
  3. 由化简的卡诺图得出状态方程,再由状态方程得出驱动方程和输出方程;
  4. 由驱动方程和输出方程画出电路结构图;
  5. 检查电路能否自启动。

同步逻辑与异步逻辑

同步逻辑:时钟之间有固定的因果关系;

异步逻辑:时钟之间没有固定的因果关系,电路中的触发器的状态不仅仅由时钟决定;

同步电路与异步电路

同步电路:电路中所有触发器的时钟输入端都接至统一的时钟信号(并且同一触发沿触发),并且所有触发器的输出与统一的时钟有效沿下保持同步输出。

异步电路:电路中所有触发器的时钟没有统一的时钟信号,所有触发器的输出不与统一的时钟有效沿下保持同步输出。

同步设计的优点:

  1. 使用同步电路可以避免器件受温度T,电压V,工艺P的影响,避免毛刺/亚稳态,使设计更可靠,单板更稳定;
  2. 逻辑设计不依赖于每个逻辑器件的布线延迟,有利于器件的移植;
  3. 同步电路可以很容易地组织流水线,提高芯片的运行速度,设计容易实现;
  4. 有利于静态时序分析,验证时序的性能;

异步设计的缺点:

  1. 容易产生毛刺/亚稳态;
  2. 异步逻辑时序的正确性依赖于每个逻辑器件的布线延迟,不利于器件的移植;
  3. 不利于静态时序分析,验证时序性能;

同步复位与异步复位

同步复位:复位信号与时钟信号同时有效时进行复位动作;

优点:

  1. 保证100%的同步,综合成同步时序电路;
  2. 同步复位仅在时钟信号有效沿时有效,可以消除毛刺

缺点:

  1. 在FPGA中,同步设计需要采用组合逻辑进行设计,增加逻辑资源;
  2. 需要进行复位信号脉冲展宽,保证复位信号时间足够长,以保证所有触发器都能有效复位;
  3. 必须需要时钟信号才能完成复位,当电路存在门控时钟或使能时钟时,可能出现复位信号有效而时钟信号被禁止;

异步复位:只要复位信号有效就进行复位动作,与时钟信号无关;

优点:

  1. 复位动作与时钟无关;
  2. 在FPGA内部有专用的GSR资源,使复位信号的偏斜最小,无需组合逻辑,节省逻辑资源;

缺点:

  1. 当复位信号撤除时,可能和时钟信号有效沿同时有效,容易造成触发器出现亚稳态;
  2. 异步复位对毛刺敏感,当复位信号出现毛刺时,容易造成虚假复位;
  3. 进行STA分析时比较困难;

建议采用的复位电路:分布式异步复位同步方法,将异步复位同步电路放在每个模块的复位信号输入端。

复位毛刺的消除:采用等价与门,对复位信号和经过延迟的复位信号进行相与操作,完成毛刺的滤除。

竞争与冒险

组合逻辑电路的竞争冒险

竞争与冒险:组合电路中由于信号到某一电路节点的时间不一致或者输入信号的电平往相反的方向变化叫竞争,由于竞争现像导致毛刺的产生称为冒险。

竞争不一定导致冒险:当组合逻辑器件采用的工艺比较好,逻辑器件的速度快,由于竞争导致的毛刺现像很快就被消除掉。

时序逻辑电路的竞争冒险

由于时序逻辑电路主要由两部分组成:组合电路和存储电路,所以时序逻辑电路的竞争冒险也分为两种:一种为组合逻辑电路的竞争冒险引起,其由于竞争冒险产生的输出脉冲噪声不仅影响整个电路的输出,还影响存储电路产生误动作;另一种由存储电路的触发器的输入信号和时钟信号在状态变化时配合不当(不满足建立时间和保持时间)引起,可能引起电路产生误动作。

竞争与冒险的消除

  1. 添加布尔式消去项(卡诺图、公式进行化简);
  2. 输出端添加RC电容滤波;
  3. 使用使能/选通信号;
  4. 采用gary码或者独热码;

亚稳态

亚稳态:触发器无法在某个规定的时间内达到一个确认的状态;

亚稳态的消除:

  1. 单信号时采用两级同步寄存器;
  2. 降低时钟频率;
  3. 用反应更快的触发器;
  4. 用边沿快速变化的时钟信号;

阻塞与非阻塞

参考《Verilog数字系统设计教程》

阻塞

逻辑模式:wire线型,由此在某一个模块中进行赋值操作,需要综合器进行逻辑模式的化简。如b=a;b的值在赋值语句执行完成之后就立刻改变。

赋值时先计算右边部分的值,这时不允许其他的赋值语句的干扰,即其他赋值语句不进行赋值操作(区别于非阻塞的地方),只有完成将右边的值赋到左边,才开始下一条的赋值语句的执行。

非阻塞

逻辑模式:reg寄存器型,由此在某一个模块中进行赋值操作,采用寄存器对赋值进行寄存。

赋值时先计算右边部分的值,这时允许其他的赋值语句的同时进行(区别于非阻塞的地方),所以整个模块的所有赋值语句同时计算右边的值,然后又同时将计算出的值赋到左边。

所以在某一模块中,上面语句所赋的值不能立刻就为下面的语句所使用。模块结束后,才完成赋值操作,所赋的值是上一次赋值所得到的。

阻塞与非阻塞的区别

常用编码

Gray码

Gray码:任何两个相邻的代码只有一位的状态不同。

优点:

  1. 任何两个相邻的代码只有一位的状态不同,可以减少竞争冒险的发生;
  2. 翻转次数减少,速度快,可以降低功耗;

缺点:

(1)占用较多的组合逻辑;

独热码

独热码:有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。

优点:one-hot 编码的最大优势在于状态比较时仅仅需要比较一个bit,一定程度上从而简化了比较逻辑,减少了毛刺产生的概率。

缺点:占用较多的触发器(可以利用FPGA内部触发器资源丰富的特点);

二进制码

二进制码:采用二进制格式进行编码的码。

优点:

(1)采用组合逻辑进行设计,节省触发器资源;

缺点:

  1. 容易造成竞争冒险的发生;
  2. 占用组合逻辑,延迟大,速度慢;

Johnson码

Johnson counter也叫扭环计数器,是把n位移位寄存器的串行(高位bit)输出取反,反馈到串行的输入端(低位bit),构成具有2n种状态的计数器,相邻位只有1bit的不同,可以用于实现跨时域的编码操作,避免亚稳态的问题,速度快,缺点就是占用触发器。

000à001à011à111à110à100à000à……..

Moore型状态机和mealy型状态机

状态机一般分为三种类型:

  • Moore型状态机:下一状态/输出只由当前状态决定,即次态=f(现状),输出=f(现状);
  • Mealy型状态机:下一状态/输出不但与当前状态有关,还与当前输入值有关,即次态=f(现状,输入),输出=f(现状,输入);
  • 混合型状态机

Moore型状态机的输出信号是直接由当前状态寄存器译码得到,相比mealy要多等一个时钟周期,而Mealy型状态机则是以现时的输入信号结合即将变成次态的现态,编码成输出信号。

锁存器、触发器、寄存器

锁存器:电平敏感器件,电平触发,组合逻辑器件;

触发器:边沿敏感器件,边沿触发,时序逻辑器件;

寄存器:存储二值信息代码,无论使用电平触发的触发器还是使用边沿触发的触发器都可以组成寄存器。

可编程逻辑器件类型

PLA(可编程逻辑阵列)、

PAL(可编程阵列逻辑)、

GAL(通用逻辑阵列)、

CPLD(复杂可编程逻辑器件)、

FPGA(现场可编程逻辑器件);

PLD与ASIC

PLD优点:配置灵活,集成度高可满足一般的数字系统设计,开发周期短,设计成本低;

缺点:相比ASIC体积大,功耗高,成本高;

ASIC优点:批量生产时相比PLD成本低,功耗低,可靠性高,性能高,成本低;

缺点:功能固定,后期无法修改,灵活性差,开发周期长,设计成本高;

SoC

片上系统,将微处理器、模拟IP核、数字IP核和存储器集成在单一芯片上。

关键技术:总线架构技术、IP核可复用技术、软硬件协同设计技术,SoC验证技术、可测性技术、低功耗技术等。

存储器

SRAM,FALSH, MEMORY,DRAM,SSRAM及SDRAM的区别?

SRAM:静态随机存储器,存取速度快,但容量小,掉电后数据会丢失,不像DRAM 需要不停的REFRESH,制造成本较高,集成度低,通常用来作为快取(CACHE) 记忆体使用。

FLASH:闪存,存取速度慢,容量大,掉电后数据不会丢失。

NAND FLASH用于数据存储,广泛用于多媒体移动设备;

NOR FLASH用于程序存储。

DRAM:动态随机存储器,必须不断的重新的加强(REFRESHED) 电位差量,否则电位差将降低至无法有足够的能量表现每一个记忆单位处于何种状态。价格比SRAM便宜,但访问速度较慢,耗电量较大,常用作计算机的内存使用,集成度高。

SSRAM:即同步静态随机存取存储器。对于SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。

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

数字IC设计流程

1、算法设计。设计和优化芯片钟所使用的算法。这一阶段一般使用高级编程语言(如C/C++),利用算法级建模和仿真工具(如MATLAB,SPW)进行浮点和定点的仿真,进而对算法进行评估和优化。

3、RTL设计(代码输入)。使用HDL语言完成对设计实体的RTL级描述。这一阶段使用VHDL和Verilog HDL语言的输入工具编写代码。

5、综合。从RTL代码生成描述实际电路的门级网表文件。

7、布局布线。后端设计对综合产生的门级网表进行布局规划(Floorplanning)、布局(Placement)、布线(Routing),生成生产用的版图。

9、版图后验证。根据后端设计后取得的新的延时信息,再次验证设计是否能够实现所有的功能和性能指标。

11、 芯片测试。对制造好的芯片进行测试,检测生产中产生的缺陷和问题。

FPGA笔试必会知识点1--数字电路基本知识的更多相关文章

  1. FPGA笔试必会知识点2—FPGA器件

    FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...

  2. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  3. java数据库学习路线和必学知识点!

    java数据库必学知识点! 分享一下数据库的学习路线和必学的知识点! 掌握mysql,Oracle在各个平台上的安装及使用 Mysql数据库基础 mysql概述.优点.运行原理及内存结构 mysql数 ...

  4. FPGA入门到精通系列1:数字电路基础知识

      本文主要介绍数字电路基础知识,用最简洁的内容介绍最核心的知识. 1.数字电路是什么? 数字电路是利用电源电压的高电平和低电平分别表示1和0,进而实现信息的表达.模拟信号:随时间连续变化的信号.处理 ...

  5. 数字电路基础知识——组合逻辑电路(数据选择器MUX、多路复用器)

    转自:https://blog.csdn.net/vivid117/article/details/100747939 数字电路基础知识--组合逻辑电路(数据选择器MUX.也即多路复用器)本次介绍数据 ...

  6. MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则

    做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟 ...

  7. linux驱动工程面试必问知识点

    linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化, ...

  8. C++及数据结构笔试面试常见知识点总结

    一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能 ...

  9. 大疆2019校招FPGA笔试总结

    1.对于同步fifo,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,fifo的深度至少为? 写时钟频率 w_clk, 读时钟频率 r_clk, 写时钟周期里,每B个时钟周 ...

随机推荐

  1. JS写法 数值与字符串的相互转换 取字符中的一部分显示 正则表达规则

    http://www.imooc.com/article/15885 正则表达规则 <script type="text/javascript"> </scrip ...

  2. 高性能mysql的事物隔离级别

    数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且,在事务的并发操作中可能 ...

  3. 学习笔记CB003:分块、标记、关系抽取、文法特征结构

    分块,根据句子的词和词性,按照规则组织合分块,分块代表实体.常见实体,组织.人员.地点.日期.时间.名词短语分块(NP-chunking),通过词性标记.规则识别,通过机器学习方法识别.介词短语(PP ...

  4. go 的数据类型

    bool string int int8 int16 int32(rune) int64 uint uint8(byte) uint16 uint32 uint64 uintptr:无符号整型,用于存 ...

  5. 关闭防火墙,selinux,交互式设置IP的脚本

    脚本内容: #!/bin/bash # ens=$(cat /proc/net/dev | awk '{if($2>0 && NR > 2) print substr($1 ...

  6. 1、编写一个简单Makefile模板

    一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...

  7. ubuntu诸软件安装

    1060显卡驱动安装: sudo apt-get install nvidia-384 ss qt安装:sudo add-apt-repository ppa:hzwhuang/ss-qt5sudo ...

  8. MD5 Hashing in Java

    参考: MD5 Hashing in Java

  9. iptables禁止某个mac地址上网

    iptables -I FORWARD  -m mac --mac-source  60:14:B3:7D:6B:39 -j DROP 上面这条命令测试过是可行,禁止这个mac地址上网,马上禁止马上生 ...

  10. ES6 实战项目构建 ES6+glup+express

    ES6推出已经有几个年头了,平时也有学过一些基本语法,无奈实践经验太少.而且前端早已脱离了刀耕火种的时代,一些自动化构建工具像gulp.webpack等也需要熟练掌握.最近刚签了三方,闲暇之余就找了个 ...