数字电路week1

news/2024/10/4 4:18:06 标签: 学习

数字电路学习

一.电路基础

1.数字电路仿真软件-digital

digital官网:https://github.com/hneemann/Digital?tab=readme-ov-file
建议使用红绿色盲模式

2.异或门

输入1输入2输出
000
011
101
110

简单来说就是判断两个输入是否相同
异或门的组成:
请添加图片描述

异或门也有对应的异或非门

二.拓展电路

1.半加器和全加器

半加器:
对于一位二进制的加法运算,应该输入两个数,输出两个数,一个表示进位,一个表示和
得出真值表:

输入A输入B进位
0000
0101
1001
1110

所以A、B和进位的关系是与,和和的关系是异或
数字电路实现:
请添加图片描述

叫半加器是因为没有实现进位到和的转化

全加器的实现:
请添加图片描述

cin表示上一位有没有进位,Cout表示进位,S表示和
全加器也是一位加法器

2.加法器

4位加法器的实现:
请添加图片描述

3.一位减法器

真值表:

输入A输入B借位
0000
0111
1010
1100

根据真值表,得出半减器:
请添加图片描述

一位减法器:
请添加图片描述

4.减法器

4位减法器:
请添加图片描述

5.SR锁存器

与非门构成的1位锁存器:
=请添加图片描述

S位set位,R是重置位
锁存器的初始状态应为S、R都为1
置位:S输入0,Q会变为1,此时S端变不变Q都为1
复位:R输入0,Q会变为0,此时S端变不变Q都为0
S、R都为0时,该电路失效

或非门构成的1位锁存器:
请添加图片描述

区别是低电平是初始状态

6.带en开关的SR锁存器

为了解决电路可能会失效的情况,用一个额外的使能开关en(enable)使这个电路不会失效
改进后的电路:
=请添加图片描述

这个电路中,只要en不输入1,锁存器的输入端就都是1
但是这个电路中,S、R、en不能同时为1

7.带en开关的D锁存器

D锁存器:
请添加图片描述

为了解决S、R、en不能同时为1的问题,于是将S、R合并,并加入一个非门,使S、R不会同时为1

8.D触发器

电位从0到1的变化是有时间的,所以D锁存器的数据记录不精确
我们可以记录电位的上升和下降,这样精确度会提高
请添加图片描述

en为0、1时,D变化不会造成影响
只有en从0变为1时,D的数据才会被存到Q里:D为1则Q为1、D为0则Q为0

9.多位寄存器

4位寄存器:
请添加图片描述

10.带寄存器的加法器

图片消失了

每次按下C按钮,B中的数字都会加到A中,这样就能实现多个数字相加

三.计算机原理

1.冯诺依曼模型的计算机

冯诺依曼模型的四个子系统:

  1. 存储器
  2. 算数逻辑单元(ALU)
  3. 控制单元
  4. 输入/输出单元

2.CPU介绍

CPU中的算数逻辑单元:

  1. 算数运算:整数和浮点数运算
  2. 位移运算:逻辑移位运算和算数移位运算
  3. 逻辑运算:

CPU中的寄存器:

  1. 数据存储寄存器
  2. 指令寄存器
  3. 程序计数器

3.内存介绍

内存是存储单元的集合,每个存储单元都有唯一的标识,称为地址
内存分RAM和ROM。RAM就是内存,叫随机存取存储器;ROM叫只读存储器,常用来存储开机程序,在现代可以理解为硬盘
CPU与主存储器之间由称为总线的三组线路进行连接,分别是:数据总线、地址总线、控制总线

4.输入输出系统介绍

(1)分存储设备:键盘、鼠标
(2)存储设备:有磁介质和光介质两种,如CD

5.程序的执行

机器周期:CPU利用重复的机器周期来执行程序中的指令
一个周期分三步:取指令、译码、执行

不同的指令体系结构:
CISC:复杂指令集计算机
RISC:精简指令集计算机

四.构建alu

1.1位复用器的实现电路

1位复用器:1则开关闭合,0则开关打开,继电器是其中一种
电路:
请添加图片描述

2.多位复用器实现计算功能选择

用1位复用器实现2位复用器:
请添加图片描述

实现加减与或的算法选择:
请添加图片描述

3.比较器

ZF(Zero Flag):表示两个数字是否相等
下面这个电路就可以直接得出,ZF:

请添加图片描述

实际上就是一个异或非门
真正的比较器会有三个输出,分别是大于等于小于,所以这是一个1位比较器的简化版
2位比较器的简化版:
请添加图片描述
加上比较器的alu:
请添加图片描述

4.最初的计算单元

实现多个数字的加减与或运算的计算单元:
请添加图片描述

五.构建简易内存

1.使用38译码表示地址值

38指的是用3位数字表示8个值
38译码器的电路:
请添加图片描述

将38译码器和寄存器相连:
请添加图片描述

2.地址对应数据存储的简单实现

简易实现:
请添加图片描述

Din是输入的数据,Addr是指定的地址

3.EEPROM的简单电路实现

有独立端口的EEPROM:
请添加图片描述

