先楫半导体

本文将为大家展示国产芯片HPM6000系列ADC性能出色的测试结果并为您提供了与HPM6000系列微控制器的模数转换器ADC相关的外部电路设计建议。

在HPM6700/6400系列微控制器上,提供了3个12位ADC和1个16位ADC。在HPM6300系列微控制器上,提供了3个16位ADC。在使用到AD转换的应用中,ADC的精度会影响到整个应用系统的性能。ADC的精度并不仅仅取决于模数转换器本身,也与微控制器的外部电路设计有关。


ADC外部电路设计

HPM6000系列高性能MCU的模数转换器ADC的供电和参考相关引脚总结如下:

1.png


表1. ADC的供电和参考引脚

本章节主要提供了ADC的供电和参考引脚的硬件设计建议。

1. ADC的供电

VANA为ADC的模拟供电引脚,VANA上的噪声有可能影响到ADC的精度。因此建议用户设计电路时,对HPM6000系列微控制器的VANA引脚谨慎处理。如条件允许,应采用单独的线性稳压器对VANA供电。推荐用户选择3.3V输出、供电电流大于50mA的LDO。


2.png

图1. VANA供电首选方案

如上图所示,HPM6000系列高性能微控制器支持单3.3V供电,可以对所有供电引脚提供统一的3.3V,对以下电源供电引脚:

  •  DCDC_IN,片上DCDC的供电引脚,片内DCDC提供1.1V的核心电压输出

  •  VPMC,电源管理域的外设供电引脚

  •  VIO_Bxx,各个IO Bank的供电引脚

这些供电引脚提供了微控制器整体功耗的主要部分,因此推荐用户使用效率更高的DCDC开关电源为之供电,对于不同系列产品,电源设计输出电流应有不小于1A的输出能力。


VANA的供电建议与其他电源引脚供电分开,以降低开关电源的噪声对模拟电路的影响,建议使用输出纹波更小的线性稳压器LDO对VANA供电,并在尽可能靠近VANA引脚的位置,并联1个4.7uF和1个0.1uF的电容用于滤波,注意电容应连接到模拟地。 

用户如果出于种种因素,没有条件实现使用单独的线性稳压器对VANA供电,可以参考下图的次选方案:

3.png

图2. VANA供电次选方案

VANA应当通过0欧姆的电阻或磁珠单点连接到微控制器的3.3V供电电源,并在尽可能靠近VANA引脚的位置,并联1个4.7uF和1个0.1uF的电容到模拟地用于滤波。VANA供电的次选方案对电源噪声相比推荐方案稍敏感,但是用到的电源器件较为节省,如果用户对ADC的性能要求不严格,可以采用次选供电方案。

2. ADC的参考

VREFH是模数转换器ADC的高位参考电压输入。VREFH的稳定直接影响到ADC的转换精度和抗噪声特性。建议用户采用独立的基准电压模块,提供VREFH,如下图所示:

4.png

 图3. VREFH首选方案

建议用户使用外部的基准电压模块提供VREFH,并在尽可能靠近VREFH引脚的位置,并联1个4.7uF和1个0.1uF的电容到模拟地用于滤波。

注意,VREFH的电压不要超过VANA的供电电压。

VREFL是ADC的低位参考电压,建议直接连接到模拟地,模拟地应当通过0欧姆的电阻单点与数字地连接。

如果出于成本考虑,不使用外部基准电压模块,用户可以参考以下VREFH次选方案:

5.png

图4. VREFH次选方案

VREFH应当通过0欧姆的电阻或磁珠单点连接到微控制器的VANA,并在尽可能靠近VREFH引脚的位置,并联1个4.7uF和1个0.1uF的电容到模拟地用于滤波。

VREFL是ADC的低位参考电压,建议直接连接到模拟地,模拟地应当通过0欧姆的电阻单点与数字地连接。

3.ADC的模拟信号输入

ADC的模拟信号输入线路上引入的噪声会对ADC的转换精度造成影响,用户可以采取以下措施,尽可能消除输入信号的噪音:

  • 尽可能减短输入信号线路的长度。

  • 避免在模拟信号线平行布置数字信号线路。

  • 如果条件允许,可以在模拟信号线两侧布置地线用作屏蔽。

  • 考虑在靠近ADC输入引脚的位置添加外部RC滤波器,注意RC滤波器的截止频率应  高于应用关心的ADC模拟输入信号的频率。

6.png

 图5. 模拟信号输入推荐

总   结

本文提供了HPM6000系列微控制器模数转换器ADC相关的硬件设计指南,ADC的参考电压和模拟供电质量直接关系到ADC的转换精度。建议用户根据应用的ADC转换精度要求,在以下几种参考方案中,选择合适的。

7.png

图6. ADC供电和参考连接方案总结

如上图所示,建议用户使用独立的线性稳压器产生VANA供电,独立的外部基准电压生成VREFH参考,以此获得最优的ADC转换精度。也可以考虑使用独立线性稳压器产生VANA和VREFH。性能最优的参考方案(前者),相比性能次优的参考方案(后者),ADC转换结果噪声降低可达约5%~10%。

对于ADC转换精度要求不严格的用户,可以使用开关电源DCDC产生MCU的全部供电。这个成本最优的参考方案,相比性能最优和性能次优的方案,ADC转换结果噪声增加可达20%~50%。

注意,ADC的转换精度受多种因素影响,各推荐方案及其效果仅供参考,建议用户根据自身应用对ADC的要求,选择合适的方案。

8.png

上图是HPM6750微控制器采用16位ADC(ADC3)以1MSPS采样率,对1.8V输入进行2万多次转换的转换结果。VREFH由外部基准电压提供,可以看到,转换结果的跳动幅度为+/-35LSB(~1.5mV)。所有转换结果的标准差为~5.58LSB。

9.png

上图是HPM6750的16位ADC(ADC3),采用标准测试方法,测试差分非线性(DNL)和积分非线性(INL)的测试结果。结果显示其16位ADC的DNL为-0.9/+1 LSB,INL为-5.2/+3.1 LSB。有兴趣的读者可以访问先楫半导体官方网站(www.hpmicro.com)查阅HPM6700/6400系列微控制器数据手册,获取完整的ADC电气特性参数。

以上为本期内容,如果您有想了解关于 HPM6000系列的其他内容,欢迎私信小编,后期会推出更多相关内容哦!

来源:先楫芯上人

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 166

本demo视频是由先楫半导体FAE 熊工为大家介绍是基于矢量控制的伺服电机驱动案例,采用ABZ测速方式,电流环执行频率20KHz,速度环10KHz,电流环执行时间1us,这个能够帮助用户提升电流环带宽,显著提高产品性能。

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 30

2023年2月17日,高性能嵌入式解决方案领导厂商上海先楫半导体(HPMicro Semiconductor Co., LTD.) 发布全新的通用微控制器HPM6200系列。该系列产品进一步完善先楫产品在工业和汽车应用领域的布局,以超强CPU性能、创新的实时控制外设及工业和车规级品质,为新能源、储能、电动汽车和工业自动化等应用提供了世界级解决方案。用高规格产品推动中国新能源自主可控,先楫再次打开“芯”篇章!

0.jpg

先楫半导体CEO曾劲涛先生表示:“HPM6200系列基于先楫团队多年的产品和应用经验积累,从IP设计,架构到软件均经过优化,是一款拥有完全自主产权的高性能MCU产品。国外大厂在新能源、储能等领域筑起了很高的壁垒,国产MCU要拿下这个市场必须深度理解应用,从芯片性能到整体方案,全面替代国外产品,才有可能真正解决卡脖子的问题。我们期待早日与各领域客户和合作伙伴一起开发迭代出更适合中国应用的方案。”

全新的HPM6200系列共有12产品型号,包括单核和双核产品,提供144 LQFP 及 116 BGA两种封装 (与先楫已量产的HPM6300 系列管脚兼容),有内置闪存(4MB)和无内置闪存选项。HPM6200 全线产品通过AEC-Q100 认证,工作温度范围在-40°C~125°C。更多的产品信息如下:

  • RISC-V 双核支持双精度浮点运算及强大的 DSP 扩展,主频达到600 MHz,性能达到6780 CoreMark和3420 DMIPS,可在1us内完成基于矢量控制的电流控制环路运算。

  • 32KB 高速缓存 (I/D Cache) 和双核共高达 512KB的零等待指令和数据本地存储器 (ILM / DLM),加上256KB 通用 SRAM,极大避免了低速外部存储器引发的性能损失。

  • 4 组8通道增强型 PWM 控制器,其中 2 组高分辨率PWM调制精度高达100ps,提升了系统控制精度,并可实现单芯片控制多轴电机或者单芯片实现复杂拓扑的数字电源。

  • 2 个可编程逻辑阵列 PLA,灵活实现组合逻辑和时序逻辑器件互联,在芯片内实现用户独有的功能电路设计。

  • 3 个 2MSPS 16 位高精度 ADC,配置为 12 位精度时转换率可达 4MSPS,多达 24 个模拟输入通道;4 个模拟比较器和 2 个 1MSPS 12 位 DAC。 

  • Σ-∆数字滤波 SDM,包含 SINC 数字滤波器,可外接4路Σ∆调制器,实现带隔离的高精度电流和电压信号采集。

  • 多种通讯接口: 1 个内置 PHY 的高速 USB,多达 4路 CAN-FD, 4 路 LIN 及丰富的 UART、 SPI、I2C 等。

1.png

HPM6200 沿用并扩展了先楫半导体已有的生态系统,包括全免费的商用集成开发环境Segger Embedded Studio,以及基于BSD许可证的SDK,其中包含了底层驱动、中间件和RTOS, 例如流行的开源项目lwIP, TinyUSB,CherryUSB, FreeRTOS,tensorflow lite for MCU以及完全自主研发的高性能电机控制库等。以上所有官方软件产品都将开源。硬件方面,HPM6200 提供一款性价比极高的EVK。EVK带板载调试接口,客户可直接调试,并支持ART-PI接口及先楫电机通用接口,以方便客户扩展应用和移植方案。零售价 298 人民币。

2.png

(HPM6200EVK开发板)

HPM6200系列产品现已开放接受订单,样片和开发板即刻开始供货。如需订购,可直接通过官网下单,或与您的客户经理和代理商联系,也可邮件至 info@hpmicro.com 或拨打021-5899-3108,更多信息敬请关注公众号“先楫半导体”或访问官网www.hpmicro.com

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 22

本视频由先楫资深嵌入式系统专家费振东(人称费教授)为大家介绍如何快速上手HPM6700/6400系列。

产品信息可访问以下链接了解详情: 

官网:www.hpmicro.com 

产品页:http://www.hpmicro.com/product/series.html?id=e1869a4a-6f70-49d1-b4de-5d52e0824d79

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 19

不管是工业自动化领域,还是汽车领域,抑或是生活家电领域,各个终端市场对电机性能都提出了更高的要求。它们不仅需要电机能够做到高效率和多功能控制,还需要电机在追求高转速的同时实现低噪音低振动的控制效果。在与日俱增的高标准性能要求下,高性能成了电机芯片竞争的关键。

纵观整个电机控制芯片市场,从低成本通用伺服驱控到中高性能通用伺服驱控,长于控制的MCU单芯片方案都是最常见且最受欢迎的,而且现在VC/FOC功能几乎已成为电机MCU的标配,是体现控制能力的核心竞争力。虽然严格来说,VC和FOC二者概念上是有差异的,但在大多数场景里,二者指的是同一种控制方法。VC矢量控制(Vector Control)将异步电动机的定子电流矢量分解为产生磁场的电流分量(励磁电流)和产生转矩的电流分量(转矩电流)分别加以控制,并同时控制两分量间的幅值和相位,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。VC矢量控制不仅解决了自然坐标系上实现电机速度、电流闭环负反馈控制难的问题,而且保证了优良的速度、转矩输出性能,在工控、汽车、家用、3D打印等行业得到了迅速的发展,成为主流电机控制的基本架构,其控制原理如下图所示:

1.png

图1 VC原理

如上图所示,VC矢量控制的核心源自于闭环负反馈,因此其带宽是电机控制产品最重要的衡量指标之一。具体来说,高带宽能够带来更快的指令响应时间和更优异的高频扰动抑制能力,这种能力最终体现在电机层面上的是更高的控制精度、更高的控制效率、更低的噪音和电机抖动。

而代码执行时间决定了带宽,是电机控制产品不可逾越的指标之一,这也造成了目前市场上电机控制产品性能输出有差异的现象。归根结底,电机控制的差异取决于芯片性能。其限制因素特别体现在以下三个方面:

  • 主控芯片主频限制:芯片主频不够高,无法做到高速运算,以及提升带宽;

  • 外环代码执行限制:内环代码通过原厂提供的硬件化方法可以执行很快,但是外环代码执行依旧不够快;

  • 代码硬件化限制:芯片所有代码硬件化,却产生了开发难以及无法做一些常见电机控制算法等问题。

因此想要实现更优秀的控制性能,电机控制MCU的选择非常关键。上海先楫半导体已经量产的RISC-V内核HPM6700/6400系列芯片抓住了上述主要矛盾,通过提升主频来解决电机控制行业的痛点,得益于RISC-V本身的简洁性和模块化设计,CPU能运行在更高的频率,带来更高的性能。以HPM6700/6400系列芯片为例,参数如下图所示:

2.png

图2 先楫HPM6700/6400系列芯片

HPM6700/6400系列高性能MCU展示了先楫半导体高性能芯片的研发实力,HPM6700/6400系列主频高达816MHz,不仅能够解决上文提到的电机控制性能的三大限制,而且契合现在电机多核驱控一体的发展趋势。HPM6700/6400系列还为电机系统提供了精度达2.5ns的4组共32路PWM输出以及4个正交编码器接口和4个霍尔传感器接口,完美适配高性能电机控制和数字电源运动控制系统。

< 解决方案分享>

先楫HPM6000系列芯片的1us电流环 3.png

图3 案例时序

案例使用先楫HPM6000系列芯片—HPM6400系列与HPM6300系列,采用图3所示的电流环时序,分别使用HPM6400系列与HPM6300系列芯片实测VC矢量控制中的电流环执行时间。具体而言:从提升电流内环带宽的角度出发,将图1中的VC结构划分为外环(位置速度环)、内环(电流环),如图4所示:

4.png

图4 等效VC结构

在VC矢量控制中,由于采用了坐标变换,dq轴电流在稳态情况下都是直流给定,而只在加减速或者突加减负载的时候,速度环会等效输出一个阶跃指令,电流环的带宽就是电流环能够以多快的速度去响应这个指令,带宽越大响应越快。所以说电流环执行时间直接决定了电流环的带宽,是电机控制产品必须考量的指标。

结果,先楫半导体已量产系列芯片实测的电流环执行时间如下图所示: 5.png

图5 HPM6400、6300系列芯片电流环执行时间实测数据

如图5所示,HPM6300系列芯片的电流环执行时间接近1us,HPM6400系列电流环执行时间更是控制在1us以内,该优势不仅能够提升带宽,更是说明了先楫高性能芯片能够带来高速运算能力,实现复杂电机控制算法(如多电机同步、参数辨识、SVC(Senseless Vector Control)、谐波注入等)与电流环的同步,甚至是以更高的频率执行。在高性能先楫HPM6000系列芯片的加持下,电机产品能够不失精度地展现出更优异的控制性能。

高性能电机控制 

HPM6000系列芯片介绍

HPM6700/6400系列为HPM6000系列的旗舰产品,采用RISC-V内核(*67为双核,64为单核),主频达816MHz,凭借先楫半导体的创新总线架构、高效的L1缓存和本地存储器,创下了高达9220CoreMark和高达4651 DMIPS 的MCU性能新纪录。

除了高算力RISC-V CPU,HPM6700/6400系列产品还创造性地整合了一系列高性能外设,包括支持2D图形加速的显示系统、高速USB、千兆以太网、CAN FD等通讯接口,高速12位和高精度16位模数转换器,面向高性能电机控制和数字电源的运动控制系统。

HPM6300系列是HPM6000系列的另一款力作,采用单核32位RISC-V处理器,主频超过600 MHz,性能超过3390CoreMark和1710 DMIPS。同时,HPM6300系列支持双精度浮点运算,模拟模块包括16位模数转换器,12位数模转换器和模拟比较器,配以多组纳秒级高分辨率PWM,为电机控制和数字电源应用提供强大硬件支持。

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 103

中国上海(2022年12月28日) ——国产高性能MCU厂商先楫半导体(下文称 “先楫”)宣布正式推出主频高达1GHz的MCU产品 HPM64G0 。这是继去年11月先楫发布超高性能RISC – V微控制器HPM6700/6400系列以来,该系列新增的一款硬核新力量。相比早前发布的HPM6700/6400系列其它MCU产品,HPM64G0运算性能提升至少20%,主频成功迈入GHz领域。这使得HPM64G0兼具MPU的高算力及MCU的高实时性,刷新先楫自己保持的通用MCU性能纪录,持续推动国产MCU的高速发展。

“ 先楫半导体CEO曾劲涛先生表示:先楫的HPM6700/6400系列自量产以来,得到了许多来自市场的积极反馈,用户皆惊艳于其可媲美国际品牌的超高性能。如今,整个系列也走过近一年时间,先楫团队持续开疆拓土,重磅推出1GHz 主频HPM64G0,为客户和开发者带来更多全新性能体验。未来,先楫也会继续努力,希望接下来能带给行业应用更多实打实的国产化创新。”

1.png


▲一张图了解HPM64G0

▲首款采用40nm工艺 GHz 高性能MCU

先楫半导体通过自主创新设计成功研发出HPM64G0, 开创了国产MCU前所未有的超高性能纪录。HPM64G0是一款基于RISC-V内核的高性能、低功耗、高集成度微控制器芯片,是行业内首个采用 40nm工艺突破1GHz 主频的MCU产品。该产品的创新设计,结合其RISC-V内核,进一步打破国外技术垄断,真正实现高性能MCU产品的自主可控。HPM64G0的问世为需要实时控制又兼具终端算力的应用提供了极大便利,可广泛应用于AI运算、高速运动控制,机器视觉及各种频域运算应用。HPM64G0支持RV32-IMPAFDC扩展,动态分支预测等,配备32KB指令/32KB数据高速一级缓存,256KB指令/256KB数据本地存储器,支持零周期等待访问。根据实测结果,HPM64G0 MCU单核主频算力可超1Ghz,主频运算可高达5650 Coremark 和2850 DMIPS,是目前市场上高性能MCU的理想之选。此外,HPM64G0还配置强大的FPU和DSP,32KB 高速缓存 (I/D Cache) 和高达 512KB 的零等待指令和数据本地存储器 (ILM/DLM),加上1.5 MB内置通用SRAM,极大避免了低速外部存储器引发的性能损失。

功耗方面,HPM64G0集成高效率DCDC 转换器和 LDO, 无需外挂PMIC,支持系统单电源供电,可动态调节输出电压实现性能-功耗平衡,兼顾了电源的灵活性,易用性和效率,可灵活支持各种功耗模式,优化电源使用效率。HPM64G0以1GHz满频运行时,芯片整体功耗可低至700mW,无需外加散热片。

HPM64G0还拥有强大的多媒体支持能力和丰富外设接口,其适配的LCD显示控制器可支持高达1366x768 60fps的八图层RGB显示支持,带2D图形加速。HPM64G0还可支持双千兆以太网,IEEE1588,双目摄像头等。其强大的外设接口也是用户们给予高度肯定的地方,具有4 组共32 路精度达2.5ns 的PWM、3 个12 位高速 ADC 5MSPS、1个16 位高精度 ADC 2MSPS、4 个模拟比较器和多达 29 个模拟输入通道。

▲持续推动RISC-V高性能应用落地

HPM64G0属于真正意义上填补了RISC-V在1GHz高性能MCU的空白,助力RISC-V高性能应用持续落地。HPM64G0通过了严格的可靠性测试,可被广泛应用于消费类及物联网等不同领域。先楫半导体以行动力来创造更多有价值有市场竞争力的MCU产品,让全球更多的RISC-V关注者和商业客户可体验高性能MCU的魅力。

样片申请已启动 >>>

HPM64G0系列产品现已开放接受订单,样片将于2023年2月底开始供货。如需订购可邮件至 info@hpmicro.com 或拨打021-5899-3108。欲了解更多详情,敬请关注公众号“先楫芯上人”、“先楫半导体”或访问官网www.hpmicro.com

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 499

本文内容来自先楫开发者 @Xusiwei1236,介绍了如何在HPM6750上运行边缘AI框架,感兴趣的小伙伴快点来看看。

---------------  以下为测评内容 ---------------

TFLM是什么?

你或许都听说过TensorFlow——由谷歌开发并开源的一个机器学习库,它支持模型训练和模型推理。

今天介绍的TFLM,全称是TensorFlow Lite for Microcontrollers,翻译过来就是“针对微控制器的TensorFlow Lite”。那TensorFlow Lite又是什么呢?

