数字电路week1

数字电路学习

一.电路基础

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.mfbz.cn/a/886831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 动态数据结构的C语言实现内存映像

C程序的内存映像 C程序中变量的内存分配方式  C程序中变量的内存分配方式  从静态存储区分配  全局变量和静态变量 C程序中变量的内存分配方式  从静态存储区分配  全局变量和静态变量  在栈上分配  存放函数参数值&#xff0c;局部变量值等  …

国外电商系统开发-运维系统功能清单开发

一、最终效果图 二、功能清单 功能 描述 自定义日志绘图 根据Nginx、Apache登录日志文件绘图&#xff0c;绘图数据包括&#xff1a;访问量走势&#xff0c;500错误&#xff0c;200正确百分比等 创建服务器 加入服务器 主机状态自动检查 加入主机到系统后&#xff0c;系统…

机器学习:opencv--摄像头OCR

目录 前言 一、三个函数 1.显示图像 2.点排序 3.透视变换 二、代码实例 1.打开摄像头 2.图像预处理 3.检测特定轮廓 4.对轮廓进行处理 5.释放资源 前言 摄像头OCR指的是利用摄像头捕捉图像中的文字信息&#xff0c;并通过光学字符识别&#xff08;OCR&#xff09;技…

深度学习----------------------------编码器、解码器架构

目录 重新考察CNN重新考察RNN编码器-解码器架构总结编码器解码器架构编码器解码器合并编码器和解码器 重新考察CNN 编码器&#xff1a;将输入编码成中间表达形式&#xff08;特征&#xff09; 解码器&#xff1a;将中间表示解码成输出。 重新考察RNN 编码器&#xff1a;将文…

CSS 盒子属性

1. 盒子模型组成 1.1 边框属性 1.1.1 四边分开写 1.1.2 合并线框 1.1.3 边框影响盒子大小 1.2 内边距 注意&#xff1a; 1.3 外边距 1.3.1 嵌套块元素垂直外边距的塌陷 1.4 清除内外边距 1.5 总结

EasyExcel使用介绍

EasyExcel使用 1、EasyExcel介绍 1.1 官网介绍 传统操作Excel大多都是利用Apach POI进行操作的&#xff0c;但是POI框架并不完善&#xff0c;使用过程非常繁琐且有较多的缺陷&#xff1a; 动态操作Excel非常繁琐,对于新手来说&#xff0c;很难在短时间内上手;读写时需要占用…

二叉树深度学习——将二叉搜索树转化为排序的双向链表

1.题目解析 题目来源&#xff1a;LCR 155.将二叉搜索树转化为排序的双向链表 测试用例 2.算法原理 首先题目要求原地进行修改并且要求左指针代表前驱指针&#xff0c;右指针代表后继指针&#xff0c;所以思路就是 1.使用前序遍历创建两个指针cur、prev代表当前节点与前一个节点…

Stable Diffusion绘画 | 来训练属于自己的模型:炼丹参数调整--步数设置与计算

要想训练一个优质的模型&#xff0c;一定要认识和了解模型训练中&#xff0c;参数的作用和意义。 整个模型训练的过程&#xff0c;参数并不是一成不变的&#xff0c;也没有固定的模板&#xff0c; 当我们修改了模型训练里面的某个参数&#xff0c;很可能就需要连带其他一系列…

在LabVIEW中如何读取EXCEL

在LabVIEW中读取Excel文件通常使用“报告生成工具包”&#xff08;Report Generation Toolkit&#xff09;。以下是详细步骤&#xff1a; ​ 安装工具包&#xff1a;确保已安装“报告生成工具包”。这通常随LabVIEW一起提供&#xff0c;但需要单独安装。 创建VI&#xff1a; 打…

java入门基础(一篇搞懂)

​ 如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论&#xff0c;感谢您的支持&#xff01;&#xff01;&#xff01; 首先给大家推荐比特博哥&#xff0c;java入门安装的JDk和IDEA社区版的安装视频 JDK安装与环境变量的配置 IDEA社区的安装与使…