str控制数据的写入,驱动器的作用是控制输出,若ld为0,则输出是高阻态,即Z,若ld为1,则输出等于输入
这种电路更接近于寄存器,现实中的内存不会是这种结构,而会更加复杂

六.组合CPU

1.EEPROM+计算单元

tips:EEPROM可以预编译数据
请添加图片描述

缺陷:需要在Addr中输入要查询的地址才能进行计算,如果要让三个数字相加,需要依次输入1、2、3

2.计数器

请添加图片描述

ovf表示有无溢出
加上计数器的EEPROM+计算单元:
请添加图片描述

3.halt信号

作用:使计算停止
由于时钟信号一般频率很高,halt信号不能手操,可以用比较器控制计算的次数
请添加图片描述

缺陷:只能一直加或一直减之类的

4.完整的自动化的计算单元

可以用第二个EEPROM来记录加减与或:
请添加图片描述

5.编写控制指令halt信号

对于优化halt信号,可以把它放到存运算符的EPPROM中:
请添加图片描述

在第15位为0时停止计算

6.存储计算结果

请添加图片描述

将记录计算符的EEPROM中每行数字的第11位编写为输送给数据内存的EEPROM的str
在计算完之后str变为1,Din中的数据便会存储到数据内存中的下一位

7.解决高阻态

因为str < halt,ld开启时,原本应只存储的数据也会被用于计算
为了解决这个问题,可以在第12位记录ld信号,存储后ld会变为0,阻止计算
但是,当ld为0时,输出D为高阻态,这时计算器的输入B是不确定的,会变成一个奇怪的数字
所以,可以加一个复用器,进行数据筛选
请添加图片描述

在第4、5位记录selB,当selB为1时使复用器输出0

8.selA实现多次计算

ldA为读取指令,实际上每次计算的第一个数字是ldA指令,即读取数字然后+0
计算结束后,计算结果需要清零,所以可以引入selA信号
请添加图片描述

将第2、3位分配给selA,当selA为1时使复用器输出0

9.修改计数器实现跳转

请添加图片描述

平时en_pc为1,计数器正常运行
需要时ld_pc为1,en_pc为0,计数器会变为addr中的值


http://www.niftyadmin.cn/n/5689388.html

相关文章

下载配置Android Studio(2024年9月)

安装JAVA JDK 下载安装包 Java网站官网 Java Downloads | Oracle 我下载的是JDK Development Kit 17.0.12 downloads Windows x64 MSI Installer。 下载后打开文件&#xff0c;一路NEXT闭眼安装。 配置环境变量 设置-系统-系统高级设置-环境变量 1.新建一个系统环境变量&…

Soar项目中添加一条新的SQL审核规则示例

soar是一个开源的SQL规则审核工具&#xff0c;是一个go语言项目&#xff0c;可以直接编译构建成一个可执行程序&#xff0c;而且是一个命令行工具&#xff0c;我们可以利用archey来调用soar进行sql规则审核以及sql的分析&#xff0c;包括执行计划的查看及sql建议等。 soar中已…

Python笔记 - 函数、方法和类装饰器

前言 装饰器最早出现是Python2.4版本&#xff0c;为什么这个版本开始存在&#xff1f;这是因为最早标记类方法的做法是&#xff1a; def foo(self):perform method operation foo classmethod(foo)当方法体过长的时候很容易让人忽略掉最后的语句classmethod(foo)&#xff0c…

yolov10+strongsort的目标跟踪实现

此次yolov10deepsort不论是准确率还是稳定性&#xff0c;再次超越了之前的yolodeepsort系列。 yolov10介绍——实时端到端物体检测 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上&#xff0c;引入了一种新的实时目标检测…

[Cocoa]_[初级]_[绘制文本如何设置断行效果]

场景 在开发Cocoa程序时&#xff0c;表格NSTableView是经常使用的控件。其基于View Base的视图单元格模式就是使用NSCell或其子类来控制每个单元格的呈现。当一个单元格里的文字过多时&#xff0c;需要截断超出宽度的文字&#xff0c;怎么实现&#xff1f; 说明 Cocoa下的文本…

我尝试了LangGraph Studio的AI Agent功能

构建一个真正“智能”的Agent——一个能够理解语言、做出决策并进行有意义互动的Agent——并不像编写几行代码那么简单。 它需要对AI原理和软件工程有深刻的理解。 此外&#xff0c;传统的软件工具并不适合Agent的开发&#xff0c;无法满足其独特需求。 这也是像LangGraph S…

数据结构(栈和队列的实现)

1. 栈&#xff08;Stack&#xff09; 1.1 栈的概念与结构 栈是一种特殊的线性表&#xff0c;其只允许固定的一段插入和删除操作&#xff1b;进行数据插入和删除的一段叫做栈顶&#xff0c;另一端叫栈底&#xff1b;栈中的元素符合后进先出LIFO&#xff08;Last In First Out&…

JVM Class类文件结构

国庆节快乐 2024年10月2日17:49:22 目录 前言 magic 数 文件版本 使用JClassLib观察class文件 一般信息 接口 常量池 字段 方法 常量池计数器 常量池 类型 CONSTANT_Methodref_info CONSTANT_Class_info 类型结构总表 访问标志 类索引, …