TensorFlow Lite(通常简称TFLite)其实是TensorFlow团队为了将模型部署到移动设备而开发的一套解决方案,通俗的说就是手机版的TensorFlow。下面是TensorFlow官网上关于TFLite的一段介绍:

“TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。”

而我们今天要介绍的TensorFlow Lite for Microcontrollers(TFLM)则是 TensorFlow Lite的微控制器版本。这里是官网上的一段介绍:

“ TensorFlow Lite for Microcontrollers (以下简称TFLM)是 TensorFlow Lite 的一个实验性移植版本,它适用于微控制器和其他一些仅有数千字节内存的设备。它可以直接在“裸机”上运行,不需要操作系统支持、任何标准 C/C++ 库和动态内存分配。核心运行时(core runtime)在 Cortex M3 上运行时仅需 16KB,加上足以用来运行语音关键字检测模型的操作,也只需 22KB 的空间。”

这三者一脉相承,都出自谷歌,区别是TensorFlow同时支持训练和推理,而后两者只支持推理。TFLite主要用于支持手机、平板等移动设备,TFLM则可以支持单片机。从发展历程上来说,后两者都是TensorFlow项目的“支线项目”。或者说这三者是一个树形的发展过程,具体来说,TFLite是从TensorFlow项目分裂出来的,TFLite-Micro是从TFLite分裂出来的,目前是三个并行发展的。在很长一段时间内,这三个项目的源码都在一个代码仓中维护,从源码目录的包含关系上来说,TensorFlow包含后两者,TFLite包含tflite-micro。

HPM SDK中的TFLM

  • TFLM中间件

HPM SDK中集成了TFLM中间件(类似库,但是没有单独编译为库),位于hpm_sdk\middleware子目录:

1.png

这个子目录的代码是由TFLM开源项目裁剪而来,删除了很多不需要的文件。

  • TFLM示例

HPM SDK中也提供了TFLM示例,位于hpm_sdk\samples\tflm子目录:

2.png

示例代码是从官方的persion_detection示例修改而来,添加了摄像头采集图像和LCD显示结果。

由于我手里没有配套的摄像头和显示屏,所以本篇没有以这个示例作为实验。

在HPM6750上运行TFLM基准测试

接下来以person detection benchmark为例,讲解如何在HPM6750上运行TFLM基准测试。

  • 将person detection benchmark源代码添加到HPM SDK环境

按照如下步骤,在HPM SDK环境中添加person detection benchmark源代码文件:

1、在HPM SDK的samples子目录创建tflm_person_detect_benchmark目录,并在其中创建src目录;

2、从上文描述的已经运行过person detection benchmark的tflite-micro目录中拷贝如下文件到src目录:

  • tensorflow\lite\micro\benchmarks\person_detection_benchmark.cc

  • tensorflow\lite\micro\benchmarks\micro_benchmark.h

  • tensorflow\lite\micro\examples\person_detection\model_settings.h

  • tensorflow\lite\micro\examples\person_detection\model_settings.cc

3、在src目录创建testdata子目录,并将tflite-micro目录下如下目录中的文件拷贝全部到testdata中:

  1. tensorflow\lite\micro\tools\make\gen\linux_x86_64_default\genfiles\tensorflow\lite\micro\examples\person_detection\testdata

4、修改person_detection_benchmark.cc、model_settings.cc、no_person_image_data.cc、person_image_data.cc 文件中部分#include预处理指令的文件路径(根据拷贝后的相对路径修改);

5、person_detection_benchmark.cc文件中,main函数的一开始添加一行board_init();、顶部添加一行#include "board.h”

  • 添加CMakeLists.txt和app.yaml文件

在src平级创建CMakeLists.txt文件,内容如下:

cmake_minimum_required(VERSION 3.13)

set(CONFIG_TFLM 1)

find_package(hpm-sdk REQUIRED HINTS $ENV{HPM_SDK_BASE})
project(tflm_person_detect_benchmark)
set(CMAKE_CXX_STANDARD 11)

sdk_app_src(src/model_settings.cc)
sdk_app_src(src/person_detection_benchmark.cc)
sdk_app_src(src/testdata/no_person_image_data.cc)
sdk_app_src(src/testdata/person_image_data.cc)
sdk_app_inc(src)sdk_ld_options("-lm")
sdk_ld_options("--std=c++11")
sdk_compile_definitions(__HPMICRO__)
sdk_compile_definitions(-DINIT_EXT_RAM_FOR_DATA=1)
# sdk_compile_options("-mabi=ilp32f")
# sdk_compile_options("-march=rv32imafc")
sdk_compile_options("-O2")
# sdk_compile_options("-O3")
set(SEGGER_LEVEL_O3 1)
generate_ses_project()

在src平级创建app.yaml文件,内容如下:

dependency:  
   - tflm
  • 编译和运行TFLM基准测试

接下来就是大家熟悉的——编译运行了。首先,使用generate_project生产项目:

3.png

接着,将HPM6750开发板连接到PC,在Embedded Studio中打卡刚刚生产的项目:

4.png

这个项目因为引入了TFLM的源码,文件较多,所以右边的源码导航窗里面的Indexing要执行很久才能结束。

然后,就可以使用F7编译、F5调试项目了:

5.png

编译完成后,先打卡串口终端连接到设备串口,波特率115200。启动调试后,直接继续运行,就可以在串口终端中看到基准测试的输出了:

============================== 
hpm6750evkmini clock summary
==============================
cpu0:            816000000Hz
cpu1:            816000000H
zaxi0:            200000000Hz
axi1:            200000000Hz
axi2:            200000000Hz
ahb:             200000000Hz
mchtmr0:         24000000Hz
mchtmr1:         1000000Hz
xpi0:            133333333Hz
xpi1:            400000000Hz
dram:            166666666Hz
display:         74250000Hz
cam0:            59400000Hz
cam1:            59400000Hz
jpeg:            200000000Hz
pdma:            200000000Hz
=============================

----------------------------------------------------------------------
$$\   $$\ $$$$$$$\  $$\      $$\ $$\
$$ |  $$ |$$  __$$\ $$$\    $$$ |\__|
$$ |  $$ |$$ |  $$ |$$$$\  $$$$ |$$\  $$$$$$$\  $$$$$$\   $$$$$$\
$$$$$$$$ |$$$$$$$  |$$\$$\$$ $$ |$$ |$$  _____|$$  __$$\ $$  __$$\
$$  __$$ |$$  ____/ $$ \$$$  $$ |$$ |$$ /      $$ |  \__|$$ /  $$ |
$$ |  $$ |$$ |      $$ |\$  /$$ |$$ |$$ |      $$ |      $$ |  $$ |
$$ |  $$ |$$ |      $$ | \_/ $$ |$$ |\$$$$$$$\ $$ |      \$$$$$$  |
\__|  \__|\__|      \__|     \__|\__| \_______|\__|       \______/
----------------------------------------------------------------------

InitializeBenchmarkRunner took 114969 ticks (4 ms).
WithPersonDataIterations(1) took 10694521 ticks (445 ms)
DEPTHWISE_CONV_2D took 275798 ticks (11 ms).
DEPTHWISE_CONV_2D took 280579 ticks (11 ms).
CONV_2D took 516051 ticks (21 ms).
DEPTHWISE_CONV_2D took 139000 ticks (5 ms).
CONV_2D took 459646 ticks (19 ms).
DEPTHWISE_CONV_2D took 274903 ticks (11 ms).
CONV_2D took 868518 ticks (36 ms).
DEPTHWISE_CONV_2D took 68180 ticks (2 ms).
CONV_2D took 434392 ticks (18 ms).
DEPTHWISE_CONV_2D took 132918 ticks (5 ms).
CONV_2D took 843014 ticks (35 ms).
DEPTHWISE_CONV_2D took 33228 ticks (1 ms).
CONV_2D took 423288 ticks (17 ms).
DEPTHWISE_CONV_2D took 62040 ticks (2 ms).
CONV_2D took 833033 ticks (34 ms).
DEPTHWISE_CONV_2D took 62198 ticks (2 ms).
CONV_2D took 834644 ticks (34 ms).
DEPTHWISE_CONV_2D took 62176 ticks (2 ms).
CONV_2D took 838212 ticks (34 ms).
DEPTHWISE_CONV_2D took 62206 ticks (2 ms).
CONV_2D took 832857 ticks (34 ms).
DEPTHWISE_CONV_2D took 62194 ticks (2 ms).
CONV_2D took 832882 ticks (34 ms).
DEPTHWISE_CONV_2D took 16050 ticks (0 ms).
CONV_2D took 438774 ticks (18 ms).
DEPTHWISE_CONV_2D took 27494 ticks (1 ms).
CONV_2D took 974362 ticks (40 ms).
AVERAGE_POOL_2D took 2323 ticks (0 ms).
CONV_2D took 1128 ticks (0 ms).
RESHAPE took 184 ticks (0 ms).
SOFTMAX took 2249 ticks (0 ms).