自然语言任务规划的新篇章:AutoGPT+P的突破

人工智能咨询培训老师叶梓 转载标明出处 尽管LLMs在自然语言处理&#xff08;NLP&#xff09;方面取得了显著进展&#xff0c;但它们在直接将自然语言指令转换为执行机器人任务的计划方面仍存在限制。这些限制主要源于LLMs在推理能力上的不足。由德国卡尔斯鲁厄理工学院&#…

Geogebra中级篇003—几何对象之点与向量

本文概述了在GeoGebra中如何使用笛卡尔或极坐标系输入点和向量。用户可以通过指令栏输入数字和角度&#xff0c;使用工具或指令创建点和向量。在笛卡尔坐标系中&#xff0c;示例如“P(1,0)”&#xff1b;在极坐标系中&#xff0c;示例如“P(1;0)”或“v(5;90)”。文章还介绍了点…

Spark SQL分析层优化

导读&#xff1a;本期是《深入浅出Apache Spark》系列分享的第四期分享&#xff0c;第一期分享了Spark core的概念、原理和架构&#xff0c;第二期分享了Spark SQL的概念和原理&#xff0c;第三期则为Spark SQL解析层的原理和优化案例。本次分享内容主要是Spark SQL分析层的原理…

828华为云征文|华为云 Flexus X 实例之家庭娱乐中心搭建

话接上文《828华为云征文&#xff5c;华为云Flexus X实例初体验》&#xff0c;这次我们利用手头的 Flexus X 实例来搭建家庭影音中心和密码管理环境。 前置环境 为了方便小白用户甚至运维人员&#xff0c;我觉得现阶段的宝塔面板 和 1Panel 都是不错的选择。我这里以宝塔为例…

《软件工程概论》作业一:新冠疫情下软件产品设计

课程说明&#xff1a;《软件工程概论》为浙江科技学院2018级软件工程专业在大二下学期开设的必修课。课程使用《软件工程导论&#xff08;第6版&#xff09;》&#xff08;张海藩等编著&#xff0c;清华大学出版社&#xff09;作为教材。以《软件设计文档国家标准GBT8567-2006》…

加密与安全_TOTP 一次性密码生成算法

文章目录 PreTOTP是什么TOTP 算法工作原理TOTP 生成公式TOTP 与 HOTP 的对比Code生成TOTP验证 TOTP使用场景小结 TOTP 与 HOTP 的主要区别TOTP 与 HOTP应用场景比较TOTP 与 HOTP安全性分析 Pre 加密与安全_HTOP 一次性密码生成算法 https://github.com/samdjstevens/java-tot…

基于Springboot vue应急物资供应管理系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

剖解最小栈

最小栈 思路&#xff1a; 1. 首先实例化两个栈&#xff0c;分别是stack用于存放数据&#xff0c;minstack用于存放最小值 2. 将第一个元素压入两个栈中&#xff0c;判断此时若minStack栈中为空&#xff0c;则表示压入的为第一个数据 if ( minStack.empty () ) { minStack.pus…

【GT240X】【04】你必须知道的 50 多个 Linux 命令

文章目录 一、介绍二、五十个linux命令一览表三、50个命令详解四、结论 你必须知道的 50 多个 Linux 命令 一、介绍 你经常使用 Linux 命令&#xff1f;今天&#xff0c;我们将介绍 50 多个你必须知道的 Linux 命令。下面列出的命令是一些最有用和最常用的 Linux 命令&#x…

IDEA 最新版创建 Sping Boot 项目没有 JDK8 选项的解决方案

问题 今天新建一个 Java 项目写 demo 时&#xff0c;发现 Idea 上只能勾选 Java 17、21、23 三个版本 解决方案 IDEA 页面创建 Spring 项目&#xff0c;其实是访问 spring initializr 去创建项目。我们可以通过阿里云国服去间接创建 Spring 项目。服务器 URL 地址替换为 ht…