《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一3.2 计算机系统

简介: 本节书摘来华章计算机《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一书中的第3章 ,第3.2节,陈以农 陈文智 韩德强 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 计算机系统

3.2.1 计算机系统的类型
计算机系统可以按不同的方法来分类。图3-2给出了一个按用户和用途的分类。下面我们对一些典型的系统做更详细的介绍。

image

1.工作站和大型机
工作站和大型机主要面向通用应用领域,具备强大的数据运算与图形、图像处理能力,是为满足工程设计、科学研究、模拟仿真等专业领域而设计开发的高性能计算机。工作站和大型机也广泛用作服务器为远程终端用户提供服务。
2.个人电脑
个人电脑就是我们日常使用的台式机和笔记本,相信大家都已经很熟悉了。
3.嵌入式系统
嵌入式系统是一种专用的计算机系统,常常作为装置或者设备的一部分。事实上,绝大部分带有数字接口的设备,如手表、微波炉、录像机、车灯,都使用嵌入式系统。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的、预先定义好的程序和任务,也可以通过一个开发平台对嵌入式系统重新编程。本书中用于教学的Intel和EV3机器人也属于嵌入式系统。我们将通过VIPLE对Intel和EV3机器人进行编程。

3.2.2 计算机系统的组成

一个计算机系统主要有五大部件组成,如图3-3所示。所有部件通过总线连接。

  • ALU(算术/逻辑单元):执行算术和逻辑操作,通常包括加法、减法、与(AND)、或(OR)、非(NOT)运算。ALU使用多路选择器来选择不同的运算。算术/逻辑单元还需要一组寄存器的支持,以便更高效地执行运算。
  • 控制器:对指令进行译码,从而产生控制信号来告诉ALU、内存和I/O设备需要做什么。
  • 存储器(内存):存储指令和数据。
  • 输入设备:把输入的数据写入内存。
  • 输出设备:从内存中读取数据。

图3-4给出了一个简单的ALU设计。它能够执行算术和逻辑操作,包括与、或、加和减等操作。该ALU会用到以下部件:非门、与门、或门、全加器、2-1多路选择器和4-1多路选择器。在本章的实验中,我们将用VIPLE实现这一ALU设计。

image

一个2-1多路选择器有一条控制输入线(0或1值)和两条数据输入线。当控制输入线的值为0,连到0端口的输入线将被选中,与输出线接通。当控制输入线的值为1,连到1端口的输入线将被选中,与输出线接通。图3-4的2-1多路选择器用于选择加法运算和减法运算。减法实际是通过加负数来实现的。
一个4-1多路选择器有两条控制输入线(00,01,10或11值)和4条数据输入线。当控制输入线的值为00,连到0端口的输入线将被选中,与输出线接通。当控制输入线的值为01(1),连到1端口的输入线将被选中,与输出线接通。当控制输入线的值为10(2),连到2端口的输入线将被选中,与输出线接通。当控制输入线的值为11(3),连到3端口的输入线将被选中,与输出线接通。在图3-4的设计中,4-1多路选择器用于选择与、或、加减运算,端口3未用。
1.冯·诺依曼机
1948年冯·诺依曼提出程序存储的计算机概念,也叫作冯·诺依曼机或存储程序式计算机。这种计算机具有以下两个特点:
1)指令和数据都以二进制数的形式表示。
2)从内存中读取指令,并且一条接一条的顺序执行。
冯·诺依曼机的优点在于结构简单,便于控制。经过了70多年的发展,计算机经历了若干的变迁,但是计算机的基本结构没有太大的变化,基本延续了冯·诺依曼当时的设计思想。
让我们进一步考虑如何在ALU中实现逻辑的加法(全加器)设计。首先,回顾一下如何进行十进制加法。从右到左相加两个数。考虑到可能的进位运算,事实上我们是在每位上添加三个数字,如下所示:
image

计算机只能处理二进制数。二进制加法也是类似的,一个数位只能用0或1表示。任何一个大于1的数将需要多个数位来表示。下面是二进制加法的示例:
image

一个典型的计算机含有32位的二进制数。它的全加器由32个1位的全加器构成,如
图3-5所示,其中,每一位全加器需要三个输入:a、b和carryIn,并生成两个输出:carryOut和sum。

