《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一3.3 在VIPLE中创建计算机系统部件

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

3.3 在VIPLE中创建计算机系统部件

在本节中,你将创建代表与门的活动,以及其他用来建立ALU的组件。

3.3.1 创建逻辑与门

创建一个新的项目并保存为“ALU_Simulation”。
1)插入一个活动并命名为“GateAND”,如下图所示。请基于逻辑真值表(机械模型)来实现这个逻辑门。
image

2)定义输入,双击Action按钮然后点击下图所示的橙色按钮。
image

3)对于一个与门,你需要定义两个输入值,如下图所示。
image

确保两个输入变量都是Integer类型。
4)将一个如果/否则活动添加到框图里。创建4个不同的条件来匹配每个可能的结果。添加两个数据活动,每个数据活动代表一个可能的结果,1或者0。然后拖放两个或并活动,并如下图所示连接每个活动。
image

为了测试你自己设计的活动的正确性,在“diagram”窗口中,添加所需的“data”输入并在输出上添加一个“Print Line”,用以查看活动的输出。运行程序并查看你的活动在所有基于真值表的输入组合情况下是否正确。
在你的测试中尝试不同的数据输入:0 0、01、10和1 1,如下图所示。
image

完成实验后请通知你的实验指导老师验收你的程序,然后换一个操作员进行下一个实验任务。
创建逻辑或门和创建逻辑非门及异或门的步骤与创建与门类似,故不再赘述。

3.3.2 创建一个1位全加器

在本节中,你会创建一个代表1位全加器的活动。下图给出了逻辑电路。请根据给出的框图并使用之前作业中创建的活动和服务来实现这个活动。
重要提示:绘图时应从左至右进行,一旦在设计中给出了连接的双方,就可以绘制双方的链接。这样可以保证活动和服务间的关系正确。如果从右到左绘图,将会出现许多错误。从理论上讲,一旦连接好所有的组件,上述错误将会消失。但在实践中,开发环境可能无法同时消除所有的错误。
image

为了测试自行设计活动的正确性,在“diagram”窗口中,添加所需的“数据”活动作为输入,并为每个活动添加一个“简单对话框”服务作为输出。运行程序并测试该活动正确与否。
image

将OneBitAdder活动导出成一个服务并测试这个服务。

3.3.3 创建一个2-1多路选择器

一个2-1多路选择器的数学模型(真值表的简写形式)在下图中给出。2-1多路选择器是4-1多路选择器的简单版本。你可以用之前实验创建的活动和服务。
image

3.3.4 创建一个4-1多路选择器

在接下来的两个练习中,将添加一个4-1多路选择器活动或者服务到项目中。4-1多路选择器的数学模型如下图所示。
image

你的4-1多路选择器应如下图所示。
image

为了测试设计的活动的正确性,在“diagram”窗口中给每个设计的活动添加所需数量的“数据”活动作为输入,并且添加一个“简单对话框”服务作为输出。运行该程序,看看设计的活动是否正确。

3.3.5 创建一个1位ALU

在构建这个ALU之前,它所需的所有的服务已经创建了,它们完成四个不同的功能:与、或、加和减。
image

给这个逻辑设计VIPLE程序,一个示范代码如下图所示。但是实验者仍然需要根据活动和服务的名字编写代码,还需要定义部件之间数据连接的值。下图中的数值可能有不同的名字。
image

1位ALU设计完成以后,添加输入数据和输出服务来测试这个ALU,如下图所示。测试方法和1位全加器类似,但是需要给op0、op1和op2添加3个额外的输入数据。
image

3.3.6 自动测试

在前面的实验中,你需要手动修改输入数据以采用不同的输入值来进行测试。在本练习中,你会构建基于Counter活动的一个自动测试样本生成机制。十进制输出被映射成了二进制数,用来作为全加器的测试样本。
首先我们需要将Counter的十进制数转成二进制数。下图给出了我们需要做的转换。
image

下图中的VIPLE代码大致给出了一个自动测试机制的基本实现。你仍需要实现Counter活动,它有两个输入参数:最小值和最大值。
image

下图给出了Counter活动。
image

下图给出了带真值表数值输出的OneBitAdder活动。
image

由于并行计算的特性,测试样本的生成是乱序的。保持并行线程之间的同步是有难度的。我们现在不解决这个问题,在分布式软件开发中,我们会花大量时间来解决线程监控和同步的问题。

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