产品选型

单片机结构图 详解51单片机基本硬件结构

小编 2024-11-24 产品选型 23 0

详解51单片机基本硬件结构

硬件结构

单片机的内部结构是由CPU、ROM、RAM等组成,现在介绍外部引脚。如图1-3所示为单片机的引脚图,这就是实验中要用的89C51单片机的外部引脚图。如表1-3所示为89C51单片机引脚分配表。

图1-3 89C51单片机的引脚图

表1-3 89C51单片机引脚分配表

端口结构分析

从1.3.1节的硬件结构中可以看出,89C51单片机总共有4组端口,P0、P1、P2和P3,了解这4组端口的结构原理对于日后的编程会有很大的帮助,由于这4组端口结构不尽相同,下面分别介绍单片机总的4组端口。由于每组端口都是由8位组成,故在下面的讲解中,只以每组端口的其中一位来解释。

1. P0口的结构及工作原理

P0口字节地址为80H,位地址80H~87H。P0端口8位中的一位结构图如图1-4所示。

图1-4 P0端口位结构图

由图1-4可见,P0端口由锁存器、输入缓冲器、多路开关、一个非门、一个与门及场效应管驱动电路构成。图1-4中标号为P0.X引脚的图标,表示引脚可以是P0.0~P0.7的任何一位,即在P0口有8个与图1-4所示相同的电路组成。下面先介绍组成P0口的每个单元部分。

(1)输入缓冲器

在P0口中,有两个三态的缓冲器,学过数字电路的读者都知道三态门有3个状态,即在其输出端可以是高电平、低电平,同时还有一种高阻状态(或称为禁止状态),图1-4中,上面一个是读锁存器的缓冲器,也就是说,要读取D锁存器输出端Q的数据,需要使读锁存器中这个缓冲器的三态控制端(图1-4中标号为“读锁存器”端)有效,下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为“读引脚”的三态缓冲器的控制端有效,引脚上的数据才会传输到单片机的内部数据总线上。

(2)D锁存器

构成一个锁存器,通常要用一个时序电路(时序的单元电路内容请参考数字电路相关知识),一个触发器可以保存一位二进制数(即具有保持功能),在51单片机的32根I/O口线中,都是用一个D触发器来构成锁存器的。图1-4中的D锁存器,D端是数据输入端,CP是控制端(即时序控制信号输入端),Q是输出端,

是反向输出端。