image

在实验任务中,我们将采用基于组件和面向服务的设计方法来开发和仿真一个全加器。基于组件和面向服务的设计方法包括下列步骤。
将每个基本构件块(与、或、非)设计成一个组件(VIPLE活动)。这些基本构件块可以基于真值表直接建立。一个真值表表达了输入和输出之间的映射关系。在本节中,我们将进行以下设计:

  • 组件设计;
  • 把组件封装成VIPLE服务;
  • 利用已有的组件/服务构建1位全加器;
  • 创建测试环境来测试全加器。

在接下来的实验中,我们将设计更多的组件:2-1(2选1)多路选择器和4-1(4选1)多路选择器,并将它们封装成服务。然后,利用可用的组件/服务构建1位ALU。
例如,图3-6为根据异或门的真值表(数学模型)设计的VIPLE活动。

image

2.仿真异或门的VIPLE代码
问题: 什么是真值表?
如果一个门电路有10个输入,那么它的真值表中有多少种输入组合?10?100?1000?1024?
真值表是通过一种有效的方式来计算命题表达式的命题值,这种方式也被称为决策过程。一个命题表达式可以是一个基本公式(一个命题常数、命题变量,或是命题函数),或是通过逻辑运算符所表示的基本公式,例如,与(∧)、或(∨)、非(?)。Fx∧Gx就是一个命题表达式。
image

经典逻辑的真值表局限于布尔逻辑系统中,在该系统中,只存在两个逻辑(数字)值,真和假,通常分别写作F和T,或是1和0。真值表通过列出所有的输入组合而得到相应输出结果来表示数字部件。图3-7为与门、或门、非门、异或门及其真值表。
基于这些门电路,我们可以用真值表构建其他逻辑组件。对于1位全加器来说,它对3个输入a、b和carryIn求和。生成两个输出:a、b和carryOut。图3-8表示该全加器的输入和输出及它们的真值表。

image

根据真值表,通过手动使用卡诺图,或自动使用计算机辅助设计(CAD)软件都可以进行逻辑设计。图3-9给出了基于给定真值表的全加器的逻辑设计。

image

在该实验中,我们将使用VIPLE来仿真门电路和1位全加器。
3.1位算术逻辑单元的逻辑设计
对于一个输入较多的大型电路来说,直接应用真值表可能太复杂。例如,图3-10所示的线路图(1位算术逻辑单元)有6个输入和2个输出。

image

如果直接使用真值表,会有26 = 64个输入组合,即真值表有64行输入值。在VIPLE的第一个If活动中将测试64个条件,且每个条件有5组比较,如下所示:
image

若采用这一设计方案,VIPLE框图会很复杂。因此,我们将使用基于组件的和面向服务的方法来处理上述复杂的组件,也就是说,我们将遵循逻辑设计并充分利用已经创建好的组件(服务)。这一设计和实现,将在下一章中讨论。

相关文章
|
1月前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
71 4
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
192 9
Apache IoTDB进行IoT相关开发实践
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
262 12
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
152 0
Apache IoTDB进行IoT相关开发实践
|
5月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。 几十年来,一些趋势已经强有力地显现出来。计算机硬件已经迅速变得更快、更便宜、更小;互联网带宽已经迅速变得越来越大,同时也越来越便宜;优质的计算机软件已经变得越来越丰富,并且通过“开源”方式免费或几乎免费;很快,“物联网”将连接数以百亿计的各种可想象的设备。这将导致以快速增长的速度和数量生成大量数据。 在今天的计算技术中,最新的创新
|
5月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。
|
6月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是面向物联网的时序数据库,专注于时间序列数据管理,提供高效的数据处理、集成Hadoop和Spark生态、支持多目录存储策略。它还具有InfluxDB协议适配器,允许无缝迁移原本使用InfluxDB的业务。文章讨论了IoTDB的体系结构,包括数据文件、系统文件和预写日志文件的存储策略,并介绍了如何配置数据存储目录。此外,还提及了InfluxDB版本和查询语法的支持情况。IoTDB在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
114 5
|
6月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
202 5
|
监控 物联网 Java
|
物联网 API 开发工具