NoPersonDataIterations(1) took 10694160 ticks (445 ms)
DEPTHWISE_CONV_2D took 274922 ticks (11 ms).
DEPTHWISE_CONV_2D took 281095 ticks (11 ms).
CONV_2D took 515380 ticks (21 ms).
DEPTHWISE_CONV_2D took 139428 ticks (5 ms).
CONV_2D took 460039 ticks (19 ms).
DEPTHWISE_CONV_2D took 275255 ticks (11 ms).
CONV_2D took 868787 ticks (36 ms).
DEPTHWISE_CONV_2D took 68384 ticks (2 ms).
CONV_2D took 434537 ticks (18 ms).
DEPTHWISE_CONV_2D took 133071 ticks (5 ms).
CONV_2D took 843202 ticks (35 ms).
DEPTHWISE_CONV_2D took 33291 ticks (1 ms).
CONV_2D took 423388 ticks (17 ms).
DEPTHWISE_CONV_2D took 62190 ticks (2 ms).
CONV_2D took 832978 ticks (34 ms).
DEPTHWISE_CONV_2D took 62205 ticks (2 ms).
CONV_2D took 834636 ticks (34 ms).
DEPTHWISE_CONV_2D took 62213 ticks (2 ms).
CONV_2D took 838212 ticks (34 ms).
DEPTHWISE_CONV_2D took 62239 ticks (2 ms).
CONV_2D took 832850 ticks (34 ms).
DEPTHWISE_CONV_2D took 62217 ticks (2 ms).
CONV_2D took 832856 ticks (34 ms).
DEPTHWISE_CONV_2D took 16040 ticks (0 ms).
CONV_2D took 438779 ticks (18 ms).
DEPTHWISE_CONV_2D took 27481 ticks (1 ms).
CONV_2D took 974354 ticks (40 ms).
AVERAGE_POOL_2D took 1812 ticks (0 ms).
CONV_2D took 1077 ticks (0 ms).
RESHAPE took 341 ticks (0 ms).
SOFTMAX took 901 ticks (0 ms).

WithPersonDataIterations(10) took 106960312 ticks (4456 ms)

NoPersonDataIterations(10) took 106964554 ticks (4456 ms)

可以看到,在HPM6750EVKMINI开发板上,连续运行10次人像检测模型,总体耗时4456毫秒,每次平均耗时445.6毫秒。

在树莓派3B+上运行TFLM基准测试

  • 在树莓派上运行TFLM基准测试

树莓派3B+上可以和PC上类似,直接运行PC端的测试命令,得到基准测试结果:

6.png

可以看到,在树莓派3B+上的,对于有人脸的图片,连续运行10次人脸检测模型,总体耗时4186毫秒,每次平均耗时418.6毫秒;对于无人脸的图片,连续运行10次人脸检测模型,耗时4190毫秒,每次平均耗时419毫秒。

  • HPM6750和树莓派3B+、AMD R7 4800H上的基准测试结果对比

这里将HPM6750EVKMINI开发板、树莓派3B+和AMD R7 4800H上运行人脸检测模型的平均耗时结果汇总如下:

7.png

可以看到,在TFLM人脸检测模型计算场景下,HPM6750EVKMINI和树莓派3B+成绩相当。虽然HPM6750的816MHz CPU频率比树莓派3B+搭载的BCM2837 Cortex-A53 1.4GHz的主频低,但是在单核心计算能力上没有相差太多。

这里树莓派3B+上的TFLM基准测试程序是运行在64位Debian Linux发行版上的,而HPM6750上的测试程序是直接运行在裸机上的。由于操作系统内核中任务调度器的存在,会对CPU的计算能力带来一定损耗。所以,这里进行的并不是一个严格意义上的对比测试,测试结果仅供参考。

(本文参考链接:http://m.eeworld.com.cn/bbs_thread-1208270-1-1.html

直接转载来源:先楫芯上人

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 286

页面

订阅 RSS - 先楫半导体