【ShuQiHere】从晶体管到逻辑门:数字电路的构建之旅
【ShuQiHere】
现代计算机和电子设备的基础是逻辑电路(Logic Circuits),它们执行信息处理和运算任务。在这些电路的核心,是晶体管(Transistors) 和 逻辑门(Logic Gates)。通过理解这些组件如何与**布尔逻辑(Boolean Logic)**结合,我们可以揭开计算机如何执行复杂运算的奥秘。本文将深入探讨如何从晶体管构建逻辑门,逻辑门又如何通过布尔运算完成计算任务。💡
1. 克劳德·香农(Claude Shannon)与布尔逻辑的结合 💡
1937年,克劳德·香农(Claude Shannon)在他的硕士论文《继电器和开关电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits)中提出了革命性的想法。他指出,电气开关(Electrical Switches) 可以用来实现布尔逻辑(Boolean Logic)。这个观点开辟了现代数字计算的道路,被认为是现代计算理论的奠基石之一。
电气开关与布尔逻辑的对应关系
- 开关关闭(Switch Closed):表示真值(True),相当于布尔逻辑中的1。
- 开关打开(Switch Open):表示假值(False),相当于布尔逻辑中的0。
香农的贡献在于,他不仅展示了如何将逻辑运算转换为物理电路,还首次将数学和工程结合,使得逻辑运算可以在硬件上执行。这一理论奠定了现代数字电路设计的基础。
2. 从开关到布尔表达式:逻辑电路的第一步 🔄
在香农的理论中,简单的电气开关可以用于执行基本的布尔运算。具体而言,通过使用不同的开关配置,我们可以实现以下常见的布尔操作:
- 与(AND):两个输入都为真,输出才为真。可以通过串联两个开关实现,只有当两个开关都关闭时,电流才能通过,输出为1。
- 或(OR):只要有一个输入为真,输出就为真。可以通过并联两个开关实现,任何一个开关闭合时,电流就可以通过,输出为1。
- 非(NOT):将输入的值取反。如果输入为真(1),输出为假(0);如果输入为假,输出为真。
例子:与(AND)操作的电路实现
假设我们有两个开关 (A) 和 (B),两个开关都需要同时关闭(输入都为1),电流才能通过,输出为1。如果其中任意一个开关是打开的(输入为0),电流就无法通过,输出为0。
通过这种方式,物理电路中的开关可以直接对应布尔逻辑运算。
3. 晶体管(Transistor):现代电路的核心组件 🧩
晶体管(Transistors) 是现代电子电路的基本构件,用于控制电流的流动。它们可以用作开关或放大器。晶体管比早期的真空管(Vacuum Tubes) 更小、更可靠、更便宜,成为了所有现代电子设备的基础。
晶体管的工作原理
- N型晶体管(N-Type Transistor):当栅极电压(VGS)高时,晶体管导通,允许电流通过,代表布尔逻辑中的1;当栅极电压为0时,晶体管阻断电流,代表布尔逻辑中的0。
- P型晶体管(P-Type Transistor):与N型晶体管相反,当栅极电压为0时,晶体管导通;当栅极电压为高时,晶体管阻断电流。
例子:水流类比 💧
可以将晶体管的工作原理类比为控制水流的阀门:
- 当阀门打开时,水流通过,表示布尔值1。
- 当阀门关闭时,水流被阻断,表示布尔值0。
晶体管通过这种方式在电路中控制电流,充当布尔逻辑操作的开关。
4. CMOS晶体管技术(CMOS Transistors)⚡
互补金属氧化物半导体(Complementary Metal-Oxide Semiconductor, CMOS) 是一种常见的晶体管技术,广泛应用于现代集成电路设计中。CMOS使用两种不同类型的晶体管:P型晶体管(P-Type) 和 N型晶体管(N-Type),它们以互补方式工作。
CMOS的优点:
- 低功耗(Low Power Consumption):CMOS电路通过使P型和N型晶体管交替工作,减少了电路的能耗。P型晶体管在高电压下关闭,而N型晶体管在低电压下关闭,这种组合使得CMOS电路非常高效。
- 广泛应用:由于其低功耗和高效的特性,CMOS晶体管被广泛用于计算机处理器、存储设备和其他电子产品中。
5. 从晶体管到逻辑门:构建数字电路的基础 🔧
通过组合晶体管,我们可以构建各种类型的逻辑门(Logic Gates)。每种逻辑门执行一种布尔逻辑运算(Boolean Operation),是所有数字电路的基本构件。
常见的逻辑门:
- NOT门(Inverter Gate):执行非运算(NOT Operation),即将输入值取反。例如,输入为0,输出为1;输入为1,输出为0。
- AND/NAND门:与门(AND Gate) 仅在两个输入都为真时输出为真。NAND门(NAND Gate) 是AND门的反运算,只有当两个输入都为真时输出为假。
- OR/NOR门:或门(OR Gate) 在任一输入为真时输出为真。NOR门(NOR Gate) 是OR门的反运算,仅在所有输入都为假时输出为真。
- XOR门(Exclusive OR Gate):当输入值不同时,输出为真。
例子:NOT门的实现
假设输入电压为0(0V),P型晶体管导通,N型晶体管断开,输出为1(2.9V)。如果输入电压为1(2.9V),P型晶体管断开,N型晶体管导通,输出为0(0V)。
6. 通用逻辑门:NAND 和 NOR 🔄
通用逻辑门(Universal Logic Gates) 是可以通过一种类型的逻辑门实现所有布尔运算的门。NAND门(NAND Gate) 和 NOR门(NOR Gate) 都是通用逻辑门。
为什么 NAND 和 NOR 是通用门?
- NAND门(NAND Gate) 通过适当的组合可以实现与(AND)、或(OR) 和 非(NOT) 运算。这种灵活性使得NAND门在实际电路设计中具有极大的应用价值,成为许多集成电路的核心。
- NOR门(NOR Gate) 同样可以实现所有的布尔运算,特别是通过逻辑反转来构建复杂的电路。
例子:用NAND门实现与门(AND Gate)
通过两个NAND门的组合,可以构建一个与门(AND Gate)。这展示了NAND门作为通用门的强大功能。
7. 总结 💡
通过这篇博客,我们回顾了从晶体管(Transistors) 到逻辑门(Logic Gates) 的整个过程。你学会了如何将布尔逻辑应用于物理电路,并理解了逻辑门如何通过简单的布尔运算来处理复杂的计算任务。
关键要点包括:
-
信息可以用比特(Bits) 表示,并通过布尔逻辑(Boolean Logic) 处理。
-
电气开关(Switches) 和 晶体管(Transistors) 是实现布尔逻辑的基础。
-
CMOS技术(CMOS Technology) 提供了一种高效、低功耗的电路设计方式。
-
逻辑门(Logic Gates) 是构建数字电路的基本单元。通过组合这些逻辑门,我们可以构建更加复杂和功能强大的电路。
-
NAND门 和 NOR门 是通用逻辑门,能够通过组合实现所有的布尔运算。
通过对这些知识点的掌握,你将对现代数字电路的设计有更深的理解。如果你对布尔逻辑或电路设计感兴趣,建议你自己动手尝试设计一些简单的逻辑门电路,亲身体验它们是如何实现复杂逻辑的!🎉
相关文章:
【ShuQiHere】从晶体管到逻辑门:数字电路的构建之旅
【ShuQiHere】 现代计算机和电子设备的基础是逻辑电路(Logic Circuits),它们执行信息处理和运算任务。在这些电路的核心,是晶体管(Transistors) 和 逻辑门(Logic Gates)。通过理解这…...
PDF扫描版文字识别OCR
PDF扫描版文字识别OCR 最近需要有对PDF扫描版进行文字可识别的需求,这里介绍一款工具挺好用的 这是一款开源的OCR工具 github地址 https://github.com/hiroi-sora/Umi-OCR 主要功能及特点 免费:本项目所有代码开源,完全免费。方便&#…...
Synchronized由什么样的缺陷? Java Lock是怎么弥补这些缺陷的?
synchronized 的缺陷 Synchronized 在 Java 中是最基础的线程同步机制,尽管简单易用,但也存在一些缺陷和局限性: 性能开销: synchronized 内部实现的监视器锁可能导致不必要的线程上下文切换和频繁竞争,从而引起性能下…...
联合仿真(FMI,FMU)资料收集
本文地址:https://blog.csdn.net/t163361/article/details/142262888 最近在研究使用Unity导入FMU模块进行仿真的功能。做功能前先尽可能收集下资料。 FMI标准 官方网站 github标准库 FMI标准由Modelica协会主导,具体介绍 FMI目前有三个标准 FMI1:20…...
Android Radio2.0——动态列表回调(七)
上一篇文章我们主要介绍了电台动态列表的获取流程,这里我们主要处理对应的回调流程以及扫描流程。 1)通过 getDynamicProgramList() 方法获取动态列表。 2)按照动态列表的内容,循环调用 scan() 方法执行向上调台,直到列表中的内容搜索完成。 3)根据 RadioManager.Program…...
在conda虚拟环境中安装cv2(试错多次总结)
首先保证你创建好了虚拟环境,并在anaconda命令窗口激活虚拟环境 依次输入下列命令: pip install opencv-python3.4.1.15 pip install opencv-contrib-python3.4.1.15 pip install dlib19.6.1 然后测试cv2是否可以使用,输入python 运行pyth…...
【EI稳定,马来亚大学主办】2024年计算机与信息安全国际会议(WCCIS 2024,9月27-29)
2024年计算机与信息安全国际会议 (WCCIS 2024) 将于2024年9月27-29日召开。 会议旨在为从事计算机与信息安全的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨&…...
免费AI播客生成:notebooklm可以生成播客的两个发言人谈论的内容,从各种来源如研究论文、文章
参考: https://notebooklm.google.com/ 可以上传文章链接,ai自动生成播客两人对话: 另外notebooklm他本身也是个rag知识库对话,可以直接聊天框对话...
“MIME 媒体类型“用来标识网络传输内容的格式标准
MIME 类型(Multipurpose Internet Mail Extensions 类型),也称为媒体类型,是用来标识网络传输内容的格式的标准。这些类型帮助 Web 服务器和浏览器理解如何处理和显示数据。MIME 类型在 Web 开发和网络通信中起着关键作用…...
MySql的基础讲解
一、初识MySql 数据库:按照数据结构来组织、存储和管理数据的仓库;是一个长期存储在计算机内的、有组织的、可共享 的、统一管理的大量数据的集合; OLTP:联机事务处理,主要是对数据库的增删改查。 OLTP 主要用来记录…...
类型转换等 面试真题
题目1 请问哪个结果为NaN A. 123null B. 123‘1’ C. 123/0 D. 123undefined 在这四个表达式中,只有D. 123 undefined 的结果是 NaN,原因如下: A. 123 null 结果是:123原因:null 在数值运算中会被自动转换为 0&a…...
MySQL下载安装
MySQL下载安装 MySQL :: MySQL Community Downloads MySQL :: Download MySQL Installer 安装步骤1 一路向前即可。 我只安装Server,不清楚的建议选择Full 安装步骤2 如果是正式运行的服务器,可以选择Server Computer...
golang实现正向代理http_proxy和https_proxy
package mainimport ("bytes""fmt""io""log""net""net/url""strings" )func main() {// tcp 连接,监听 8080 端口l, err := net.Listen("tcp", ":8080")if err != nil {log.Panic…...
数字IC设计\FPGA 职位经典笔试面试--整理
注: 资料都是基于网上一些博客分享和自己学习整理而成的 1:什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序 逻辑电路的特点:各触发器的时钟端全部连接在一…...
Golang协程泄漏定位和排查
Golang协程泄漏定位和排查 1 场景:无缓冲channel写阻塞2 排查和定位思路2.1 Golang pprof2.2 协程数监控2.3 操作系统内存泄漏 参考 1 场景:无缓冲channel写阻塞 package mainimport ("log""net/http"_ "net/http/pprof"…...
【我的 PWN 学习手札】Unlink Attack
目录 前言 一、Unlink介绍 二、保护和限制 (1)FD->bk P AND BK->fd P (2)chunksize(P) prev_size(next_chunk(P)) (3)largebin chunk 三、适用场景 四、利用与绕过 (1&#…...
算法笔试-编程练习-好题-04
题目:堆盒子 礼盒大小不同,我们玩堆盒子的游戏,怎么堆盒子使得堆出的高度最高,每个礼盒的大小由长、宽、高表示,堆盒子的时候要求下面的盒子长、宽、高都必须大于上面的盒子,不包含等于。高度为堆出的礼盒的所有高度的…...
使用Rustup快速无缝升级Rust
rust update 升级 Rustup 是 Rust 官方的跨平台 Rust 安装工具。我们可以使用rustup升级rust版本 rustup updaterustup is not installed at ‘E:\cargo’ 意思是说’E:\argo’未安装rustup 将原来C:\Users\用户名\.cargo\bin下的文件复制到新的E:\cargo\bin $ rustup upda…...
pytorch qwen2-vl自定义数据全量微调
参考:https://github.com/zhangfaen/finetune-Qwen2-VL/tree/main 测试情况: 2B显存训练也很高,4090卡训练的 下载代码: git clone https://github.com/zhangfaen/finetune-Qwen2-VLtransformers包: 安装特定包,对qwen2vl支持 pip install git+https://github.com/hugg…...
切换淘宝最新npm镜像源是
切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
