Nand2Tetris 学习笔记1

本文介绍了逻辑门的基本概念,包括AND、OR、NOT操作,布尔函数的定义和特性,以及德摩根律的应用。重点讲解了如何用NAND表示复杂状态,并阐述了HDL在逻辑门电路设计中的角色,最后提到了Mux和DMux在通信中的复用功能及其优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑门

布尔函数和真值表

布尔操作

最基本的布尔操作:与(AND)、或(OR)、非(NOT)

  • 与(AND)输入都为真时输出真,否则输出假
  • 或(OR)输入有一个为真时输出真,否则输出假
  • 非(NOT)将输入取反

image-20231001122628846

布尔函数

我们把形如 f(x,y) = x AND (x OR (NOT(y))) 的一系列的布尔操作,叫做布尔函数。

特性:

交换律、结合律、分配律

image-20231001123632718

德摩根律

  • NOT(x AND y) = NOT(x) OR NOT(y)
  • NOT(x OR y) = NOT(x) AND NOT(y)

真值表

列出所有输入所有可能操作和与这些操作对应的结果

将真值表转化为布尔函数

image-20231001125051106

  1. 我们只关注所有值为1的行,为每一行写一个只在当前行的输入下值为1的表达式

    NOT(x) AND NOT(y) AND NOT(z)

    NOT(x) AND y AND NOT(z)

    x AND NOT(y) AND NOT(z)

  2. 将所有表达式用 OR 连接

  3. 化简

    (NOT(x) AND NOT(y) AND NOT(z)) OR (NOT(x) AND y AND NOT(z)) OR (x AND NOT(y) AND NOT(z))

    = (NOT(x) AND NOT(z)) AND (y OR NOT(y)) OR (x AND NOT(y) AND NOT(z))

    = (NOT(x) AND NOT(z)) OR (x AND NOT(y) AND NOT(z))

    = (NOT(x) AND NOT(z)) OR (NOT(y) AND NOT(z))

    = NOT(z) AND (NOT(x) OR NOT(y))

由此可见任何复杂的状态最后都可以用 AND、OR、NOT 来表示

NAND(基本逻辑门)

我们已经知道任何复杂的状态最后都可以用 AND、OR、NOT 来表示,并且根据德摩根定律我们知道 AND 和 OR 可以相互转化,那么我们是否可以将任何复杂的状态只用一种操作来表示?

答案是可以的,它就是 NAND,因此它被叫做基本逻辑门

image-20231001133644035

证明的关键是是用 NAND 实现 AND 和 NOT:

  1. NOT(x) = (x NAND x)
  2. x AND y = NOT(x NAND y)
  3. x OR y = NOT(x) NAND NOT(y)

逻辑门电路实现

我们把这一张需要实现的逻辑门分为三大类

image-20231001190928784

HDL

HDL(Hardware Description Language)即硬件描述语言

在定义一个门时我们必须指定输入(IN)、输出(OUT)、输出规则(PARTS)三个部分,并且 CHIP 后面指定门的名字,在 PARTS 中我们可以使用 And、Or、Not 三种基本操作

image-20231001141237719

HDL 并不会运行,它只是一个门信息的静态描述

几个重要的逻辑门

Mux 和 DMux
  • Mux 通 sel 在两个输入中选择一个输出
  • DMux 通 sel 把输入中选择性的输出到两个输出之一

下面是他们在通信时的一种用法:复用一根线路完成两个线路的传输

image-20231001191650999

它的优点是,它可以异步完成而不需要 CPU 的干预

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值