数字逻辑电路入门:从晶体管到逻辑门

2024-01-06 11:52

本文主要是介绍数字逻辑电路入门:从晶体管到逻辑门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数字逻辑电路入门:从晶体管到逻辑门

这是数字逻辑电路中最基础的部分。但是并非那么容易理解。

1、晶体管

  1. mosfet:场效应晶体管,是电压控制元件。
  2. cmos:是指由mos管构成的门级电路通常是互补的。
  3. BJT:一种三极管,是电流控制元件,用来放大电流,功耗大于mos管。
  4. nmos:衬底是p型半导体,源极和漏极是n型掺杂区域。适合用来导通低电压,不适合导通高电压。
  5. pmos:和nmos相反,衬底是n型半导体,源极和漏极是p型掺杂区域。适合用来导通高电压,不适合导通低电压。
  6. pmos用在上拉网络,nmos用在下拉网络。

2、逻辑门

互补传导规则:nmos串联,pmos必须并联;nmos并联,pmos必须串联。保证上拉网络和下拉网络不会同时导通,即不出现短路。

  1. 非门:输入a,输出y,消耗2个晶体管
    1. 一个pmos,栅极接a,源极接vcc,漏极接y
    2. 一个nmos,栅极接a,源级接y,漏极接gnd
    3. 分析,a=1,mos的栅极上表面聚集正电荷,下表面聚集负电荷。pmos衬底是n型半导体,本身有自由电子,因此源极和漏极仍然断开。nmos衬底是p型半导体,本身有自由空穴,聚集负电荷之后,源极和漏极接通,因此y=0。
  2. 与门:消耗6个晶体管
    1. 一个与非门
    2. 级联一个非门
  3. 或门:消耗6个晶体管
    1. 一个或非门
    2. 级联一个非门
  4. 或非门:消耗4个晶体管
    1. 两个pmos串联,栅极接a,b,源极接vcc,漏极接y
    2. 两个nmos并联,栅极接a,b,源极接vcc,漏极接y
    3. 分析,a=0,b=0,pmos均导通,nmos均断开,y=1;a、b有一个为1,下拉网络导通,上拉网络断开,y=0
  5. 与非门:消耗4个晶体管
    1. 两个pmos并联,栅极接a,b,源极接vcc,漏极接y
    2. 两个nmos串联,栅极接a,b,源极接vcc,漏极接y
    3. 分析,a=1,b=1,pmos均断开,nmos均导通,y=0;a、b有一个为0,下拉网络断开,上拉网络导通,y=1
  6. 异或门:
    1. 实现方式两种,一个使用10个晶体管,一个使用12个晶体管
    2. 参考:COMS门电路的设计及其优化–以异或门为例
  7. 同或门
  8. 三态门

3、卡诺图化简

以下图为例:

image-20240104222749508
  1. 画出卡诺图,注意格雷码序;
  2. 画圈:
    1. 从大到小画圈,16格、8格、4格、2格、1格;
    2. 每个圈都要圈住1,最终圈住所有1;
    3. 可环绕画圈。
  3. 写出SOP(sum-of-products)
    1. 每个圈代表一个product,读法是“相异相消”;
    2. 将所有product相加;
    3. Y = b+c+a;(按照红、绿、蓝的顺序写的product)
  4. 补充:“相异相消”
    1. 比如 Y = A B + A B ˉ = A ( B + B ˉ ) = A Y = AB+A \bar B = A(B+\bar B) = A Y=AB+ABˉ=A(B+Bˉ)=A
    2. B + B ˉ = 1 B+\bar B =1 B+Bˉ=1恒成立;
    3. 圈中变量相异的,则无需管,相同的如实记录。
    4. 比如红圈,c相异,a相异,b相同且为1,则记录为b。

另一个例子:

image-20240104224105776
  1. 画圈
  2. 读SOP
    1. 红: b ˉ c ˉ \bar b \bar c bˉcˉ
    2. 绿: a ˉ d ˉ \bar a \bar d aˉdˉ
    3. 粉: a c d a cd acd
    4. 蓝: b c d bcd bcd
    5. Y = b ˉ c ˉ + a ˉ d ˉ + a c d + b c d Y= \bar b \bar c+\bar a \bar d+a cd+bcd Y=bˉcˉ+aˉdˉ+acd+bcd

可以想到:

  1. 圈1则是SOP
  2. 圈0则是POS
  3. 因此,谁少圈谁。
  4. 注意,圈0写出POS之后取反,利用布尔代数则得到圈0的POS。

4、复用器

使用逻辑门可以搭建一个复用器

  1. Y = D 0 S ˉ + D 1 S Y=D_0 \bar S + D_1 S Y=D0Sˉ+D1S
  2. 两个与门、一个非门、一个或门
  3. 优化:减少晶体管, Y = D 0 S ˉ + D 1 S = ( D ˉ 0 + S ) ( D 1 S ) ˉ Y = D_0 \bar S + D_1 S = (\bar D_0+S)\bar {(D_1S)} Y=D0Sˉ+D1S=(Dˉ0+S)(D1S)ˉ
  4. 一个与非门、一个与门、一个或门、一个非门

这篇关于数字逻辑电路入门:从晶体管到逻辑门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576270

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (