当前位置:首页 > 数据处理
  • 苹果、华为搞起了移动AI芯片_开发者们似乎意见很大

    苹果、华为搞起了移动AI芯片_开发者们似乎意见很大

    作为一家专注于人工智能产业的媒体,在麒麟970和苹果A11刚发布时我们也着实兴奋了一阵儿,可如今已经过去了一个多月,除了厂商展示参数、媒体狂欢之外,我们似乎还没听到其他人声音。 移动AI会给手机带来革命性的新体验吗?类似麒麟970和苹果A11这样的芯片,会成为移动AI最重要的驱动者吗?为了避免落入空谈,我们分别采访了BAT人工智能业务部、移动端开发、直播产品、深度学习图像处理四个业务领域的开发者。想知道在他们眼中,移动AI芯片到底是什么模样。 BAT开发者:模型优势比端的部署更重要 此前我们已经讨论过,在各种App中可以看到大量云端AI的痕迹,自拍美颜、语音助手,AI已经存在于移动设备里。可实际情况往往是机器学习开发者在一端研究算法、处理数据、训练模型,而移动开发者在另一端负责其他的数据结构和编程等等。两者之间通过一个云端服务器连接,除此之外少有交集。 提到移动AI时,大部分开发者考虑的是将模型移植到应用程序中,是否会加大安装包的大小,是否在每次更新模型时都需要上传更新包通过应用商店审核。 当下很多大企业对AI的追求几乎是不计成本的,加上唾手可得的大量数据,几乎要把开发者们“宠坏”。利用海量数据训练出复杂的模型,时时刻刻都在更新模型试图让其更加完善。 对于这些大企业来说,在得到一个让自己和行业都满意的模型之前,考虑在哪个端部署似乎有点早。一位来自阿里某智能产品的产品运营告诉我们,相比端与端环境间的比较,他们目前更关心的是把算法模型打磨得更好。 这无形中也体现了AI发展的现状:从算法为主导到以产品为主导的过渡期,在用户们用脚投票之前,开发者很难自发地从一个开发环境迁移到另一个开发环境中。尤其是一些掌握着优势资源的大企业,或许对于他们来说,不安全感来自于算法间的差异,而不是用户体验上的细微之处。 历经转型的开发者:定制AI的无尽可能 不过一位曾经经历过PC端到移动端转型的开发者提示了我们,移动AI或许不仅仅是“离线AI”这么简单。 在从PC端到移动端迁移的过程中,开发者们发现不同的设备中,用户的行为是有很大差异的。同样,即使都是移动设备,手机、平板、智能手表甚至智能音箱等等产品上,用户的行为依然会产生很大差异。比如在平板中用户更倾向于打开视频,而手机中用户更倾向于打开文字信息等等。可在云端为主的智能推荐算法中,这两种设备的数据常常被混合在一起处理。 当移动设备有了在本地处理的能力,开发者就可以让推荐算法更好的匹配不同设备。以目前苹果A11和麒麟970公布的参数看来,将智能推荐这类本身就依托于网络的算法完全移植到移动端本地,其实意义不大,但把云端推理结果放到移动端本地再次处理,会得到很不一样的用户体验。 这也意味着算法有可能和设备,并且进一步和个人用户更好地结合起来。通过移动设备丰富的感知能力,地理位置、天气、光线、使用时长、用户行程安排,甚至体温心率等等原本无法轻易获取的数据,都可以通过本地计算结合到已有的算法模型之中。在拥有移动AI的未来,外卖App会在下雨天把你最爱的火锅排到推荐流前列,而在公司时则把送餐速度最快的餐品排到前列。 总之,从开发者的角度来看,移动AI最大的价值是在于把原本的“通用AI”变成“定制AI”。 迁移实操开发者:移动AI需要更统一的编程环境 “定制AI”的概念虽然迷人,但真到了开发的实操阶段,却不像想象中那么容易。 一位就职于直播平台的资深PE工程师告诉我们,目前移动端GPU/AI芯片还是一个较新的概念,API接口较混乱,缺乏编程和计算方式的统一。 就以现在来看,苹果A11只把GPU能力开放给了CoreML一个框架,而目前大多数开发者采用的都是Tensorflow、Caffe等主流框架。这无疑给未来的迁移造成了影响:开发者究竟要在原有框架上进行“阉割”,还是在CoreML上重新编程? 如果厂商提供较高的抽象层,移动AI开发者只能一个个去配适硬件抽象层。要是厂商倾向于提供底层抽象,就可以由更高层次的抽象屏蔽差异,从而提高开发效率。 尤其是对于Android这类本身生态就比较混乱的系统,开发者很可能受到更多阻碍。 以目前通用的CPU为先例,不同厂商的功耗和发热控制逻辑不同。同样的神经网络,在某一厂商的CPU上可能跑得很顺畅,而在另一家厂商的CPU上可能就会触发过热保护降频,最终导致神经网络的计算性能有剧烈的波动。 所以大部分开发者只敢在产品中嵌入一些计算量比较小的网络,或者是调用频率比较低的功能,无法选择在持续功能里用复发神经网络。 深度学习开发者:芯片仅仅是移动AI的开始 对于用户而言,移动AI芯片的出现意味着可以在终端上获得更好的产品体验,可对于开发者来说,移动AI却不能靠芯片一蹴而就。 我们采访了有着中国版Prisma之称的深黑科技,其CEO Jason告诉我们,目前大多数移动AI芯片在机器学习做了较为普适性的优化,而对一些特定的计算方式则没有进行太多优化。比如深度学习中需要的卷积计算,当前更适合部署在云端。 并且在计划从云端到终端的迁移时,开发者还会受制于原本的框架。像Tensorflow就很容易支持iOS和Android上的部署,让迁移变得更加容易。可像Caffe、Torch这样基于小团队的框架,在产品化上相对乏力,目前还无法帮助开发者将代码迁移到两个移动端。这也给了Tensorflow更多的优势,尤其是在消费级应用之上。 移动AI芯片不能解决所有问题,但很多团队正在试图从软件方面加速移动AI的部署。在今年刚刚拿到融资的美国西雅图的AI创业公司xnor.ai,他们利用二值化神经网络减小神经网络模型的储存大小,从而加快运算速度、降低计算成本。最终实现不依赖网络,在嵌入式设备中部署深度学习模型。 硬件的出现,只是移动AI生态的一块基石。进入业务层面,还要考虑API配适、软件优化,甚至未来可能出现的5G网络等等。 所以,移动AI芯片没什么用处? 和开发者们交流过后,我们开始思考:对于他们而言,移动AI芯片的出现到底意味着什么?虽然硬件的出现不代表立刻建立起生态圈,但手机厂商对移动AI的押注无疑给了大多数开发者信心,让更多人加入这一领域。 更重要的是,移动AI芯片给了开发者推出轻量级产品的可能不必担心云计算资源的使用资费、也不必担心用户量增长带来的服务器宕机。可以说移动AI芯片的出现降低了消费级AI应用的准入门槛。 回到两款移动AI芯片上。苹果A11性能上的弱势不明显,可仅仅把GPU能力开放给CoreML和Metal 2(一款应用于游戏的图形处理软件)的做法明显降低了很多开发者的热情。这样的做法进一步巩固了iOS生态的完整和稳定,但更适用于高门槛定制化开发。 苹果这样的选择虽然挑不出错,但也很难心悦诚服地说是正确的。毕竟“完整稳定”和“画地自限”的区别只在一线之间。相对而言,如果麒麟970可以率先向更多框架和软件开放NPU算力,想必也会吸引更多的开发者。 当然,每个开发者写下自己第一行代码时,想到的绝不是去纽交所敲钟,而是凭着天生的好奇,第一次尝试和一个未知的世界对话。如果移动AI芯片可以让开发者们暂时放下无休止的需求,用第一次写代码时的热情去探索移动AI,不管对于芯片厂商还是人工智能产业而言,都是弥足珍贵的收获。 或许这正是移动AI芯片的最大意义:硬件不能解决一切问题,但可以让更多的开发者参与其中。

    时间:2020-07-27 关键词: AI 数据处理

  • 为什么数据处理和存储应该在云端而不是移动设备中

    调查表明,用户更喜欢在云中而不是在移动设备上处理和存储数据。这是新的优秀实践吗? 一篇名为“将移动设备负载转移到云端的节能决策”的文章引发了人们的思考,这是因为移动计算设备已经在云中运行了10多年,人们还没有在移动设备处理和数据存储的分层方面投入实际工作或最佳实践。现在也许正是时候。 这篇文章指出,移动计算的概念结合了公共云的优势和移动终端设备的优势。终端一词曾经指的是呈现和消费信息但不进行处理的设备。 考虑到人们计划将尽可能多的处理和数据存储推向公共云,这仍然是一个恰当的类比。技术小型化及其以较低的价格提供的可用性使得在移动设备上保留一些处理和存储功能变得非常方便。因此,移动设备成为一种智能终端设备,尽管其最佳实践是将致力于推向基于云计算的远程系统。 这篇文章所说的负载是移动设备应用程序一直在处理的问题。而人们对加工和储存的场合提出质疑是很常见的。而在移动设备上处理和存储数据也是有争议的,在移动设备上与用户的交互应该接近零延迟。 当然,这需要权衡取舍。当人们将大部分处理和存储工作放在移动设备上时,会降低移动设备的性能,而提供额外的处理能力还会更快耗尽电池。正如文章所指出的那样,基于云计算的存储和处理可以带来许多好处,其中包括节省能源、提高性能和可靠性等,更不用说移动应用程序开发人员可以更方便地集中访问程序和数据这一事实。 真正的终端移动设备将不包含任何处理或存储数据。对于基于云计算的移动应用程序和数据,对后端的依赖意味着如果云端不可用,则其移动应用程序将陷入困境。 当今的移动设备是哑终端和智能终端的混合体。那些在没有Wi-Fi的情况下大量移动数据或者在蜂窝信号弱或没有信号的情况下出行的人们会发现,哪些应用程序将继续运行而无需实时更新,而哪些应用程序将根本无法工作。 随着网络连接变得更快、更可靠(向5G迁移),将数据和处理转移到云端是一种新兴的最佳实践。公共云现在是数据集中和处理的首选平台。这种架构有很多优点,因此将是云计算技术无可争议的未来。

    时间:2020-07-21 关键词: 存储 云端 数据处理

  • 物联网工作的流程及步骤介绍

    物联网工作的流程及步骤介绍

    物联网解决方案通常包括四个基本要素: 1、传感器 2、网络连接 3、数据处理 4、用户界面 在本文中,我们将集中讨论最后一个要素:用户界面。浏览我们之前解释传感器、网络连接和数据处理的文章。 什么是用户界面? 在前面的文章中,我们讲述了传感器如何收集数据,如何通过网络解决方案发送到云服务平台,以及如何将数据转换为有用的信息。现在我们需要做的最后一件事是将信息传递给最终用户,而这就是通过用户界面(UI)完成的。 用户界面由用户与计算机系统交互的功能组成。这包括屏幕、页面、按钮、图标、表单等。用户界面最明显的例子是计算机和智能手机上的软件和应用程序。 然而,用户界面不一定需要屏幕,例如,电视遥控器有一个由各种按钮组成的用户界面,而像Amazon Echo这样的智能音箱设备可以通过语音命令进行控制。 与用户界面密切相关的术语是用户体验(UX)。两者的区别在于,尽管用户界面与用户实际看到的和与之交互的东西有关,但用户体验是用户对产品的整体体验,它包括网站、应用程序、硬件包装、安装等。用户体验(UX)甚至可能与您的用户界面(UI)设计无关。 与物联网解决方案交互的方式 用户可以通过多种方式与物联网解决方案进行交互。同样,正如我们前面看到的传感器和网络连接,选择取决于具体用例。这里,我们来看看一些最常见的选择。 ▲接收自动通知 在物联网应用中最常见的情况是,如果发生异常情况,我们希望接收通知或警报,例如,如果机器的温度超过阈值限制,我们希望得到通知。信息可以通过电子邮件、短信、电话或推送通知来传递。 ▲主动监控信息 我们可能希望能够主动监控信息,例如,如果我们有一个资产跟踪解决方案来跟踪我们的车辆,即使没有异常情况发生,我们也可能希望监控车辆的位置。我们可以使用移动或计算机应用程序来监控信息。 ▲远程控制系统 用户界面还允许用户远程控制物联网系统,例如,用户可以通过移动应用程序调节灯光或关闭加热。这也可以由应用程序本身的指导方针自动完成。 物联网的用户界面注意事项 仅仅为应用程序构建一个直观的用户界面(和UX)本身就是一个挑战,但物联网应用程序又将复杂性提升到一个全新水平。让我们看看在为物联网设计用户界面时必须考虑的一些问题。 ▲连接性 正如我们之前的文章中所解释的,对于数据发送到云端的频率(以及处理数据的频率)有不同的方法,因此在设计用户界面时需要考虑这一点。例如,如果我们有一个位置跟踪器每三小时向云端发送一次信息,用户界面应该清楚地通知用户,他/她看到的不是实时信息,例如,用户界面可以让用户知道“2小时前收到的最后一条消息——预计1小时后会收到下一条消息”。 ▲物理用户界面 我们应该考虑在物联网设备上是否需要物理用户界面。在某些应用中,这是必要的,例如,如果我们家里有智能灯,即使Wi-Fi关闭,我们也希望能够使用它们。然而,出于美观原因,物理用户界面通常非常有限,也因为我们希望延长物联网设备的电池寿命。物理用户界面也可以像物联网传感器设备上的小LED灯一样简单,以告知用户设备已经打开。 ▲简单 以最简单的方式将信息传递给用户是很重要的。此外,从物联网数据中处理的信息应根据用户的具体需求进行定制。最好限制不同用户组的信息访问,只向特定用户显示他/她需要看到的内容。这使得用户更容易消化物联网系统提供的信息。此外,可视化使信息更容易理解。 ▲性能 即使有了高效的数据处理,用户界面中呈现的信息量也可能是巨大的。在设计用户界面时必须考虑到这一点,因为否则用户界面的性能可能无法扩展以适应更多的用途。图表是以有意义的方式呈现大量数据的好方法,并且它们还有助于用户界面的性能。此外,如果需要在用户界面中显示一长串事件或消息,通常一次只加载一部分数据来显示(分页)。 总结 我们的“物联网如何工作”系列即将结束,但让我们再举一个涵盖整个过程的例子。 让我们想象一下,我们正在处理零售店的冷链。我们要确保商品保持在合适的温度下,我们还要跟踪运输货物卡车的位置。我们物联网工作流程的步骤(1–4)如下所示。 首先,我们用传感器收集关于温度和位置的数据(步骤1),之后,我们使用网络解决方案将数据发送到云服务平台(步骤2),在云服务平台中,数据通过数据处理转换成有用的信息(步骤3)。最后,信息通过用户界面传递给最终用户(步骤4)。

    时间:2020-06-02 关键词: 物联网 传感器 用户界面 数据处理

  • 数据处理或将成为精准医疗未来趋势

    数据处理或将成为精准医疗未来趋势

    过去的6年是精准医疗蓬勃发展的黄金期。基于新一代基因测序技术(NGS)的基因检测技术为临床分子检测带来了革命性的变化。基因检测正在成为从科研到临床不可缺失的一部分。但目前大多数医院的信息化系统中,由于种种原因,并没有包含完整的基因检测数据。这就使得临床精准诊疗的数据源出现了空缺,而只有将基因数据真正与临床数据融为一体,才能得到真正可用于精准医疗的大数据。 狭义的精准医疗包含了精准检测和精准治疗。作为精准检测的核心组成部分,基因测序的发展使得精准医疗迈出了跨时代的一大步。以肿瘤靶向治疗为例,并不是所有的肿瘤患者对某一款靶向药物都有应答,患者在用药前通常需要接受一次靶向药物伴随诊断,让患者得以在用药前就进行一次初步预判。 当然在这个过程中受益的不仅仅是肿瘤患者,医院的诊疗信息一直是药物研发的重要支撑,基因大数据加持下的医疗数据会使得药企的药物研发变得更加精准。 一方面,临床诊疗方面精准度的提升,终将推动医院的临床决策的质量。越来越多的医院把基因数据纳入临床诊疗的依据。从2010年至今,临床级基因检测出现了爆发式增长,各医疗机构以及院外的第三方检测机构积累了海量的基因数据。基因检测在临床上已经为各类患者提供了真实有效的辅助诊断和用药指导。 但在另一方面,在临床中不乏出现基因检测显示可以使用某靶向药,但服用后却没有任何效果用药有效性问题的案例。基因测序在临床的渗透越深,人们就越发地意识到基因与表型对应关系的复杂性。越来越清晰的认知是,精准检测的组成不应当单单只是基因检测,基于各种临床和基因的医疗信息的整合,必将推动医疗行业更加快速地进入精准医疗时代。 在临床组学与基因组学数据处理的探索队伍中,医基云是独特的存在。在基因信息融入临床诊疗的关键历史节点,医基云建立了临床和基因数据处理的智慧医疗平台,致力于回馈临床诊疗。 进行基因数据与临床数据处理的最终目的是为临床诊疗提供精准支撑。也就是说,不论是基因数据还是临床数据,这些最后的形式并不是独立存在,而是将成为医疗大数据的一部分。在这个多维度的数据中,很大一部分基因数据将来自第三方检测机构,但临床数据一定来自院内。 在多年信息化的推动下,医疗机构的临床系统积累的数据标准化程度比较高。但在现阶段,基因数据来自医院外,系统多种多样,数据处理标准不统一,数据质量各种各样,这就造成了基因数据的多元异构化。 “这使得由基因数据出发来处理临床数据的路径变得非常困难。”何博士告诉动脉网。且不说数据质量问题,目前基因突变与疾病之间的对应关系也并不十分明确,这些因素进一步增加了通过基因数据处理临床表型数据的难度。基于多年的工作经验,在他看来,从医疗机构已有的临床数据平台出发,基于院内数据处理院外的生物样本库和基因数据是比较有效的路径。这也是医基云与其他同类项目的最大的区别。 相比其他数据,基因数据是比较“年轻”的存在,无论是数据规范还是数据质量,都有所欠缺。何博士强调,涉及到这类数据的处理,第一步必须去伪存真。数据规范化处理后,才能进行下一步的应用。“这个工作就好比是修高速公路,做的是基础工作,但需要很大的人力和资源的投入。”他这样比喻。 数据清洗后,下一步就是价值的挖掘与分析。基因与疾病之间存在一定的对应关系,但临床表型并不只接受基因的调控。生活环境、饮食结构、生活习惯、社会经济条件都会影响最终的临床表型。因此,将患者疾病史、日常习惯等数据与基因信息的结合,就有可能对疾病的影响因素有更多的发现。 但各组学间的信息的关系非常复杂,且数据量级庞大。要对这些信息进行进一步的挖掘和分析,是人力几乎不可能完成的任务。因此,要进行大规模的处理,必须依靠人工智能的力量。“这是精准医学发展到这个阶段的需求。”何新军博士表示。在这个过程中,医基云将技术平台与人工智能技术结合起来,依靠深度学习与算法的力量对医疗大数据的深层价值进行挖掘。 医基云的定位是通过深度处理来沉淀临床信息,最终为医疗机构提供支撑,实现精准诊断和治疗。基于对基因和临床数据的深度挖掘,不仅能为医院的诊疗提供更多证据,还能在临床科研中给到研究人员更深度、更真实的科研灵感,帮助医生在临床科研中取得具有更具行业影响力的成果。 同时,医疗大数据也能够支持药厂的药物研发。目前很多靶向药物研发是围绕基因突变的靶标进行的。但正如前文所提,临床上不乏有基因检测结果显示存在突变,但服药无效的案例。深层次的信息挖掘能够对这一现象解释,从而进一步指导临床用药和药企的药物研发,精准医疗的精准程度将进一步得到提升。 “肿瘤靶向治疗离开基因检测是不成立的,靶向治疗需要有伴随诊断。”何博士表示,“院外检测获取的基因信息多局限于样本,在那个基础上做外延非常难。”精准诊断不仅仅包含基因信息,还需要考虑临床表征、疾病史等维度。在医基云的团队中,不仅包含了生物信息、前后端,还有相当一部分医学背景的成员。何博士认为,基因与临床数据的处理是个跨学科工程,只有跨学科背景的团队才能对市场需求和产品有更好的理解。 通过对此前医疗大数据平台的分析,何博士认为医基云的最终产品应该作为一个工具而存在,帮助医院进行数据的清洗等。时间越久,这些信息所释放的能量也就越大。据了解,目前医基云已经完成了底层平台的开发,正式进入部分国内一流医院开始信息处理工作。在可预见的未来里,基因数据融入临床将成为趋势,而基于对行业的理解和在数据挖掘上的优势,医基云已经迈出了一大步。

    时间:2020-06-02 关键词: 智能医疗 数据处理

  • 嵌入式芯片在发展中不断变化

    嵌入式芯片在发展中不断变化

    物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络 。 Ross Sabolcik:AIoT(人工智能+物联网)是一个新兴市场,它推动着物联网(IoT)数据处理从集中式数据中心向网络边缘发展。AIoT是针对需要更低延迟和更即时的实时处理的应用而推出的,在这方面它能比云计算做得更好。AIoT也正在带动边缘计算兴旺发展,边缘计算需要全新品类的物联网路由器、服务器、存储平台和专用的机器对机器(M2M)工作负载加速器,它们可以将非结构化数据转换为结构化元数据,以供实时智能响应系统进行分析、搜索和处理。 Silicon Labs正在通过频率灵活的时钟发生器、可编程振荡器和低歪斜/低抖动时钟缓冲器等先进的时钟解决方案来满足边缘计算和AIoT应用的需求。我们还提供了基于Arm Cortex-M33内核的第2代无线系统级芯片(SoC)和模块,它们具有足够的处理能力和片上存储,可支持边缘节点设备中的许多机器学习应用。 Silicon Labs最近与人工智能(AI)创新公司Cartesiam合作创建了一个预测性维护演示,该演示使用了在Silicon Labs无线SoC上运行的Cartesiam物联网优化算法。这项演示展示了边缘AI可以为电机控制等工业物联网应用带来的强大功能。在演示中,机器学习算法针对风扇运行模式进行训练,当它检测到异常时,会通过蓝牙将警报发送到显示器上。预测性维护通过在系统发生故障之前检测出异常运行状况来避免系统停机。这些算法专门针对Arm Cortex M系列内核设计,是计算能力有限的功耗敏感型边缘应用的理想选择。 AIoT的其他应用还包括电力负荷分解,用户能够从电表测量的总用电量中检测出设备级别的电量使用情况。通过使用AIoT技术测量一段时间内的实时用电情况,可以了解每个负载的“指纹”(指每个负载的用电特点)。了解各个负载用电量的用户更有可能减少其电量使用。声音和语音处理是AIoT的另一大目标应用领域,例如语音助手唤醒词处理、玻璃破碎监测以及其他用于各种安全系统的声音分类等应用。 问:如何让嵌入式设备更安全? Ross Sabolcik:Silicon Labs最近发布了Secure Vault技术,这是一款全新的先进安全功能套件,旨在帮助连网设备制造商应对物联网不断升级的安全威胁和监管要求。Silicon Labs的Wireless Gecko第2代平台通过将一流的安全软件功能与物理不可克隆功能(PUF)硬件技术相结合,充分发挥Secure Vault的优势,大大降低了物联网安全漏洞和知识产权受损的风险。安全子系统(包括专用内核、总线和存储器)与主机处理器分离。这种独特的硬件分离设计将关键功能(例如安全密钥管理和加密)隔离到其各自的功能区域中,从而使整个设备更加安全。 Secure Vault能够利用当今可用于无线物联网SoC的最先进硬件和软件安全保护功能,帮助连网设备制造商开发面向未来的产品。这种硬件和软件功能的强大组合使产品制造商更容易保护其品牌、设计和消费者数据。将安全系统与无线SoC集成在一起可以帮助设计人员简化开发过程,加快产品上市时间,并可以在整个产品生命周期中通过无线(OTA)方式安全地对连网设备进行更新。 问:如何简化IoT终端设备的设计? Ross Sabolcik:Silicon Labs一直在投资创建一个全面的、支持广泛无线协议和应用的物联网平台。该物联网平台包括我们的SoC器件、软件和协议栈。使用我们的众多无线产品(诸如支持低功耗蓝牙、蓝牙mesh、Z-Wave、Zigbee、Thread、OpenThread、Wi-Fi和sub-GHz等协议的产品)之一进行设计的客户,可以从Silicon Labs对通用底层硬件平台超过10年的投资中受益,进而简化开发过程。当在无线标准之间转换时,该通用平台支持客户将其代码的重要部分重用于外围设备和驱动程序。另外,通过提供业界领先的性能、可靠性和互操作性,我们随SoC提供的经现场验证的无线通信协议栈可以进一步简化客户的开发过程。 此外,Silicon Labs持续对开发工具和软件进行投资,以帮助客户能够更快地构建其产品,从而将更多精力放在创新上。这种方法的核心是Simplicity Studio,它是一套旨在帮助开发人员同时简化MCU和无线应用开发的工具。Simplicity Studio包括一个综合性的集成开发环境(IDE),以及可帮助开发人员构建和配置其应用的工具(例如Simplicity Application Builder和Simplicity Configurator)与可帮助调试和优化应用的工具(例如用于能量优化和调试的Energy Profiler与用于网络优化和调试的Network Analyzer)。Simplicity Studio还支持对文档、应用实例和客户支持服务进行轻松访问。 问:如何追上机器学习和边缘AI的创新速度? Ross Sabolcik:Silicon Labs正在通过投资自己内部开发的机器学习知识产权(IP)以及与Cartesiam等边缘AI领域的行业领导者开展合作来推动机器学习和AIoT的创新。(请参考第一个问题的回答中关于Silicon Labs和Cartesiam联合开发机器学习预测性维护演示的例子)。低功耗无线SoC需要优化的处理能力,以确保自己能够在性能和能效之间实现恰到好处的平衡。除了我们的Arm Cortex-M MCU内核和其他AI加速器,我们还为AIoT应用提供了多个关键的处理功能。 问:如何看待8位、16位MCU的机会? Ross Sabolcik:我们认为这个问题应该被重新表述为:我们如何看待8位MCU以及32位MCU和SoC的机会和前景。 8位MCU和32位MCU在物联网领域中都有一席之地。无论是用于简单的成本敏感型物联网设备,还是在更复杂的系统中作为外围处理器,更小且更具成本效益的8位MCU都是理想选择。例如,Silicon Labs的EFM8 8位MCU提供了一种高功能和低成本的独特组合,这使得它们对于那些对成本非常敏感的物联网设备极具吸引力。8位MCU的目标应用还包括通常运行专有无线协议的简单无线设备。 具有一定复杂度的物联网连接设备或运行低功耗蓝牙、Zigbee、Thread和专有协议的设备通常需要性能更高的32位MCU或无线MCU。32位MCU对于要求更高性能的应用是必要的,而且在信号处理方面它们相比8位MCU具有关键的优势。我们认为16位MCU在嵌入式市场中正逐渐失去阵地,因为它们既不像8位MCU那样具有成本效益,也不能像32位MCU那样处理诸如AIoT等复杂应用。 问:RISC-V MCU的机会和前景如何? Ross Sabolcik:我们认为RISC-V对于半导体技术而言是一种重要的、颠覆性的技术,我们正在评估它在未来无线SoC设计中的潜在应用。Silicon Labs是RISC-V基金会(RISC-V Foundation)的成员,也是OpenHW集团(OpenHW Group)的主要发起者和创始成员,OpenHW集团正在推动基于RISC-V的CORE-V系列开源内核以及相关IP、工具和软件的开发。我们计划在未来的集成电路(IC)产品中实施CORE-V技术。RISC-V适用于多核设备,包括异构设计,即设备包含多个基于不同指令集架构(ISA)的内核。例如,物联网SoC可以集成一个Arm Cortex-M33内核作为主处理器以运行客户的应用,同时具有一个或多个基于RISC-V的内核来处理诸如安全加速或无线电调度等固定功能。 许多硬件开发人员被RISC-V吸引,因为它是一种开源指令集架构,没有授权费用。然而,就另一层意义而言,它并不是完全“免费”的,芯片制造商仍要对软件和工具链进行投资,以将基于RISC-V的器件推向市场,并确保在商业上获得成功。RISC-V会打破Arm的市场主导地位吗?可能不会很快。Arm是一家久负盛名的IP供应商,为大部分器件提供支持,这些器件每年被用于大量的移动、嵌入式、汽车和物联网应用。与RISC-V不同,Arm由一个成熟的、广泛的、不断成长的软件和工具生态系统提供支持。 总之,RISC-V的出现是一种健康且必要的发展。竞争对整个行业是有益的,并将推动技术创新及实现新的业务模式。Arm当然也明白这一点,因此在响应客户需求和开源架构带来的竞争性挑战时,它不会停滞不前。 问:当前的疫情对您所关注的行业有何影响,机会是什么? Ross Sabolcik:我们的员工及其家人的健康和安全对我们是非常重要的。由于冠状病毒正在影响世界各地许多人的日常生活,所以我们和国际社会一样也在对此进行关注。我们每天都在密切注视事态的发展,并遵循卫生部门和政府当局的指导。 问:未来芯片的竞争焦点将会从单纯的产品性能提升,转移到面向应用的平台化上吗?贵公司的策略是什么? Ross Sabolcik:正如前面的回答所述,Silicon Labs一直在投资创建一个全面的、支持广泛无线协议和应用的物联网平台。这个Wireless Gecko物联网平台包括我们的SoC器件、软件和协议栈。我们的第1代Wireless Gecko解决方案是一个基于多协议无线SoC的通用平台,同时带有连接协议栈和软件工具,可以满足各种智能家居、商业和工业应用的需求。我们的新一代Wireless Gecko解决方案称为Wireless Gecko第2代平台,是一个针对应用进行了优化的平台,包括专门针对特定应用设计的SoC和无线模块。例如,我们的新型EFR32BG22 SoC的目标应用是低功耗蓝牙、蓝牙mesh和蓝牙定位服务应用。我们最近还推出了专为Zigbee Green Power应用设计的EFR32MG22 SoC,以及面向电子货架标签(ESL)和其他需要2.4 GHz专有协议的功耗敏感型商业和工业应用的EFR32FG22 SoC。

    时间:2020-04-13 关键词: 物联网 aiot 数据处理

  • 智能汽车市场会火爆起来吗?

    智能汽车市场会火爆起来吗?

    智能汽车一直以来被视为是如智能手机颠覆手机行业一样要革汽车产业的命,可是十多年过去了,像iPhone手机一样在颠覆性和市场方面双丰收的智能汽车似乎还未出现。特斯拉一直被誉为汽车界的苹果,可是它的市场规模只是全球汽车市场的冰山一角,所占份额微乎其微。 2019年全球汽车销量为9030万辆,特斯拉2019年的全球销量为36.75 万辆,其全球份额为0.4%。从这个角度来看,被视为最像智能汽车的特斯拉,还只是具有圈层属性的产品,并未被大众化,所以无从谈起引领潮流。那么,什么样的智能汽车才能够彻底颠覆汽车行业,让整个汽车行业迈进智能车时代。实现以上愿景的大前提是,如今的汽车哪里不像智能汽车了?智能汽车的核心竞争力在哪?2月24日,发改委等11部委印发了《智能汽车创新发展战略》,以官方的身份为智能汽车“盖章”表决心:到2025年,中国标准智能汽车的技术创新、产业生态、基础设施、法规标准、产品监管和网络安全体系基本形成。愿景是美好的,可现实却是不太尽如人意。顺着这个思路,我们来捋一捋智能汽车的几大要素。 新架构 去年12月,日本经济新闻网发布了一份特斯拉Model 3和Model S的拆解报告,业内人士普遍认为特斯拉的电子电气架构领先竞争对手,丰田工程师更是表示,“特斯拉从技术上领先6年,我们做不到。”特斯拉电子电气架构领先的原因在于,随着智能、网联、电动、自动化时代的发展,传统电子电气架构在数据处理、数据传输等方面已无法满足要求。这就是特斯拉领先竞争对手六年的原因。日本经济新闻网拆解2015 款 Model S时发现,这款车的ECU数量在15个以上。尽管数量比其他公司少,但使用的电子电气架构仍然是分布式架构。然而到了Model 3时代,特斯拉的电子电气架构就变成了集中式。Model S和Model 3仅隔三年时间,特斯拉便完成了电子电气架构从一个时代跨进另一个时代的壮举。最显著的变化是,Model 3的架构上已经实现了以太网传输,Model 3的整车线束长度已经比Model S缩短了一半,达到了1.5公里,Model Y则更甚,仅为100米。 博世在2017年公布的战略图将整车电子电气架构分为三大阶段:分布式电子电气架构、域集中电子电气架构、集中式电气电气架构。目前传统汽车基本都处于第一阶段,特斯拉Model 3处于第三阶段。可见,特斯拉的电子电气架构已经领先了竞争对手两个时代。目前车企都在朝着集中式电子电气架构发展。大众汽车的计划是,将一辆汽车的ECU数量从70个削减到3-5个HPC。去年5月,通用汽车发布了新一代电子电气架构,新架构不仅支持OTA,数据传输速度也提升至4.5 TB/小时,比原有架构高出5倍。这套新架构也通过减少ECU的数量,向着集中式的方向发展。华人运通也在电子电气架构领域拥有着前瞻性布局,其高合HiPhi 1甚至搭载了一套专属的HOA开放式电子电气架构。全车的决策-规划-控制电子元器件主要被集中的6个计算平台代替,已经实现车载电脑和区域导向架构的集中式控制。该架构由1Gbps高速以太网连接,满足了智能汽车的海量数据处理和高速数据传输的需求。高合HiPhi 1有望实现全域智能,真正实现让车学会思考,并创造更丰富的场景。可见,更加彻底的智能汽车需要在电子电器架构方面持续进化。 新模式 智能手机普及之后,对行业产生的最大价值是培育出了稳定的商业市场,海量的APP开发生态和关乎着人们衣、食、住、行的平台服务芸芸诞生。参考智能手机,智能汽车也需要采纳新的模式去探索无法想象的商业价值。比如,目前的出行需要依靠滴滴等平台来叫车,还要依赖携程、去哪儿网等平台来订酒店。但自动驾驶时代完全可以不需要这些平台。当我们达到一个陌生地方后,可以通过导航平台叫一辆无人驾驶汽车,只要告诉告诉或输入目的地,这辆车就能通过大数据平台分析你平时的住宿喜好,将你载到令人满意的酒店。吃饭、购物、旅游等场景甚至都能通过无人驾驶汽车实现。 这才是智能汽车变成无人驾驶汽车后真正的价值所在。当前,智能汽车的商业价值只停留在车企自推APP的阶段,也只能实现简单的远程控制和一些社交功能。汽车成为人们真正所需的智能化产品,至少在生态开发者体系方面还有很多功课要做。目前来看,具有开放平台的智能玩家并不多,百度Apollo智能车联开放平台和华人运通的全新电子电气架构具有开放功能,能容纳成千上万个开发者,共同致力于将汽车变得更智能这个终极目标。 总体来看,当前市面上同时具备新体验、新架构、新模式的汽车并未出现,特斯拉在新架构领域比较突出,而在新体验方面仍存在质疑声,新模式则正在探索中。传统车企则只擅长于其中的某一领域。能同时符合智能汽车三新特征的汽车,华人运通旗下还未上市的高合HiPhi 1或许能让人眼前一亮。整车级“千人千乘(shèng)”的个性化体验、专属HOA开放式电子电气架构,以及具备6套独立双冗余系统的自动驾驶硬件,或可使高合HiPhi 1能代表未来智能汽车的雏形,华人运通或许也能因此脱颖而出。 新体验 现阶段所谓的智能汽车,只要车载系统能联网就叫作智能汽车,而且多数车载系统大同小异,千机一面。而搭载了简单的倒车辅助、车道偏离这些简单的辅助驾驶功能,都宣称达到了L2级自动驾驶能力。 这样的智能汽车,是无法带给消费者功能机转向智能机时的震撼体验的。消费者对于智能汽车的体验需求在于,驾驶舱内足够智能,触摸屏的反馈要丝滑、导航要精准、语音手势等交互要顺畅,类似于目前还在概念阶段的智能座舱;驾驶舱外,消费者的智能化体验需求在于,自动驾驶配置不再是鸡肋,它能给用户从心理层面带来方便和安心。总结一句话,用户想在智能汽车得到的终极体验是:在车里的喜怒哀乐、在车里的各种需求都能得到及时准确的回应,让车子成为用户的贴心小棉袄。 目前,朝着这个方面努力的车企其实也不在少数,传统车企纷纷构想着在汽车内部的美好图景。比如奥迪就在CES 2019上展出了一系列关于用户体验的新技术。比如,为了解决乘客的动态体验,奥迪开发了一套“沉浸式车载娱乐系统”来解决“让车动起来” 的问题。在车辆保持静止的情况下,车身需要配合驾乘人员看到的画面进行主动摇摆移动。并且,座椅振动、背景声音和车内灯光也将更主动地营造一种观影氛围,以使乘客达到更加身临其境般感觉。效果类似于在电影院收看4D电影的场景。 奥迪在CES上展出的车内乘客娱乐体验系统,都具有把无聊旅程“开成”娱乐Party的能力。同时也暗藏了在智能汽车时代,汽车制造商对于用户体验的理解。奔驰、大众、宝马、丰田等全球品牌无不在朝着这一方向发展。造车新势力中的华人运通,在智能汽车的新体验方面也有一些心得。比如,华人运通将要推出的新车高合HiPhi 1,其内饰采用了9屏联动的交互设计,单就屏幕的数量,就具备了沉浸式体验的条件。更别说还有可编程智能交互投影大灯、ISD智能交互显示与侧面光毯等智能化配置了。 智能座舱所带来的体验只是身心愉悦,然而汽车作为在马路上跑的“活物”,能让用户安心踏实地坐在里面才是重中之重。这个时候,自动驾驶技术可能是智能汽车在新体验方面最强的武器了。特斯拉一直以来是自动驾驶领域的代表,然而强如特斯拉也没有做到让用户百分百安心,甚至有人因此指责特斯拉。特斯拉之所以拥有众多追捧者,某些原因在于其Autopilot的先进迭代性。 特斯拉Autopilot会不定时增添新功能。新功能验证初期,特斯拉会首先向一部分用户开放,从他们那里收集大量数据完善新功能的不足,然后再一步步对所有用户开放。也就是说,特斯拉将不成熟的自动驾驶技术应用到量产车上,将车主作为收集数据的小白鼠。这种做法具有鲜明的两面性,特斯拉Autopilot虽然领先于所有的汽车厂商和科技公司,但代价是系统不完善带来的安全隐患,终酿成人祸。 美国国家运输安全委员会(NTSB)最近认定的两起特斯拉撞车事故中,证据显示Autopilot系统和司机都有责任。还有一项海外调查数据显示,仅在2019年,就有50多人死于特斯拉的安全事故中。可见,特斯拉Autopilot并不能让人百分百放心驾驶。特斯拉之外,另外一种自动驾驶路径是不断地验证、路试。传统车企大多数是走的这种路数,靠着数量有限的测试车辆一点点跑数据,与特斯拉的数据相比,不管是从量上,还是从效果上,都不在一个量级。而且所耗人力、物力、财力不可估量。 特斯拉和传统车企所采用的自动驾驶策略在现阶段都存在着现实的问题,都无法为用户带来放心踏实的驾驶体验。那么,如果车端和路端同时实现智能化,困扰着特斯拉和传统车企的问题或可迎刃而解。这就是自动驾驶的另一种策略——车路协同。 《智能汽车创新发展战略》也指出,基于智能交通、智慧城市协同发展的中国智能汽车产业才是未来发展方向。车路协同技术的出现,或为自动驾驶技术尽早商业化提供了可能。一方面,路端的智能化设施可代替一部分车端的技术,将昂贵的成本降下来;另一方面,车路协同技术可根治单车智能存在的感知障碍、距离障碍,避免类似特斯拉、Uber自动驾驶致死事故。 车路协同领域涉及的玩家种类众多,有类似华为、中国移动、中国联通的信息通信技术提供商,有BBA等互联网玩家,有博世、大陆等零部件供应商,还有华人运通等汽车企业,甚至政府部门也是其中的重要参与者。不过,众多玩家在车路协同这条赛道上参与的方式不尽相同,最终的诉求也不同。 比如,整车企业与其它领域的玩家跨界合作,就希望能从新认识自动驾驶。今年年初,沃尔沃汽车与中国联通就基于5G下一代移动网络技术,联手推动V2X(车对外界的信息交换)车路协同技术。沃尔沃希望引入V2X技术,以做好在未来随时和智能交通系统对接的准备,借此提升自动驾驶的安全性。 华人运通则走的另外一条路径。丁磊在2019年年底上海张江“智城”项目落地时对媒体表示,华人运通既不造路,也不建城,而是打造相关联的业务,成为智慧城市、智捷交通,以及智能汽车整个系统的中心枢纽。可见,华人运通已经走出造车公司的思维局限,提供基于智能汽车、智捷交通、智慧城市协同发展的系统性出行解决方案。目前,华人运通“路”和“城”这两部分业务已经有项目实现收入。以智能座舱为中心的个性化体验和车路协同技术带来的安心驾驶,或许能为智能汽车带来全新体验。

    时间:2020-03-26 关键词: 智能汽车 电子电气架构 数据处理

  • 曙光计算大脑支撑的“中国天眼”通过国家验收正式开放运行

    1月11日,“中国天眼”——全球最大的500米口径球面射电望远镜(简称FAST)通过国家验收正式开放运行。作为目前国际上口径最大的单天线望远镜,FAST的综合性能和灵敏度比现有国际同类望远镜高数倍,可以进行大天区、高精度的天文观测。从2017年10月FAST首次发现2颗脉冲星,到今年1月11日召开的国家验收会上公布已发现102颗脉冲星,FAST过去两年多发现的脉冲星已超过同期欧美多个脉冲星搜索团队发现数量的总和。FAST观天的背后,是中科曙光为其打造的计算“大脑”。中科曙光为FAST提供了计算的大脑,有效满足了FAST的计算、存储、数据中心建设等需求。中科曙光为FAST提供了数据处理、软件管理、计算环境支撑、安全防护等功能于一身的综合解决方案。曙光提供一站式的专业服务,融合多年来的经验,能够有力的支撑FAST对数据接收、数据处理的计算需求。曙光还将针对FAST的需求特点继续在数据的高效存储、数据处理的性能优化、系统的功耗控制和快速交付等方面加强研发,以满足FAST运行和相关科学研究需求。除了FAST,中科曙光在天文领域,和中国科学院国家天文台也有深入合作。2018年3月,双方签署了天文海量数据处理技术联合实验室协议。依据协议,双方将充分发挥技术、资金、人才、平台和政策等优势,联合打造适合天文数据海量存储的先进平台。中科曙光充分发挥在计算、大数据、存储领域的技术积累和研发优势,推动我国天文海量数据处理技术的快速发展。更多曙光相关资讯,欢迎搜索微信公众号“中科曙光/sugoncn”,关注曙光公司官方微信。

    时间:2020-01-14 关键词: fast 中国天眼 数据处理

  • 深圳市政务大数据应用和数据安全专家研讨会

    深圳市政务大数据应用和数据安全专家研讨会

     当前社会整体仍处于体制转轨、经济转型、心态转变的关键期,政府治理面临新挑战、新情况,大数据思维和手段已成为政府治理手段现代化的最重要、最有力的推手,期待未来政务大数据治理的创新与发展,能进一步推动政务服务能力升级,共创大数据提升政府治理能力的美好明天。近日,“深圳市政务大数据应用和数据安全专家研讨会”在深圳大鹏新区顺利召开。本次会议由深圳市大鹏新区政务服务数据管理局主办、深圳市智华大数据研究中心协办。大鹏新区政务服务数据管理局局长冯军、副局长陈志浩及各区政务服务数据管理局相关人员、政务大数据领域专家出席。 大鹏新区政务服务数据管理局局长冯军在会上致辞,介绍了本次研讨会的相关背景和本次研讨会的主题内容,并预祝研讨会圆满成功。副局长陈志浩就大鹏政务大数据基础设施建设、应用及问题作了分析介绍。 政务大数据的专家做了《市区联动网络安全态势感知一体化平台的探索和思考》的主题演讲,分析了数据处理、归集分类,网络安全及市区联动等问题的发现和探索,提出分类分级是数据安全的关键和前提。另外两位政务大数据专家顾问分别作了《政务大数据建设思考和探索》和《大数据安全护航数字化转型》的主题演讲,专家顾问结合实际案例,就政务数据中的主题库、专题库等建设实践、数据安全技术和解决方案等问题上进行了介绍。 本次会议的成功召开,得到了与会嘉宾及专家顾问的高度赞扬和一致认可。研讨会由大鹏新区政务服务数据管理局副局长陈志浩主持,共同就未来海量政府民生大数据如何应用、如何对政务服务数据局赋能产生价值的问题,围绕数据应用和数据安全进行演讲,旨在各位大数据专家就数据经验转化成适合大鹏新区对政务服务管理的实例。与会嘉宾分别就政务大数据应用议题、各自工作领域的情况和问题、个人对有关问题的看法等进行了热烈的交流和讨论。

    时间:2019-11-08 关键词: 大数据 数据治理 数据处理

  • 大数据时代的“知”与“寻”

    大数据时代的“知”与“寻”

     现如今,已经正式迈入大数据时代。互联网将我们所有人的生活都联系到一起,而数据便落实在我们生活中的点点滴滴。每一个行业都会接触到数据,使其俨然成为了一个必不可少的生产因素。数据在人们的挖掘和运用中,将迎来盈余浪潮的到来,这就意味着会出现新的生产率。随着大数据时代的到来,每个企业都在做数据处理,而呈现在人们面前则是赤裸裸的真相,在真相面前,你还不打算学会吗?企业会给内部安排三种工作:整合企业数据;对数据进行探索和分析;切合实际的实施行动; 越来越多的企业更加关注大数据给自身带来的机会和摩擦,要么创造价值,要么被大数据驱动所淘汰。在对于海量数据面前,体量大、速度快、多样化、真实性的大数据来定义这个信息爆炸的时代。 如今云计算、物联网、AI人工智能的迅速发展,也使得这个领域有了一个大契机。对于企业来说,在这个时代里最大的颠覆就在于思维方式的转变。而大数据时代现如今已经使得许多传统行业所颠覆,更多的时候则是要重新定义思维方式。大数据是什么,言简意赅:发出一条新微博的展现量会达到20万,而这其中的浏览量会突破100万……在这些巨大的数字中,究竟藏着些什么?我们所收集和存储的大量数据,通常也只是一小部分,数据更代表着新的货币,藏着许多商机和价值。   基于数据分析之下的企业为何需要转变?这本身就取决于:事实驱动的决策思维模式。很显然,大数据之所以定义为“大”其原因更多的在于应用范围广,变成具有丰富价值的资产。应用范围中,最为典型的一个例子就是智能推荐。 如果你喜欢刷抖音、喜欢网购,那么这些平台都会根据你的个人喜好给你进行智能推荐。在方便你生活方方面面的同时,进行你所使用app的各种日常数据做运算。但也由此可见,大数据时代,我们的隐私是无法受到保障的。每年支付宝都会推送当年的年度账单,在被各种朋友圈刷屏中,我们是不是被支付宝所套取和用户数据。 大数据已经成为了和人们的生活紧紧联系的科技,我们也必须保证自己的隐私得到保障。这一年,我们似乎对大数据的出现表示平淡许多,在帮助下确实能提供生活的便利。但是大数据为我们提供的仅仅只是参考答案,只是暂时的,并不能完全的当作是最终答案。我想,更好的答案应该是要留在未来,等着我们慢慢摸索。 大数据的使用出现在了公众面前,数据的过度开发也成为了一个严重的问题。网购平台通过大数据算法给你智能推荐出商品,这就表明着在用你的数据来宰你。智能科技下的21世纪,我们国家在互联网上的普及率已经高达59.6%,在这么高的用户群体中,科技必然会在驱使下成为一把双刃剑。切实如何保护用户的个人隐私,首先是法律维权,去年8月31日发布的《电子商务法》。

    时间:2019-11-08 关键词: 互联网 大数据 大数据时代 数据处理

  • “边缘计算”一点都不“边缘”,你听说过吗?

    那么,到底什么是“边缘计算”? 顾名思义,边缘计算强调“边缘”,它将数据的处理、应用程序的运行,甚至一些功能服务的实现由中心服务器下放到网络边缘的节点上。如果说云计算是集中式大数据处理,那么,边缘计算可以理解为边缘式大数据处理——数据不用再传到遥远的云端,在边缘侧就能解决。 也许,你对“云计算”这个词并不陌生,但你听说过“边缘计算”吗? 业内专家表示,随着联网设备越来越多以及5G时代渐行渐近,边缘计算的发展势头也会日益强劲,或成为日后推动消费信贷科技创新的新引擎。 “这样的数据处理,有很多先天优势。”马上消费金融首席数据决策科学家董骝焕表示,“首先,边缘计算减少了中间传输的过程,有更实时、更快速的数据处理能力。其次,由于与云端服务器的数据交换不多,边缘计算的网络带宽需求更低。”除了效率之外,更重要的是,边缘计算让数据隐私保护变得更具操作性。由于数据收集和计算都是基于本地,不用再被传到云端,一些重要信息尤其是敏感信息,可以不经过网络传输,有效解决了用户隐私泄露和数据安全问题。 事实上,虽然起了一个“边缘”的名字,但在应用方面,“边缘计算”一点都不“边缘”,反而有着十分广阔的前景。   比如在无人驾驶领域,无人汽车需要在高速移动状态下对周围环境做出快速反应。在此情况下,响应时间成为该项技术极其重要的指标。只有将时延控制在10毫秒之内,才有可能成功实现无人驾驶。要达到这种效率,就必须借助边缘计算。 再比如在农业领域,当前应用无人机遥感监测技术跟踪农田病虫害进展情况已较为普遍。而如果在无人机上部署内置检测模型和作业模型,就有可能实现边缘计算,让植保作业的执行更具效率。 除了这些场景,边缘计算还可以应用在室内定位、视频优化、AR(增强现实)、车联网、智能制造等多个领域,给科技创新提供了更多可能。 值得注意的是,尽管目前边缘计算市场仍处在初期发展阶段,但已有一些企业迈入了技术应用的实质性推进阶段。比如,在消费金融行业,当云计算仍是业内技术创新的重要法宝之一时,马上消费金融公司已经将科技创新的触角伸入边缘计算领域。 董骝焕提到,获客、风控等方法论、模型和数据采集体系技术现在非常成熟,但是逐步会呈现出一个问题——消费者保护和隐私权保护不够。“我们利用深度学习和特征提取算法,通过边缘计算和客户数据脱敏技术,在实现客户隐私保护的同时,保持对营销和风险的精准把控。” 经济日报记者在采访中了解到,马上消费金融目前已经开发出边缘计算的智能算法库。该算法库包含先进且轻量的机器学习以及深度学习的算法,能够对结构化数据和非结构化数据进行快速处理。基于此算法库,企业开发出一个终端特征提取框架,就可以直接在终端对数据进行清洗、预处理、聚合、筛选,极大地释放了服务端计算压力,节省了用户带宽,是边缘计算在风控领域的重大创新和应用。 更重要的是,在数据安全日益受到重视的当下,马上消费金融加大了边缘计算的研发力度,使终端提取数据无需再传输到云端加工,降低了终端敏感数据隐私泄露的风险,实现了数据的“阅后即焚”,极大保护了用户隐私数据。 全球最具权威的IT研究与顾问咨询公司Gartner曾在去年将边缘计算列为2019年十大战略技术之一,更有科技领域业内人士表示,边缘计算将成为继云计算、AI之后的又一科技浪潮,将引领IT计算行业发生又一次重大变革。

    时间:2019-10-07 关键词: 云计算 数据处理

  • 从云端到边缘,数据处理面临哪些问题?

    从云端到边缘,数据处理面临哪些问题?

     如今物联网的应用越来越广泛,但需要具有企业的视角。这意味着垂直行业应用程序、开发生态系统、产品设计、硬件、部署等。 虽然这不是什么秘密,但物联网设备数量的急剧增加将改变人们生活、工作和与技术互动的方式。预测表明,到2025年,全球将有多达750亿台智能物联网设备,这将使人们进入超级连接的新时代。这些物联网设备不仅可以收集数据,还可以直接在最接近边缘的用户的产品和服务上生成和处理信息。边缘计算的功能和计算能力的提高已经改变了企业设计和制造产品的方式,从智能建筑现场的视频监控到石油钻机维护。以下将介绍如何从云端到边缘的数据处理,从而对可靠性、隐私和延迟产生积极影响。 边缘计算究竟是什么? 边缘计算是指在中央数据中心之外执行并且更接近最终用户的应用程序、服务和处理的场所。“更接近”的定义属于一个范围,在很大程度上取决于所使用的网络技术、应用程序特性和所需的最终用户体验。 虽然边缘应用程序不需要与云计算平台通信,但它们仍可能与服务器和基于全球互联网的应用程序进行交互。许多最常见的边缘设备都拥有物理传感器,例如温度、灯光、音箱,并且在物理世界中更靠近这些传感器的移动计算能力是有意义的。例如,当用户要求其灯光调暗时,真的需要依靠云计算进行处理吗?由于立即可以获得收集和处理能力,用户可以显著减少必须移动和存储在云中的数据量,从而节省了流程中的时间和费用。 风险很高 随着边缘计算将改变人们的生活和工作方式,企业必须了解其业务模式、客户体验、员工的利害关系。边缘计算影响三个方面:可靠性、隐私、延迟。每个方面都对企业和消费者有深远的影响。此外,边缘计算和人工智能的融合为企业带来新的机遇。 可靠性 推动边缘计算应用的主要动力是在难以到达的环境中需要强大而可靠的技术。许多工业企业和服务商根本不能依赖互联网连接来完成任务关键型应用。可穿戴设备还必须具有足够的弹性,能够在没有4G网络的情况下正常工作。对于这些用例以及更多的用例来说,离线的可靠性是至关重要的。 隐私性 在经常发生数据泄露的世界中,隐私数据既是潜在的资产,也是企业面临的风险。消费者已经变得更加谨慎。而且,主要依赖云计算技术的企业已经仔细检查他们对用户的了解以及他们如何处理这些信息。 边缘计算通过将处理和收集的数据引入到生成数据的环境中,有助于减轻其中的一些问题。例如,当今市场上领先的语音助理系统地集中、存储、学习终端用户与他们之间的每一次交互。他们的记录包括原始音频数据和所有相关算法的输出,附在助理采取的所有行动的日志上。最新的研究还表明,基于有关最终用户的品味、联系方式、习惯等其他信息,交互将变得更加顺畅和更具相关性。 这为依赖云计算的语音公司带来了一个矛盾的问题,为了使人工智能语音助理具有相关性和实用性,他们必须了解更多关于用户的个人信息。将处理能力转移到边缘是在不损害隐私的情况下提供相同级别性能的唯一方法。 延迟性 用最简单的术语来说,延迟是指动作和响应之间的时间差。如果你在触摸智能手机屏幕上的图标之后,发现打开应用程序所需的时间有些长,那么可能就遇到延迟。然而,对于许多工业用例来说,延迟存在比糟糕的用户体验和让用户等待更大的风险。对于制造企业来说,关键任务系统无法承受向非现场云计算数据库发送信息的延迟。延迟之后可能造成物理损坏,而切断机器的电源可能为时已晚。 当在边缘进行计算时,延迟不是问题。客户和工作人员无需等待数据发送到云计算服务器或从云计算服务器发送数据。他们的维护报告、发货清单或错误日志会实时记录和跟踪。

    时间:2019-07-30 关键词: 云端 大数据 边缘 数据处理

  • 基于TMS320F206的电网数据处理板设计

    型号:TMS320F206关键字:TMS320F206,MAX125,16C552简介:介绍了基于DSP芯片TMS320F206的电网采样处理板的软、硬件设计方法,对硬件各模块电路的工作原理作了重点的讨论,同时给出了该电网数据处理板的主程序和中断处理程序流程图。下载:点击下载

    时间:2019-04-01 关键词: 电网 嵌入式处理器 数据处理

  • 基于FPGA的高速数据处理系统设计

    基于FPGA的高速数据处理系统设计

    随着光纤传感技术的发展,光纤传感器已成功应用于周界入侵探测等安全防范领域。目前,已经应用于光纤微扰动传感器或相似系统的数据处理方案比较多,有DSP、FPGA、FPGA+DSP、labview等多种方案。但是目前的解决方案大多是对信号进行前期处理,实现PGC解调或者是滤波等功能,仅仅对实验方案进行验证,扰动判别和定位等工作需要上传到PC机上进行。 然而,PC机不是专用的数据处理器,与专用数据处理器相比,PC机体积大、功耗大、处理速度慢。而且在通常的实时信号处理中,专业处理芯片外围电路比较少,一般来说一块电路板就可以完成所需功能,功耗大大减少,而且相比PC机庞大的体积,可以使系统更紧凑,节约空间。FPGA由于其高度的并行和灵活的配置特性,以高速、实时、低成本、高灵活性的优点应用于数字信号处理领域。本文叙述了采用FPGA实现光纤微扰动传感器的数据处理的具体方案,提供了一种高速实时数据处理方法。本系统的主要工作是通过基于FPGA的嵌入式系统,实现数据采集、数据存储、LCD显示、USB数据传输和数据处理,完成光纤微扰动传感的扰动识别和定位功能。1 系统结构和硬件设计1.1 系统结构 光纤微扰动传感器采用马赫-泽德/马赫-泽德(M-Z/M-Z)混合干涉仪方案作为传感方案。而马赫-泽德/马赫-泽德混合干涉仪方案是通过测量两路光信号到达测量端的时间差来确定扰动位置的一种方案。根据传感方案的特点,本系统应该先将所得的光信号转换为数字化信号,然后再对信号进行处理,所以根据系统的特点,系统结构图如图1所示。 从结构框图中可以看出系统由以数据处理核心,光电转换、模数转换、LCD显示、数据存储和USB通信等外围功能模块构造而成。由于光纤微扰动传感器的传感采用的是光纤,所以首先需要将信号经过光电转换和A/D转换,将信号转换为适于FPGA处理的数字信号。然后,在FP-GA中进行数据处理,判断接收信号是否是入侵行为。如果存在入侵行为,则同时将采集到的信号存入存储器,并在LCD上显示入侵位置;如果没有入侵行为,则在LED上显示正常,采集到的数据释放。USB通信模块只在系统和PC机相连的时候,将存储器中数据上传到PC机中。1.2 系统硬件设计 马赫-泽德/马赫-泽德混合干涉仪方案将扰动位置求解问题就转化为测量两路信号到达测量端的时间差,因此求扰动点的位置的问题转换为求两路信号的时间延迟估计问题。对于时间延迟估计问题,目前大多采用相关检测方法计算。系统采用相关检测算法,需要进行大量互相关计算。互相关计算的具体实现是由大量的乘法和加法组成的,所以对数据处理速度要求很高。计算量很大,不过比较适合并行计算。系统的数据处理部分采用的是XC4VSX25,Virtex-4 SX系列是Virtex-4平台中专门为了高性能数字信号处理(DSP)应用解决方案而设计的。XC4-VSX25中含有128个XtremeDSPSlice,而每个XtremeDSPTMSlice包含1个18×18位带补数功能的有符号乘法器、加法器逻辑和1个48位累加器。每个乘法器或累加器都能独立使用。 XC4VSX25中含有多个XtremeDSP Slice,而且FPGA中的XtremeDSP Slice可通过IP核的形式方便地调用。同时XtremeDSP Slice中每个乘法器或累加器都能独立使用,在XC4VSX25中可方便地将乘法器和累加器组合,构成所需要的数据处理结构,所以采用XC4VSX25为系统的数据处理器。 光电转换部分采用PINFET,是目前比较通用的光电转换器件。模数转换模块采用的是12位双通道差分输入SAR型AD7356,结构简单实用。大容量存储模块采用SUMSUNG公司具有200 μs的页写速度的1 GB容量K9K8G08UOM型Flash,可以满足系统的实时性,并能够存储较长时间的扰动信号。LCD模块采用的是3.3 V单电源供电的320x240大屏幕点阵液晶ZXM320240E1,有足够的空间将多路的情况同时显示在屏幕上,而且由于系统选用FPGA的管脚电压为3.3V,可以避免电平转换,电路简洁。USB通信模块采用的是集成了8051单片机的CY7C68013A型USB控制器。 其中A/D转换部分由于系统要求16路.每路12位1~5 M采样速率,并且由于系统的扰动定位算法采用相关检测法,是对时间延迟进行检测,因此需要在A/D转换的过程尽量减小因为转换而带来的时间延迟误差。选用12位双通道差分输入SAR型AD7356,该A/D为双通道型,所以两路信号的转换是同时进行,减小了因转换带来的时间延迟。而且AD7356的采样频率由输入时钟信号决定,因此可以很方便的改变系统的采样频率,满足系统1~5 M的采样速率要求。 另外,比较各A/D转换器的复杂程度发现多通道(4路或以上)A/D由于其设计的多功能性,导致结构复杂,使用比较繁琐,而AD7356采用16引脚的TSSOP封装,外围电路简单。另外该A/D采用单2.5 V供电,可与FPGA共用电源,使系统的供电系统简洁。而高速A/D转换器的输入是差分式,如图2所示,使用AD8138单端至差分转换驱动AD7357的差分输入。 系统中有模拟地和数字地之分,同时A/D转换器由于其特殊性,处于模拟地和数字地之间,所以对于AD7357的管脚连接应注意。AD7357的REFA和REFB管脚需要通过10μF的退耦电容连接到REFGND管脚,而REFGND管脚则需要连接到AGND管脚。而A/D转换器要求AGND和DGND之间的电平相差不能超过0.3 V,所以需要将AGND和DGND连接起来。为了避免模拟电路和数字电路之间的干扰,一般情况需要对地分割,但是本系统有多个A/D转换器,所以使用统一地,通过对器件合理摆放来减小模拟和数字电路间的干扰。2 数据处理设计2.1 数据处理结构 本系统的数据处理结构如图3所示,首先是采集一定长度的信号存储到双口RAM中,然后经过扰动识别决定是否需要进行扰动定位计算。由于扰动识别和定位计算需要将采集到的数据保存到数据处理完毕,所以FPGA中的双口RAM要有足够的空间,在数据处理的同时继续存储采集到的数据。而在工作时,由于采用了高速的AD7356,最高采样速率可以达到5 M/s,所以要求扰动识别和定位计算速度足够快。 扰动识别部分由于采用的是平方后积分并与阈值比较的模式,属于顺序计算,耗时不多,数据处理耗时的主要部分是扰动定位计算。扰动定位计算采用的是相关计算,其所消耗的时间在计算速度固定时,由数据长度L和相关长度(移位次数)n决定。进行一次相关计算的计算量为Ln次乘法和(L-1)n次加法。 在FPGA数据处理方面,当资源成本为主要制约时,根据速度要求,采用串行结构实现或DA结构实现;当速度成为主要制约时,则根据资源成本因素,采用并行结构实现或DA结构实现。而DA结构主要是通过对资源合理的利用来减小资源的空闲时间,从而提高系统的速度。但是对于本系统,在计算过程中各资源几乎是在全速运行,DA结构并不能提高系统的速度,所以需通过并行结构(图4)来提高系统运行速度。通过图4可以看出,如果采用串行结构,整个相关计算由1个XtremeDSP Slice(或者1个单核处理器)完成,每完成一次互相关运算,整个数据段移位一次,共移位n次。因此为了及时处理采集到的数据,串行结构的计算速度至少是采集速度的n倍(根据传感长度不同,n最大可达2 500)。而AD7356最高采样速率可以达到5 M/s,因此计算速度过快,单个XtremeDSP Slice不可能完成。而如果采用s个XtremeDSP Slice并行结构,则一次互相关计算相当于串行结构时的s次互相关计算,而本来需要移位n次完成的计算,现在只需要m(图4中变量m=n/s)次移位,每次移位s,即可完成。因此,每个XtremeDSP Slice的计算速度为采集速度的m倍,可以有效减少对计算速度的要求。2.2 仿真实验结果 为了比较串行结构和并行结构的计算速度,在Xilinx 7.1ISE平台中(Virtex-4器件的最低版本要求),选用Virtex-4系列的XC4VSX25器件,用Verilog HDL语言设计串行结构和并行结构,并在ModelSim中对两种结构进行仿真比较。由于仿真时间长度的限制,采用5位128长度的三角波模拟采集到数据,并将XtremeDSP? Slice的计算速率设定在250 M/s,仿真波形结果如图5所示。 从图5中可看出,采用串行结构,计算耗时约为15.8 ms,而采用4个XtremeDSP Slice的并行计算结构,计算耗时约为4.2 ms。从仿真结果的比较可知,串行结构耗时约为并行结构的4倍。因此,在本系统中并型结构的计算速度是正比于并行度的,这与理论上并行计算可以成倍减少计算时间的分析一致。3 结束语 通过以XC4VSX25为核心的嵌入式系统,实现数据采集、数据存储、LCD显示、USB数据传输和数据处理,完成光纤微扰动传感的扰动识别和定位功能,具有高速、实时、低成本、高灵活性的优点。本系统利用系统内特有的硬件结构XtremeDSP Slice实现高效高速的数据处理,同时在ISE软件中XtremeDSP Slice以IP核形式使用,无需自己构造乘法器和加法器,既节省了大量FPGA资源又大大减少开发难度。通过仿真比较可以看出,本系统中并型结构的计算速度是正比于并行度的,因此可以通过提高并行度来提高系统的计算速度,满足高速实时的数据处理要求。

    时间:2019-03-08 关键词: 系统 FPGA 嵌入式处理器 数据处理

  • 阿里确认收购德国数据处理公司data Artisans,未透露具体金额!

    针对彭博报道称阿里巴巴9000万欧元收购德国数据处理公司data Artisans,阿里巴巴方面已经向媒体确认了该笔投资,不过并没有透露交易的金额。 阿里表示,“过去两年,阿里巴巴一直是Apache Flink最大贡献者之一。阿里巴巴将和data Artisans一起持续为所有Flink社区用户、合作伙伴和开发者提供更多支持,致力于不断投资技术和未来”。 资料显示,data Artisans是由Apache Flink的几位开发者创建,成立于2014年,公司总部位于德国柏林,专门提供为公司企业部署大规模数据处理解决方案的服务。

    时间:2019-01-08 关键词: 阿里 数据处理

  • ARM数据处理指令

    数据处理指令分为3类:数据传送指令,如mov;算术逻辑运算指令,如add、sub和and等;比较指令,如tst等。  数据传送指令用于向寄存器传入一个常数。该指令包括一个目标寄存器和一个源操作数。  算术逻辑运算指令通常包括一个目标寄存器和两个源操作数。其中一个源操作数为寄存器的值;  比较指令不保存运算结果,只更新cpsr中相应的条件标志位。  数据处理指令包括以下指令。  (1)mov 数据传送指令  mov指令可完成从另一个寄存器、被移位的寄存器装载一个值到目的寄存器;或将一个立即值装载到目的寄存器。可以指定相同.的寄存器来实玑nop指令的效果。还可以专门移位一个寄存器。  (2)mvn 数据求反传送指令  mvn指令可完成从另一个寄存器、被移位的寄存器装载一个值到目的寄存器;或将一个立即值装载到目的寄存器。不同之处是在传送之前位被反转了,所以把一个被取反的值传送到一个寄存器中。这是逻辑非操作而不是算术操作,这个取反的值加1才是它的取负的值。  (3)cmp 比较指令  cmp允许把一个寄存器的内容与另一个寄存器的内容或立即值进行比较,更改状态标志来允许进行条件执行。它进行一次减法,但不存储结果,而是正确地更改标志。标志表示的是操作数1比操作数2如何(大小等)。如果操作数1大于操作数2,则此后的有gt后缀的指令将可以执行。明显地,不需要显式地指定s后缀来更改状态标志;如果指定了它则被忽略。  欢迎转载,信息来源维库电子市场网()

    时间:2019-01-01 关键词: 指令 ARM 存储技术 数据处理

  • Kinect for Windows SDK开发入门(四):景深数据处理 上

    Kinect for Windows SDK开发入门(四):景深数据处理 上

    Kinect传感器的最主要功能之一就是能够产生三维数据,通过这些数据我们能够创建一些很酷的应用。开发Kinect应用程序之前,最好能够了解Kinect的硬件结构。Kinect红外传感器能够探测人体以及非人体对象例如椅子或者咖啡杯。有很多商业组织和实验室正在研究使用景深数据来探测物体。 本文详细介绍了Kinect红外传感器,景深数据格式,景深图像的获取与展示,景深图像的增强处理。1. Kinect传感器 和许多输入设备不一样,Kinect能够产生三维数据,它有红外发射器和摄像头。和其他Kinect SDK如OpenNI或者libfreenect等SDK不同,微软的Kinect SDK没有提供获取原始红外数据流的方法,相反,Kinect SDK从红外摄像头获取的红外数据后,对其进行计算处理,然后产生景深影像数据。景深影像数据从DepthImageFrame产生,它由DepthImageStream对象提供。 DepthImageStream的使用和ColorImageStream的使用类似。DepthImageStream和ColorImageStream都继承自ImageStream。可以像从ColorImageStream获取数据生成图像那样生成景深图像。先看看将景深数据展现出来需要的步骤。下面的步骤和前面显示彩色影像数据相似:1. 创建一个新的WPF对象。2. 添加Microsoft.Kinect.dll对象引用。3. 添加一个Image元素到UI上,将名称改为DepthImage。4. 添加必要的发现和释放KinectSensor对象的代码。可以参照前面的文章。5. 修改初始化KinectSensor对象的代码如下:private void InitializeKinectSensor(KinectSensor kinectSensor){ if (kinectSensor != null) { DepthImageStream depthStream = kinectSensor.DepthStream; depthStream.Enable(); depthImageBitMap = new WriteableBitmap(depthStream.FrameWidth, depthStream.FrameHeight, 96,96,PixelFormats.Gray16, null); depthImageBitmapRect = new Int32Rect(0, 0, depthStream.FrameWidth, depthStream.FrameHeight); depthImageStride = depthStream.FrameWidth * depthStream.FrameBytesPerPixel; DepthImage.Source = depthImageBitMap; kinectSensor.DepthFrameReady += kinectSensor_DepthFrameReady; kinectSensor.Start(); }}6. 修改DepthFrameReady事件,代码如下:void kinectSensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e){ using (DepthImageFrame depthFrame = e.OpenDepthImageFrame()) { if (depthFrame != null) { short[] depthPixelDate = new short[depthFrame.PixelDataLength]; depthFrame.CopyPixelDataTo(depthPixelDate); depthImageBitMap.WritePixels(depthImageBitmapRect, depthPixelDate, depthImageStride, 0); } }}运行程序,将会看到如下结果,由于一手需要截图,一手需要站在Kinect前面所以姿势不是很对,有点挫,不过人物的轮廓还是显示出来了,在景深数据中,离Kinect越近,颜色越深,越远,颜色越淡。2. Kinect 深度测量原理和其他摄像机一样,近红外摄像机也有视场。Kinect摄像机的视野是有限的,如下图所示: 如图,红外摄像机的视场是金字塔形状的。离摄像机远的物体比近的物体拥有更大的视场横截面积。这意味着影像的高度和宽度,比如640X480和摄像机视场的物理位置并不一一对应。但是每个像素的深度值是和视场中物体离摄像机的距离是对应的。深度帧数据中,每个像素占16位,这样BytesPerPixel属性,即每一个像素占2个字节。每一个像素的深度值只占用了16个位中的13个位。如下图: 获取每一个像素的距离很容易,但是要直接使用还需要做一些位操作。可能大家在实际编程中很少情况会用到位运算。如上图所示,深度值存储在第3至15位中,要获取能够直接使用的深度数据需要向右移位,将游戏者索引(Player Index)位移除。后面将会介绍游戏者索引位的重要性。下面的代码简要描述了如何获取像素的深度值。代码中pixelData变量就是从深度帧数据中获取的short数组。PixelIndex基于待计算像素的位置就算出来的。SDK在DepthImageFrame类中定义了一个常量PlayerIndexBitmaskWidth,它定义了要获取深度数据值需要向右移动的位数。在编写代码时应该使用这一常量而不是硬编码,因为未来随着软硬件水平的提高,Kinect可能会增加能够同时识别人数的个数,从而改变PlayerIndexBitmaskWidth常量的值。Int32 pixelIndex = (Int32)(p.X + ((Int32)p.Y * frame.Width));Int32 depth = this.depthPixelDate[pixelIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth; 显示深度数据最简单的方式是将其打印出来。我们要将像素的深度值显示到界面上,当鼠标点击时,显示鼠标点击的位置的像素的深度值。第一步是在主UI界面上添加一个TextBlock:<Window x:Class="KinectDepthImageDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="KinectDepthImage" Height="600" Width="1280" WindowStartupLocation="CenterScreen"> <Grid> <StackPanel Orientation="Horizontal"> <TextBlock x:Name="PixelDepth" FontSize="48" HorizontalAlignment="Left" /> <Image x:Name="DepthImage" Width="640" Height="480" ></Image> </StackPanel> </Grid></Window> 接着我们要处理鼠标点击事件。在添加该事件前,需要首先添加一个私有变量lastDepthFrame来保存每一次DepthFrameReady事件触发时获取到的DepthFrame值。因为我们保存了对最后一个DepthFrame对象的引用,所以事件处理代码不会马上释放该对象。然后,注册DepthFrame 图像控件的MouseLeftButtonUp事件。当用户点击深度图像时,DepthImage_MouseLeftButtonUp事件就会触发,根据鼠标位置获取正确的像素。最后一步将获取到的像素值的深度值显示到界面上,代码如下:void kinectSensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e){ if (lastDepthFrame!=null) { lastDepthFrame.Dispose(); lastDepthFrame = null; } lastDepthFrame = e.OpenDepthImageFrame(); if (lastDepthFrame != null) { depthPixelDate = new short[lastDepthFrame.PixelDataLength]; lastDepthFrame.CopyPixelDataTo(depthPixelDate); depthImageBitMap.WritePixels(depthImageBitmapRect, depthPixelDate, depthImageStride, 0); }}private void DepthImage_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){ Point p = e.GetPosition(DepthImage); if (depthPixelDate != null && depthPixelDate.Length > 0) { Int32 pixelIndex = (Int32)(p.X + ((Int32)p.Y * this.lastDepthFrame.Width)); Int32 depth = this.depthPixelDate[pixelIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth; Int32 depthInches = (Int32)(depth * 0.0393700787); Int32 depthFt = depthInches / 12; depthInches = depthInches % 12; PixelDepth.Text = String.Format("{0}mm~{1}'{2}", depth, depthFt, depthInches); }}有一点值得注意的是,在UI界面中Image空间的属性中,宽度和高度是硬编码的。如果不设置值,那么空间会随着父容器(From窗体)的大小进行缩放,如果空间的长宽尺寸和深度数据帧的尺寸不一致,当鼠标点击图片时,代码就会返回错误的数据,在某些情况下甚至会抛出异常。像素数组中的数据是固定大小的,它是根据DepthImageStream的Enable方法中的DepthImageFormat参数值来确定的。如果不设置图像控件的大小,那么他就会根据Form窗体的大小进行缩放,这样就需要进行额外的计算,将鼠标的在Form中的位置换算到深度数据帧的维度上。这种缩放和空间转换操作很常见,在后面的文章中我们将会进行讨论,现在为了简单,对图像控件的尺寸进行硬编码。 结果如下图,由于截屏时截不到鼠标符号,所以用红色点代表鼠标位置,下面最左边图片中的红色点位于墙上,该点距离Kinect 2.905米,中间图的点在我的手上,可以看出手离Kinect距离为1.221米,实际距离和这个很相近,可见Kinect的景深数据还是很准确的。上面最右边图中白色点的深度数据为-1mm。这表示Kinect不能够确定该像素的深度。在处理上数据时,这个值通常是一个特殊值,可以忽略。-1深度值可能是物体离Kinect传感器太近了的缘故。3. 深度影像增强 在进一步讨论之前,需要会深度值图像进行一些处理。在下面的最左边的图中,灰度级都落在了黑色区域,为了使图像具有更好的灰度级我们需要像之前对彩色数据流图像进行处理那样,对深度值图像进行一些处理。3.1增强深度影像灰度级 增强深度值图像的最简单方法是按位翻转像素值。图像的颜色是基于深度值的,他们从0开始。在数字光谱中0表示黑色,65536(16位灰阶)表示白色。这意味着下面最左边那幅图中,大部分的值都落在了黑色部分。还有就是所有的不能确定深度值的数据都设置为了0。对位取反操作就会将这些值转换到白色的部分。 作为对比,现在在UI上再添加一个Image控件用来显示处理后的值。<Window x:Class="KinectDepthImageDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="KinectDepthImage" Height="600" Width="1280" WindowStartupLocation="CenterScreen"> <Grid> <StackPanel Orientation="Horizontal"> <Image x:Name="DepthImage" Width="640" Height="480" ></Image> <Image x:Name="EnhancedDepthImage" Width="640" Height="480" /> </StackPanel> </Grid></Window> 下面的代码展示了如何将之前的深度位数据取反获取更好的深度影像数据。该方法在kinectSensor_DepthFrameReady事件中被调用。代码首先创建了一个新的byte数组,然后对这个位数组进行取反操作。注意代码中过滤掉了一些距离太近的点。因为过近的点和过远的点都不准确。所以过滤掉了大于3.5米小于0米的数据,将这些数据设置为白色。private void CreateLighterShadesOfGray(DepthImageFrame depthFrame, short[] pixelData){ Int32 depth; Int32 loThreashold = 0; Int32 hiThreshold = 3500; short[] enhPixelData = new short[depthFrame.Width * depthFrame.Height]; for (int i = 0; i < pixelData.Length; i++) { depth = pixelData[i] >> DepthImageFrame.PlayerIndexBitmaskWidth; if (depth < loThreashold || depth > hiThreshold) { enhPixelData[i] = 0xFF; } else { enhPixelData[i] = (short)~pixelData[i]; } } EnhancedDepthImage.Source= BitmapSource.Create(depthFrame.Width, depthFrame.Height, 96, 96, PixelFormats.Gray16, null, enhPixelData, depthFrame.Width * depthFrame.BytesPerPixel);} 经过处理,图像(上面中间那幅图)的表现力提高了一些,但是如果能够将16位的灰度级用32位彩色表示效果会更好。当 RGB值一样时,就会呈现出灰色。灰度值的范围是0~255,0为黑色,255为白色,之间的颜色为灰色。现在将灰色值以RGB模式展现出来。代码如下:private void CreateBetterShadesOfGray(DepthImageFrame depthFrame, short[] pixelData){ Int32 depth; Int32 gray; Int32 loThreashold = 0; Int32 bytePerPixel = 4; Int32 hiThreshold = 3500; byte[] enhPixelData = new byte[depthFrame.Width * depthFrame.Height*bytePerPixel]; for (int i = 0,j=0; i < pixelData.Length; i++,j+=bytePerPixel) { depth = pixelData[i] >> DepthImageFrame.PlayerIndexBitmaskWidth; if (depth < loThreashold || depth > hiThreshold) { gray = 0xFF; } else { gray = (255*depth/0xFFF); } enhPixelData[j] = (byte)gray; enhPixelData[j + 1] = (byte)gray; enhPixelData[j + 2] = (byte)gray; } EnhancedDepthImage.Source = BitmapSource.Create(depthFrame.Width, depthFrame.Height, 96, 96, PixelFormats.Bgr32, null, enhPixelData, depthFrame.Width * bytePerPixel);} 上面的代码中,将彩色影像的格式改为了Bgr32位,这意味每一个像素占用32位(4个字节)。每一个R,G,B分别占8位,剩余8位留用。这种模式限制了RGB的取值为0-255,所以需要将深度值转换到这一个范围内。除此之外,我们还设置了最小最大的探测范围,这个和之前的一样,任何不在范围内的都设置为白色。将深度值除以4095(0XFFF,深度探测的最大值),然后乘以255,这样就可以将深度数据转换到0至255之间了。运行后效果如上右图所示,可以看出,采用颜色模式显示灰度较之前采用灰度模式显示能够显示更多的细节信息。3.2 深度数据的彩色渲染 将深度数据值转化到0-255并用RGB模式进行显示可以起到增强图像的效果,能够从图像上直观的看出更多的深度细节信息。还有另外一种简单,效果也不错的方法,那就是将深度数据值转换为色调和饱和度并用图像予以显示。下面的代码展示了这一实现:private void CreateColorDepthImage(DepthImageFrame depthFrame, short[] pixelData){ Int32 depth; Double hue; Int32 loThreshold = 1200; Int32 hiThreshold = 3500; Int32 bytesPerPixel = 4; byte[] rgb = new byte[3]; byte[] enhPixelData = new byte[depthFrame.Width * depthFrame.Height * bytesPerPixel]; for (int i = 0, j = 0; i < pixelData.Length; i++, j += bytesPerPixel) { depth = pixelData[i] >> DepthImageFrame.PlayerIndexBitmaskWidth; if (depth < loThreshold || depth > hiThreshold) { enhPixelData[j] = 0x00; enhPixelData[j + 1] = 0x00; enhPixelData[j + 2] = 0x00; } else { hue = ((360 * depth / 0xFFF) + loThreshold); ConvertHslToRgb(hue, 100, 100, rgb); enhPixelData[j] = rgb[2]; //Blue enhPixelData[j + 1] = rgb[1]; //Green enhPixelData[j + 2] = rgb[0]; //Red } } EnhancedDepthImage.Source = BitmapSource.Create(depthFrame.Width, depthFrame.Height, 96, 96, PixelFormats.Bgr32, null, enhPixelData, depthFrame.Width * bytesPerPixel);}以上代码中使用了ConvertHslToRgb这一函数,该函数的作用是进行两个颜色空间的转换,就是将H(Hue色调)S(Saturation饱和度)L(Light亮度)颜色空间转换到RGB颜色空间的函数。之前学过遥感图像处理,所以对这两个颜色空间比较熟悉。转化的代码如下:public void ConvertHslToRgb(Double hue, Double saturation, Double lightness, byte[] rgb){ Double red = 0.0; Double green = 0.0; Double blue = 0.0; hue = hue % 360.0; saturation = saturation / 100.0; lightness = lightness / 100.0; if (saturation == 0.0) { red = lightness; green = lightness; blue = lightness; } else { Double huePrime = hue / 60.0; Int32 x = (Int32)huePrime; Double xPrime = huePrime - (Double)x; Double L0 = lightness * (1.0 - saturation); Double L1 = lightness * (1.0 - (saturation * xPrime)); Double L2 = lightness * (1.0 - (saturation * (1.0 - xPrime))); switch (x) { case 0: red = lightness; green = L2; blue = L0; break; case 1: red = L1; green = lightness; blue = L0; break; case 2: red = L0; green = lightness; blue = L2; break; case 3: red = L0; green = L1; blue = lightness; break; case 4: red = L2; green = L0; blue = lightness; break; case 5: red = lightness; green = L0; blue = L1; break; } } rgb[0] = (byte)(255.0 * red); rgb[1] = (byte)(255.0 * green); rgb[2] = (byte)(255.0 * blue);} 运行程序,会得到如下右图结果(为了对比,下面左边第一幅图是原始数据,第二幅图是使用RGB模式显示深度数据)。最右边图中,离摄像头近的呈蓝色,然后由近至远颜色从蓝色变为紫色,最远的呈红色。图中,我手上托着截图用的键盘,所以可以看到,床离摄像头最近,呈蓝色,键盘比人体里摄像头更近,呈谈蓝色,人体各部分里摄像头的距离也不一样,胸、腹、头部离摄像头更近。后面的墙离摄像头最远,呈橙色至红色。 运行上面的程序会发现很卡,我好不容易才截到这张图,这是因为在将HUL空间向颜色空间转换需要对640*480=307200个像素逐个进行运算,并且运算中有小数,除法等操作。该计算操作和UI线程位于同一线程内,会阻塞UI线程更新界面。更好的做法是将这一运算操作放在background线程中。每一次当KinectSensor触发frame-ready事件时,代码顺序存储彩色影像。转换完成后,backgroud线程使用WPF中的Dispatcher来更新UI线程中Image对象的数据源。上一篇文章中以及讲过这一问题,这种异步的操作在基于Kinect开发的应用中很常见,因为获取深度数据是一个很频繁的操作。如果将获取数据以及对数据进行处理放在主UI线程中就会使得程序变得很慢,甚至不能响应用户的操作,这降低了用户体验。4. 结语 本文介绍了Kinect红外摄像头产生的深度影像数据流,KinectSensor探测深度的原理,如何获取像素点的深度值,深度数据的可视化以及一些简单的增强处理。 限于篇幅原因,下一篇文章将会介绍Kinect景深数据影像处理,以及在本文第2节中所景深数据格式中没有讲到的游戏者索引位(Player Index),最后将会介绍KinectSensor红外传感器如何结合游戏者索引位获取人物的空间范围,包括人物的宽度,高度等信息,敬请期待。

    时间:2018-12-12 关键词: kinect 嵌入式开发 入门 景深 数据处理

  • 主攻量产 Roadstar.ai发布新一代自动驾驶解决方案Leo·灵

    主攻量产 Roadstar.ai发布新一代自动驾驶解决方案Leo·灵

    在第五届世界互联网大会召开期间,自动驾驶初创公司Roadstar.ai对外公布新一代自动驾驶解决方案Leo·灵,这是主打量产的Level 4解决方案。 据了解,今年上半年,Roadstar.ai就发布了自动驾驶Level 4解决方案Aries·锐,新一代Leo·灵相比上一代产品解决了很多缺点,比如锐要更换一个零件需要拆开整体,灵则只需要替换局部零件,十几分钟就能完成操作。 Roadstar.ai联合创始人周光表示,灵平台具备稳定性和可维护性的特点,生产、调试时间可以缩短到半天,两天时间就能让无人车跑起来。目前,方案能够预处理8个摄像头、5个激光雷达等多传感器的数据,激光雷达点云密度高达0.13度,还装配基于FPGA的数据预处理机顶盒3.0系统。 据悉,Roadstar.ai作为第五届世界互联网大会的合作伙伴,期间提供无人车动态接驳服务,预计总运营时间超过20个小时,单程接驳超3公里。

    时间:2018-11-09 关键词: 无人车 自动驾驶 电源资讯 数据处理

  • STM32之USART串口接收数据处理

    //原帖http://bbs.elecfans.com/forum.php?mod=viewthread&tid=445463//在学习过程中发现几处编译错误,并改正;//主要贴出定义、和中断函数部分;uint8_t usart_rx_buf[5][40]; //接收缓冲,最大40个字节uint8_t usart_rx_temporary[40]; //数据保存暂存器,最多能够缓存40个字节uint8_t usartrxbuf_pagebuf=0; //最上面接受缓存的页码(5)缓存uint8_t usart_rd_len=0; //有用信息的数据长度uint8_t usart_rd_lentemp=0; //用来记录已读取的数据长度uint8_t usart_rx_enableflag=0; //接收状态标记 uint8_t usart_rx_lenrightflag=0;//数据长度校验位正确标志uint8_t usart_rx_successflag=0; //成功接收到数据信息//中断函数/******************************************************************************************///USART2 自定义串口数据收发数据校验//串口每次发送一个字节(一个八位二进制数),没接受一个字节,//串口中断一次,就执行一次串口中断函数。 //串口数据校验 (包头0xee)(数据长度)(...数据...)(数据长度反码)(包尾0xef)// 每一个括号代表一个字节,而数据括号待变N个字? /******************************************************************************************/void USART2_IRQHandler(void) //串口2中断服务程序{uint8_t i,res,check_temp;if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断,每接收一个字节(8位二进制数据),中断一次,每次中断(即每接收一个数据)都执行一次下列程序{ res=USART_ReceiveData(USART2);//读取接收到的数据 if(usart_rx_enableflag==1)//到接受数据标志置位时,接受数据{ res=USART_ReceiveData(USART2);//读取串口标志if(usart_rd_lentemp==0)//包头后第一个数据为需要传输的数据的长度{usart_rd_len=res;//读取数据的长度 !!if(usart_rd_len>=40){usart_rx_lenrightflag=0;//数据长度校验清零usart_rx_successflag=0;//数据接收成功标志清零usart_rx_enableflag=0;//数据接收完成,数据接收启动标志清零usart_rd_len=0; //数据长度清零usart_rd_lentemp=0;//数据长度暂存器清零 }}else if(usart_rd_lentemp==usart_rd_len+1)//当读取到第usart_rd_lentemp+1个数据时,校验是否是长度信息的反码{check_temp=~usart_rd_len;//取数据长度校验位的反码if(res==check_temp)//当数据长度校验正确时usart_rx_lenrightflag=1;//数据长度校验标志置一else{ //当数据长度校验错误时usart_rx_lenrightflag=0;//数据长度校验清零usart_rx_successflag=0;//数据接收成功标志清零usart_rx_enableflag=0;//当数据长度校验错误时,数据接收启动标志清零usart_rd_len=0;//数据长度清零usart_rd_lentemp=0; //数据长度暂存器清零}}else if(usart_rd_lentemp==usart_rd_len+2)//当读取到第usart_rd_lentemp+2个数据时,校验包尾是否正确{if((res==0xef)&&(usart_rx_lenrightflag==1))//如果包尾数据与长度校验都正确{usart_rx_lenrightflag=0;//数据长度校验清零usart_rx_successflag=1; //数据接收成功标志置一usart_rx_enableflag=0;//数据接收完成,数据接收启动标志清零//usart_rd_len=0; //数据长度清零usart_rd_lentemp=0;//数据长度暂存器清零 }else{ //当包尾数据校验错误时usart_rx_lenrightflag=0;//数据长度校验清零usart_rx_successflag=0;//数据接收成功标志清零usart_rx_enableflag=0;//数据接收完成,数据接收启动标志清零usart_rd_len=0;//数据长度清零usart_rd_lentemp=0;//数据长度暂存器清零 }}else usart_rx_temporary[usart_rd_lentemp-1]=res; //当usart_rd_lentemp为数据段时,将数据存到串口数据接收寄存器中 usart_rd_lentemp++;//每次记录数据,数据长度暂存器自加 if(usart_rx_successflag==1)//如果成功接收到信息数据,将缓存usart_rx_temporary[]内的数据传递给usart_rx_buf[][]{for(i=0;i

    时间:2018-10-22 关键词: STM32 usart 串口接收 数据处理

  • 基于DSP的汇编程序优化

    基于DSP的汇编程序优化

    1 引言数字信号处理器(DSP)相对于模拟信号处理器有很大的优越性,表现在精度高,灵活性大,可靠性好,易于大规模集成等方面。随着半导体制造工艺的发展和计算机体系结构的改进,数字信号处理器的功能越来越强大,对信号处理系统的研究重点又重新回到软件算法上,而不再像过去那样过多地考虑硬件的可实现性。随着DSP运算能力的不断提高,能够实时处理的信号带宽也大大增加,数字信号处理的研究重点也由最初的非实时性应用转向高速实时应用。目前大多数DSP虽然都支持C语言编程,但是在实际工程应用中,最常用的方法是用C语言编写流程控制。搭建工程框架,具体的算法模块及比较耗时的功能模块还是采用汇编语言来编写。这是因为C语言虽然具有易读性、可移植性等优点,但是它不便于对系统硬件资源的直接控制,无法发挥DSP自身的特点,无法充分利用DSP系统结构中有限的资源。特别是在硬实时性系统中,用汇编语言进行编程可利用DSP自身硬件结构的特点对汇编程序进行优化与精简,往往能够使一些复杂的算法和功能模块在实时性方面取得非常好的效果。2 汇编程序优化DSP的种类繁多.各类DSP都有其自身的硬件特点,而对DSP汇编程序进行优化的过程就是根据程序自身特点充分利用DSP硬件资源的过程。因此,具体到不同的器件.其优化方式也不尽相同。目前比较流行的大多数DSF,都支持程序并行和软件流水,本文从这二方面出发,概括归纳出对汇编程序进行优化的一般方法。希望能够在对不同DSP汇编程序优化的过程中提供一些思考方式上的切人点。为了易于说明,笔者提供了一些实例,这些例子均是用AD公司TSl01系列电路的汇编语言编写的。2.1 加强程序并行程序的并行是汇编优化的关键。但是,在开始进行任何优化之前,必须了解从何处着手,首先了解瓶颈在何处。软件的某些部分可能只执行一次(初始化)或者只执行少数几次,费尽心思优化此部分代码并非明智之举,因为获得的整体节省效果是微乎其微。对程序的优化应将主要力量集中在最为费时的部分。(1) 循环展开达到并行通过对大量DSP程序的研究.可以发现整个程序比较耗时的部分往往是在1个或几个大的循环中。这些循环部分又往往可分为取数、处理、储存处理结果3个顺序执行的步骤,这3个步骤有明显的时间先后关系.只有取了数才能处理。处理后才能存储结果,这种时间上的相互依赖性为程序的并行带来了非常大的困难。循环展开是最常用的一种优化技巧。1次循环处理过程中的各语句是具有很强的时间先后顺序的,但是在连续2次循环过程中的各种语句却是相互独立的,它们是以相同的语句处理不同的数据。因此可以采用将循环次数减半,每2次(也可以是3次、4次等,应根据具体情况来确定,同时循环次数要做相应改变)循环合并为1次循环过程的方法来使程序并行,提高效率。例1是一段对图像进行二值化的代码的主要部分.是一段2次的循环,并未经过优化;实例2是将其循环展开,2次循环过程合并为1次循环的代码段(这里假设其每行像素个数为偶数,如果不为偶数只需在内循环外额外处理一个像素即可);实例3是循环展开并进行优化精简后的代码段。这3段代码均用TSl01的汇编语言编写,其中j4指向待处理的图像;i5指向处理后的图像;xrO、xrl分别为图像行、列个数;xr2为二值化的阈值,像素灰度值大于或等于该值的使其等于该值,而像素灰度值小于该值的设为零。实例1:实例2:实例3:如实例3中的(1)、(2)所示,下一循环的取数和与阈值比较语句同上一循环中的指令达到了并行。分别运行实例1与实例3并计算其每个像素所花费的时间,可知实例1中平均每个像素花费7.12个时钟周期,而实例3中平均每个像素花费5.12个时钟周期,比优化前少用了差不多2个时钟周期。(2)提前取数达到并行在循环外提前取数,彻底打破循环中各指令间时间的先后顺序,增强其独立性并最终达到并行的目的,这也是一种常用的方法。实例4利用此种方法,在实例3的基础上对实例1的代码段做了进一步的优化与精简。如实例4中所示,(1)在循环外提前进行了取数,并在(2)达到了并行,(3)、(4)对由于提前取数造成的指针移位和额外的赋值进行了修正。但是,在使用此方法进行精简优化时要特别注意循环结束后对指针的修正。经计算。实例4平均每个像素所花费的时间为4.18个指令周期。实例4:(3)改换语句达到并行有时,不同的语句利用不同的硬件资源可以得到相同的结果。换一条语句执行.改变原语句所用硬件资源。往往也能够增加程序的并行程度。例如DSP中往往提供独立的加法、乘法运算单元,同样一条赋值语句可以用加0或者乘l代替,这样就可以将原来不能并行的从内存中取数语句和对寄存器赋值语句(这两条语句都要到总线资源)并行起来。这在许多参考资料中都可以见到。在此不再列举具体实例。(4)增加取数个数达到并行某些DSP还支持联合取数的功能,其寄存器可能是32位.但是却支持64位数据的存取,即一条语句可完成二组数据的存取。而对这两组数据的处理却是相互独立、可以并行的,利用这一功能来达到优化,也不失为一种好方法。2.2 利用软件流水流水技术是提高DSP程序执行效率的另一种主要手段。它可以使若干条指令的不同执行阶段并行处理。有时由于相邻的几个指令行有可能使用相同的资源,其间又可能有相关性,从而使DSP在执行时自动插人延迟,使DSP的运行速度比预期的慢:有时又可能由于指令本身的原因造成延时(例如跳转指令),使得DSP的效率降低。由于流水技术本身的复杂性以及DSP硬件结构的多样性,这里不再讨论造成这种延迟的种种原因(事实上各个DSIC的使用手册中均有详细的说明),只是想告诉读者其实有时候只需要移动几条指令的位置就可以达到优化的目的。在这里仍继续采用实例1的代码段作为例子(TI公司C6000系列电路的编程更适合此例,只是其汇编指令太复杂)。如实例5(1)所示,它将例3中并行的语句重新分开,变为二条语句执行。计算其效率可以发现平均每个像素仍然花费5.12个指令周期,与将其并行的效率相同。这是因为取数与比较这二条指令共用了同一寄存器资源xr3,造成这二条语句间插入一个指令周期的延迟,而把语句插入到这两条指令之间,恰恰利用了这一延迟,达到了优化的效果。实例5:对汇编程序进行优化,应综合上面提到的各种方法。首先使循环内各语句在时间关系上尽量相互独立.然后利用种种技巧最大限度地使语句并行;最后再考虑软件流水造成的延时,调整各条语句的位置.尽量减少延时。3 结束语对特定DSP汇编程序进行优化的过程就是对其芯片结构充分熟悉利用的过程,程序优化与精简的程度正比于对芯片结构的熟悉程度。这是一个不断深入、永无止境的过程。但是还应看到,在程序达到高效的同时,牺牲的是程序应有的可读性。在软件高度产业化的今天,程序的可读性有时甚至比其高效性更为重要。因此如何在程序达到高效的同时尽量保证其可读性也是在对程序进行优化时应着重考虑的问题。

    时间:2018-09-27 关键词: DSP 汇编程序 嵌入式处理器 数据处理

  • 基于DDR3存储器接口控制器IP核的视频数据处理

      引言 与过去几代(DDR和DDR2)器件相比,DDR3存储器器件有了明显的进步。DDR3存储器系统可以大大提升各种数据处理应用的性能。为了充分利用和发挥DDR3存储器的优点,使用一个高效且易于使用的DDR3存储器接口控制器是非常重要的。视屏处理应用就是一个很好的示例,说明了DDR3存储器系统的主要需求以及在类似数据流处理系统中DDR3接口所需的特性。希望能给大家有个客观的认知。  视频处理系统将对于数据带宽的要求推高到了极致:系统可以处理越多的数据,就具有越高的性价比。视频聚合器和路由器可并行处理多个视频流,因此对于匹配数据处理能力和视频带宽的需求就成为了设计的一大挑战。FPGA可通过在单个FPGA中实现多个视频处理器来提供强大的处理能力。那么现在的挑战就变成了要使数据尽快且高效地从FPGA进出。DDR3存储器系统在大多数情况下可以为这些基于FPGA的系统提供足够的带宽。  视频处理设计说明  我们的目标视频处理设计将同时处理四个视频源,将视频数据转换和压缩为一种可以通过PCI Express接口传输到存储器hub的格式。系统的主要功能块如图1所示。  图1:视频处理器框图  FPGA获取并缓存四个视频源的数据流。这些FIFO缓冲器由DDR3存储器控制器清空并保存在DDR3存储器中。一旦一个完整的视频数据包存储完毕,视频处理器会向DDR3存储器控制器申请数据,存储器控制器读取数据并将其传到视频处理器。视频处理器对视频数据进行格式化和压缩,并通过DDR3存储器控制器写回存储器。当一个视频数据包全部处理完毕,并准备通过PCI Express接口进行传输,DDR3存储器控制器从视频处理器获取数据并将其传到PCI Express接口。  DDR3存储器接口控制器概述  双倍数据速率(DDR3)同步动态随机存取存储器(SDRAM)控制器是一种通用存储器控制器,能与行业标准的DDR3 SDRAM器件和具有JESD79 - 3C型规范兼容的模块接口。并对用户应用提供了一个通用命令接口。DDR3 SDRAM是新一代SDRAM存储器技术,具有更快的速度,缓冲SSO,由于直接将信号连到SDRAM,取代了低偏移的树状分布的方法,因此减少了布线。这个IP核减少了需要整合DDR3存储器控制器与应用的其余部分所需投入的工作量。  特点  支持所有LatticeECP3“EA”器件  能与工业标准的DDR3 SDRAM器件和具有JESD79 - 3C规范兼容的模块接口  高性能DDR3,高达400 MHz/800 Mbps的操作  支持存储器数据路径宽度为8 - ,16 - ,32和64位  支持x8和x16器件配置  支持无缓冲的DDR3 DIMM  支持一个DIMM和每个DIMM的一个级  8(固定)、“chopped 4”,或8(传输),或“chopped 4”(固定)的可编程突发长度  可编程的CAS延迟  可编程写延迟  四位顺序或交织的读突发类型  支持自动的DDR3 SDRAM的初始化和刷新  对每个DQS自动写  支持掉电模式  支持动态片上终端(ODT)的控制  终端数据选通(TDQS),仅适用x8宽度  ECP3 IO原语管理读偏移(读电平相等)  自动可编程间隔刷新,或用户启动刷新  DDR3的SDRAM控制器可作为IPexpress用户可配置的IP核,能够进行IP的配置,生成网表和模拟文件用于设计。请注意,除非购买了这个IP 的许可证,否则生成的位流可能会被阻止,或比特流可能有时间逻辑。  图2:DDR3存储器控制器IP核框图DDR3存储器控制器应支持广泛的存储器速率和配置,以满足各种应用需求。例如,Lattice ECP3 DDR3存储器控制器支持高达800Mb/s的DDR3器件速率,8至64位的存储器数据通道(带有x8或x16 DDR3器件),并且同时支持双列直插式存储器块(Dual Inline Memory Modules,DIMM)和单个存储器的器件。  DDR3存储器控制器必须为各种存储器访问实现不同的时序要求。一些要求对于我们的目标应用来说非常重要,包括以下几个方面:  DDR3存储器使用"类似cache"的bank进行组织,每个器件带有8个bank.访问最近工作(打开)的bank比访问未工作的(关闭)的bank速度快。  可使用4位、8位或交叉存取方式进行突发(burST)模式读访问。  根据存储器速率和用户设置,CAS和写延迟都是可变的。从读请求转换为写请求需要额外的延迟时间,因为双向的数据总线必须改变传输方向。  针对视频处理的IP核实现  为了使存储器数据带宽和效率最大化,针对视频处理设计的IP核实现需根据DDR3存储器特性使用相匹配的算法。下面列出了一些重要的实现考虑。  使用突发(Burst)模式的数据访问  DDR3存储器可通过突发模式访问,突发模式在数据以数据块形式存放(如视频处理应用)的应用中是非常有效的。同样,通过将视频数据以优化的方式放入8个bank中,数据传输带宽和之后的数据处理率可维持在一个高速的水平。在我们的示例中有4个视频源,因此如果我们为每个视频源使用2个bank(一个用作存储缓冲器,另一个用作处理缓冲器),这将使DDR3保持高传输效率。高效的DDR3存储器控制器应当基于每个bank的状态,使用最快的访问时间处理突发读和写。此外,视频处理器将事务分组,使总线换向时间最小化并进一步提高存储器带宽。 更高带宽的数据缓冲分配  来自视频源1的数据可通过FIFO读取并存储到DDR3存储器中的Bank 1.这将是一个只写操作,可以使用突发模式来保持传输的高效。一旦一个数据包保存到Bank 1,视频处理器可从Bank 1读出数据,对其进行操作并存入Bank 2.这些操作都可使用突发模式,因此总线换向的花销仅占用存储器带宽的很小的百分比。一旦Bank 2中的数据经过处理后可被读出,还是使用突发模式,然后发送到PCI Express接口,再传输到hub.尽可能地保持存储器bank为打开状态可使得控制器使用最短的存储器访问时间,从而提高了效率。  使用交叉存取的并行数据处理  数据读可在bank之间切换或交叉存取,而无需大量延迟或总线换向时间。因此,只要处理硬件能够支持,多个视频流可通过视频处理器同时处理。当处理好的数据写回DDR3存储器时,多个写操作也可以通过交叉存取来提高带宽。一个易于使用和可预测的存储器控制器,如:ECP3 DDR3存储器控制器,在用户基于其对数据处理的基本算法的了解的情况下来分配存储器缓冲区时,可以最小的硬件和软件开销来实现最大的带宽。  刷新和初始化  因为DDR3存储器中的数据必须定期进行刷新,一些存储器访问必须分配给刷新操作。DDR3控制器应支持自动刷新指令队列,它可能是深度为8的指令集,可以作为一个指令组来执行,以使效率最大化。DDR3器件的初始化过程是非常繁复的并且很容易出错,特别是在手动执行时。DDR3控制器的初始化模块应该通过与用户逻辑的一次简单的握手,自动初始化存储器,从而极大地简化了接口设计。  流水线的指令处理  存储器控制器应当使用指令流水线来提高吞吐率,在当前指令出现在存储器接口时,译码队列中的下一条指令。这种方法提供了高于双周期存储器控制器100%的吞吐量。  功耗管理  在一些DDR3应用中,功耗管理可能是一个需要考虑问题。在一些设计中,使用Power Down指令是非常有用的。该指令在没有数据访问需求的时候,降低功耗。在power down状态下,器件功耗的降低可达90%.莱迪思DDR3存储器控制器支持该指令。此外,莱迪思ECP3为带有SERDES和高速接口,如DDR3存储器控制器的应用提供最低功耗的可编程解决方案。  设计和验证流程  DDR3存储器控制器IP核必须易于配置、生成并应用到一个目标设计中。使用图形化用户界面(GUI)来配置各种DDR3控制器参数是一种简便的方法,为目标系统快速创建正确的控制器。所有的参数都需要确定,如:存储器宽度、深度、速度和延迟。每一类配置参数都有其独立的选项卡,有助于将设计任务分为一个个可管理的"任务块".一旦参数选定,生成代码(用VHDL或Verilog)和生成相应的测试基准应当是比较容易的。  例如,莱迪思IPexpress工具只需三个步骤,如图3所示,在ispLEVER设计软件中创建ECP3 DDR3存储器控制器IP核:  1)从莱迪思网站下载IPexpress工具并将IP核导入。  2)IP核参数可通过每个配置组对应的选项卡进行选择,配置组有:类型、设置、时序、引脚和设计工具。  3)基于Verilog或VHDL的IP核和测试基准一起生成,包括顶层、监视器、指令生成器、用于Aldec或ModelSim的配置和脚本文件。  图3:下载、配置和生成IP核设计流程  小结  我们对很多数据处理应用的设计中,如本文中视频处理的例子,当存储器具有足够的带宽时,可以充分利用FPGA的并行处理能力的优势。DDR3存储器具有灵活、易于使用的存储器控制器。此外,一个经验证的IP核与可靠的设计和验证环境也加速了这些应用的上市。

    时间:2018-09-21 关键词: 存储器 控制器 接口 数据处理

首页  上一页  1 2 3 下一页 尾页
发布文章

技术子站

更多

项目外包