首页/新闻资讯/正文详情

计算机如何自动读取存储器并累加?

发布时间:2026/9/25 2:37:03 来源:云帆数科 栏目:资讯中心
计算机如何自动读取存储器并累加?
书接上文计算机如何储存数据八、使用计数器替代手动设置地址上面我们制作了RAM在累加前先把所有数字存储到RAM中这样一旦要修改数字那么将非常容易。但是累加时依然要反复手动设置地址这还是挺麻烦的因为地址是连续的如果能使用计数器来设置地址那么将节省大量工夫。那么如何制作计数器先看下面的电路边沿触发的D触发器把Q反与D连接起来。我们来看看上面这个电路的状态变化过程1、电路启动时的状态假设Clk为0Q为0则Q反为1D为1。2、当Clk变为1的瞬间Q变成D为1Q反变成0。3、但是因为Q反变成0所以D也迅速变成0。所以到目前为止的变化过程如下4、当Clk变成0输出不会变化。5、当Clk又变成1的瞬间因为D是0所以Q变成0Q反变成1。6、因为Q反变成1所以D又迅速变成1。变化过程如下以上现象可以总结为每当Clk从0变成1时Q都会变化要么从0变成1要么从1变成0。也就是Clk每从0到1变化两次Q才从0到1变化一次。就像下图所示Q的变化频率是Clk的变化频率的一半正因为这一点这种电路叫做分频器。一个分频器的输出可以作为另一个分频器的Clk输入再一次分频。下面是3个分频器相连Clk反、Q1、Q2、Q3的变化规律如下标上数字之后你可能会发现一些有趣的东西把上图顺时针旋转90度然后读读每行的四个数字你会发现它们是递增的二进制数。这就是一个计数器连接的分频器越多计数范围就越大。这种计数器叫做“行波计数器”因为是变化是一级一级顺序传递的最后一级触发器的变化必定会有一些延迟。更先进的计数器叫做“并行计数器”这种计数器的所有输出都是在同一时刻改变的。为了方便把计数器符号化有了计数器就可以改进电路因为我们只在累加时才用到计数器往RAM中存储数字的时候并不使用计数器所以要添加一套选择器区分两种情况。累加前先把选择器的c置为0把所有数字存储到RAM中。累加时把选择器的c置为1。下面是累加时的工作流程初始状态是把计数器和五位锁存器清零Clk为0。RAM地址为000。五位加法器的A是RAM地址为000的数字B是00000Sum是计算结果。把Clk设置为1再置为0则同时发生两件事1、五位锁存器保存Sum。2、计数器加1也就是RAM地址加1变成001。接着五位加法器的A变成RAM地址为001的数字B是之前的计算结果Sum是新的计算结果。然后Clk第二次设置为1再置为0还是同时发生两件事1、五位锁存器保存新Sum。2、计数器加1也就是RAM地址加1变成002。如此反复。直到把所有数字累加起来。九、如何自动化使用计数器设置地址已经省了不少工夫但是手动改变计数器的Clk毕竟是手动操作还是有点麻烦难道不能让它自动计数吗当然能。想要让计数器自动计数就要用到振荡器。振荡器的电路如下乍看这个电路好像是矛盾的但是不矛盾。因为电信号从输入到输出是需要一段时间的即使这段时间极短那也是一段时间所以即使输出与输入相同输出也很快变成相反的电信号然后输出再次作为输入如此反复。这种电路叫做振荡器oscillator。它与我们之前讲过的所有电路有本质的区别之前电路输出的改变必须依靠人为干预通常是以手动改变输入实现的。只要不改变输入输出就绝对不会改变。但是振荡器却可以在无人为干预的情况下自动地改变输入从而改变输出。下面的图展示了振荡器的输出随着时间的推移振荡器的输出在0和1之间有规律的变化。正因为这一点振荡器又称为时钟clock。振荡器从一个初始状态开始经过一段时间之后又回到初始状态这段时间称为一个循环或者叫周期。周期的倒数叫频率假设振荡器的周期是0.05s那么频率就是1/0.0520Hz。也就是1秒循环20次。有了振荡器就可以改进电路累加前先把选择器的c置为0把所有数字存储到RAM中。累加时把选择器的c置为1。下面是累加时的工作流程初始状态是把计数器和五位锁存器清零Clk为0。RAM地址为000。五位加法器的A是RAM地址为000的数字B是00000Sum是计算结果。振荡器会自动把Clk设置为1再置为0则同时发生两件事1、五位锁存器保存Sum。2、计数器加1也就是RAM地址加1变成001。接着五位加法器的A变成RAM地址为001的数字B是之前的计算结果Sum是新的计算结果。然后振荡器把Clk第二次设置为1再置为0还是同时发生两件事1、五位锁存器保存新Sum。2、计数器加1也就是RAM地址加1变成002。如此反复。直到把所有数字累加起来。计数器的变化是由振荡器自动控制的不用手动设置。但是这个电路存在一个问题会一直循环工作无法停止。当计数器达到111之后会重新回到000累加器又把所有数字加一遍。如何确定时钟周期其实还有一个问题一直没讲那就是时钟周期应该是多长的问题。你可能以为周期越短越好这样每秒的计算次数就越多也就是计算速度越快。然而并不是这样。因为每次修改计算机的输入后得出正确输出都是需要时间的这段时间叫传播时延propagation delay。所以时钟周期不能太短。时钟周期应该大于等于每次输入改变后的最大传播时延。如果不等计算出正确输出就改变输入做下一次计算那就乱套了。举一个例子。假设有1个100米的环形跑道起跑线也是终点线然后有5个人在这个跑道上连续比赛100米。第1次比赛5个人都从起跑线起跑。然后第一个人先到终点线了但是他还不能开始第2次比赛因为他还要等其他四个人都到达。如果他不等待那这场比赛就乱套了。在前面我们已经知道了CPU是通过很多的门电路来工作的而电流从门电路的输入到输出是需要时间的这段时间就是所说的传播时延。比如下面一个逻辑电路当AB1时Q0。当B变化为0时由于B也作为XOR的直接输入所以XOR异或门会立即感知一个输入变为0的状态变化XOR输出变为了1。但是由于传播时延的作用AND与门的输出会过一小段时间才变为0XOR的输出会在变为1后隔一小段时间后变为0。表现为下图就是这样所以确定时钟周期时要考虑传播时延时钟周期应当大于所有逻辑门的最大传播时延。

