当前位置:首页 > 数据处理
  • 补码格式数据在民机试飞数据处理中的应用

    摘要:为了实现在不重新设计标准试飞数据处理软件的前提条件下,正确处理补码格式的试飞数据。通过分析试飞数据处理算法和校线的关系以及试飞数据和校线的关系,利用解析几何中线性方程横坐标平移不改变纵坐标数值的特性和补码格式数值的单调性,提出了仅对标准校线进行恰当地修改就能正确处理补码格式的试飞数据的一种方法。有效地保障了民机试飞任务的顺利进行,并为以后其他类型的试飞数据处理提供了解决思路。 关键词:补码;校线;传感器;数据处理     随着我国航空技术的不断发展,已经有实力自主研制民用飞机,以ARJ21为代表的支线客机以闪亮登上国际客机序列的历史舞台,即将在国际支线客机领域里占上一席之地。支线客机包含复杂的电子系统,被测试的参数多达上万,所以会产生多种格式的试飞数据。     飞行试验数据是支线飞机研制过程飞行试验中所获得的最宝贵的科研信息资料,凝聚了设计、制造、试飞等多方面技术人员的心血,甚至冒着生命危险而取得。飞行试验数据数据处理是飞行试验工程中非常重要的环节,直接提供了试飞数据结果。该结果不仅为支线飞机的试验定型、鉴定、合格审定等提供最直接的定量依据,同时也是被试对象全面、客观真实的模型的数字体现。     试飞数据处理结果是数据处理工程师对飞行试验原始数据进行校准、解算的结果。试飞工程师通过分析数据处理结果,得出被试飞机的性能指标是否满足设计要求、存在哪些不足、以及如何改进等结论,为飞机定型和改良提供重要的科学依据。试飞数据处理结果的准确性直接影响试飞定型的结果。 1 补码的概念和性质 1.1 补码的概念     数值在计算机中表示的形式为机器数,计算机只能识别0和1,使用的是二进制,为了能方便与二进制的转换,还使用了十六进制和八进制。下面将介绍为何要引入补码这个概念。     数值有正负之分,计算机就是用一个数的最高位存放符号(0为正,1为负)来区分正负数的,这就是机器数的原码。假设机器能处理的位数为8,即字长为1 b,原码能表示数值的范围为-127~0,+0~127共256个。     有了数值的表示方法就可以对数进行算术运算,但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如([x]表示十进制x,假设字长为8 b):[1]-[1]=[1]+([-1])=[0],但(00000001)原+(10000001)原=(10000010)原=[-2],显然不正确。因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上。为了解决这个问题,又引入了反码。对除符号位外的其余各位逐位取反就产生了反码。反码的取值空间和原码相同且一一对应。下面是反码的减法运算:[1]-[2]=[1]+[-2]=[-1],(00000001)反+(11111101)反=(11111110)反=[1],正确。[1]-[1]=[1]+[-1]=[0],但(00000001)反+(11111110)反=(11111111)反=[-0]有问题。事实上,上面的计算出现了+0和-0,在人们的计算概念中零是没有正负之分的,于是就引入了补码这个概念。负数的补码就是对反码加一,而正数的原码、反码、补码是一样的。在补码中用-128代替了-0,所以补码的表示范围为:-128~0~127共256个。注意:-128没有相对应的原码和反码,[-128]=(10000000)。补码设计的目的是:第一,使符号位能与有效值部分一起参加运算,从而简化运算规则。第二,使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。经过上面的讨论,可以得出任意进制数的补码的表示形式:设R为基数,位数为n的原码N,补码为:(N)补=Rn-N。以十进制为例,2的补码为:(2)补=10-2=8,46的补码为:(46)补=100-46=54。 1.2 补码的性质 1.2.1 取值范围     设基数为2,位数为n:     (1)原码的表示范围:-(2n-1-1)~+(2n-1-1)     (2)反码的表示范围:-(2n-1-1)~+(2n-1-1)     (3)补码的表示范围:-2n-1~+(2n-1-1) 1.2.2 加减运算的性质     (1)一个正数的补码执行求补运算,其结果恰是与其绝对值相同的负数的补码;同样地,对一个负数的补码执行求补运算,其结果恰是与其绝对值相同的正数的补码。可用公式表示:(+x)补求补←→(-x)补求补。     (2)两个数补码的和,等于这两个数和的补码。可用公式表示:(x)补+(y)补=(x+y)补。     (3)两个数补码的差,等于这两个数差的补码。可用公式表示:(x)补-(y)补=(x-y)补。 1.2.3 单调性     把二进制补码的符号位转化成数值位,如果二进制数值对应的十进制数值越大,则实际表示的负数值越大,反之,亦然。例如:[-1]补=(1111 1111 1111 1111)=[655 35],[-2]补=(1111 1111 1111 1110)=[655 34]。 2 试飞数据处理算法分析 2.1 校线的概念以及校线和传感器的关系     校线是校准曲线的简称,指在规定条件下,表示被测量值与仪器仪表实际测得值之间关系的曲线。它主要包括直线校准、抛物线校准,多项式校准和双曲线校准等。     在支线飞机试飞中,有一部分测试参数属于加装参数,通过各种类型的传感器配合测试技术才能完成对这些参数的测量工作。下面简要介绍传感器的概念和工作原理。     传感器是一种能把物理量或化学量转变成便于利用的电信号的器件。传感器把某种形式的能量转换成另一种形式的能量。它有有源的和无源的两类:有源传感器能将一种能量形式直接转变成另一种,不需要外接的能源或激励源。无源传感器不能直接转换能量形式,但它能控制从另一输入端输入的能量或激励能,传感器承担将某个对象或过程的特定特性转换成数量的工作。其“对象”可以是固体、液体或气体,而它们的状态可以是静态的,也可以是动态(即过程)的。对象特性被转换量化后可以通过多种方式检测。对象的特性可以是物理性质的,也可以是化学性质的。按照其工作原理,它将对象特性或状态参数转换成可测定的电学量,然后将此电信号分离出来,送入传感器系统加以评测或标示。     从传感器的工作原理可知,传感器把物理量转化成电信号输出,电信号通常用电压表示,而电压值在采集时被转换成码值(16位的整型值),所以,电信号和物理量的对应关系将转换成码值和物理量的对应关系。在试飞数据处理中,码值和物理量对应关系的点的对数又被叫做点对校准曲线。 2.2 校线在试飞数据处理算法中的作用     从第2.1节的介绍中看出,校线实际上就是测试记录的试飞数据原码到实际工程中物理量的对应关系。理论上,点对校准曲线的点对个数越多,数据处理的结果越准确。然而,在实际工程应用中,不能枚举所有点对关系,仅选择有代表性的几个点对关系。那么如何解算未在校线中出现的原码的物理量。在试飞数据处理技术中已经形成了非常成熟的算法——线性插值方法。根据实际需要,采用线性内插和线性外插相结合的方式完成所有试飞数据原码到物理量的解算任务。通常情况下,原码值被当做16位无符号整型数值进行处理。     为了方便说明点对校准曲线和试飞数据算法是如何有机结合,完成试飞数据处理的,引入了二维直角坐标系和直线方程进行详细分析讨论。对于直线,可以用数学方程的形式表示为:y=kx+b。当k≠0时,直线可以表示为:y=k(x+b/k),当k=0时,直线可以表示为:y=b。在试飞数据处理中,k=0是没有意义的,所以讨论的所有问题的表现形式均是y=kx。对于点对校准的应用可以用图1,图2来说明(其中图1和图2中实心点的x坐标,从左到右的依次为x1,x2,x3,x4,x5,对应y坐标为y1,y2,y3,y4,y5)。     图中的实心点就是点对校准曲线的特征点。标准化的试飞数据处理软件对于特征点内的原码值采用线性内插值解算对应的物理量,对于特征点外的原码值采用线性外插值解算对应的物理量。从实际工程应用中可知,校线的特征点连线并不是一条直线,而是一条折线段,所以,选取校线的特征点越多,数据结果的精度越高。 3 补码格式数据处理方法的研究     当特殊类型的测试参数的原码被记录成补码格式,并按照图3给出相应的校线。     图3中的虚心点表示要求解的参数对应的码值,通过线性内插值,很容易求出参数在这一点的对应的物理量。但是,如果不考虑补码情况下,原码值将被认为是超过32 767的正整数值,如图4所示。     按照线性外插值求解,结果显然是错误(其中,除了原点,图3和图4实心点的x坐标,从左到右的依次为x1,x2,x3,x4,对应)y坐标为y1,y2,y3,y4。虚心点坐标(x,y)。以后图例中坐标点均按此规定描述)。     通过线性方程进行分析,修改点对校准曲线,可以解决这个问题。修改点对校准曲线的方法是,将码值为非负整数的特征点保持不便,把码值为负整数的特征点换算成补码,然后将补码按照无符号值和原码值对应,构成新的点对校准曲线,按照补码的单调性和直线的平移性可知,这种方式的变换不改变计算的结果。     转换后的点对校准曲线如图5所示,按照这种方式就能求解出正确的物理量。但是,还有一种特殊情况没有考虑到,如果仅仅按照转化点对校准曲线的方法来处理补码数据,对于大于x2又小于32 767的值,将会出现错误,如图6所示。     从图6中可以看出,对于大于x2小于x3的码值,经过上述方法进行处理,将得到错误的物理量。通过增加点对校准曲线的特征点可以解决这种特殊情况。在特征点x2和x3之间加入两个新的特征点x2’=32 767和x3’=32 768,并按照线性外插分别求出x2’对应的物理量y2’和x3’对应的物理量y3’,如图7所示。     由图7可知,能正确解算图6出现的特殊情况。 4 结语     本文通过讨论校准曲线和试飞数据处理方法的关系,以及补码在数值上单调性,采用解析几何中线性方程平移的特性。提出了仅对校准曲线做一定的修改,就能正确处理补码格式的试飞数据。这种解决方法不用修改标准化的试飞数据处理软件,就能得到正确的试飞数据处理结果,有效地保障了支线飞机定型试飞任务的顺利进行。同时,也给生成校准曲线的试飞工程师提供了一种解决类似问题的思路。 

    时间:2013-10-23 关键词: 数据 应用 数据处理 试飞 格式 民机

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

    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 数据处理 中国天眼

  • 基于虚拟仪器的USB接口数据处理系统设计

    虚拟仪器技术在计算机测控领域得到了快速广泛的推广应用,从简单的仪器控制、数据采集到尖端的测控和工业自动化;从大学实验室到工业现场;从探索研究到技术集成都可以发现了虚拟仪器技术应用的很多领域。国内外相关学者对此做了很多的研究工作。 1 虚拟仪器与图形化编程语言-LabVIEW     虚拟仪器(virtual instrument,VI)是一种基于计算机的仪器,就是在通用计算机上加上软件和硬件,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的专用传统电子仪器。在虚拟仪器系统中,硬件仅仅是为了解决信号的输入输出,软件才是整个仪器系统 的关键,任何一个使用者都可以通过修改软件的方法,很方便地增减仪器系统的功能与规模,所以有“软件就是仪器”之说。虚拟仪器技术的出现,彻底打破了传统仪器由厂家定义,形成用户无法改变功能的模式,虚拟仪器技术给用户一个充分发挥自己才能和想象力的空间。用户(而不是厂家)可以随心所欲地根据自己的需求,设计自己的仪器系统,满足多种多样的应用需求。     LabVIEW是美国NI公司开发的面向计算机测控领域的虚拟仪器软件开发平台,它是一种功能强大的图形编程语言,但它与传统的文本编程语言(如C语言)不同,采用了一种基于流程图的图形化编程形式,因此也被称为G语言(graphical language)。这种图形化的编程形式,方便了非软件专业的工程师快速编制程序。多任务并行处理一般是通过多线程技术来实现的,不同的任务实际上通过各自的线程轮流占用CPU时间片来达到“同时”处理的目的。LabVIEW也采用了多线程技术,而且与传统文本式的编程语言相比,有两大优点:LabVIEW把线程完全抽象出来,编程者不需对线程进行创建、撤销及同步等操作;LabVIEW使用图形化的数据流执行方式,因此在调试程序时,可以非常直观地看到代码的并行运行状态,这使编程者很容易理解多任务的概念。虚拟仪器的硬件由仪器硬件和计算机硬件2部分组成。应用软件由仪器驱动程序、开发环境和用户接口3部分组成。 2 数据采集与处理系统的功能和组成 2.1 系统功能     数据采集(data acquisition,DAQ)与处理系统的基本功能是物理信号的测量、采集与处理。要使计算机系统能够测量物理信号,首先要使用传感器把物理信号转换成电压或者电流之类的电信号。通常不能把被测信号直接连接到DAQ卡,而必须使用信号调理辅助电路,将信号进行一定的预处理。总之,数据采集与处理是借助软件来控制整个DAQ系统的,包括采集原始数据、分析数据和输出与存储数据。 2.2 系统组成     设计过程中采用炼油厂高温烟气发电系统的工艺参数检测作为应用对象。系统结构框图如图1所示。     系统的硬件包括温度传感器、压力传感器、位移传感器等传感器、信号调理模块、数据采集卡和工控机。信号调理模块选用的是美国国家仪器公司的NI SCXI-1102型温度调理模块和NI SCXI-1520型应变信号调理模块,用这2个模块完成对采集信号的预处理;数据采集卡采用的是NI USB-6008DAQ型;工控机采用的是具有PXI插槽的一台计算机和一台PC机。     整个系统共设置8路模拟输入端口,2路模拟输出端口,12路数字输入/输出端口,1路事件计数端口。     (1)NI SCXI-1102的特点和功能。NI SCXI-1102专为高精度热电偶测量而设计。它们具有相同的架构,该架构的每路输入通道包括了一个仪器放大器和一个2 Hz的低通滤波器。在此架构下,可以通过高达333 SPS(每通道3μs)的速度来扫描SCXI-1102及其他模块的模拟输入通道,也可扫描冷端温度补偿传感器及其他输入通道。SCXI-1102可采集mV、V、0~20 mA以及4~20 mA电流的输入信号。每个模块的所有通道都可以被DAQ设备的某一路通道采集,也可另加模块,以增加通道数。     (2)NI SCXI-1520的特点和功能。NI SCXI-1520是8通道通用应变片输入模块,具有进行简单或高级应变测量所需要的所有功能。用户可借助这一模块,从应变传感器、力传感器、扭矩传感器和压力传感器上读取信号。NI SCXI-1520包含在各类环境中均适于自动校准的板载参考电压。它的每路通道均配有可编程放大器和4级可编程Butter worth滤波器。每条通道还具有一个独立0~10 V可编程激励源。此外,SCXI-1520系统在模块内部提供了组成半桥电路的电阻网络,并在SCXI-1314接线盒提供了1个350 Ω的插座式电阻,用以组成l/4桥。120 Ω的1/4桥电阻均随附于接线盒。     (3)USB接口及NI USB-6008 DAQ的特点和功能。通用串行总线(universal serial bus,USB)是目前电脑上应用较广泛的接口规范,USB接口是电脑主板上的一种四针接口,其中中间2个针传输数据,两边2个针给外设供电。USB接口速度快,连接简单,不需要外接电源,同时对外设有良好的兼容性,最多可连接127台外设。USB有2个规范,即USB 1.1和USB2.0。     USB通用串行总线是由Intel,Microsoft,Compaq,IBM,NEC,Northern Telcom等几家大厂商发起的新型外设接口标准。USB传输速度12 Mb/s,最新USB2.0可达480 Mb/s;电缆最大长度5 m,USB电缆有4条线,2条信号线,2条电源线,可提供5 V电源;USB电缆还分屏蔽和非屏蔽2种,屏蔽电缆传输速度可达12 Mb/s,价格较贵,非屏蔽电缆速度为1.5 Mb/s,但价格便宜;USB通过串联方式最多可串接127个设备,支持即插即用和热插拔。     NI USB-6008具有基本的数据采集功能,其应用范围包括简单的数据记录、便携式测量和学术机构的实验室试验,其技术参数如表1所示。NI USB-6008可使用LabVIEW或C以及自带的NI-DAQ mx Base测量服务软件编程,创建用户自定义的测量系统。但这些只能完成简单的测量和分析,若要完成复杂的工程运算或实时控制还需借助其他的软件环境。 3 数据采集与处理系统软件设计     NI USB-6008通过USB接口与工控机相连,构成一个数据采集与处理系统。     NI-DAQmx Base具有NI-DAQmx的部分功能,支持Windows,Linux,Mac OS X和Pocket PC操作系统。简洁的编程接口、可编程通道和任务生成以及与NI LabVIEW的高度集成使得应用开发极为简单。该驱动软件包含立即可用的LabVIEWVI和C函数实例,这些实例与具有完整功能的NI-DAQmx软件中的相似。     数据采集与处理系统的软件包括驱动程序和用户应用程序,用户应用程序是用虚拟仪器的开发环境LabVIEW设计的。     系统软件采用LabVIEW编程,前面板如图2所示。 4 结语     设计测试表明,将虚拟仪器与LabVIEW结合用于常规的数据采集与处理等任务,可以减少系统的开发时间,也可提高编程效率,节省系统成本。

    时间:2011-02-18 关键词: USB 接口 虚拟仪器 数据处理

  • 地面雷达数据处理系统设计

    摘要:针对目前地面雷达数据处理中存在的目标多,机动性强,地面杂波强,虚警率高等问题,采用并设计了解速度模糊、点迹凝聚、航迹处理等算法,结合软件编程技术,对信号处理后的数据进行综合处理,经过雷达外场鉴定试验测试,数据处理使雷达的发现概率、虚警率、方位距离精度、速度分辨力等指标各提高了约十个百分点。 关键词:雷达数据处理;点迹凝聚;航迹处理;解速度模糊 0 引言     数据处理作为雷达系统的一个重要组成部分,可以看成是雷达信号处理的后处理过程,可以对信号处理后的数据进行筛选,并且从零星探测的小目标进行综合分析,消除由杂波、虚假目标、干扰目标、诱饵目标等造成的虚假检测,提高对目标的发现概率,降低虚警率,对目 标建立航迹,并预测目标运动方向、位置的后果,其精度和可靠性都高于雷达的一次观测,改善雷达信号处理结果,使雷达的使用价值和性能得以提高。     早期的雷达数据处理方法有最小二乘法、现代滤波理论、Kalman滤波、机动目标跟踪方法等。     目前对雷达数据处理的研究,特别是航迹处理部分,大多都是对付空中目标和海上目标的,这样的目标机动性不强,背景简单,容易预测航迹。而地面目标具有强机动性、情况复杂、目标种类繁多、同一范围内目标遮挡等环境干扰因素较多,这些对目标的检测、归并、凝聚、建航都提出了高的要求。需要对以前在航空和航海领域应用较多的航迹处理方法进行发展和完善,发展出适合强机动目标的改良算法。     随着信息技术的发展,雷达数据处理的研究有以下几个发展方向:弱小目标的自动跟踪,可利用帧间滤波、检测前跟踪和先进算法来提升自动跟踪性能;高速计算与并行处理;多传感器信息融合与控制一体化;搜索、跟踪、引导、识别与指挥一体化。 1 数据处理的系统设计     雷达数据处理采用计算机作为载体,通过编写数据处理软件来实现,计算机能够非常灵活地完成各种类型的数据处理工作;数据处理的软件化也能使整个雷达系统的兼容性和可扩展性更强,功能更完善,界面更友好。     数据处理软件完成的功能主要包括:采集数据(信号处理的目标数据、定北数据、定位数据),对信号处理后的目标数据进行格式转换、点迹凝聚等优选目标数据后形成更加准确、精确的目标点迹数据;对点迹数据进行航迹处理后形成目标的航迹;把处理后的目标点迹、航迹数据进行输出。数据处理功能如图1所示。     在研究和参考已有雷达数据处理算法的基础上,对模拟目标数据、同类型其他雷达试验中录取的实际目标数据进行了仿真处理,根据处理结果,对已有算法进行修改完善,以适用本雷达技术特点和指标的要求。 2 点迹形成的算法设计     由于雷达波束在连续扫描时,波束波瓣有一定宽度,至少有好几个脉冲连续扫到目标,每个脉冲都对应一个方位值,同一目标被捕捉到多次,多次捕获目标时的方位值都不同,这就造成了方位角的分裂程度较大。因此需要把一次扫描中同一目标的多个点迹凝聚成一个点迹。 先在距离上进行凝聚,得到水平波瓣内不同方位上的距离值;再在方位上凝聚,可获得惟一方位估计值;然后把距离值进行线性内插获得惟一的距离估计值。     (1)同一目标在距离上的凝聚处理,需将在距离上连续或间隔一个量化单元的点迹按照式(1)求取质心,将质心作为目标点迹的距离估计值:         式中:n为目标的点迹个数;Ri,Vi分别为第i个目标点迹的距离和回波幅度值。     (2)同一目标在方位上的凝聚处理,需将在方位上相邻的点迹按照式(2)求取质心,将质心作为目标点迹的方位估计值,此值即目标点迹的惟一估计值。         式中:n为目标的点迹个数;Ai,Vi分别为第i个目标点迹的方位和回波幅度值。     (3)用式(1)计算出目标在各个方位上的距离值,并不是目标点迹距离的惟一估计值,需要根据目标方位估计值落入的位置来求距离惟一的估计值。设方位估计值在距离估计值的第i和i+1点之间,求距离惟一估计值的内插公式为:         式中:Ro'为目标点迹距离的惟一估计值;Ao为目标点迹方位的惟一估计值;Ri+1,Ri,Ai+1,Ai分别为第i+1和i点迹的距离及方位值。此时即获得惟一的距离、方位估计值。 3 航迹处理的算法设计     单一而杂乱的目标点迹数据不利于操作员的判读,需要通过对目标点迹进行处理和预测后形成该目标航迹,通过相关和航迹质量管理等处理,降低虚警,提高雷达的综合检测能力。航迹的处理包括航迹的起始、航迹的预测、目标航迹和新目标点迹的相关、航迹的形成、航迹的终止。 3.1 航迹的起始     航迹起始的快速要求与较高的成功概率是相互矛盾的,滑窗检测法由于具有计算量小和可用蒙特卡洛法进行分析的优点,因而被许多系统采用。在航迹起始反应时间小于系统指标的要求下,可采用m/n逻辑滑窗检测法,即在n次扫描中至少应该有m次和该暂时航迹相关的目标点迹,常用准则如表1所示。 3.2 航迹预测和滤波算法     航迹预测是在本次航迹滤波值的基础上根据目标运动模型来估计目标未来的状态,滤波用来估计目标当前的运动参数(方位、距离、速度、运动方向、加速度等),把本次互联的目标点迹和预测航迹估计合并进行处理,以形成新的目标运动参数。     常用的滤波算法有最小二乘法、α—β滤波和Kal-man滤波算法。Kalman滤波是根据最小均方误差准则建立起来的估计方法,适用于有限观测间隔的非平稳过程。在目标机动运动时,Kalman滤波的性能就要优于其他滤波方法,基于Kalman滤波的各种自适应滤波与预测方法,包括重启滤波增益序列、增大输入噪声方差、增加目标状态维数、在跟踪滤波器之间切换等。 3.3 点迹和航迹相关处理     点迹是雷达获取的目标位置坐标,可能是现有目标航迹的新目标数据、新目标的第一次发现,甚至可能是虚假目标。需要把这些点迹与已有的目标航迹进行相关处理,以确定这些点迹是现有目标航迹的新数据,或是新目标的第一次发现。     航迹相关算法中的两个主要方面是确定正确的波门形状大小和航迹相关配对算法。     (1)相关波门是以航迹的预测位置为中心,用来确认该目标点迹可能出现范围的一块区域,它的选择直接影响到航迹质量。确定相关波门大小应该充分考虑各个相关因素,如目标模型误差、传感器探测误差、目标的运动速度和机动规律、雷达扫描周期,目标航迹的质量等。根据天线扫描参数确定得到目标点迹数据的周期,再根据目标航迹的较稳定速度和点迹速度设计大、小两个波门,并且在有新数据更新时动态调整。     (2)点迹和航迹相关配对的最靠近准则规定,最靠近目标预测位置的那个点迹与航迹相关的概率最大。假设P1,P2分别表示新接收的点迹,s1,s2分别表示航迹预测位置,那么可能的点迹和航迹关联配对是(P1-s1,P2—s2)或者(P1—s2,P2—s1)。用vij=Pi—sj表示偏差,且表示标准偏差,则偏差具有零均值高斯概率密度,应考虑如下检验:     计算雷达在本次扫描中获取点迹和航迹的距离,建立一个分配表,包括全部可能的点迹和航迹配对数据;然后按分配表计算点迹和航迹的统计间隔等参数,去掉重复使用的点迹;最后根据最靠近准则将航迹和点迹配对,以确定点迹与航迹是否相关。如果只有一个点迹位于航迹波门以内,且该点迹没有位于其他航迹波门之内,则该点迹和该航迹相关,然后用该点迹更新航迹。如果多个点迹在航迹波门之内,或者点迹位于多个波门之内,则需要更进一步地进行相关逻辑处理,按照惟一性原则,即在一次扫描中,一个点迹只与一个航迹相关,一个航迹也只与一个点迹相关。处理方法为:航迹相关波门内只有惟一点迹的直接相关,点迹只在一个相关波门内的直接相关,这些航迹和点迹不再与剩余的点迹和航迹相关;循环处理掉相关上的航迹和点迹,最后对剩余的航迹和点迹取最小距离的点迹和航迹与之相关。     如果新的目标点迹能够与已知目标航迹相关,就要利用新的目标点迹去更新和改善对目标位置和速度的估计。 3.4 航迹管理     不能和已有航迹相关的目标点迹如果能与自由点迹之间相关起来,可以起始成新的航迹,但这个航迹只是雏形,称为暂时航迹。只有在足够次数的新目标点迹与该暂时航迹相关后,才将其属性设置为稳定航迹进行正常处理。     目标航迹的起始、维护、撤销一般通过航迹编号来实现,与给定航迹相联系的所有参数都以其航迹号作为参考,一方面在航迹管理中标记航迹,用作航迹相关处理,另一方面可事后统计分析航迹处理效果,还能借助于航迹号的管理来描述战场态势。航迹的确认过程使用航迹质量为指标进行评估,选择出最优起始、删除准则后,可以将准则制定成相应的航迹质量管理系统,然后用记分法表述。     航迹管理的设计:当新目标点迹不能和已有航迹相关,并能够与自由点迹相关时,可以起始成新的航迹,并分配航迹号,赋予的航迹质量为3;航迹质量最大值为10;每次有新的点迹能和该航迹相关时质量加1;一个扫描周期内都没有新点迹能和该航迹相关时质量减1;航迹质量超过5时,认为是稳定航迹,只有稳定才输出给操作员观测;航迹质量小于2时撤销该航迹。航迹处理流程如图2所示。 4 数据处理系统的实现     数据处理软件的实现使用Visual C++进行编码。首先建立软件项目工程,对软件系统和配置文件等做一些初始化工作。内容包括:得到可执行程序存储路径、读取最新设置的系统参数、读取调试开关的值、读取配置文件等。初始化硬件设备。数据处理系统与雷达其他设备有硬件接口,需要与这些设备进行数据通信,在正确使用这些设备前需要对其进行初始化操作:包括电台、电子地图系统、信号处理板、卫星导航接收机等。软硬件初始化后即进入目标数据的处理模式,在该部分完成软件的几乎所有功能。数据处理流程如图3所示。 5 结语     结合实际工作中的研制项目,通过对雷达数据处理方法的研究,设计了目标数据预处理、点迹凝聚、点迹形成、航迹处理等算法。对数据处理系统实现的整个过程做了描述,包括系统的设计和实现方法。在Windows操作系统下,使用Visual C++6.0完成了雷达数据处理软件的开发,实现了该雷达的数据处理功能,并通过参与雷达整机的一系列的试验,验证了这些数据处理方法能够提高雷达的性能。

    时间:2011-08-09 关键词: 系统设计 地面雷达 数据处理

  • 基于XTCE标准的通用型航天器系统数据处理方法研究

    摘要:基于航天器研制过程中需要对不同种类不同格式的系统数据进行统一描述的目的,采用XTCE建立通用型的航天器系统数据处理方法,通过使用某型号航天器地面系统数据管理软件进行地面试验,得出该系统数据处理方法的使用可以实现航天器系统数据交换格式规范性和通用性的结论。提高航天器系统数据解析和处理的效率和可靠性,为航天任务中的信息交换处理提供了便利的方法和新的思路。 关键词:XTCE;航天器;系统数据;数据处理 近年来,随着航天器复杂度和对可靠性要求的提升,对航天器系统数据的解析和处理要求也随之不断升高。如何开发出一套快速有效的航天器系统数据处理系统已成为航天器设计和研制的重要环节和组成部分。 XTCE(XML Telemetric and Command Exchange)是一套由OMG(Object Management Group)提出的,利用XML语言来描述航天器系统数据的规范。其目的是提出一种国际化的 新体制与标准,为不同机构和系统在航天任务的各个阶段对航天器系统数据的有效交换提供支持。目前,XTCE已在欧美的航天器研制中得到了广泛的应用,一些航天器研制机构和厂商还根据自身的设计需求开发出了相应的XTCE应用软件,用于航天器设计中。本文使用XTCE进行航天器系统数据处理模型设计,并设计了XTCE航天器系统数据交换文件设计,提出了基于XTCE的航天器系统数据处理方法。 1 XTCE组织结构 1.1 面向对象的分层描述 XTCE为航天器提供了一个面向对象的树状分层描述结构,结构的根节点是“航天器系统”节点(如图1所示)。XTCE的执行由根节点开始并传播到整个航天器系统的各个层次,在每个层次,每个元素既代表自己又是整个空间系统的一部分(如图1所示)。这种分层管理的方式,方便用户自底向上的描述航天器遥测遥控数据结构,并在逐步成熟后进行组装构成逻辑系统,具有良好的延展性。   如上所述,相比以往的描述方法,XTCE具有以下优点: 1)XTCE是标准化的描述方法,CCSDS推荐在航天任务的各个阶段都采用XTCE描述遥测遥控信息,因此,采用XTCE描述遥测信息在数据交换方面具有方便准确的优势; 2)XTCE在设计之初就考虑到了对异构任务的支持,这与航天器系统数据处理软件支持多任务的需求是完全吻合的; 3)XTCE标准以一个XML schema文件的形式给出,可读性好,同时也便于使用成熟的技术自动处理XTCE文件; 4)XTCE文件具有明显的层次化结构,易于在不同元素层次上进行扩展和集成; 1.2 遥测元数据结构 遥测元数据是对航天器遥测数据的描述,定义了参数类型、参数、容器、消息、数据流、算法等内容,详见图2。   1)ParameterTypeSet(参数类型集):遥测参数的元数据集合,参数类型实例化后即可以描述遥测参数。参数类型包含的信息有:数据类型、说明信息、告警阈值、输出数据的工程单元、长度、位序量纲和校验方式以及在天地传输过程中的编码方式。 2)ParameterSet(参数集):一组遥测参数及其引用的集合。 参数是实例化的参数类型,包含名称和指向参数类型的引用(ParameterRef)。参数也可以有别名和实例化后的特殊属性,而“引用”常值以前在其他ParameterSet中定义参数的引用。 3)SequenceContainer(序列容器):一组有序的参数序列,可以描述数据包、数据帧、子帧或结构数据项。序列容器可以由基础容器派生,方便数据定义。 4)MessageSet(消息集):消息是在服务过程中通过匹配方式唯一标识一个容器的替代方法,通过比较SequenceContainer中的元素与预定值是否一致,实现对Sequence Conta iner的过滤。 5)StreamSet(数据流集):一组无序的Stream(数据流)的集合。航天器上、下行数据均是数据流,在数据流层面有很多处理和操作。StreamSet中包含所有包括组帧、解帧在内的上、下行数据的处理方法。 6)AlgorithmSet(算法集):对于航天器地面测试系统,事先构造一些处理遥测、遥控数据的基础算法,有利于重构复杂逻辑的数据处理算法。 利用遥测元数据描述遥测参数的步骤为:用Parameter Set定义遥测参数,用ParameterType定义遥测参数的数据类型,然后定义SequenceContainer(对于分包遥测,Sequen ce Container用于打包遥测数据并描述遥测数据包,对于时分多路遥测,SequenceContainer用于描述遥测帧及帧结构),再定义遥测数据的StreamSet(数据流集),最后定义遥测数据的AlgorithmSet(算法集)。 1.3 遥控元数据结构 遥控元数据的格式与遥测元数据相似,但除了含有与遥测元数据一致的ParameterTypeSet,ParameterSet,MessageSet,StreamSet和AlgorithmSet以外,还有Argument Ty pe(判据类型集)和Metacommand(元指令集),如图3所示。   ArgumentType(判据类型集):判据类型集与参数类型集十分相似,区别是判据类型实例化后通常与特定的遥控数据绑定。该集合包含的信息包括:数据类型、文本描述、正常值范围、工程单元等。Metacommand(元指令集):用于描述遥控指令。通过描述指令名称、指令参数、指令间约束关系、指令序列、指令容器、指令验证集等内容定义遥控指令。 2 XTCE数据处理模型以及XTCE文件设计 2.1 Space System的设计 构造XTCE数据模型时,首先要对顶层的航天器结构进行定义,表示出XTCE所代表的航天器或子系统的框架结构。对于每个分系统或载荷,可以进行相应的工程状态参数设定,用以表示数据信息所对应的工程周期。以树状结构表示了XTCE文件所代表的载荷系统及其所包含的单机。Space system以分级的形式表示出了航天器的系统结构,航天器所包含的分系统、载荷以及单机设备级的子结构都可以利用XTCE进行相应的工程描述。以树状结构表示了XTCE文件所代表的载荷系统及其所包含的载荷和单机。该模型对应的XTCE文件代码示例如下:     2.2 遥测遥控数据处理模型设计 定义好Space System数据模型之后,就可以根据遥测遥控的数据格式来定义其数据模型。定义时,使用自上而下的设计方法,先把数据框架设计好,然后再根据载荷或分系统的命令或数据信息将数据模块“搭建”到数据框架中。根据遥测遥控包的共性和区别,设计了如图4的测控统一XTCE数据模型。   以分包遥测的遥测数据定义为例,可以先定义一个包结构,然后列出包头、包数据域、校验数据域等主要框架,再细化各部分内容。如包头内的包版本号、类型、应用过程识别符、包顺序控制等,最后填入实际数据信息。下面以遥测包中APID的定义为例来说明参数各部分的设计方法。     遥控指令部分的定义包括遥控指令集和遥控封装集的定义,与遥测部分的定义类似。 2.3 XTCE文件设计 将设计好的space system,遥测遥控模型定义好后组成一个完整的XTCE数据模型,针对同一XTCE数据模型可开发相关的解析软件将模型中的信息转化为符合XTCEschema的XTCE数据文件,此时XTCE文件中已经包含了全部的卫星数据格式信息。     随着数据文件的验证或检验,XTCE文件可能需要相应的修改或调整。对于数据定义中插入,删减或修改比较多的部分,可先在XTCE模型中进行修改,再转换成XTCE文件,避免复杂的修改工作和出错;如果只是极少的修改内容,如数据内容或类型等,也可在XML编辑工具中直接修改。 3 应用实例 上述理论和方法已经应用于某型号航天器的地面系统数据管理软件中。下面举例说明如何用XTCE定义航天器遥测数据,图5所示为帧序号是0和1的两个遥测数据子帧。   ASM=fa表示帧头为“fa”。MFCtr=0/1表示序号为0/1的子帧,子帧0的第16—24位表示参数Bat1V,子帧1的第16—24位表示参数Beacon Status。用自然语言对子帧0的这2个参数进行描述:Bat1V表示电池1的电压,编码为8位无符号整形数,高位在前,校准至1个1~32 V电压曲线,位于第1子帧第16—32Byte。Beacon Status表示照明状态,编码为8位无符号整形数,高位在前,只用到第1位,‘1’表示on,‘2’表示off,位于第1子帧第24-32Byte。这样的描述不利于计算机处理,没有特定的规范,在实际处理时需要大量的人工转换,不但费时费力,且很容易出错,极易带来工程风险。如果用XTCE格式的 XML对其进行描述,则可以转化为如图6所示的形式。   这样的描述可以通过优化工具的人机交互可以使定义的过程变得很容易,而且有了XTCE标准架构的支持,描述语法的正确性可以及时获得验证。可以很好的解决不同航天器系统数据统一定义和描述的问题。 4 结束语 本文详细说明了XTCE中对于航天器系统数据的定义,分析了用XTCE描述航天器系统数据的优点,并设计了基于XTCE的通用型航天器系统数据处理模型以及XTCE文件。并通过在成熟航天器型号中的应用证明,XTCE能够满足航天器系统数据描述需求,能够支持不同航天器的异构任务,为描述各类航天器系统数据提供了标准的模型文件,以XML架构的形式清晰完整地定义了航天器系统数据处理所需要的信息。推广使用XTCE标准不仅是航天科技与世界接轨的需要,更是减少任务成本和工期,降低任务风险的需要。

    时间:2015-11-23 关键词: 航天器 数据处理 系统数据 xtce

  • 列车折关检测系统分析及数据处理算法研究

    1 引言    列车在运行过程中,若发生折角塞门误关(简称折关,主要由人为故意破坏非正常关闭折角塞门或者折角塞门由于长久工作而自然损坏两方面原因造成),在列车需要制动时,使空气制动功能受到影响,制动力下降,严重时将造成列车冒进、追尾等事故。因此,列车“折关”是铁路安全运行中存在的重要问题之一。铁道部1988年已将防止折角塞门关闭造成事故问题列为铁路安全的重点攻关项目。目前对列车折关检测主要是根据对列车管内气压数据的采样,然后与正常情况下的数据对比计算获得折关与否以及折关的具体位置。基于此原理研发成的检测装置大致有三类: (1)列车尾部安全装置,(2)列车折关检测报警记录装置(列车管贯通状态检测仪), (3)列车制动主管漏泄检测仪。本文介绍的系统设计是基于列车折关检测报警记录装置原理。2 检测系统电路设计    检测系统电路包括信号调理板、单片机电路、滤波放大电路、A/D转换电路、显示电路等,如图1所示。单片机是系统的核心,它控制A/D转换器采样经滤波放大后的压力、差压信号并转换成数字量,按照一定的算法规则处理后,得到代表列车管贯通状态的具体值并送显示电路。2.1 滤波放大电路    装置检测盒送出的压力P是0mA~20mA信号,差压。DP是10±10mA信号,这种电流源信号对激励电压的变化不敏感,长导线传输也不会因电压降或感应噪声产生误差。由于列车运行时现场条件恶劣且干扰严重,加之扩散硅压阻传感器本身对声压及其它杂散干扰较为敏感,传感器送给主机的两个信号分别经过两个低通滤波器,使信号质量得到提高,该低通滤波器采用MAX291,它是一个8级巴特沃斯低通滤波器,为了防止信号过载使滤波器失效和损坏,两输入信号均加有硬件过载保护电路。放大部分由LMl24及外围元件组成,它将P和DP分别放大到10V和5V+5V,供A/D转换使用。图2是压力P信号的虑波放大电路原理图,可调比较电平是在定压5kg和6kg二种情况下,为截取信号的有用变化分量进行充分放大而设置的。2.2 A/D转换电路    A/D转换过程中,每隔时间T对输入的连续信号进行采样,采样后的数据在时间上是离散的,然后经过量化(即编码)将模拟信号转化成数字信号。在A/D转换器中,采用四舍五入的取整量化方式。毫无疑问,量化会使信号失真,给系统带来量化误差,影响系统的精度和过程平滑。为了减少量化误差对系统精度和平滑性的影响,应该正确地选用A/D转换器。    当监测列车管中气体的压力、差压变化时,需要同时对两个信号进行实时采集并将其转换成数字量,为了提高系统的动态性能和测量精度,采用了12位高速A/D转换器MAXl96来进行模数转换,并用MAX624l做基准。经前向处理后的P和DP信号分别送到MAXl96的CH0和CHl,在89C5l的控制下完成A/D转换。图3为A/D转换电路连接图。2.3 显示电路    装置的显示采用MAX7219驱动LED显示器。它与微处理器的连接简单,可以与微处理器任意三个端口连接。如图4所示为微处理器与MAX7219的一种连接方式。    MAX7219是一种高集成化的串行输入/输出的共阴极LED显示驱动器。每片可驱动8位7段加小数点的共阴极数码管,可以多片级联,只需将上一片的DOUT连接下一片的DIN即可,CLK和LOAD线全部公用,连在一起。在多片级联时,对MAX7219的操作指令要注意LOAD信号的起止点,操作开始时,LOAD下降为低电平,按照每片MAX7219两个字节,如果有N片,则发送2N个字节后,LOAD上升为高电平。还需注意的是,先发送的指令将到达级联的最后一片。MAX7219内部设有扫描电路,除了更新显示数据时从单片机接收数据外,平时独立工作,极大地节省了MCU有限的运行时间和程序资源。3 折关检测算法研究3.1 数据分析及选择    列车折关故障检测系统由于是一个存在各种非理想因素的复杂系统,检测所测得的信号带有很大的随机性,其特征往往只能从统计意义上予以描述。在这里,传统的滤波方法不可能将无用信号从测量数据中分离出来,为了获取可信度较高的有用数字信息,采用从数据系列中提取逼近真值数据的软件算法,由于这种软件滤波具有较强的自适应性,其效果往往是硬件滤波电路所达不到的。    对于n次等精度数据采集,存在着系统误差、随机误差和因突发干扰引起的疏失误差,这都将使采集的数据偏离真值。此时,可用剔除m个误差数据后的n—m个测量数据的算术平均值y作为测量结果的真值。        式中yi为第i次的系统参数测量值。    这种用有限次测量序列的算术平均值来代替真值y的做法,应用了算术平均值原理。N的取值由系统特性决定并遵从贝赛尔均方根误差公式:        此式不但说明了用算术平均值代替真值其残余误差的平方和ε为最小,而且也说明了采样次数n增加λ值降低。但由于的规律减少,故λ的降低速率比n—m要慢得多,当n—m>10后,λ降低的效果很不明显。另外,考虑到当n过大时,等精度测量的条件已不存在。所以,n—m=4~10较为合适,该检测装置根据测量精度要求及运算速度等因素考虑取值为8,该软件滤波方法对提高检测装置的测量准确度十分有效。3.2 折关故障诊断方法    由于列车管的总耗气量Q与减压量△P、车辆数n、由泄漏引起的耗气量Q2均为非线性关系,但是相同车辆数时Q与△P的关系及同一△P下Q与n的关系可以用实测数据进行分析后拟合出符合测量误差要求的曲线关系。对于Q2,则存在较大的随机性,因此要求检测管压的精度最好高于允许的20kPa误差。    列车出发前如果能检测到缓解时对应于△P的Q,运行中若有折角塞门误关或泄漏,则实测的Q3比Q小或者大,因此可以通过测流量的方法进行诊断。但考虑到实际情况,测Q的方案并不可靠,因为在机车列车管处安装射流流量传感器施工上不方便,另外测量Q值的一致性较差,容易受到其他因素的干扰。相比较而言,制动管中压力P的测量受各种因素的影响较小且易于获得,因此本系统采用检测管压并结合充气时间判断是否有误关或泄漏故障。    编组已定的列车出车前经过多次试验获取对应于不同减压量△P时,根据多次试验结果计算出允许的最大充气时间和最少时间,就可以通过实时监测缓解工况时列车管中由某压力升至略低于定压时所用的时间来判断是否发生折角塞门误关故障以及泄漏故障,折角塞门误关故障诊断流程如图5所示。4 结语    通过样机装车在株洲机务段试运行,本装置系统能较理想检测出列车折关故障,检测出的折关位置误差在三辆之内,基本满足运行需求。为了提高检测精度,需要进一步收集数据,进行多次试验,充分掌握影响列车制动各因素(如列车管气路泄漏,气温、气流速度等),用于完善数学模型。

    时间:2009-04-09 关键词: 分析 列车 检测系统 数据处理

  • 主攻量产 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 关键词: 无人车 自动驾驶 数据处理 电源资讯

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

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

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

  • 人工智能与人类智能截然不同,请停止比较

    随着人工智能变得越来越聪明,关于AI将消灭人类的说法也不断涌现出来。事实上,很多大人物都在呼吁人们提起警惕。到现在,似乎AI支持者谷歌首席工程师雷·库兹韦尔对未来的乐观态度似乎已经不敌比尔·盖茨、伊隆·马斯克和史蒂芬·霍金提出的担忧。 诚然,我们确实有理由表示担忧,但未来并不一定会是一个黑暗的未来,因为我们可以有利用AI的更好方式,关键是认识到人类与机器智能之间的互补关系。说到底,人工智能与人类智能有着天壤之别,所以以后可以停止对二者的比较了。 如今,人们很容易相信人工智能已经变得像人类智慧一样聪明了——如果不是更聪明的话。比如,前一段时间,谷歌发布了Duplex AI,能够帮助用户完成外呼预定美发沙龙和餐馆等操作。由于它的声音几乎与人类一模一样,所以在整个过程中可以瞒过其对话伙伴,使之认为自己是人类。 此外,谷歌子公司DeepMind开发了一款人工智能,在最复杂的棋盘游戏中击败了世界冠军。而最近,人工智能又被证明它可以像训练有素的医生一样准确诊断眼疾……还有很多的事件可以表明,在不久的将来,机器人有可能会让人类身处失业的状态。 随着技术的发展与突破,人工智能在以我们肉眼可见的速度解锁新领域、新任务、新技能,而这些领域之前被认为是人类智能的专属。但这是否意味着人工智能比人类智能更聪明呢?在小智君(ID:Aiobservation)看来,将人工智能与人类只能进行对比,这本来就是一个错误的想法,因为二者是完全不同的东西,即使有时候它们的功能会重叠。 人工智能擅长处理数据,不善于抽象思考 首先,即使是最复杂的人工智能技术,其核心也与其他计算机软件没有什么不同:以超快速率运行数据。AI及其分支,如机器学习和深度学习,只要研究员能将其转换为正确的数据集,就可以解决任何问题。 举个例子,图像识别。如果给出深度神经网络、深度学习算法的基础结构以及足够多的标记图像,人工智能就可以用非常复杂的方式进行数据对比,并找到定义每种类型对象的相关性和模式,进而实现用该信息标记之前从未见过的图像中的对象。当然,语音识别的过程也是如此:如果有足够多的人的声音的数字样本,神经网络可以找到人的声音中的共同模式并确定某段录音是否属于那个人。 最近上线公测的阿里AI鉴黄语音反垃圾服务便是基于此理论,除识别色情图片、色情视频和色情文字外,涉黄语音也能通过AI鉴别了。为了让AI智能机器具备识别多国语言和多地方言的能力,事先需要有一个训练学习的过程,对此阿里安全部产品专家念夏表示,“可以把它想象成一个小孩,需要不断喂养、训练、学习,它才具备这样的能力。”比如学习广东话,除了从第三方公司购买训练素材外,还使用阿里系统内的视频平台上的粤语电视剧,来训练机器人学习。 实际上,我们所了解到的关于AI的应用,无论是进行人脸识别还是诊断癌症的计算机视觉算法,亦或是能够驱逐恶意网络流量的人工智能网络安全工具,甚至是玩电脑游戏的复杂AI项目,都有这样一个同样的规则。只不过,技术不断在改变和进步。 正如有句老话说的是“人无完人”,所以AI也有自己的缺点,而它欠缺的就是抽象思考、常识的运用以及知识迁移。说回开头提到的谷歌Duplex AI,它可能非常擅长预订餐厅或美发沙龙,但这是两项非常狭窄且非常具体的任务。甚至这个人工智能还可以使用人类的语腔语调完成一次模仿人类对话的自然行为,但一旦谈话偏离了轨道,Duplex就会很难以连贯的方式作答。在这种情况下,它要么终止对话,要么在人类的帮助下才能以有意义的方式继续对话。 迄今为止,已经有很多实例可以证明,一旦AI模型出现在其擅长领域之外的事件中或者接收到与他们训练过的数据不同的内容,他们就会以一种不合逻辑的方式失败。范围越广,人工智能需要掌握的数据越多,就会出现一些边缘案例,这些场景还没有被训练数据所覆盖,最终会导致人工智能的失败。一个例子便是自动驾驶汽车,尽管已经行驶了数千万公里,但它仍在努力实现完全自主,远远超过人类成为专家驾驶员的需要。 人类不善于处理数据,擅长做抽象决策 从数据部分开始。与计算机相反,人类在存储和处理信息方面非常糟糕。比如,想要记住一首歌的歌词,必须多次循环听才能记住它;但对于计算机来说,记住一首歌就像在应用程序中按“保存”或将文件复制到其硬盘中一样简单。同样,对于人类来说,不记忆也是很困难的。即使尽自己所能,一些不是很好的记忆还是会存在自己的脑海里。而对于计算机来说,忘记一些东西就像删除文件一样简单。 说实话,在处理数据方面,人类远不如人工智能。在上文提到的所有示例中,人类或许能够执行与计算机相同的任务,只不过在人类识别和标记图像所花费的时间内,AI算法可以完成对一百万个图像的分类。毫不夸张的说,计算机的绝对处理速度使它们能够在涉及数学计算和数据处理的任何任务中超过人类。 然而需要注意的是,人类可以基于本能、常识在信息稀缺的情况下,做出抽象决定。比如,人类孩子在很小的时候就学会归纳整理物品。但对于AI算法,执行相同任务需要数年的训练。科技评论家尼古拉斯·卡尔(Nicholas Carr)在被问及智能机器与人类的区别时曾表示,“计算机没有疯狂地带,它们不能矛盾,也无法设计去处理模稜两可的情形,它们也没有直觉。” 举个例子,当人们第一次接触视频游戏时,他们可以快速地将日常生活中的知识转移到游戏环境里,像远离坑,壁架,火和尖尖的东西(或跳过它们)。他们知道必须要躲避子弹、避免被车辆撞到才能生存。但对于AI来说,每个视频游戏都是一个新的未知的世界,它必须从头学习。人类可以发明新事物,包括已经引领人工智能时代的所有技术,而AI只能获取数据,进行比较,提出新的组合和演示,并根据之前的序列预测趋势。 人类可以感受、想象、梦想,可以无私或贪婪,可以爱恨交加,可以撒谎,甚至有时候会混淆事实。所有这些情绪都可以以理性或非理性的方式改变他们的决定。人是一种由肉体制成的不完美的有缺陷的生物,每一个人都以自己的方式独特生存;而人工智能,从核心上讲,是由数十一个无生命的电路运行的微小的电流。 人工智能与人类智能截然不同,请停止比较 总的来说,所有这些都不意味着人工智能优于人类智能,反之亦然。因为本质上,二者就是完全不同的东西。AI擅长重复性任务,这些任务具有明确定义的边界,可以用数据表示,而且对于需要完成基于不完整信息,凭直觉做出决策的任务来说,往往表现的很糟糕。相比之下,人类智能适用于需要常识和抽象决策的环境,而对于需要进行大量实时计算和数据处理的任务则表现不佳。 从不同的角度看,我们应该将AI视为增强智能。人工智能与人类智能相辅相成,弥补了彼此的不足。因此,他们可以一起完成任何自己无法单独完成的任务。比如,AI善于利用大量的网络流量找出异常情况,但在决定哪些是需要调查的真正威胁时会犯错误。而另一方面,人工分析师不善于监控通过公司网络传输的千兆字节数据,但他们擅长将异常与不同事件联系起来,并确定哪些是真正的威胁。所以,AI和人工分析师可以填补彼此的空白。 诚然,现在人工智能可以做越来越多的事情,它们的逻辑也变得更为复杂,所以它们有能力去应对更复杂的情况,以及处理更多的变量参数。但是人工智能和人类各自的强项都体现在不同的领域,这意味着我们需要探索的是共生关系,而不是竞争关系。 很多人都持有一种观点,即机器会取代人类的工作机会。在小智君(Aiobservation)看来,其中不乏夸张的宣传,事实证明,人工智能的扩张创造了更多的就业机会而不是摧毁。但是,正如过去每项技术突破所做的那样,在许多任务中,它确实可以消除对人类的需求。但这可能是因为那些工作从来都不是针对人类的。现在我们在这些工作上花费了大量宝贵的人力资源和劳动力,或许就是因为我们尚未开发出能使其自动化的技术。 随着人工智能变得善于执行更多的任务,作为人类,我们将有更多的时间把我们的智慧用于具有创造性、社交性、艺术性、体育、文学、诗歌以及其他有价值的应用中。到那个时候,我们就使用我们的增强智能工具来增加这些工作的创造力了。 最后,我们不是机器,机器也不是人类,未来将是人工智能和人类智能共同构建的!

    时间:2018-08-28 关键词: 人工智能 AI 数据处理

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

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

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

  • 基于DSP和CPLD的低功耗多路数据处理系统设计方案

    引言 随着电子技术的应用和发展,数字信号处理内容日益复杂,同时,很多情况下要求整个系统具有低功耗的特点。为满足这种要求,DSP芯片设计技术也在向低功耗、高性能的方向发展。从处理速度来看,TMS320VC5502的运算能力已经达到了600MMACS,即每秒钟可以完成6亿次乘加运算。从功耗来看,TMS320VC5502内核电压只有1.26V,整个芯片的功耗也大大降低了。本文介绍了基于TMS320VC5502和CPLD XC95144的低功耗多路数据处理系统。 模拟信号的输入经过50Hz陷波电路(滤除工频干扰)和信号预选频电路。经过预处理的模拟信号作为ADC的模拟输入进行A/D变换,最后由DSP实现对数字信号的滤波处理。将CPLD和DSP技术相结合,利用CPLD编程的灵活性,来控制6路ADC的启动和停止,简化了整个硬件电路的设计,达到动态地选择采样通道的目的。同时将DSP处理后的数据发送到PC ,在PC上利用MATLAB和VC等工具对处理后的数据进行后端分析。本文主要介绍基于低功耗TMS320VC5502和CPLD的前端数据采集和处理系统。ADS7805简介 ADS7805是一款具有16位量化精度的A/D转换芯片。它的基本组成结构包括16位精度的基于电容网络的逐次逼近型ADC、采样保持电路、时钟、对微处理器的接口和三态输出。ADS7805的最高采样速率为100kHz,模拟信号输入范围为-10V~+10V,5V单电源供电,最大耗散功率为100mW。ADS7805为5V单电源供电,输出的数据位为‘1’时,电平值为5V,而DSP芯片的I/O电压采用的是3.3V逻辑电平,因此,还需要在ADS7805的数据输出端加上电平转换芯片,设计时选用了74ALVC164245,它可以将5V电平转换为3.3V,也可以将3.3V转换为5V。硬件接口电路设计 从硬件角度来看,DSP完成滤波运算的核心工作,而整个系统的控制核心是CPLD,DSP对6路A/D采样的操作是由CPLD产生控制信号,控制着ADS7805的采样触发信号、6个ADC的复用和解复用,以及5V转3.3V电压转换芯片74ALVC164245的选通等。CPLD和DSP的时钟输入采用30MHz有源晶振。CPLD、DSP、ADC和电平转换芯片之间的接口电路如图1所示。图1 DSP、CPLD与ADC接口电路图 DSP利用片选信号、地址信号、读写使能信号向CPLD发出指令,CPLD根据DSP的指令向6个ADS7805发出控制信号,启动芯片进行采样并控制DSP完成对数据的读取。由于ADS7805输出的数据要通过电平转换芯片,CPLD还需要控制74ALVC164245芯片的选通和转换,就是图1中的OE[1:0]信号。因此,DSP必须向CPLD提供的控制信号包括CE2片选信号、ARE读使能信号和AWE写使能信号,当DSP读取A/D转换数据的时候,选通74ALVC164245进行电平转换,当ADC对模拟信号进行A/D转换时,不使能164245芯片,以免造成多路数据引起的数据总线冲突。由于有6个ADS7805,所以至少需要分配3根地址线信号(一般选为最低3位地址线引脚)区分这6个ADS7805,但3根地址线信号实际上可以用来表示8个地址,剩余的2个地址也可以利用起来,例如,对剩余的2个地址中的一个进行读操作可以视为DSP发出命令,用以启动ADS7805,这样就可以省去DSP和CPLD之间AWE信号的连接了。CPLD需要提供给ADS7805的信号包括片选信号CS[5:0]和数据读取/启动转换信号RC[5:0],此外,CPLD还要提供电平转换芯片的片选信号,并且需要接入一个时钟信号,用来给CPLD提供时序逻辑的同步时钟信号。CPLD程序设计 根据ADS7805的工作原理和DSP读写特性,对CPLD进行编程来实现DSP对6个ADS7805的分时读取操作以及启动ADS7805的转换。 整个程序采用Verilog HDL语言设计。为了便于测试,增加了一个FLAG标志信号,当FLAG为低的时候,说明DSP正在读取ADS7805转换过的数据。当FLAG为高的时候,说明ADS7805正在进行新一轮的转换。程序设计的重点在于启动ADS7805的新一轮采样,而ADS7805启动采样需要CS和RC同时为低且保持40ns。当DSP读完6个ADC的数据后就要启动新一轮采样。当对第6个ADS7805的读取操作完成后,FLAG标志位被拉高并利用计数器进行记时,输入的时钟频率是30MHz。因此需要让RC[5:0]和CS[5:0]输出信号至少保持2个时钟周期的低电平才能成功地启动下一次A/D转换。根据系统的要求,CPLD程序主要分3个always块。 第一个模块利用DSP的CE2地址空间选择信号、地址线A[4:2]、ARE读信号以及定义的3位计数器cnt[2:0]作为触发信号。当CE2和ARE都为低时,根据DSP的A[4:2]选择6个中的一个进行读取,其他5个都被禁止,这时,RC[5:0]应该均为高。如果A[4:2]=000,那么CS[5:0]=111110,开始读第一个ADS7805的数据到DSP。为了防止数据丢失,在读数据的时候,RC[5:0]应该始终保持为高,因为如果CS[5:0]和RC[5:0]信号中同一位均保持为低超过40ns,就会启动一次新的采样,这样会造成没有被读的ADS7805产生一次新的采样而丢掉之前转换的数据,对整个系统的结果造成很大的影响。读完第6个ADC以后,在ARE的上升沿将FLAG标志拉高,这时计数器开始记数,根据记数器的数值,当2<cnt[2:0]<6的时候,将RC[5:0]和CS[5:0]同时拉低,这样有3个时钟周期的长度大概有100ns,保证了同时为低的时间不小于40ns,启动新一轮的采样。第二个always模块主要实现对FLAG标志位的判断和设定。当A[4:2]=000时,说明DSP开始读A/D采样数据,这时FLAG=0。当A[4:2]=101时,说明6个ADS7805数据已经被读完,需要进行新的采样,这时FALG=1。第三个always模块主要实现计数器的设计。记数时钟频率为30MHz。当FLAG为高且cnt[2:0]<7时,开始记数。当FALG为低时,对计数器进行复位。根据以上设计思路,成功地做到了对6路信号的采样和读取控制,达到了预期的效果。仿真波形如图2所示。 图2 CPLD仿真波形图DSP软件设计 在进行DSP程序设计之前,先利用MATLAB的FDATOOL工具设计数字滤波器,将滤波器系数以.h文件形式导出MATLAB,在CCS中定义一个数组存放滤波器系数,就可以成功地将滤波器系数导入CCS。 本文主要介绍DSP对多路信号读取并处理的软件设计方案。图3是整个程序的流程图。首先应该对DSP芯片进行初始化,主要包括对TMS320VC5502的PLL寄存器进行初始化、初始化系统中断向量表、EMIF的初始化和定时器的初始化。DSP通过EMIF接口对外围ADC的转换数据进行读取。整个数据读取和数字滤波工作是在定时器中断程序中进行的。定时器模块主要用来确定采样周期,即每来一个定时器中断就对信号进行一次采样并完成对信号的实时处理运算。因此,定时器的中断周期也就是采样周期,同时,也规定了DSP做一次信号处理运算所耗时间的上限,即必须在相邻两次的时钟中断之间完成一次处理所需要的运算和操作。然后初始化EMIF模块,这一部分比较重要,因为ADC转换好的数据是通过EMIF接口送进DSP芯片的。ADC芯片在本系统中被内存化了,也就是说,从DSP芯片的角度看,读写ADC芯片和读写异步SRAM没有差别,因此,要将ADC芯片也分配到片外存储空间里,本系统采用的方法是将ADC芯片分配到CE2空间0x400000~0x400005连续的6个地址,使用异步16位SRAM的配置方式来配置CE2空间的控制寄存器。当有中断请求时,DSP就进入频率为40KHz的定时器中断,进行读取和滤波工作。 图3 DSP程序流程图系统功耗估计 通过查阅芯片手册可以知道,TMS320VC5502需要的1.26V核心电压供电能力为250mA,3.3V的I/O电压和锁相环I/O电压的供电能力为50mA, DSP芯片的功耗为480mW。ADS7805芯片的功耗典型值为100mW,6个共计600mW。CPLD的3.3V电源消耗电流的典型值为100mA,即330mW。这样,整个系统功耗大概为1.5W。在使用电池供电的情况下,这个功耗大小也是可以接受的。例如,使用一个12V输出、50Ah的蓄电池,理想情况下可以对系统供电400小时。即使考虑电压转换过程中的能量损耗,用上述规格的蓄电池对系统供电40个小时也是可行的。结语 本文介绍了一种基于DSP和CPLD的低功耗多路数据采集系统。 CPLD简化了硬件设计,可以很方便地对系统进行在线编程,具有很高的灵活性。本系统已应用于军事等具有低功耗、高性能要求的领域。

    时间:2018-09-21 关键词: DSP cpld 嵌入式处理器 数据处理

  • 基于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 汇编程序 嵌入式处理器 数据处理

  • 基于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 嵌入式处理器 数据处理

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

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

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

  • 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 嵌入式开发 入门 数据处理 景深

  • 基于CAN总线的智能控制器设计

    摘要:随着计算机技术、微处理器技术以及通讯技术的不断发展,传统仪表已经不能适应工控的要求。而CAN总线控制器的出现为工业控制系统向分散化、网络化发展等开辟了新的空间。CAN控制器具有良好的稳定性、高可靠性、较快的通讯速率以及低成本等特点,且能够有效支持实时、分布式控制,从而应用于许多领域,本设计针对内嵌CAN的STM32 F103RC处理器进行深入研究,并以它为核心部件进行CAN控制器软硬件的设计,该控制器兼容模拟量数字量的输入,保证了通用性并具有较大的应用范围。在采集与输出通道数量方面也得到了保障。例如由于工业需求要增加监测点或执行点,本控制器可以解决此问题。从长远考虑会降低用户的投资成本,本控制器可以与其他CAN节点及上位机组成CAN总线远程监控系统,实现仪表网络化,智能化。 关键词:CAN总线;数据采集;数据处理;数据输出;Stm32F103RC 现如今工业生产针对现场数据的采集与控制的要求在日益提高,生产实现自动化处理,若继续使用传统的一对一连线式或“各自为战”式集散系统,企业的生存和发展将面临着极大的挑战。 为实现整个系统设备之间以及系统与外界之间的信息交换,就必须搭建一种性能优越、可靠性高、造价低廉的通信系统,并且要求该系统可运行于工业环境中,实现底层系统与外界信息的交换,再者工业的发展也对现场控制器的性能也提出了更高的要求。在现场总线控制系统中,各个分散的测控设备作为独立的网络节点,通过现场总线联系起来,进而实现信息互通,共同完成自动化控制任务。工业CAN控制器的发展,推进仪器仪表系统的数字化、智能化、网络化进程,所以基于CAN 总线的现场总线控制器的研究与开发具有非常现实的意义。 本课题设计的CAN总线控制器,由技术角度出发可以总结为仪表系统。仪表系统是由各个功能模块集合而成,但也可以分离组合,其由结构划分为集成式、混合式和模块式3种形式。其中集成式仪表是将传感器与微处理器、信号调理电路做在同一块芯片上。集成度高、体积小,此传感器在目前技术水平上实现较难。而混合式集成仪表系统是将传感器的微处理器、信号调理电路做在不同芯片上,目前此结构仪表系统结构较多。而初级智能仪表系统可用相互独立的模块组成,如将微计算机、信号调理电路模块,输出电路模块,显示电路模块与传感器装配在同一壳体内,组成模块式传感器,本系统将对模块化的控制器进行研究。 1 总体方案设计 本课题针对工业现场的数据采集设计了基于STM32的CAN总线的控制器,根据功能结构的不同,该控制器将分为四大部分即现场数据采集、数据输出、实时数据处理以及CAN总线控制器。此系统CAN总线控制器采用STM32F103RC为主芯片,作为数据处理、存储及控制部分,考虑该控制器的通用性,在数据输入部分设计采集8路模拟量和4路数字量信号,8路模拟量通道可以接收由现场传感器信号经调理电路传输过来的标准电压电流信号。输出部分设计了4路模拟量和2路数字量输出通道,其中4路模拟量的输出通道,考虑到电压输出信号在传输过程中的损耗,这里采用了V/I转换电路,在第一章已经说明 Stm32f103rc内嵌CAN控制器,只需在外部接入CAN收发器,就可以完成与上位机通讯功能。系统硬件框图如图1所示。   2 系统硬件电路设计 2.1 系统模拟量采集电路 本设计要求做成通用的CAN控制器,设计中要采集8路模拟信号(电压信号0~5 V,电流信号4~20 mA),经过对模拟信号的处理再传输到主芯片的ADC进行转换,STM32F103RC的电压输入范围在2.4~3.3 V之间,所以在采集电压信号时我们要经过分压电阻进行分压处理,针对电流信号,要将电流转换为电压,所以在此引入精密电阻,即R=250 Ω,经过转换处理得到理想的电压符合AD的输入范围。考虑到STM32F103RC:芯片内部有2个12位的A/D转换模块,是一种逐次逼近式A/D转换器,在模拟信号输入时将分别用2个A/D模块各采集4路模拟信号。 在选取运放的时候还要注意参数的选择要与芯片的ADC之间的误差匹配问题,在此由计算得到满量程3.3 V时(控制器ADC为12位转换,得到对应的LSB为0.8 mV),在选取运放时要特别注意该运放所引起的误差是否在允许的范围之内,本设计采用低功耗精密运算放大器TLV2231CDBV,该运放为单电源供电,工作电压范围在2.7~10 V之内,输入失调电压为0.45 mV,失调漂移在0.55μV/℃,共模抑制比最小在60 dB,具体电路如图2所示。   2.2 系统数字量采集电路 本设计的数字采集模块共涉及了4个数字量。由于该控制器应用于工业现场,所以会受到较大的外界干扰,为了增强其干扰特性,在数字信号进入微控制器之前加入了光电隔离电路。我们这里采用高速晶体管光耦HCPL0531进行隔离,针对光耦的传输特性而言,在逻辑低电平时,R=1.9 kΩ时的传播延迟时间达到0.45μs,最大为0.8μs,上述计算中取得R=1.2 kΩ随着R的减少延迟时间将有所减短。   2.3 系统模拟信号输出电路 本设计将设计2路模拟量输出,主控制芯片内嵌了DAC,可以将数字量转换成模拟量电压信号传输到现场,由于电压信号在传输过程中会造成衰减,于是增加了V/I转换电路,在输出模拟信号时,常以电压信号为准,但针对传输距离较长会导致电压信号有所衰减,通常改进的办法是增加信号接收端的输入电阻,可是输入电阻的增加会对线路的抗干扰性产生降低的影响。所以在此我们将电压传输变为电流传输,其中V/I设计中用到运放TLV223 CDBV,该运放采用单电源直流5 V供电。经过V/I电路实现0~20 mA电流的输出。   [!--empirenews.page--] 2.4 系统数字信号输出电路 针对此模块设计,本设计包括4路数字量输出,产生的数字信号由处理器产生频率信号经过主控芯片I/O输出。对此本设计考虑到两点:将产生的二进制0或1直接输出到执行器前,会受到外部干扰,此处采用了光电隔离处理,选用了H11A817A作为光电隔离器件,集电极输出电流为50 mA;再者由于数字输出口的驱动能力较低,所以在此选用高耐压,大电流达林顿阵列,由7个硅NPN达林顿管组成的ULN2003AD,该器件电流增益高,灌电流可达500mA,工作电压较大,具有较宽的温度范围,所以选取该器件来提高数字输出端口的驱动能力。   该电路的工作原理:对于第一路数字量输出来说,第一种情况若DO0端输出电压信号为低电平时,则H11A817A的发光二极管导通发光,致使光敏三极管端导通,输出信号接在光敏三极管集电极,隔离后得到高电平信号。第二种情况若DO0端输出高电平。光敏三极管不导通。最终得到低电平信号。 3 测试系统软件设计 为了使系统实现需要的功能,还必须有软件的支持。在此主要用C语言编写单片机的软件程序,软件部分主要完成对传感器信号A/D,D/A转换处理,CAN总线的通信等工作。该控制器实现是通过微处理器把信号调理电路输出的信号进行转换,以便于进一步处理、传输等。所有功能都在这个主循环里面实现,只需调用这个主循环以外所定义的功能函数。根据不同的值执行与之对应的处理程序,A/D,D/A在系统初始化后,启动并不断转换采样通道并根据采样值不断更新显示,当有中断发生时执行中断服务程序。 对于整个设计框架,主程序尤为重要,系统开启时,主程序调用各个模块的功能子函数进行初始化,主函数将各个子程序连接起来,处理各个事件,等到程序运行结束后,再还原系统环境。本系统的软件部分主要包括:STM32自带ADC寄存器设置,AD转换程序,CAN通讯收发程序,DA转换程序等。总流程如图6所示。   4 通讯设计 制定iCAN协议的思路源于为中国中小型CAN应用网络提供一种简单、可靠、稳定的应用层协议。在充分汲取了DeviceNet协议和 CANopen协议之精萃的基础上,优先保障通信数据的可靠性与实时性,以相对简单的方式进行数据通信,从而有效降低了硬件实现成本,这就是iCAN协议的巨大优势。系统iCAN所具备的特点结构简单,灵活构建、低成本,而且由于采用CAN总线还具有良好的可靠性和稳定性,同时iCAN系统具有易于组态,安装、运行、维护简便的特点。 iCAN协议规范中,I/O数据单元分为7个不同的空间,占用0x00—0xdf数据空间:数字量输入单元DI、数字量输出单元DO、模拟量输入单元 AI、模拟量输出单元AO、串行接口0单元、串行接口1单元以及保留部分。iCAN协议中资源节点占用256字节空间:对于任意I/O数据需访问指定资源节点地址,但对于配置资源中的IO配置单元要通过资源节点地址以及子地址的方式访问,如图7所示说明报文处理流程。   5 结论 本设计的CAN控制器具备运行速度快、体积、性能可靠、功耗低等特性,实现了工业现场的数据采集、数据处理、数据输出以及CAN控制器与上位机通讯等功能。在模拟量与数字量的采集基础上,CAN控制节点上也有很大余量。本设计主要是针对当前工业控制的需求和现有工业设备接口单一、传输距离有限、数据网络化程度较低等多方面的缺点而开发设计的,设计出了这款接口种类多、体积小、可靠性高、易操作的新型CAN智能控制器设备。达到预期效果。采用 STM32F103RC平台控制板进行软件模拟测试,数据正常采集输出。

    时间:2015-11-24 关键词: 数据采集 can总线 数据处理 总线与接口

  • VME总线协议接口重新采用基于FPGA的设计

    VME总线是一种通用的计算机总线,是电子、计算机工业中应用最为广泛的计算机背板总线之一。它结合了Motorola公司Versa总线的电气标准和在欧洲建立的Eurocard标准的机械形状因子,定义了一个在紧密耦合的硬件架构中可进行互联数据处理、数据存储和连接外围控制器件的系统。从常规计算机、信号处理、通信、视频处理、物联网、设备/工业控制、军工、航空航天系统,在过去的几乎所有工业领域中,VME Bus都能提供给高可靠性能的服务。 Versa总线诞生于1981年,采用PLD实现,那时候Xilinx公司还没有成立,当然FPGA器件也没有出现。最近在电子设计网站上一篇题为“VME总线回归FPGA”的文章讨论了VMEbus设计的历史,从FPGA到ASSP,现在又回归到FPGA器件。来自Curtiss-Wright公司的高级产品市场经理Michael Slonosky如下说道: “从前的设计要到各种繁杂的组件,现在VME接口采用FPGA实现大大缩小了板卡的尺寸,同时提高了性能以及更多的特性。基于FPGA的实现方案越来越多的被高集成的板卡所采用,如Tundra/IDT Universe、Tempe Tsi148桥接板卡等,很多领先的COTS(商用现成品或技术)”供应商也将注意力集中到FPGA的解决方案上”。 Curtiss-Wright公司近期推出了Helix解决方案,它是一种基于FPGA实现的VMEbus桥接板卡,取代了早已停产的Tempe Tsi148。Curtiss-Wright公司是最大的VMEbus总线产品供应商,基于FPGA的解决方案不仅可以继续增加更多的特性或功能,而且更有利于Curtiss-Wright公司规划其将来的产品线。(图1 Curtiss-Wright公司推出的基于Xilinx Artix-7 FPGA的Helix VMEbus背板) 据Curtiss-Wright公司透露他们会将Helix应用到其VME旗舰产品上,目前的产品(VME-194和英特尔VME-1908)也将会被更新,重新采用Helix方案设计实现,FPGA器件赋予了一些已经停产产品新的血液,基于FPGA的实现方案扩展了产品的使用寿命和应用范围。

    时间:2018-04-04 关键词: 数据处理 vme 背板总线 总线与接口

  • 一款嵌入式数字存储示波器设计方案

    一款嵌入式数字存储示波器设计方案

    本文描述的数字存储示波卡是一种基于DSP的双通道数字存储示波器。该示波器采用的是TI公司的TMS320F2812芯片,它具有高速的数字信号处理能力和滤波功能以及实时、大容量波形存储、快速的信号处理等特性。并且本数字存储示波器具有便携、操作简单、精确度高、采样速率大等优点。1.前言数字存储示波器有别于一般的模拟示波器,它是将采集到的模拟电压信号转换为数字信号,由内部的微处理器进行分析、处理、存储、显示或打印等操作。这类示波器通常具有程控和遥控能力,通过GPIO接口还可将数据传输到计算机等外部设备进行分析处理。随着大规模集成电路的不断发展,功能强大的DSP数字信号处理器的实时性越来越强。DSP凭借其强大的数字信号处理能力,为数字示波器的数据采集系统的实现提供了一个可靠而又实用的平台,并且提高了数字存储示波器的采样速率、存储深度、波形捕获能力等指标。2.总体设计数字示波器主要由前端稳压处理电路、AD转换电路、集成于FPGA芯片的NIOS系统及各种控制电路和SDRAM、各种键盘和LCD接口等组成。其中DSP芯片作为后端处理的核心使用的是TI公司的TMS320F2812.它是32位定点DSP芯片,内含128K*64位的片内Flash存储器18K*16位的数据/程序存储器以及4K*16位的Boot Rom,FPGA芯片作为前端采集控制处理器,使用的是ALTEra公司的EP2C5Q208,它是Cyclone系列的一款低成本FPGA芯片拥有多达119808bit的内部RAM,4608个逻辑单元,支持Altera公司的NIOSII及SOPC,可满足设计要求。图1 数字示波器硬件系统如图1所示,被测信号首先从通道1或通道2,由于两个通道接收到的模拟信号的幅值处于不稳定状态,必须经过调理电路处理成A/D转换电路可以接收的电压范围,否则会引起非常严重的后果。A/D转换电路可以把调理后的模拟信号经过采样、保持、量化、编码等过程后转换成数字信号,在S D R A M控制器的作用下送入F P G A芯片。在FPGA内置的NIOS的总体控制下,利用内部的FIFO进行缓冲和相应的数据处理。在本设计中,DSP是整个示波卡数据处理和显示的核心,进行主要的数据处理,并且输出处理结果和相应的控制信号。FPGA在DSP发出的控制信号的作用下进行工作。DSP是一种高速的数字信号处理器,经过FPGA处理并保存于缓冲存储器中的数据,在DSP控制信号作用下,将数据送入SDRAM中的原始缓冲区中。再经过DSP各种差值和滤波等算法的处理后,送入示波卡的显示缓冲区,用于在LCD屏上的波形显示。2.1前端调理电路和A/D采样的设计一般A / D芯片允许输入的电压幅度都是固定的(-0.5v~+0.5v),由各种信号的衰减和放大以及电压偏置网络组成的预处理电路,负责把前端接收到的不稳定的模拟信号经过方法和衰减之后,稳定在允许输入的电压范围内。总体来说,前端预处理电路由两部分组成,一是由继电器和RC共同组成的衰减网络,既可以避免信号的失真又可以方便数字存储示波卡的基准调节;二是由两片运放AD8008组成的阻容匹配网络和驱动放大电路。AD8008是具有双通道、高性能、电流反馈型放大器,其具有超低失真和噪声特性,带宽为650MHz,并且具有宽电源电压范围(5V~12V)。图2 采样电路数据采集的核心是A/D转换功能。虽然DSP芯片本身具有A/D转换的功能,但是为了提高其工作速度,本设计采用两片AD9288完成模数转换的工作。在采样时钟的控制下,构成180度相位差,满足200MS/s采样速率。AD9288是一款双核8位单芯片采样模数转换器,内置片内采样保持电路,具有低成本、低功耗、小尺寸和易于使用等特性。AD9288采用100MSPS转换速率工作,在整个工作范围内都具有出色的动态性能。AD9288的输出为二进制码,送入FPGA存储模块后,可直接存储。每个通道均可以独立工作,最高可达475MHz模拟带宽,可以使双通道并行工作。2.2触发电路触发电路是信号采集系统的重要功能电路,其基本功能是提供一个稳定的触发相位点,用作水平扫描时基的时间参考零点,使波形在显示屏上稳定显示。本采集电路设计实现了一个周期和被测信号相关的触发脉冲信号,控制ADC数据采集。触发电路的核心部件是高速电平比较器,本采集电路中选用的是AD96685芯片和LT1713芯片。触发电路如图3所示。TrigLevel信号是迭加了源信号低频分量的比较电平,Ref是参考电位,Trig Source信号是被触发的源信号。通过改变Trig Level信号的电平值,实现触发电平的调节。通过LT1713比较整形后输出一对ECL差分时钟TrigP和TrigNP,再经过电平转换后送入FPGA内触发器。图3 触发电路2.3供电电路的设计数字存储示波卡的电源主要分三部分,一部分给高速A/D转换器供电,第二部分给FPGA供电,第三部分是给DSP芯片供电。考虑到成本和实用性等因素,使用比较常见的可调电源LM1117为A/D转换器和FPGA供电。A/D转换器需要的额定供电电压是+3.3V,单片A/D转换器在正常工作的情况下的功率是689mV,故耗费的电流在210mA左右,LM1117的额定供电电流800mA,使用两片可较好满足要求。FPGA供电分为内核供电和IO端口供电。内核供电电压为1.2V,由LM1117供电;IO端口可以进行包括1.5V、1.8V、2.5V、3.0V和3.3V等多种配置,其电源也同样由LM1117来提供。示波卡的运算放大器和场效应管等器件所需的负电压则由LM2991来提供。LM2991是输出可调低压差稳压器,输出电压调节范围为-2V至-25V(输出电流为1A)。DSP需要工作在更稳定的电压下,在示波卡的设计中用到了由TI公司生产的双电压输出芯片TPS70151.该芯片可以同时提供两路不同的电压,并且可以通过人为控制去改变上电顺序。如图4所示,两路输入VIN1和VIN2都被接到VDD5,VOUT1和VOUT2输出3.3V和1.8V.SEQ可以用来控制上电顺序,接地说明被置为低电平,那么VOUT1先输出3.3V,直到VOUT1输出电压达到2.7V左右时,VOUT2才开始有输出电压。MR1和MR2被用来人为的设置输入电压1和输入电压2,可用于控制RESET的输出电平,当两个引脚的任何一个输入电平为低时,那么RESET输出低电平。其他的控制端与DSP芯片连接,那么我们可以通过在DSP中编写C语言程序的方式达到对电源电压的控制。图4 DSP数字电源电路原理图2.4LCD显示的设计在本设计中,采用的LCD是FY43-4827-65K,具有480*272的高分辨率的彩色TFT显示屏。采用16位标准8080总线接口方式、色彩支持65536色使图像。超高的24MHz无等待总线读写速度,单点读写周期高达42ns,无需任何等待,可以和任何高速系统接口。独有显存更新窗口设定功能,用户可任意指定读写区域。对缓冲区的较高要求,示波卡需要对系统内存进行扩展,所以加入SDRAM作为显示缓冲区,用于存储临时数据、中间结果。LCD以ILI9320为控制器,ILI9230具有统一的时序逻辑(如图5所示)和非常丰富的指令编码,支持MSP430、51、DSP、FPGA等系列CPU.根据LCD控制器中不同的指令编码和DSP中的数据端口定义,还可以自行设计对LCD的控制指令和编程方式,实现对LCD屏上显示位置、显示内容以及色彩的组合控制。如图6所示,DSP通过数据总线与SDRAM的数据交换,把处理后的数据送入显示缓冲区中。同时DSP也可以通过控制总线向ILI9230发送指令,使其从SDRAM中读取数据,并送入LCD显示,这样就完成了一个显示的过程。图5 LCD控制器总线时序图图6 LCD显示模块硬件框图3.结束语在本方案中,FPGA作为前端的电路逻辑控制的核心,并做前期的一些数据处理;而DSP做作为本设计中整个系统的核心,示波器的滤波、差值过程以及显示和控制功能均在DSP芯片上完成,数字存储示波器的实时反映速度得到提高。通过实际的测试和使用,该示波器已基本达到了初期的设计要求,各项性能也达到了预定指标。采用了DSP与FPGA相互配合的方案,设计出一种嵌入式数字存储示波器。在无操作系统的情况下,实现波形处理和显示以及键盘控制,提高了CPU的运行效率。

    时间:2018-06-12 关键词: FPGA tms320f2812 存储技术 数据处理 数字存储示波器 ili9230

  • 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 存储技术 数据处理

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

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

    智能汽车一直以来被视为是如智能手机颠覆手机行业一样要革汽车产业的命,可是十多年过去了,像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 2 3 下一页 尾页
发布文章

技术子站

更多

项目外包

更多

推荐博客