《数字逻辑设计与计算机组成》一 第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

相关文章
|
算法 数据挖掘 开发者
Hunt' s Algorithm| 学习笔记
快速学习 Hunt' s Algorithm。
Hunt' s Algorithm| 学习笔记
|
存储 JSON Kubernetes
Kubernetes必备知识: Annotations
Annotations(注解) 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。
5996 0
|
4月前
|
缓存 Linux 芯片
X86架构黎明:从0xFFFFFFF0开始的内存空间重构与寻址深潜
按下电源键,现代CPU竟“穿越”回1978年——强制以16位实模式启动,只为兼容古老BIOS。从复位向量0xFFFFFFF0寻址、A20门解锁、GDT构建,到CR0开启保护模式、四级页表启用长模式,它历经多重“降维伪装”与“升维跃迁”,最终在64位虚拟地址中唤醒操作系统。一场精密的硬件时光旅行。(239字)
377 3
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】STA(Super Token Attention) 超级令牌注意力机制 (论文笔记+引入代码)
该专栏探讨YOLO目标检测的创新改进和实战应用,介绍了使用视觉Transformer的新方法。为解决Transformer在浅层处理局部特征时的冗余问题,提出了超级令牌(Super Tokens)和超级令牌注意力(STA)机制,旨在高效建模全局上下文。通过稀疏关联学习和自注意力处理,STA降低了计算复杂度,提升了全局依赖的捕获效率。由此构建的层次化视觉Transformer在ImageNet-1K、COCO检测和ADE20K语义分割任务上展现出优秀性能。此外,文章提供了YOLOv8中实现STA的代码示例。更多详细信息和配置可在相关链接中找到。
|
算法 Linux 开发者
深入探究Linux内核中的内存管理机制
本文旨在对Linux操作系统的内存管理机制进行深入分析,探讨其如何通过高效的内存分配和回收策略来优化系统性能。文章将详细介绍Linux内核中内存管理的关键技术点,包括物理内存与虚拟内存的映射、页面置换算法、以及内存碎片的处理方法等。通过对这些技术点的解析,本文旨在为读者提供一个清晰的Linux内存管理框架,帮助理解其在现代计算环境中的重要性和应用。
|
Arthas 网络协议 Java
java instrument机制分析与实践
1. 原理介绍java instrument是一种字节码增强技术,在jdk1.5开始已引入,其核心功能实现依赖java.lang.instrument.Instrumentation接口,通过实现该接口,我们可以对已加载和未加载的类进行修改。java instrumentation最常用的一种使用方式是通过jvm的启动参数:-javaagent来启动,例如:java -javaagent:myag
2044 0
java instrument机制分析与实践
|
程序员 索引
《操作系统真象还原》——0.9 物理地址、逻辑地址、有效地址、线性地址、虚拟地址的区别
物理地址就是物理内存真正的地址,相当于内存中每个存储单元的门牌号,具有唯一性。不管在什么模式下,不管什么虚拟地址、线性地址,CPU最终都要以物理地址去访问内存,只有物理地址才是内存访问的终点站。
2999 0
|
存储 Linux 算法
《操作系统真象还原》——0.20 BIOS中断、DOS中断、Linux中断的区别
BIOS够底层吧?难道它还要依赖别人?是啊,BIOS也是软件,也要有求于别人。首先硬件厂商为了让自己生产的产品易用,肯定事先写好了一组调用接口,必然是越简单越好,直接给接口函数传一个参数,硬件就能返回一个输出,如果不易用的话,厂商肯定倒闭了。
5480 0
|
监控 关系型数据库 PostgreSQL
PostgreSQL 12: 新增 pg_stat_progress_create_index 视图监控索引创建进度
PostgreSQL 12 版本之前,对PostgreSQL大表创建索引时是一个比较痛苦的过程,创建索引过程中无法得知索引创建进度,PostgreSQL 12 在运维监控功能方面得到增强,新增 pg_stat_progress_create_index 视图可以监控索引的创建进度,本文简单演示。
3038 0