相关推荐

SpringBoot高校师生双选系统设计与实现
SpringBoot高校师生双选系统设计与实现

1. 项目背景与核心价值高校师生互选双选系统是本科毕业设计中极具实用价值的选题方向。我在指导计算机专业学生选题时,发现这类系统能同时满足教学管理实际需求和技术实践要求。传统的人工互选流程存在信息不对称、效率低下、统计困难等问题,而基于Sprin… · 2026/9/25 2:37:03

Darts 官方示例 Notebook 全导航:从时间序列预测到异常检测的 30+ 实战教程
Darts 官方示例 Notebook 全导航:从时间序列预测到异常检测的 30+ 实战教程

机器学习深度学习数据分析数据科学 【免费下载链接】darts A python library for user-friendly forecasting and anomaly detection on time series. 项目地址: https://gitcode.com/gh_mirrors/da/darts 点击查看 免费下载 Darts(Time Series Made Ea… · 2026/9/25 2:36:57

Dillinger mobile-developer 代理定义:跨平台移动开发的工作流、反模式清单与构建验证协议
Dillinger mobile-developer 代理定义:跨平台移动开发的工作流、反模式清单与构建验证协议

前端开发工具 【免费下载链接】dillinger The last Markdown editor, ever. 项目地址: https://gitcode.com/gh_mirrors/di/dillinger 点击查看 免费下载 Dillinger 仓库的 .agent/ 目录内置了一套名为 Antigravity Kit 的 AI 代理能力扩展体系,其中 mo… · 2026/9/25 2:36:57

管道内检测缺陷数据库管理系统:从数据模型到趋势分析
管道内检测缺陷数据库管理系统:从数据模型到趋势分析

简介:一套面向计算机相关专业学生与开发者的管道内检测缺陷数据库管理系统完整源码,基于C#与WPF实现,采用MVVM分层结构,可对管道内检测缺陷数据进行录入、查询与管理,并提供可视化操作界面,适合毕业设计、课… · 2026/9/25 3:58:42

买二赠一促销怎么算账?从毛利测算到收银执行的全流程复盘
买二赠一促销怎么算账?从毛利测算到收银执行的全流程复盘

2024年3月25日,我们门店做了一场“买二赠一”的活动,当天销售数据出来之后,后台群里安静了几秒,然后运营同事发了一句“连带率干到4.8了”。说实话,做零售这么多年,促销活动我见得多,但“买二赠… · 2026/9/25 3:58:42

OpenClaw 深度指南:用 TaoToken 统一 Key 重塑 2026 年的个人 AI 操作系统
OpenClaw 深度指南:用 TaoToken 统一 Key 重塑 2026 年的个人 AI 操作系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:58:42

JSON数组元素可以不同类型吗?规范允许但实战需谨慎
JSON数组元素可以不同类型吗?规范允许但实战需谨慎

我经常在技术群里看到同一个问题:JSON 数组里的元素是不是必须类型一样?每次都要解释半天。这里直接给结论:按 JSON 规范,数组元素可以完全不同类型。["hello", 42, true, null, {"name": "xiaoyu"… · 2026/9/25 3:58:42

C语言练手项目:手写Linux终端动态进度条,搞懂缓冲区与回车换行
C语言练手项目:手写Linux终端动态进度条,搞懂缓冲区与回车换行

经常有刚入坑 Linux 的朋友跑来问我:C 语言基础语法学完了,vim 也会开了,gcc 也会用了,下一步做点什么练手最有价值?我反反复复推荐的都是同一个项目:写一个 Linux 终端下的动态进度条。别急着翻白眼。这玩… · 2026/9/25 3:58:36

2026年10款主流论文降AI率平台推荐:TaoToken统一Key接入与配置验证
2026年10款主流论文降AI率平台推荐:TaoToken统一Key接入与配置验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:58:36

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码