对于D锁存器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(即时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端

的。如果时序控制端CP的时序脉冲到达,这时D端输入的数据就会传输到Q及

端。数据传送过来后,当CP时序控制端的时序信号消失时,输出端还会保持着上次输入端D的数据(即把上次的数据锁存起来)。如果下一个时序控制脉冲信号到来,这时D端的数据才再次传送到Q端,从而改变Q端的状态。

(3)多路开关

在51单片机中,当内部的存储器够用时(即不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器),P0口可以作为通用的输入/输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机,或者编写的程序超过了单片机内部的存储器容量需要外扩存储器时,P0口就作为地址/数据总线使用。那么这个多路选择开关就是用于选择是作为普通I/O口使用还是作为地址/数据总线使用的选择开关了。从图1-4可知,当多路开关与下端接通时,P0口作为普通的I/O口使用;当多路开关是与上端接通时,P0口作为地址/数据总线使用。

(4)输出驱动

从图1-4中可看出,P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当Vl导通时,V2截止,当V2导通时,Vl截止。

上面已对P0口的各单元部件进行了详细的讲解,下面研究一下P0口作为I/O口及地址/数据总线使用时的具体工作过程。

(1)作为I/O端口使用时的工作原理

P0口作为I/O端口使用时,多路开关的控制信号为0(低电平),如图1-4所示,多路开关的控制信号同时和与门的一个输入端相接,与门的逻辑特点是“全l出1,有0出0”,那么控制信号如果是0,这时与门输出的也是一个0(低电平),此时Vl管就截止,在多路控制开关的控制信号是0(低电平)时,多路开关是与锁存器的端相接的(即P0口作为I/O口线使用)。

P0口用作I/O口线,其由数据总线向引脚输出(即输出状态Output)的工作过程:写锁存器信号CP有效,数据总线的信号的输出流程为锁存器的输入端D→锁存器的反向输出

端→多路开关→V2管的栅极→V2管的漏极→输出端P0.X。前面已经介绍过,当多路开关的控制信号为低电平0时,与门输出为低电平,Vl管是截止的,所以作为输出口时,P0是漏极开路输出状态,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。如图1-5所示就是由内部数据总线向P0口输出数据的流程图。

图1-5 P0口内部数据总线向引脚输出时的流程图

P0口用作I/O口线,其由一引脚向内部数据总线输入(即输入状态Input)的工作过程,数据输入时(读P0口)有以下两种情况:

第一种情况是读引脚,即读芯片引脚上的数据。读引脚数时,读引脚缓冲器打开(即三态缓冲器的控制端要有效),通过内部数据总线输入。如图1-6所示为P0口读引脚时的流程图。

图1-6 P0口读引脚时的流程图

第二种情况是读锁存器,通过打开读锁存器三态缓冲器读取锁存器输出端Q的状态。如图1-7所示为P0口读锁存器时的流程图。

图1-7 P0口读锁存器时的流程图

在输入状态下,从锁存器和从引脚上读取的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q=0,

=l,场效应管V2开通,端口线呈低电平状态,此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q=1,

=0,场效应管V2截止,如果外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。为此,8031单片机在对端口P0~P3的输入操作有如下约定:凡属于读—改—写方式的指令,从锁存器读入信号,其他指令则从端口引脚线上读入信号。读—改—写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。下面是几条读—改—写指令的示例。

ORL P0, A P0→AP0

INC P1 P1+1→P1

DEC P3 P3-1→P3

CPL P2 P2→P2

这样安排的原因在于读—改—写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以避免因外部电路的原因使原端口的状态被读错。

注意: P0端口是8031单片机的总线口,分时出现数据D7~D0、低8位地址A7~A0以及三态,用来连接存储器、外部电路与外部设备。P0端口是使用最广泛的I/O端口。

(2)作为地址/数据复用口使用时的工作原理

在访问外部存储器时,P0口作为地址/数据复用口使用,这时多路开关控制信号为l,与门解锁,与门输出信号电平由地址/数据线信号决定;多路开关与反相器的输出端相连,地址信号经地址/数据线→反相器→V2场效应管栅极→V2漏极输出。例如,控制信号为l,地址信号为0时,与门输出低电平,Vl管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。如图1-8所示为P0口作为地址线,控制信号为1,地址信号为0时的工作流程图。

图1-8 P0口作为地址线,控制信号为1,地址信号为0时的工作流程图

反之,控制信号为l、地址信号为l,与门输出为高电平,Vl管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。如图1-9所示为P0口作为地址线,控制信号为1,地址信号为1时的工作流程图。

图1-9 P0口作为地址线,控制信号为1,地址信号为1时的工作流程图

可见,在输出地址/数据信息时,Vl、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。P0口又作为数据总线使用,在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。在存取指令期间,控制信号为0,Vl管截止,多路开关也跟着转向锁存器反相输出端

;CPU自动将0FFH(11111111,即向D锁存器写入一个高电平1)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线。如图1-10所示为P0口作为数据总线,取指期间工作流程图。

图1-10 P0口作为数据总线时取指期间工作流程图

如果该指令是输出数据,如“MOVX@DPTR,A”,该指令将累加器的内容通过P0口数据总线传送到外部RAM中,则多路开关控制信号为1,与门解锁,与输出地址信号的工作流程类似,数据由地址/数据线→反相器→V2场效应管栅极→V2漏极输出。

如果该指令是输入数据(读外部数据存储器或程序存储器),如“MOVX A,@DPTR”,该指令将外部RAM某一存储单元内容通过P0口数据总线输入到累加器A中,则输入的数据仍通过读引脚三态缓冲器到内部总线,其过程类似于读取指令码流程图。

通过以上分析可以看出,当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能再作为通用的I/O端口。

注意: 系统设计中务必注意,程序中不能再含有以P0口作为操作数(包含源操作数和目的操作数)的指令。

当由P0口输入数据时,由于外部输入信号既加在缓冲输入端上,又加在驱动电路的漏极上。如果这时T2是导通的,则引脚上的电位始终被钳位在0电平上,输入数据不可能被正确地读入。因此,在输入数据时,应先把P0口置1,使两个输出FET均关断,使引脚“浮置”,成为高阻状态,这样才能正确地插入数据,这就是准双向口。

I/O口作为输入口时有两种工作方式,即读端口与读引脚,读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器,只有读端口时才真正地把外部的数据读入到内部总线,图1-10中的两个三角形表示的就是输入缓冲器,CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作,这是由硬件自动完成的。读引脚时,就是把端口作为外部输入线时,首先要通过外部指令把端口锁存器置1,然后再进行读引脚操作,否则就可能读入出错,为什么?看图1-10中,如果不对端口置1,端口锁存器原来的状态有可能为0,Q端为0,

端为1,加到场效应管栅极的信号为1,该场效应管就导通,对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低,使得外加的1信号读入后不一定是1,若先执行置1操作,则可以使场效应管截止,引脚信号直接加到三态缓冲器中,实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口,89C51的P0、P1、P2、P3口作为输入时都是准双向口。接下来再看另一个问题,从图1-10中可以看出,这4个端口还有一个差别,除了P1口外,P0、P2、P3口都还有其他功能,这些功能又作什么用的呢?下面就来详细讲解这个问题。

每个I/O端口都有一个8位数据锁存器和两个8位数据缓冲器。P0~P3(8位锁存器)是SFR,有各自的端口地址,可直接用指令寻址,用于存放需要输出的数据。数据输入时只有缓冲没有锁存,各引脚上输入的数据必须一直保持到CPU将其读走为止,如图1-11所示为P0位结构图。

图1-11 P0位结构图

从图1-11中可以看出,P0口的内部有一个二选一的选择器,受内部信号的控制,如果在图1-11中的位置,则处在I/O口工作方式,此时相当于一个准双向口输入,须先将P0口置1,每根口线可以独立定义为输入或输出,但是必须在口线上加上拉电阻,如果将开关拨向另一个方向,则作为地址/数据复用总线用,此时不能逐位定义为输入/输出,有两种用法,当作数据总线用时输入8位数据,当作地址总线用时则输出低8位地址,注意,当P0口作为地址/数据复用总线用之后就不能再作I/O口使用了。那么什么叫做地址/数据复用?这其实是当单片机的并行口不够用时需要扩展输入/输出口时的一种用法,具体使用方法会在后续的章节中逐步讲解。

利用P0口进行扩展外部存储器和I/O时,P0口将作为地址和数据分时复用,CPU发控制信号,打开与门,使MUX打向上边,形成推拉式结构,数据信号可直接读入或输出到内部总线。利用P0作为通用I/O时,此时P0口是一个准双向口,CPU发控制信号,封锁与门,使上拉管截止,MUX打向下边,与D触发器Q连接。

输入程序举例:

MOV P0, #FFH

输出程序举例:

MOV A, P0

2. P1口的结构及工作原理

P1口字节地址为90H,位地址为90H~97H,如图1-12所示为P1位结构图。

图1-12 P1位结构图

与P0不同,P1口只能作为I/O口使用,无MUX,但其内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1、P2、P3都一样。

输入程序举例:

MOV P1, #FFH

MOV A, P1

输出程序举例:

MOV A, P1

3. P2口的结构及工作原理

P2口字节地址为A0H,位地址为A0H~A7H,如图1-13所示为P2位结构图。

图1-13 P2位结构图

P2口作为I/O口线时用法与P0口一样,当内部开关拨向另一个方向,即作地址输出时,可以输出程序存储器或外部数据存储器的高8位地址,并与P0口输出的低地址一起构成16位的地址线。

注意: 和数据总线的区别,数据总线是8位的,很多书上都会提到51单片机是8位数据总线,16位地址总线,但都不会解释有什么不同,看到这里读者应该明白二者的区别。

16位的地址总线可以寻址64KB的程序存储器或外部数据存储器,后续章节会讲解,此处要注意的是当P2口作为地址总线时,高8位地址线是8位一起输出的,不能像I/O口线那样逐位定义,这与P0口是一样的。

当P2口用来扩展外存储器和I/O时,作为高8位地址输出,当进行外部存储器或I/O设备读写操作时,CPU自动发出控制信号,打开与门,使MUX拨向上边。当P2口当作通用I/O时,CPU自动发出控制信号,MUX拨向下边,与D触发器Q连接。

输入程序举例:

MOV P2, #FFH

MOV A, P2

输出程序举例:

MOV A, P2

4. P3口的结构及工作原理

P3口字节地址为B0H,位地址为B0H~B7H。如图1-14所示为P3位结构图。

图1-14 P3位结构图

P3口作为I/O口线用时同其他的端口相同,也是准双向口,不同的是,P3口的每一位都有另一种功能,也叫第二功能,具体作用在用到时将详细解释。当P3口作为通用I/O口时,准双向口第二功能端保持高电平。

输入程序举例:

MOV P3, #FFH

MOV A, P3

输出程序举例:

MOV A, P3

当P3口作为第二功能时,锁存器输出Q=1,如表1-4所示为P3口第二功能列表。

表1-4 P3口第二功能列表

既然单片机的引脚有第二功能,那么CPU是如何识别的呢?这是一个令许多初学者困惑的问题,其实单片机的第二功能是不需要人工干预的,也就是说只要CPU执行到相应的指令,就自动转成了第二功能。

思考: 输入和输出口简称I/O口,是单片机与外部电路接口的唯一途径,4个并行口的结构是有一定区别的,如何根据系统的设计要求和产品用途来正确灵活地使用是初学者必须掌握的基本功,还需要清楚其功能和用途。

5. 应用注意事项

(1)在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入/输出线。

(2)P0口作为通用双向I/O口使用时,必须外接上拉电阻。

(3)P3口除了作通用I/O口使用外,各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用I/O口使用。

(4)当P0~P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入1,使FET截止,然后再读端口引脚,例如以下程序:

MOV P1, #0FFH

MOV A, P1

5个方面详解:AI产品运营必知的软硬件技术

比算法更难得是算法的思想,比编程工具更难的是编程的思维,比做产品更难的是产品的梦想。本文主要从5个方面,详细阐述AI产品运营必知的软硬件技术。

一、AI产品运营对基础关系的安排

1. 智能软硬件与软件和硬件

在AI产品里没有纯粹单独的软件和硬件,尤其是产品经理更应该系统来看,把软件和硬件看成是AI赋能的智能软硬件。

例如:单片机一般意义上被看做硬件,但是我们以一种单片机Arduino来看,Arduino板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器,而程序本身又是软件部分。其他AI产品部件也类似像STM32,瑞芯微3288等等。

单片机只是举例,现在这么大的数据量单片机是处理不了的,AI也不只是跑在单片机上,X86,服务端也有。

AI里软件相当于人的大脑,硬件相当于人的身体!所以离开软件硬件没有灵魂,离开硬件软件没有肉身!当下AI硬件主要被用来采集数据和作为算力!

2. 算法和数据

有人说算法重要,因为它体现了技术水平的高低,驾驭数学知识的能力;有人说数据重要没有数据算法如何实现效果,实际上LineLian和工程院院士杨善林的学生讨论后发现,算法和数据是鱼和水的关系。AI时代里算法跟传统算法的区别在于AI的算法是对人脑的模拟,是一种智能。

AI是在大量的样本数据基础上,通过神经网络算法训练数据,建立了输入数据和输出数据之间的映射关系,其最直接的应用是在分类识别方面。例如:训练样本的输入是语音数据,训练后的神经网络实现的功能就是语音识别,如果训练样本输入是人脸图像数据,训练后实现的功能就是人脸识别。

AI算法使得解决问题的步骤智能,数据使得算法得到训练从而实现算法所构建的商业模式!

3. 服务端和应用端

服务端和应用端是相对的。

开发应程序调操作系统的API, 操作系统的API有(创建线程、 读写文件【读、写、偏移到指定地址】、 网络通信、 图形渲染),那么操作系统就是应用程序的服务端。

而写一个常规的小程序或者APP,前端用户界面上需要的数据就是分别通过WEB程序调用浏览器功能接口然后OS向后台服务端发请求传数据。

另外web程序员,和底层嵌入式程序员理解的服务端和应用端还有差别,这里产品经理明了这种关系即可。服务端即底层就是功能的实现者, 应用端上层就是功能的使用者,这一关系利于产品开发过程中需求时间安排规划。

AI产品经理明了基础关系,能更好的协调资源,补充Team短板,提升产品生命期效率!

二、站在硬件肩旁上赋能硬件

智能软硬件是指通过将硬件和软件相结合,对设备进行智能化创造或者改造。而智能软硬件移动应用端则是软件,通过应用连接智能硬件,操作简单、开发简便,各式应用层出不穷,也是企业获取用户的重要入口。例如:新零售的店铺,智能贩卖机等!

创造和改造对象可能是电子设备,例如:手表、电视和其他电器;也可能是以前没有电子化的设备,例如:门锁、茶杯、汽车甚至房子。

智能软硬件已经从可穿戴设备延伸到智能电视、智能家居、智能汽车、医疗健康、智能玩具、机器人等领域。比较典型的智能软硬件包括Google Glass、三星Gear、FitBit、麦开水杯、咕咚手环、Tesla、无屏电视等。

1. 智能软硬件的特征

信息的获取和交互智能软硬结合

2. 智能硬件的组成

(1)传感器

传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。

例如:检测距离的声波传感器,寻找轨迹的红外传感器,通信的蓝牙、NB-IoT传感器等等!

(2)控制器

控制器是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值,来控制电动机的启动、调速、制动和反向的主令装置。

由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。例如:一般功能的叫MCU单片机,复合功能的叫操作系统OS!

首先,控制器在智能硬件中一般叫做芯片,AI与CPU比较在架构和功能特点上有着非常大的区别。

传统的CPU运行的所有的软件是由程序员编写,完成的固化的功能操作,其计算过程主要体现在执行指令这个环节。但与传统的计算模式不同,人工智能要模仿的是人脑的神经网络,从最基本的单元上模拟了人类大脑的运行机制。它不需要人为的提取所需解决问题的特征,或者总结规律来进行编程。

AI一般包含机器学习和深度学习,但不管是机器学习还是深度学习都需要构建算法和模式,以实现对数据样本的反复运算和训练,降低对人工理解功能原理的要求。

因此,AI芯片需要具备高性能的并行计算能力,同时要能支持当前的各种人工神经网络算法。传统CPU由于计算能力弱,支撑深度学习的海量数据并行运算,且串行的内部结构设计架构为的是以软件编程的方式实现设定的功能,并不适合应用于人工神经网络算法的自主迭代运算。

传统CPU架构往往需要数百甚至上千条指令才能完成一个神经元的处理,在AI芯片上可能只需要一条指令就能完成。

其次,解读主流的人工智能芯片。

AI的高级阶段是深度学习,而对于深度学习过程则可分为:训练和推断两个环节。

训练环节通常需要通过大量的数据输入或采取增强学习等非监督学习方法,训练出一个复杂的深度神经网络模型。训练过程由于涉及海量的训练数据和复杂的深度神经网络结构,需要的计算规模非常庞大,通常需要GPU集群训练几天甚至数周的时间,在训练环节GPU目前暂时扮演着难以轻易替代的角色。

推断环节指利用训练好的模型,使用新的数据去“推断”出各种结论,如视频监控设备通过后台的深度神经网络模型,判断一张抓拍到的人脸是否属于黑名单。虽然推断环节的计算量相比训练环节少,但仍然涉及大量的矩阵运算。

在推断环节,除了使用CPU或GPU进行运算外,FPGA以及ASIC均能发挥重大作用。目前,主流的人工智能芯片基本都是以GPU、FPGA、ASIC以及类脑芯片为主。

FPGA:

即专用集成电路,一种集成大量基本门电路及存储器的芯片,可通过烧入FPGA配置文件来来定义这些门电路及存储器间的连线,从而实现特定的功能。而且烧入的内容是可配置的,通过配置特定的文件可将FPGA转变为不同的处理器,就如一块可重复刷写的白板一样。

FPGA有低延迟的特点,非常适合在推断环节支撑海量的用户实时计算请求,如语音识别如LineLian2017年打造的裸眼3D试衣镜所采用的芯片。

由于FPGA适合用于低延迟的流式计算密集型任务处理,意味着FPGA芯片做面向与海量用户高并发的云端推断,相比GPU具备更低计算延迟的优势,能够提供更佳的消费者体验。在这个领域,主流的厂商包括Intel、亚马逊、百度、微软和阿里云。

ASIC:

即专用集成电路,不可配置的高度定制专用芯片。特点是需要大量的研发投入,如果不能保证出货量其单颗成本难以下降,而且芯片的功能一旦流片后则无更改余地,若市场深度学习方向一旦改变,ASIC前期投入将无法回收,意味着ASIC具有较大的市场风险。但ASIC作为专用芯片性能高于FPGA,如能实现高出货量,其单颗成本可做到远低于FPGA。

谷歌推出的TPU就是一款针对深度学习加速的ASIC芯片,而且TPU被安装到AlphaGo系统中。但谷歌推出的第一代TPU仅能用于推断,不可用于训练模型,但随着TPU2.0的发布,新一代TPU除了可以支持推断以外,还能高效支持训练环节的深度网络加速。

根据谷歌披露的测试数据,谷歌在自身的深度学习翻译模型的实践中,如果在32块顶级GPU上并行训练,需要一整天的训练时间,而在TPU2.0上,八分之一个TPUPod(TPU集群,每64个TPU组成一个Pod)就能在6个小时内完成同样的训练任务。

GPU:

即图形处理器。最初是用在个人电脑、工作站、游戏机和一些移动设备上运行绘图运算工作的微处理器,可以快速地处理图像上的每一个像素点。后来科学家发现,其海量数据并行运算的能力与深度学习需求不谋而合,因此,被最先引入深度学习。

GPU之所以会被选为超算的硬件,是因为目前要求最高的计算问题正好非常适合并行执行。一个主要的例子就是深度学习,这是人工智能(AI)最先进的领域。

深度学习以神经网络为基础,神经网络是巨大的网状结构,其中的节点连接非常复杂。训练一个神经网络学习,很像我们大脑在学习时,建立和增强神经元之间的联系。

从计算的角度说,这个学习过程可以是并行的,因此它可以用GPU硬件来加速。这种机器学习需要的例子数量很多,同样也可以用并行计算来加速,在GPU上进行的神经网络训练能比CPU系统快许多倍。

目前,全球70%的GPU芯片市场都被NVIDIA占据,包括谷歌、微软、亚马逊等巨头也通过购买NVIDIA的GPU产品扩大自己数据中心的AI计算能力。

3. 智能硬件生产流程

智能软硬件的开发流程介绍

(1)需求调研及分析

凡是开发产品类的,都需要进行完成的市场调研,智能硬件也是一样,通过面向群体来收集有用的价值,从而对产品开发的导向及功能要求有明确的方向。

(2)产品原型设计

对于该产品的硬件、原件、结构进行开发,完成后进行联调测试,如果中途出现问题,需要重新设计,若通过进行组装及测试。

(3)试产阶段

小批量的进行产品试产,进行产品认证。

(4)产品运营硬件市场化量产阶段

一般情况下,需要等到一些认证做完,接到正式订单才会开始大规模生产。

三、站在软件肩旁上赋能软件

上文第二节里讲站在硬件的肩旁上赋能硬件里,硬件本身亦不是纯硬件,其中有软件部分且是必不可少的部分。

软件包含系统软件和应用软件,系统软件是软件的软件,是软件运行的平台,应用软件是为了完成特定产品业务运营而编写的软件。

常用的系统软件有操作系统(DOS、WINDOWS、UNIX、OS/2)、数据库管理系统(FoxPro、DB-2、Access、SQL-server)、编译软件(VB、C++、JAVA)。应用软件有文字处理软件(WORD、WPS)、信息管理软件、辅助设计软件(CAD)、实时控制软件(CAM)。再例如:APP、小程序等属于应用软件,Android/IOS等属于系统软件。

软件流程一般如下图:

AI需要的智能软硬件流程:

四、以智能家居的智能软硬件产品实战为例

本节以智能家居整体结构设计、芯片选型、模块设计实战经验为例讲一遍智能软硬件产品的打造流程。

先看下图为笔者操盘的智能家居整体结构图:

以下为整体结构图解析:

Android手机终端在连接的4G或WIFI情况下通,过向服务器发出 HTTP 请求完成对信息的查询和任务的设定。

云服务器根据用户需求提供必要的数据,并将对应的任务更新至数据库。嵌入式智能设备通过WIFI模块AT与服务器,进行Socket通信,服务器端使用基于JavaNIO的框架实现 Socket连接。

Android手机终端和智能设备通过不同的服务器进行通信 ,Android手机终端采用http 协议与服务器进行通信,服务器提供了用于通信的RESTful API,嵌入式智能设备基于 Socket与服务器连通。两个服务器部署在同一台机器上,通过MYSQL数据库做中间桥接,实现数据的共享。

再看下图为具体模块结构图:

上图中MCU负责整个模块的控制;WIFI模块实现模块的无线连接,并集成协议TCP/Ip协议,负责同服务器交换数据;开关控制使用继电器实现,能够实现弱电对强电的控制;湿度、温度、亮度模块根据不同模块的功能进行选装,从而实现对不同量的测量。

限位检测用于检测电机运行的位置状态,从而实现对宠物喂食中机械的控制,实现定量的喂食;RTC时钟为系统的运行提供时间基准;FRAM保存配置数据,即使在掉电后还能够执行之前设定的任务;基本的用户界面提供了现场的控制途径,使用户能够对模块进行直接的操作;供电使用AC/DC电源直接由220V供电或者使用DC进行供电,可以根据外部公开进行选择。

其次芯片选型。

选用M451LG6AE作为主控芯片M451LG6AE为 32位单片机,基于M4内核,具有足够的RAM和 Flash能够满足运行程序的要求。其具有多个串口,支持硬件的 SPI 及 I2C,能够方便实现的通信,具有 AD能够实现一些状态量的测量。

使用 DTH11进行温湿度的测量,其集成了温度及湿度检测功能,接口为单线制串口。节约 IO,使用 DS18B20进行范围较大的温度测量,其测温范围较广,具有密封的封装,能够测量液体温度,能多个并联。对于土壤湿度的测量,使用电阻式湿度传感器进行测量。

限位检测主要用于检测物体是否移动到了指定位置,或者在喂食装置中电机旋转的圈数(决定喂食的量),只需要输出开关量,因此使用光电门进行检测,使用非接触测量能够有效地延长传感器的使用时间,同时能够提供足够的精度。

为了实现高精度的计时,从而减小离线时出现的定时误差,使用外置的RTC DS3231 作为计时基准。DS3231 内置了带温补的晶振,能够实现较高精度的计时,满足运用的需求。

选择擦写次数多和读取速度块的FRAM FM24V系列,来进行设置数据的存储%使掉电复位后,仍然能够进行中断的任务。

使用 HLK-PM01 作为 AC/DC芯片,HLK-PM01 用于实现220VAC到 5VDC的转换,能够提供 3W的功率,足够系统的使用。使用 HLK_M30模块作为WIFI 模块,其体积很小,功耗较低 ,支持TCP Server/TCP Client /UDP Server/UDP Client工作方式,能够方便地实现互联网连接,串行接口能够方便地与主控器连接。

再则软件设计:

整体软件功能模块如下图:

其中1: 软件部分与硬件之间交互通信模块, APP通过HTTP 协议与服务器进行通信 ,采用 OkHttp 进行网络请求,请求的方式以 Post为主。

Android系统提供了两种 HTTP 交互的方式HTTPURL-CONNECTION和 APACHE HTTP CLIENT,虽然两者都支持 HTTPS流的上传和下载,配置超时IPV6和连接池,已足够满足各种HTTP请求的需求,但原生的HTTP 接口存在着 API 数量过多,扩展困难等不足。

因此产生了许多出色的网络通信库来替代原生的 HTTPURLConnection,其中OkHttp是最出色的一个。

使用 OkHttp 库进行更高效 HTTP请求可以让应用运行更快、更节省流量,因此,本项目中使用 OkHttp库依赖开发。

APP与 服务器通信时采用 JSON格式进行数据传输 ,JSON 作为一种轻量级的数据交换格式,易于阅读和编写,并且多种编程语言均提供了对 JSON 格式数据解析的支持,易于机器解析和生成。

并且相比XML格式,JSON数据量更小,具有较高的有效数据率,有助于节省流量,提升网络传输速率。APP采用 Android 自带的 JSONObject 类进行 JSON数据的解析。

其中2: 登录模块,由于智能家居控制系统是一个面向多种需求多个用户的控制系统,需要建立用户系统,使不同的用户可以有序地管理自己的设备。

APP在启动时会首先检查本地是否存有用户的 token,如果不存在,跳转到登录界面,密码采用 MD5进行加密。用户登录成功后, 将服务器发来的 token通过 SharedPreferences 保存在本地,以后每次网络请求通过这个token进行用户验证,而不需要重新进行登录。

其中3: 设备模块设备列表中选择一个设备进入设备控制页面,在设备控制页面可以进行查看设备信息,查看历史记录,对设备进行控制等操作。

进行设备控制时,智能照明控制开、关两种状态,智能浇水对浇水量进行控制,智能喂食对喂食量进行控制,每种设备的控制均提供手动和定时两种工作方式。 在启动定时任务时,可以设置每周某几天在某个时间重复执行设备控制的任务。

其中4: 场景页面中可以添加的任务分为两种类型:

一种是对设备的控制任务,包含控制照明设备的开关,浇水设备的浇水量、喂食设备的喂食量等。另一种是延时任务,用于设定不同设备控制任务之间的延时间隔,场景可以设置为手动或定时启动两种方式。为了减少控制的复杂性,场景中的单项任务不能进行定时的设置,但可以通过设置场景整体的定时任务来实现场景中每个任务的定时执行。

希望通过以上智能软硬件产品实战,来传达一套系统的智能软硬件产品方法论!

五、Hold住产品靠本领,引领智能软硬件市场靠人性!

同样是语音识别猎豹做出来翻译棒,而天猫做出阿里智能音箱。同样是图像识别,用在机场可以协助安检通过,波士顿动力可以给机器狗避障!

智能软硬件产品运营是生意人,互联网产品运营是设计师。

而笔者爸爸说:

“10年难培养一个生意人,1年也许就能培养一个擅长用工具的设计师和程序员”。

比算法更难得是算法的思想,比编程工具更难的是编程的思维,比做产品更难的是产品的梦想!

运营好和卖好产品,并用户口口香传,与实现产品同样重要。没有指令机器不知运转,而没有机器指令又命谁运转?智能软硬件是产品运营的未来!

#专栏作家#

连诗路,公众号:LineLian。人人都是产品经理专栏作家,《产品进化论:AI+时代产品经理的思维方法》一书作者,前阿里产品专家,希望与创业者多多交流。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议

相关问答

打火灶热电偶 结构图 - 一起装修网

[回答]灶具热电偶的工作原理:利用*温度离子安全阀由离子感应针、自吸电磁阀、热电偶被火苗加热产生热电势,其电流可以使燃气电磁阀保持吸合,熄火即失电,气...

诸位大仙 急!急!急!临沂LS螺旋输送机厂家,LS螺旋输送机...

[回答]74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.本文将介绍7...

做ACDC电源时,你们都使用的什么芯片?使用多少频率控制?

做ACDC电源时,你们都使用的什么芯片?使用多少频率控制?♦不通则已,一通则通。现如今的AC-DC电源管理芯片种类繁多,要全部搞懂这些电源管理芯片,可以成为高...做...

在嵌入式开发中,怎么开发SPI IIC的驱动程序?

SPI和IIC都是比较常用的短距离通讯方式,主要用在PCB板间或者芯片之间实现近距离通信。比如AT24C02就是通过IIC和单片机实现数据通信的,BMP280即可以通过IIC又可...

自检电路设计方法?- 一起装修网

一起装修网问答平台为您提供自检电路设计方法?的相关答案,并为您推荐了关于自检电路设计方法?的相关问题,一起装修网问答平台:装修问题,因我而止。

天线 结构图 中经常看到 RX1,RX2…… TX1,TX2……请问是什么...

[回答]天线结构图中经常看到RX1,RX2……TX1,TX2……请问是什么意思?谢谢

哪位大侠!谁能帮忙,江苏自助扫码出袋机哪家好,自助扫码出...

[回答]业发展状况报告(2020)》显示,我国节能环保产业产值由2015年4.5万亿元上升到2020年的7.5万亿元,年均增速15%。作为“十四五”开局之年,2021...作为...

在座的同志!请回答一下:山东专业物联网实验箱,物联网实验...

[回答]可以支持物联网、RFID、单片机、嵌入式、无线网络、以太网各种技术内容;实验内容集趣味演示、教学实验、应用开发、科学研究于一体,界面精美,使用方...

用充电宝给手机充电有哪些利弊?

你说的自动关机,没有表达清楚,实际是根据充电电流,自动停止对手机的充电,也就是对手机充满电了,自动切断充电功能,一般充电宝都带电流控制,锂电池充电开始...三...

wps步骤图底下怎么写文字啊-ZOL问答

单片机程序流程图用文字叙述如下:上电,复位初始化,进入系统待机,如果没有传感...①画顺序结构图,即起止框及输入框,并用流程线连接(如图①);②画条件结构图...

猜你喜欢