《数字逻辑设计与计算机组成》一 第2章 2.1 简介

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.1节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第2章

Digital Logic Design and Computer Organization with Computer Architecture for Security
组合电路:小型设计

2.1 简介

第1章中简单介绍了组合电路以及它们在数字系统中的应用。在这一章里,我们将涉及小的组合电路设计方法,但这些方法与设计大的组合电路用到的方法有所不同。而且,当我们手动进行最小化设计时,我们将会限制输入引脚的个数为4个,对于一些输入个数虽然超出了4但不是很大的情况(比如5个或6个),我们也会使用最小化软件进行最小化设计。对比而言,大的组合电路需要有更多的输入引脚,可以使用小的电路模块实现。关于大的组合电路设计的方法将会在第3章进行介绍。
小的组合电路中输入和输出之间的关系由真值表确定,而真值表是由描述的设计问题决定的。例如一个两位无符号数的乘法器,如图2-1中的框图所示,一个两位无符号的数A = a1a0被一个两位无符号的数B = b1b0乘,得到一个4位的无符号数P = p3p2p1p0。在这个图中,大写和小写字母分别用于表示多位的和一位的输入/输出。另外,画线箭头表示了多位的输入输出(图2-1a所示)。而且,多位的输入输出也可以用粗线箭头表示(如图2-1b所示)。
表2-1表示了无符号乘法器的真值表。例如真值表中所示,由A = 3 = (11)2和B = 2 = (10)2得到的结果是P = 6 = (0110)2。每一个p3到p0的输出值都标识了一个由4位输入a1、a0、b1和b0对应的逻辑功能。

image

image
image

真值表包含了使一个输出位(比如p0)为0的所有的输入逻辑情况,也包含了使一个输出位为1的所有的输入逻辑情况。如果一个输出位始终为0或始终为1,那么这个位不表示输入所对应的逻辑功能,应当在真值表中删去。真值表的行数由电路的输入引脚个数决定。如果是3个输入端(每个端口值为0或1),就应当有8种可能的组合方式,或者说在真值表中应当有8行;如果是4个输入端,就应当有16行,如表2-1所示。通常情况下,如果有n个输入端,真值表中应当会有2n行。在硬件上,真值表会有两种实现方式:
整个真值表可以存储在查找表(LUT)中,例如,表2-1可以存储在深度为16条、宽度为4位的存储器中。
一个最小的逻辑电路是由每一个与输入所对应的输出决定的。
查找表的优势在于不需要更多的设计步骤,真值表被原样存储在集成芯片内部的存储器模块中。然而,查找表的缺点却是双重的:
所有的0和1的输出值都要被保存,这样将使用更多的硬件资源。
查找表是典型的慢输出,因为它需要较长的时间去读本身的内容。
相反,一个最小的逻辑电路实现了使输出为1或者说使输出为0的输入逻辑电路。它使用更少的逻辑门、更少的输入门还有更少的连接线路,因此占用更少的硬件资源。
另一方面,存储在LUT中的真值表可以应用于可配置集成电路,例如现场可编程门陈列(FPGA)。FPGA芯片中每一个查找表模块都可以用不同的真值表进行更新,去实现一个不同的组合逻辑。
在这章中的其他部分,我们将涉及如何将一个真值表转换为和它等效的逻辑表达,这种逻辑表达会在NAND或者NOR电路上实现。手工和算法的逻辑最小化技巧、最小化软件的使用、Verilog硬件描述语言电路的描述,以及电路设计中使用的计算机辅助设计(CAD)工具,我们将举例进行讨论。这一章还提出了电路时序和潜在的时序风险。其他的门电路,比如标准门电路和三态缓冲,也都进行了讨论。这里面覆盖了很多应用,包括互连体系结构中用到的模块设计。本章中还包含了一些标准的小的组合电路模块的设计实例。
信号命名标准
回忆一下,一个信号是指电路的输入或输出为1或0。同样,每一个信号名都有一个极性指示符,该极性指示符定义了信号值1或者0在电路中的含义。信号极性定义如下:
高电平有效信号极性——当信号被称为高电平有效时,逻辑1表示活跃、有效或使能状态;逻辑0代表不活跃、无效或禁止状态。通常我们用不带前缀或者后缀符号的信号名称来标识一个高电平有效信号(例如x)。
低电平有效信号极性——当信号被称为低电平有效时,逻辑0表示活跃、有效或使能状态;逻辑1代表不活跃、无效或禁止状态。通常我们用带前缀或者后缀符号的信号名称来标识一个低电平有效信号。例如,_x、x′、/x或者x#都可以用来表示低电平有效信号。
除非另作说明,我们一律采取下划线(_)前缀,例如_x或者_X分别定义了一个低电平信号和多个低电平信号。
?例2-1? 画出一位反相器的框图并在适当的地方标出其输入和输出信号。电路的输入为一位数据和标记为_c的低电平控制信号。当_c为不活跃(无效、禁止)时,电路的输出为与输入相比较没有改变的一位数据;当_c为活跃(有效、使能)时,电路的输出为输入的反相。反相电路没有对输入的数据进行标记说明,方便起见,我们将输入数据和电路输出分别标记为x和y。
解:图2-2为有一位输入x、输出y和低电平控制信号_c的反相电路框图。表2-2为一位反相器的真值表。因为_c为低电平信号,所以当_c = 0(活跃)时,y = ,当_c = 1(不活跃)时,y = x。
image

image

相关文章
|
算法 Linux 开发者
深入探究Linux内核中的内存管理机制
本文旨在对Linux操作系统的内存管理机制进行深入分析,探讨其如何通过高效的内存分配和回收策略来优化系统性能。文章将详细介绍Linux内核中内存管理的关键技术点,包括物理内存与虚拟内存的映射、页面置换算法、以及内存碎片的处理方法等。通过对这些技术点的解析,本文旨在为读者提供一个清晰的Linux内存管理框架,帮助理解其在现代计算环境中的重要性和应用。
|
前端开发 Java 数据库
SpringBoot解析指定Yaml配置文件
最近在看某个开源项目代码并准备参与其中,代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库查询,直接响应给前端,这里简单记录一下实现过程。
790 0
|
10月前
|
人工智能 Java 程序员
一文彻底搞明白电路图和原理图
本文介绍电路图的基本构成、作用及类型,帮助理解电路原理和实际应用。元件符号、连线、节点和注释说明是电路图的核心要素,通过原理图、方框图、装配图和印板图,可以清晰展示电路结构和工作原理。君志所向,一往无前!
5564 0
|
JSON 前端开发 Java
2. 妈呀,Jackson原来是这样写JSON的
底层原理,jackson-core核心模块JsonGenerator流式API高效写JSON
1496 0
2. 妈呀,Jackson原来是这样写JSON的
|
存储
原码,补码的乘法运算
原码,补码的乘法运算
673 0
|
算法 Java Apache
Apache Commons
Apache Commons是一个开源项目,提供了一系列的工具和库,用于简化Java开发中的常见任务。
289 1
Semaphore 使用详解
本文主要对Semaphore 的相关知识点进行了介绍和讲解
336 0
|
XML JSON Java
SpringMVC获取请求中的参数值不同方式总结
SpringMVC获取请求中的参数值不同方式总结
365 0