blingbling111

个性签名:

米尔电子,专注嵌入式处理器

  • 2025-02-08
  • 发表了主题帖: 如何创建机器学习环境-基于瑞芯微米尔RK3576开发板

    本篇源自:优秀创作者 lulugl 本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的创建机器学习环境方案测试。   【前言】 【米尔-瑞芯微RK3576核心板及开发板】具有6TpsNPU以及GPU,因此是学习机器学习的好环境,为此结合《深度学习的数学——使用Python语言》 1、使用vscode 连接远程开发板 2、使用conda新建虚拟环境: root@myd-lr3576x-debian:/home/myir/pro_learn# conda create --name myenv python=3.9   执行结果如下: root@myd-lr3576x-debian:/home/myir/pro_learn# conda create --name myenv python=3.9 Channels: - defaults Platform: linux-aarch64 Collecting package metadata (repodata.json): done Solving environment: done ## Package Plan ## environment location: /root/miniconda3/envs/myenv added / updated specs: - python=3.9 The following packages will be downloaded: package | build ---------------------------|----------------- _libgcc_mutex-0.1 | main 2 KB defaults _openmp_mutex-5.1 | 51_gnu 1.4 MB defaults ca-certificates-2024.11.26 | hd43f75c_0 131 KB defaults ld_impl_linux-aarch64-2.40 | h48e3ba3_0 848 KB defaults libffi-3.4.4 | h419075a_1 140 KB defaults libgcc-ng-11.2.0 | h1234567_1 1.3 MB defaults libgomp-11.2.0 | h1234567_1 466 KB defaults libstdcxx-ng-11.2.0 | h1234567_1 779 KB defaults ncurses-6.4 | h419075a_0 1.1 MB defaults openssl-3.0.15 | h998d150_0 5.2 MB defaults pip-24.2 | py39hd43f75c_0 2.2 MB defaults python-3.9.20 | h4bb2201_1 24.7 MB defaults readline-8.2 | h998d150_0 381 KB defaults setuptools-75.1.0 | py39hd43f75c_0 1.6 MB defaults sqlite-3.45.3 | h998d150_0 1.5 MB defaults tk-8.6.14 | h987d8db_0 3.5 MB defaults tzdata-2024b | h04d1e81_0 115 KB defaults wheel-0.44.0 | py39hd43f75c_0 111 KB defaults xz-5.4.6 | h998d150_1 662 KB defaults zlib-1.2.13 | h998d150_1 113 KB defaults ------------------------------------------------------------ Total: 46.2 MB The following NEW packages will be INSTALLED: _libgcc_mutex anaconda/pkgs/main/linux-aarch64::_libgcc_mutex-0.1-main _openmp_mutex anaconda/pkgs/main/linux-aarch64::_openmp_mutex-5.1-51_gnu ca-certificates anaconda/pkgs/main/linux-aarch64::ca-certificates-2024.11.26-hd43f75c_0 ld_impl_linux-aar~ anaconda/pkgs/main/linux-aarch64::ld_impl_linux-aarch64-2.40-h48e3ba3_0 libffi anaconda/pkgs/main/linux-aarch64::libffi-3.4.4-h419075a_1 libgcc-ng anaconda/pkgs/main/linux-aarch64::libgcc-ng-11.2.0-h1234567_1 libgomp anaconda/pkgs/main/linux-aarch64::libgomp-11.2.0-h1234567_1 libstdcxx-ng anaconda/pkgs/main/linux-aarch64::libstdcxx-ng-11.2.0-h1234567_1 ncurses anaconda/pkgs/main/linux-aarch64::ncurses-6.4-h419075a_0 openssl anaconda/pkgs/main/linux-aarch64::openssl-3.0.15-h998d150_0 pip anaconda/pkgs/main/linux-aarch64::pip-24.2-py39hd43f75c_0 python anaconda/pkgs/main/linux-aarch64::python-3.9.20-h4bb2201_1 readline anaconda/pkgs/main/linux-aarch64::readline-8.2-h998d150_0 setuptools anaconda/pkgs/main/linux-aarch64::setuptools-75.1.0-py39hd43f75c_0 sqlite anaconda/pkgs/main/linux-aarch64::sqlite-3.45.3-h998d150_0 tk anaconda/pkgs/main/linux-aarch64::tk-8.6.14-h987d8db_0 tzdata anaconda/pkgs/main/noarch::tzdata-2024b-h04d1e81_0 wheel anaconda/pkgs/main/linux-aarch64::wheel-0.44.0-py39hd43f75c_0 xz anaconda/pkgs/main/linux-aarch64::xz-5.4.6-h998d150_1 zlib anaconda/pkgs/main/linux-aarch64::zlib-1.2.13-h998d150_1 Proceed ([y]/n)? y Downloading and Extracting Packages: Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate myenv # # To deactivate an active environment, use # # $ conda deactivate root@myd-lr3576x-debian:/home/myir/pro_learn# 然后再激活环境: root@myd-lr3576x-debian:/home/myir/pro_learn# conda activate myenv (myenv) root@myd-lr3576x-debian:/home/myir/pro_learn#   2、查看python版本号: (myenv) root@myd-lr3576x-debian:/home/myir/pro_learn# python --version Python 3.9.20 3、使用conda install numpy等来安装组件,安装好后用pip list查看 编写测试代码: import numpy as np from sklearn.datasets import load_digits from sklearn.neural_network import MLPClassifier d = load_digits() digits = d["data"] labels = d["target"] N = 200 idx = np.argsort(np.random.random(len(labels))) xtest, ytest = digits[idx[:N]], labels[idx[:N]] xtrain, ytrain = digits[idx[N:]], labels[idx[N:]] clf = MLPClassifier(hidden_layer_sizes=(128, )) clf.fit(xtrain, ytrain) score = clf.score(xtest, ytest) pred = clf.predict(xtest) err = np.where(pred != ytest)[0] print("score:", score) print("err:", err) print("actual:", ytest[err]) print("predicted:", pred[err])   在代码中,使用MLPClassifier对象进行建模,训练测试,训练数据集非常快,训练4次后可以达到0.99: 【总结】 米尔的这款开发板,搭载3576这颗强大的芯片,搭建了深度学习的环境,进行了基础的数据集训练,效果非常好!在书中记录训练要几分钟,但是这在这款开发板上测试,只要几秒钟就训练完毕,书中说总体准确率为0.97,但是我在这款开发板上有0.99的良好效果!

  • 发表了主题帖: 如何安装模拟器玩nes小游戏-基于米尔瑞芯微RK3576开发板

    本篇源自:优秀创作者 小手凉凉 本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的安装模拟器玩nes小游戏方案测试。   核心板系统 操作系统镜像文件说明 myir-image-lr3576-debian: 提供 debian 系统,Gnome 默认桌面环境,包含完整的硬件 驱动,常用的系统工具,调试工具等。 myir-image-linux-full: 以 buildroot 构建的全功能的镜像,weston 桌面环境,包含所有 的完整的硬件驱动,常用的系统工具,调试工具等。 此次是在linux开发板上安装nestopia       linux下安装模拟器 主板连接hdmi到显示器接入鼠标键盘,连接网络后更新apt,后面需要用到apt安装     执行命令 # sudo apt-get install nestopia 等待即可一路安装下来     在应用程序查找器中即可看到图标,以便于开启模拟器     效果如下     将预先准备的额nes格式小游戏放桌面,通过打开文件方式加载进去     打开模拟器开始启动     试玩nes 打开nes游戏效果如下     可以通过设置画面全屏显示     设置模拟器中按键功能,可惜现在没有游戏手柄     最终开启效果     视频效果 视频:https://www.bilibili.com/video/BV1dG6RY9ESL/?vd_source=e9927453e87f8203e95e89bd26c68f4d

  • 2025-01-22
  • 发表了主题帖: 米尔瑞芯微RK3576第二代8nm高性能AIoT平台到底有多香?

    文章来源公众号:电子开发学习 瑞芯微近期推出了第二代8nm高性能AIOT平台——RK3576。             RK3576应用方向指向工业控制及网关,云终端,人脸识别设备,车载中控,商显等等。参数方面,内置了四核Cortex-A72+四核Cortex-A53,频率最高2.2GHz,内置ARM G52 MC3 GPU,NPU算力高达6TOPS……   参数看着非常犀利,而且据说主打的就是性价比。我们近期也拿到了米尔电子推出的搭载RK3576芯片的开发板——MYD-LR3576,简单体验一番之后,给大家推出这篇开发板上手体验文章,供您在做选型时参考。     01 开发板欣赏         包装盒里最主要的东西当然就是MYD-LR3576开发板本身以及一个纸质的快速上手指南,另外盒子里还有电源适配器和USB线等附件,限于篇幅不做展示。       板子依然是米尔最经典的配色,雅光黑色油墨+焊盘沉金工艺,看着逼格拉满。SOC模组上加了一个很大的散热器。一侧是音频、Mini DP、HDMI、两个USB3.0口、两个以太网接口等。 另一侧是电源输入口、调试口、五个按键(包含三个用户按键、RESET按键、BOOT按键)。 两端各是2*20的2.54mm间距排针。 背面是M.2硬盘接口、SD卡槽、3组4 lane的MIPI CSI摄像头输入接口,以及一个MIPI DSI显示输出接口。 去掉散热器之后,就可以看到板载的米尔MYC-LR3576模组了。这个模组就是米尔推出的LGA封装模组。模组有加屏蔽壳,屏蔽壳在RK3576芯片顶端部分有开窗。这个RK3576就是标题里说的性价比无敌的SOC,集成了四核ARM Cortex-A72@2.2GHz和四核ARM Cortex-A53@1.8GHz,以及还有一颗Cortex-M0的MCU核。GPU方面,它集成的是Mali-G52 MC3。搭载了算力高达6TOPS的NPU加速器。集成度是真的高,性能也是真的强啊。 从缝隙看进去,里面用的阻容器件是真的小啊。这模组里面封装了SOC、PMIC、DDR、eMMC,以及各种阻容感,布局布线密度很大。所以做终端产品的一般规模企业,真的没必要自己做核心板。首先是研发难度较大、其次研发成本和时间投入巨大。索性专业的事情交给专业的人做,直接买这种成熟的模组往底板上一贴,还挺香的。 从这个角度看,这个模组真漂亮啊,这就是LGA封装的魅力。相比于BTB连接器、邮票孔连接、排针连接等方式,LGA可以做到连接尺寸最小,可靠性最高,焊接也很方便,把模组当做一个大号的LGA封装的芯片一样使用即可。 板子上电源入口部分细节。 按键及指示灯细节。 HDMI和USB等接口防护电路细节。 以太网接口细节。 Wifi模组及天线细节。 MYiR logo细节。米尔真是把电路板的配色玩到极致了,黑金电路板搭配橙色排针,看起来就很高端,实际上他们的板子应用场景也确实都很高端。 板子看完了,接下来上电,出厂固件已经烧录好了Debian 12 操作系统。把我的一个2K 27寸显示屏用HDMI线连接到这个开发板,无压力点亮。再给接个键盘,鼠标,就可以当做另一台电脑用了。 虽然看起来蛮帅气的,但是我还是想体验一下,这个板子的开发流程。   02 资料 要体验就要先拿到资料。开发板的包装盒和核心板屏蔽壳上都有二维码及产品的PN码和SN码,使用这两个码可以在米尔开发者中心下载对应产品的资料。 第一次体验到这么正规的开发板资料获取方式,瞬间感觉付费用户就是不一样。 资料列表中的硬件资料,提供了硬件设计指南、硬件用户手册、硬件资料包。 软件提供了米尔定制的Debian操作系统相关的软件包和Linux操作系统相关软件包。这个下载方式是阿里云盘,将近20G的资料,十来分钟就下载完了,体验感很不错,看来米尔是真的从用户层面考虑这些细节了。 先看看文档中的《MYD-LR3576 Debian软件开发指南.pdf》 目录。 随便找个内容看看,也很详细,而且写了可能会遇到的错误以及处理办法。 作为硬件工程师转行的嵌入式工程师,硬件资料是我首要关注的,仔细看发现内容真多啊。其实也不意外,我之前就有分享过米尔的瑞米派资料:谁家做板子这么开源啊?赶紧下载资料囤起来,怕他们后悔。 任何一个外设都有详细的参考电路、Layout建议。那是不是说,如果我想使用他们的核心板做底板,快速出产品给客户,直接照抄他们的设计指南就行了?我觉得大可不必,因为他们直接提供了底板的原理图和PCB文件啊,东西都喂到嘴里了,还需要自己再去动手抄吗?那我CV工程师的尊严何在?开玩笑归开玩笑,这样减小了硬件环节的工作量,企业就有更多的精力专注于软件层面的开发了。 底板是六层板,拼板也做好了。Allegro的好处就是直接可以把封装和焊盘一键导出,为我所用,一个字,爽!后面如果有客户找我做3576项目的话,那赚钱不是分分钟嘛,哈哈哈。   03 开发初体验 看着这么详细的软硬件开发资料,我觉着不跟着走一下有点对不起这资料。于是赶紧打开Ubuntu,跟着《MYD-LR3576 Debian软件开发指南.pdf》开始编译系统。 第一步就是进入SDK目录,使用./build.sh lunch指令来配置目标开发板,这里选择7。 接下来就使用./build.sh指令来全部编译一遍。第一遍全编译会比较慢,可能需要几个小时,这时候起来活动活动、喝喝茶、甚至可以约个球友出去打会儿球,回来就编译好了。 编译好固件之后,使用瑞芯微的烧录工具烧录到板子上即可。关于烧录,《MYD-LR3576 Debian软件开发指南.pdf》中花了整整八页来讲,真就差手把手了。 烧录完重新上电,相当于又进入了一个全新系统,连上网浏览个网页、打开终端玩一玩,都没啥问题。我在Github上看到有一个开源的HomeNAS,打算抽空把它部署到这个板子上,这样的话,这个板子就可以作为我的家庭存储管理中心了,这部分内容等我做好了再分享给大家。   04 后记 整体来说,经过我的一番上手体验,发现这个板子无论做工用料、颜值都是非常不错的。资料完善程度也是远远超出了我的预期。跟着文档简单操作编译个SDK也是非常顺手。有句话说得很好:改变自己最快的方法,就是做自己最害怕做的事!我以前很排斥去上手嵌入式Linux,因为我觉得这里面的东西过于庞杂,所以这些年错过了不少发财的机会。但是最近硬着头皮真的去上手了嵌入式Linux,发现并没有那么难,而且资料比我之前学MCU的资料更丰富、详细、规范。真的就属于:早上手早涨薪,晚上手晚享受!

  • 2025-01-17
  • 发表了主题帖: 米尔瑞芯微RK3576实测轻松搞定三屏八摄像头

    RK3576参数强劲 RK3576是瑞芯微推出的一款高性能AIoT处理器,这款芯片以其卓越的计算能力、多屏幕支持、强大的视频编解码能力和高效的协处理器而闻名。   三屏8摄像头轻松搞定 米尔基于他们推出的MYD-LR3576开发板开发了一个三屏异显,8路摄像头输入的DEMO, 实测下来,RK3576轻松搞定了该任务。   MYD-LR3576开发板是基于RK3576设计的一款高性能开发板。它提供了丰富的接口资源,包括HDMI、DP、DSI、CSI等多种多媒体接口,USB 3.1/TYPE-C/DP1.4等高速接口,以及多个SAI音频接口、PCIe 2.1、SATA 3.1等接口。这些接口使得MYD-LR3576开发板能够灵活应用于各种场景。   米尔基于Linux系统开发的DEMO具体设计如下:   开发平台: MYD-LR3576开发板 配置使用2GB DDR和16GB EMMC进行部署   三屏异显: LVDS实现接10寸触摸屏:输出内容为是通过开启浏览器引擎访问米尔网页 MINI DP接27寸显示器:输出内容为8路摄像头捕捉图像预览 HDMI接15寸HDMI显示器:输出以基于QT开发的人机互动界面   八路摄像头: 通过米尔AHD转接板,每一路转接板将4路1080P AHD摄像头转换成MIPI信号。 本DEMO中,采用了MIPI CSI1和CS2,总计接了8路AHD摄像头。实现了8路摄像头的视频预览和采集。   性能分析: 运行以上全部应用,CPU占用34%,DDR占用50%,CPU仍有具体的利用空间赋能应用开发。 运行以上应用,在常温环境下,不加散热片状态,CPU读取温度约为65度。正面了高负载下的低功耗和低发热特性。   RK3576将为多屏多摄像头应用场景带来更高性价比的选择 RK3576的多屏多摄像头能力使其适用于多种应用场景,包括机器人、工程机械和高端显控系统。   机器人: 在机器人领域,RK3576的多屏显示和多摄像头输入能力使得机器人能够同时处理多个视觉任务,提高机器人的智能化水平。例如,迎宾机器人/养老机器人/快递机器人等可以通过多摄像头输入实现人脸识别和物体检测,同时通过多屏显示提供丰富的交互信息。米尔的MYD-LR3576开发板凭借其强大的计算能力和丰富的接口资源,非常适合用于机器人的原型开发和功能测试。   工程机械: 在工程机械领域,RK3576的多屏显示和多摄像头输入能力可以帮助工程机械实现远程监控和智能控制。通过多摄像头输入,工程机械可以实时采集工作现场的画面,并通过多屏显示提供清晰的监控画面,帮助操作人员更好地掌握工程进展。米尔的MYD-LR3576开发板以其高性能和稳定性,非常适合用于工程机械的智能控制系统开发。   高端显控系统: 在高端显控系统领域,RK3576的多屏显示能力使得系统能够同时支持多个高清显示屏幕,提供丰富的信息显示和交互界面。例如,在指挥中心或控制中心,高端显控系统需要同时显示多个监控画面和数据信息,RK3576的多屏显示能力能够满足这一需求。米尔的MYD-LR3576开发板凭借其强大的计算能力和丰富的接口资源,非常适合用于高端显控系统的开发和优化。     综上所述,RK3576以其卓越的计算能力、多屏幕支持、强大的视频编解码能力和高效的协处理器,在多屏多摄像头应用场景中表现出色。米尔的MYD-LR3576开发板凭借其丰富的接口资源和强大的性能,非常适合用于这类产品的开发,为机器人、工程机械和高端显控系统等领域的发展提供了有力支持。

  • 2025-01-10
  • 发表了主题帖: 米尔国产FPGA SoC芯选择,安路飞龙DR1M90核心板重磅发布

    在边缘智能、物联网、5G通信和自动驾驶等技术的快速发展下,FPGA市场需求呈现爆发式增长。国产FPGA也在这场技术浪潮中崭露头角,吸引了广大行业人士的关注。 昨日,米尔电子基于安路科技最新一代国产工业级FPGA FPSoC——发布MYC-YM90X SOM模组及评估套件。该产品采用安路飞龙DR1M90,95K LEs 可编程逻辑,片上集成 64位2*Cortex-A35 @1GHz处理器,适用于复杂的实时嵌入式系统应用,支持多种内存接口和丰富的外设端口,满足多样化场景需求。 通过硬核NPU,JPU,MIPI 来支持边缘智能应用,为FPGA市场注入新的活力。SOM模组标配1GB DDR3和8GB eMMC大容量存储,满足用户数据处理日益增长需求。   MYC-YM90X 核心板——小尺寸,大功能   安路飞龙DR1M90:高性能与丰富接口赋能边缘计算 DR1M90是安路科技推出的SALDRAGON系列高性能FPSoC器件之一。它集成了双核ARM Cortex-A35处理器、FPGA可编程逻辑和AI引擎,延续了安路科技FPSoC家族的低功耗、软硬件可编程和高扩展性的优势。 核心亮点 1.高性能计算(PS):双核ARM v8架构,主频高达1GHz,满足复杂嵌入式系统的实时性需求。 2.可编程逻辑(PL):提供94,464 LEs、240 DSP48单元、5.4Mb Bram,支持灵活的硬件加速功能。 3.可编程加速引擎(NPU,JPU):搭载0.4 TOPS NPU与JPU图像编解码单元,专为高效边缘计算与视频处理设计。 4.丰富接口支持(connect):支持LVCMOS、LVDS、三速以太网、USB、CAN-FD和MIPI等高速接口,通过PL侧可编程IO拓展更多用户可定制接口。 Mutilchip→One chip FPSoC 单片全场景解决方案   集成加速引擎,助力边缘智能   双核Cortex-A35 + 95K LEs等效逻辑单元,定义边缘智能新高度   开发资源丰富,快速上手 米尔为MYC-YM90X核心板及开发板提供完善的开发资源,包括: 操作系统支持:预装Linux系统,支持用户定制化开发。 配套文档:详细的用户手册、原理图PDF、BSP源码包和外设驱动。 开发工具:提供成熟的开发环境和技术支持,帮助开发者快速启动项目。 强劲边缘智能平台,定义行业新标准   评估板接口丰富,开箱即用   配套软件开发资源丰富   MYC-YM90X核心板:工业级品质与紧凑设计 MYC-YM90X集成了DR1M90、DDR、eMMC、QSPI、WDT、Osc、Power IC等电路,在50mm x 52mm x 1.6mm的紧凑尺寸中实现了高功能密度。 工艺设计 12层高密度PCB设计:采用沉金工艺生产,具备独立接地信号层,提升信号完整性。 LCC + LGA封装:核心板背面设计有200个引脚,确保可靠焊接与稳定连接。 工业级元器件:经过宽温、高湿、振动等环境适应性测试,适应恶劣工业条件。 LCC+ LGA封装,小尺寸,大功能!   自有工厂,国际认证标准,品质可靠   多元化应用场景 凭借强大的边缘计算能力和广泛的接口支持,MYC-YM90X核心板在以下领域具有广泛的应用前景: 机器视觉:支持复杂图像处理与实时边缘计算。 工业控制:满足工业设备高实时性与稳定性要求。 能源电力:优化智能电网与新能源设备的运行效率。 汽车电子:赋能智能驾驶与车载系统。 多场景应用,工业级设计的最佳选择   配套开发板型号与核心板配置 MYC-YM90X核心板支持多种型号配置,用户可根据项目需求选择不同存储与接口规格。此外,米尔提供全套开发板解决方案,包含必要的外围接口模块,助力用户快速搭建测试环境。     核心板配置型号 产品型号 主芯片 内存 存储器 工作温度 MYC-YM90G-8E1D-100-I DR1M90GEG484 1GB DDR3 8GB eMMC -40℃~+85℃ MYC-YM90M-8E1D-150-I (支持硬核MIPI,待上市) DR1M90MEG484 1GB DDR3 8GB eMMC -40℃~+85℃   开发板配置型号 产品型号 主芯片 内存 存储器 工作温度 MYD-YM90G -8E1D-100-I DR1M90GEG484 1GB DDR3 8GB eMMC -40℃~+85℃ MYD-YM90M-8E1D-80-I (支持硬核MIPI,待上市) DR1M90MEG484 1GB DDR3 8GB eMMC -40℃~+85℃   结语 国产FPGA正以强劲的势头推动技术创新,安路DR1M90核心板及其开发板作为代表性产品,为边缘计算和人工智能应用提供了强大的技术支持。米尔电子将继续以客户需求为中心,提供高品质、高可靠性的国产化解决方案,助力更多企业实现数字化转型与技术升级。 更多精彩内容,欢迎关注米尔电子公众号,第一时间获取最新技术资讯和产品动态!

  • 2025-01-03
  • 发表了主题帖: 国产高性能CPU--米尔瑞芯微RK3576赋能AIoT、工业、智能显示终端

    随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。   今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。     关于RK3576处理器   国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。   RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性: 8核心 6 TOPS超强算力 双千兆以太网 8K@30fps/4K@120fps 解码 ······         CPU具备4xA72@2.2Hz + 4xA53@1.8Hz,除了以上强悍的性能,还有众多通用的功能模块和外设资源,比如:PCIE、USB、SATA、DSMC/Flexbus、CANFD、UART等。   给大家看下RK3576的框图:       通过这些参数,你会发现,这款国产高性能CPU适用于工业、AIoT、边缘计算、智能移动终端以及其他多种数字多媒体等场景。     米尔基于RK3576核心板/开发板   上面介绍了这款今年新推出的国产高性能CPU,下面给大家看看米尔基于这款RK3576处理器的核心板/开发板。     1、核心板 这款核心板尺寸仅为:43x45x3.85mm,采用LGA封装,具备高可靠性,为了满足工业应用场景,核心板还带有屏蔽骨架,能有效减少工业干扰。     同时,为满足应用,核心板匹配最高内存  8GB LPDDR4X、 64GB eMMC、 32KBit E2PROM等       2、开发板 为了方便用户拓展自己的外设,米尔提供了配套的开发板(底板)。         开发板提供的接口非常丰富,包括常见的通信和多媒体接口:           MYC-LR3576核心板及开发板特色   1、支持三屏异显 这款开发板支持支持三屏异显,得益于处理器强大的音视频编解码能力,同时,开发板还具备HDMI/DP/MIPIDSI等图形输出的常用外设。   它最高支持4K分辨率的视频显示,还支持8K分辨率的硬解码,满足多场景多样化的显示需求。     2、支持多摄像头 由于具备强大的音视频编解码能力,然后也支持MIPI-DSI/Parallel RGB/MIPI CSI/16M Pixel ISP等市面上常见的多媒体接口。   视频输入能力: MIPI-CSI D-PHY v2.0,4 lane, 4.5Gbps/C-PHY v1.1, 3 trios, 2.5Gbps MIPI-CSI D-PHY v1.2, 2*4 lane或4*2 lane或4+2*2, 2.5Gbps DVP, 8/10/12/16-bit, BT.601/BT.656 and BT.1120 单通道ISP,16M pixels   3、赋能AIOT、边缘计算 RK3576处理器高性能8核心,具有6 TOPS的NPU加速器、3D GPU的高算力,在AIOT、边缘计算、 商用机器人、 AI 商显、 智能车载终端、 智慧电力等需要强大算力的应用也不在话下。         丰富的开发资源   MYC-LR3576系列核心板及开发板,提供 Linux 操作系统的驱动支持,并提供用户手册、PDF 原理图、外设驱动、BSP源码包、开发工具等相关资料;为开发者提供了稳定的设计参考和完善的软件开发环境。       1、操作系统镜像文件 myir-image-lr3576-debian:提供 debian 系统, Gnome 默认桌面环境, 包含完整的硬件驱动, 常用的系统工具, 调试工具等。   myir-image-linux-full:以 buildroot 构建的全功能的镜像, weston 桌面环境, 包含所有的完整的硬件驱动, 常用的系统工具, 调试工具等。   2、丰富的软件资源 为了用户快速上手,米尔提供了丰富的软件资源,包括Bootloader、Linux 内核、设备驱动、文件系统等。    

  • 2024-12-27
  • 发表了主题帖: 米尔RK3576和RK3588怎么选?-看这篇就够了

    在中国半导体产业的版图中,瑞芯微作为国内SoC芯片领跑者,凭借其在处理器芯片设计领域的深厚积累和持续创新,推出很多智能应用处理器芯片,在嵌入式系统领域得到大规模的应用。RK3588和RK3576系列作为都是瑞芯微(Rockchip)高性能处理器代表,性能如何?价格如何?作为硬件产品开发的我们,这两款产品到底有什么区别呢?     CPU性能强劲,应用场景丰富 CPU 性能:RK3588采用的四核Cortex - A76+四核Cortex - A55 ,而RK3576出于成本考量选用的四核Cortex - A72+四核Cortex - A53架构,并配备ARM Cortex M0的协处理器,给相关应用带来了更多可能性。   GPU性能:RK3576采用ARM Mali G52 MC3,RK3588配备ARM Mali - G610MC4,都支持OpenGL ES 1.1、2.0和3.2,Vulkan 1.2,支持的图形标准上两者类似,但在OpenCL版本上RK3588更高(2.2对比2.1)。   NPU性能:两者都配备了6Tops的算力,都支持int4/int8/int16/FP16/BF16/TF32等数据格式,适配多样化的AI应用场景。     内存和存储 RK3576支持32位LPDDR4/LPDDR4X/LPDDR5,同时支持eMMC5.1,SDIO3.0和SFC以及UFS v2.0, RK3588支持64位 LPDDR4/LPDDR4x/LPDDR5,支持eMMC5.1;搭配HS400,SDIO3.0搭配HS200,以及支持NMe和SFC。两者在内存数据位宽上不一样(64bit对比32bit),数据传输上RK3588更有优势。       超强的视频编解码能力 编码能力RK3588最高支持8K@30fps H.264/H.265,RK3576最高支持4K@60fps H.264/H.265。解码能力RK3588支持最高8K@60fps H.265,RK3576最高支持8K@30fps。两者都具备很强的视频编解码能力,在8K的视频编解码能力上RK3588更胜一筹。       支持多屏异显 两者都支持多屏异显和各种常见的显示接口。RK3576最多支持3屏异显和最高可支持(4K@120 + 2.5K@60 + 2K@60),具有HDMI v2.1/ eDP v1.3组合接口、MIPI DSI 4通道、DP v1.4和USB 3.0组合(Type - C)接口等多种接口。 RK3588最高可以支持7屏异显和支持8K,具有双HDMI2.1/eDP V1.4组合接口、双MIPI - DSI TX 4通道以及双DP v1.3嵌入USB 3.1且带有音频和HDCP2.x。       摄像头视频输入对比 RK3576支持最高16MPixel ISP带有HDR和3DNR RK3588配备48M Pixel ISP带有HDR和3DNR,RK3588的像素ISP分辨率更高(48M对比16M)       具备丰富的接口配置 两者都配备了丰富的接口配置,PCIe/ SATA/ TYPE C/ USB3.0/ USB2.0/双网口/多路串口,满足不同的产品应用需求。       总结:性价比极高的RK3576 综合性能来讲,RK3588的CPU性能更强,强AI需求建议使用RK3588;但RK3576作为瑞芯微最新推出的一款高性能SOC,它可以说极具性价比,以30%的价格获RK3588的70%的性能,可用于大部分AIOT、人工智能、工业应用等场景。RK3576作为瑞芯微的又一款良心大作,是您的不二之选。  

  • 2024-12-19
  • 发表了主题帖: 如何用OpenCV进行人脸疲劳检测--基于米尔瑞芯微RK3576开发板

    本篇源自:优秀创作者 lulugl 本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的人脸疲劳检测方案测试。 米尔基于RK3576核心板/开发板   【前言】 人脸疲劳检测:一种通过分析人脸特征来判断一个人是否处于疲劳状态的技术。其原理主要基于计算机视觉和机器学习方法。当人疲劳时,面部会出现一些特征变化,如眼睛闭合程度增加、眨眼频率变慢、打哈欠、头部姿态改变等。 例如,通过检测眼睛的状态来判断疲劳程度是一个关键部分。正常情况下,人的眨眼频率相对稳定,而当疲劳时,眨眼频率会降低,并且每次眨眼时眼睛闭合的时间可能会延长。同时,头部可能会不自觉地下垂或者摇晃,这些特征都可以作为疲劳检测的依据。米尔MYC-LR3576采用8核CPU+搭载6 TOPS的NPU加速器,3D GPU,能够非常轻松的实现这个功能,下面就如何实现这一功能分享如下: 【硬件】 1、米尔MYC-LR3576开发板 2、USB摄像头 【软件】 1、v4l2 2、openCV 3、dlib库:dlib 是一个现代化的 C++ 工具包,它包含了许多用于机器学习、图像处理、数值计算等多种任务的算法和工具。它的设计目标是提供高性能、易于使用的库,并且在开源社区中被广泛应用。 【实现步骤】 1、安装python-opencv 2、安装dlib库 3、安装v4l2库 【代码实现】 1、引入cv2、dlib以及线程等: import cv2 import dlib import numpy as np import time from concurrent.futures import ThreadPoolExecutor import threading   2、初始化dlib的面部检测器和特征点预测器 detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')   3、定义计算眼睛纵横比的函数 def eye_aspect_ratio(eye):     A = np.linalg.norm(np.array(eye[1]) - np.array(eye[5]))     B = np.linalg.norm(np.array(eye[2]) - np.array(eye[4]))     C = np.linalg.norm(np.array(eye[0]) - np.array(eye[3]))     ear = (A + B) / (2.0 * C) return ear   4、定义计算头部姿势的函数 def get_head_pose(shape):     # 定义面部特征点的三维坐标     object_points = np.array([         (0.0, 0.0, 0.0),             # 鼻尖         (0.0, -330.0, -65.0),        # 下巴         (-225.0, 170.0, -135.0),     # 左眼左眼角         (225.0, 170.0, -135.0),      # 右眼右眼角         (-150.0, -150.0, -125.0),    # 左嘴角         (150.0, -150.0, -125.0)      # 右嘴角     ], dtype=np.float32)     image_pts = np.float32([shape[i] for i in [30, 8, 36, 45, 48, 54]])     size = frame.shape     focal_length = size[1]     center = (size[1] // 2, size[0] // 2)     camera_matrix = np.array(         [[focal_length, 0, center[0]],          [0, focal_length, center[1]],          [0, 0, 1]], dtype="double"     )     dist_coeffs = np.zeros((4, 1))     (success, rotation_vector, translation_vector) = cv2.solvePnP(         object_points, image_pts, camera_matrix, dist_coeffs, flags=cv2.SOLVEPNP_ITERATIVE     )     rmat, _ = cv2.Rodrigues(rotation_vector)     angles, _, _, _, _, _ = cv2.RQDecomp3x3(rmat)     return angles   5、定义眼睛纵横比阈值和连续帧数阈值 EYE_AR_THRESH = 0.3 EYE_AR_CONSEC_FRAMES = 48   6、打开摄像头 我们先使用v4l2-ctl --list-devices来例出接在开发板上的列表信息: USB Camera: USB Camera (usb-xhci-hcd.0.auto-1.2):         /dev/video60         /dev/video61         /dev/media7   在代码中填入60为摄像头的编号: cap = cv2.VideoCapture(60) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 480)  # 降低分辨率 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 320)   7、创建多线程处理函数,实现采集与分析分离: # 多线程处理函数 def process_frame(frame):     global COUNTER, TOTAL     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)     faces = detector(gray, 0)  # 第二个参数为0,表示不使用upsampling     for face in faces:         landmarks = predictor(gray, face)         shape = [(landmarks.part(i).x, landmarks.part(i).y) for i in range(68)]                  left_eye = shape[36:42]         right_eye = shape[42:48]         left_ear = eye_aspect_ratio(left_eye)         right_ear = eye_aspect_ratio(right_eye)         ear = (left_ear + right_ear) / 2.0         if ear < EYE_AR_THRESH:             with lock:                 COUNTER += 1         else:             with lock:                 if COUNTER >= EYE_AR_CONSEC_FRAMES:                     TOTAL += 1                 COUNTER = 0         # 绘制68个特征点         for n in range(0, 68):             x, y = shape[n]             cv2.circle(frame, (x, y), 2, (0, 255, 0), -1)         cv2.putText(frame, f"Eye AR: {ear:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Blink Count: {TOTAL}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         # 计算头部姿势         angles = get_head_pose(shape)         pitch, yaw, roll = angles         cv2.putText(frame, f"Pitch: {pitch:.2f}", (10, 120), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Yaw: {yaw:.2f}", (10, 150), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Roll: {roll:.2f}", (10, 180), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         # 判断疲劳状态         if COUNTER >= EYE_AR_CONSEC_FRAMES or abs(pitch) > 30 or abs(yaw) > 30 or abs(roll) > 30:             cv2.putText(frame, "Fatigue Detected!", (10, 210), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)     return frame   8、创建图像显示线程: with ThreadPoolExecutor(max_workers=2) as executor:     future_to_frame = {}     while True:         ret, frame = cap.read()         if not ret:             break         # 提交当前帧到线程池         future = executor.submit(process_frame, frame.copy())         future_to_frame[future] = frame         # 获取已完成的任务结果         for future in list(future_to_frame.keys()):             if future.done():                 processed_frame = future.result()                 cv2.imshow("Frame", processed_frame)                 del future_to_frame[future]                 break         # 计算帧数         fps_counter += 1         elapsed_time = time.time() - start_time         if elapsed_time > 1.0:             fps = fps_counter / elapsed_time             fps_counter = 0             start_time = time.time()             cv2.putText(processed_frame, f"FPS: {fps:.2f}", (10, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)         if cv2.waitKey(1) & 0xFF == ord('q'):   实现效果:   根据检测的结果,我们就可以来实现疲劳提醒等等的功能。 整体代码如下: import cv2 import dlib import numpy as np import time from concurrent.futures import ThreadPoolExecutor import threading # 初始化dlib的面部检测器和特征点预测器 detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') # 修改字体大小 font_scale = 0.5  # 原来的字体大小是0.7,现在改为0.5 # 定义计算眼睛纵横比的函数 def eye_aspect_ratio(eye):     A = np.linalg.norm(np.array(eye[1]) - np.array(eye[5]))     B = np.linalg.norm(np.array(eye[2]) - np.array(eye[4]))     C = np.linalg.norm(np.array(eye[0]) - np.array(eye[3]))     ear = (A + B) / (2.0 * C)                                                                                     return ear # 定义计算头部姿势的函数 def get_head_pose(shape):     # 定义面部特征点的三维坐标     object_points = np.array([         (0.0, 0.0, 0.0),             # 鼻尖         (0.0, -330.0, -65.0),        # 下巴         (-225.0, 170.0, -135.0),     # 左眼左眼角         (225.0, 170.0, -135.0),      # 右眼右眼角         (-150.0, -150.0, -125.0),    # 左嘴角         (150.0, -150.0, -125.0)      # 右嘴角     ], dtype=np.float32)     image_pts = np.float32([shape[i] for i in [30, 8, 36, 45, 48, 54]])     size = frame.shape     focal_length = size[1]     center = (size[1] // 2, size[0] // 2)     camera_matrix = np.array(         [[focal_length, 0, center[0]],          [0, focal_length, center[1]],          [0, 0, 1]], dtype="double"     )     dist_coeffs = np.zeros((4, 1))     (success, rotation_vector, translation_vector) = cv2.solvePnP(         object_points, image_pts, camera_matrix, dist_coeffs, flags=cv2.SOLVEPNP_ITERATIVE     )     rmat, _ = cv2.Rodrigues(rotation_vector)     angles, _, _, _, _, _ = cv2.RQDecomp3x3(rmat)     return angles # 定义眼睛纵横比阈值和连续帧数阈值 EYE_AR_THRESH = 0.3 EYE_AR_CONSEC_FRAMES = 48 # 初始化计数器 COUNTER = 0 TOTAL = 0 # 创建锁对象 lock = threading.Lock() # 打开摄像头 cap = cv2.VideoCapture(60) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 480)  # 降低分辨率 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 320) # 初始化帧计数器和时间戳 fps_counter = 0 start_time = time.time() # 多线程处理函数 def process_frame(frame):     global COUNTER, TOTAL     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)     faces = detector(gray, 0)  # 第二个参数为0,表示不使用upsampling     for face in faces:         landmarks = predictor(gray, face)         shape = [(landmarks.part(i).x, landmarks.part(i).y) for i in range(68)]                  left_eye = shape[36:42]         right_eye = shape[42:48]         left_ear = eye_aspect_ratio(left_eye)         right_ear = eye_aspect_ratio(right_eye)         ear = (left_ear + right_ear) / 2.0         if ear < EYE_AR_THRESH:             with lock:                 COUNTER += 1         else:             with lock:                 if COUNTER >= EYE_AR_CONSEC_FRAMES:                     TOTAL += 1                 COUNTER = 0         # 绘制68个特征点         for n in range(0, 68):             x, y = shape[n]             cv2.circle(frame, (x, y), 2, (0, 255, 0), -1)         cv2.putText(frame, f"Eye AR: {ear:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Blink Count: {TOTAL}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         # 计算头部姿势         angles = get_head_pose(shape)         pitch, yaw, roll = angles         cv2.putText(frame, f"Pitch: {pitch:.2f}", (10, 120), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Yaw: {yaw:.2f}", (10, 150), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         cv2.putText(frame, f"Roll: {roll:.2f}", (10, 180), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)         # 判断疲劳状态         if COUNTER >= EYE_AR_CONSEC_FRAMES or abs(pitch) > 30 or abs(yaw) > 30 or abs(roll) > 30:             cv2.putText(frame, "Fatigue Detected!", (10, 210), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 255), 2)     return frame with ThreadPoolExecutor(max_workers=2) as executor:     future_to_frame = {}     while True:         ret, frame = cap.read()         if not ret:             break         # 提交当前帧到线程池         future = executor.submit(process_frame, frame.copy())         future_to_frame[future] = frame         # 获取已完成的任务结果         for future in list(future_to_frame.keys()):             if future.done():                 processed_frame = future.result()                 cv2.imshow("Frame", processed_frame)                 del future_to_frame[future]                 break         # 计算帧数         fps_counter += 1         elapsed_time = time.time() - start_time         if elapsed_time > 1.0:             fps = fps_counter / elapsed_time             fps_counter = 0             start_time = time.time()             cv2.putText(processed_frame, f"FPS: {fps:.2f}", (10, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)         if cv2.waitKey(1) & 0xFF == ord('q'):             break # 释放摄像头并关闭所有窗口 cap.release() cv2.destroyAllWindows()   【总结】 【米尔MYC-LR3576核心板及开发板】 这块开发板性能强大,能轻松实现对人脸的疲劳检测,通过计算结果后进入非常多的工业、人工智能等等的实用功能。

  • 2024-12-13
  • 发表了主题帖: OpenCV手势识别方案--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板   一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv     2.安装pip sudo apt-get install python3-pip       二、OpenCV手势识别步骤 ​1.图像获取:从摄像头或其他图像源获取手部图像。使用OpenCV的VideoCapture类可以捕获视频流,或者使用imread函数加载图像。 2.图像预处理:对图像进行预处理,以提高特征提取的准确性。常用的预处理操作包括灰度化、滤波、边缘检测、二值化、噪声去除和形态学处理等。 灰度化:将彩色图像转换为灰度图像,去除颜色信息,简化图像。 滤波:使用滤波器去除图像中的噪声。 边缘检测:使用边缘检测算法提取图像中的边缘信息。 二值化:将灰度图像转换为二值图像,将像素值分为黑色和白色。 形态学处理:使用形态学操作增强手势轮廓。 3.特征提取:从预处理后的图像中提取手部特征。常用的特征包括形状特征、纹理特征和运动轨迹特征等。 形状特征:提取手部轮廓、面积、周长、质心等形状特征。 纹理特征:提取手部皮肤纹理、皱纹等纹理特征。 运动轨迹特征:提取手部运动轨迹、速度、加速度等运动轨迹特征。 4.分类和识别:使用机器学习算法对提取的特征进行分类,以识别特定的手势。   三、代码实现 # -*- coding: utf-8 -*- import cv2 def reg(x): o1 = cv2.imread('paper.jpg',1) o2 = cv2.imread('rock.jpg',1) o3 = cv2.imread('scissors.jpg',1)   gray1 = cv2.cvtColor(o1,cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(o2,cv2.COLOR_BGR2GRAY) gray3 = cv2.cvtColor(o3,cv2.COLOR_BGR2GRAY) xgray = cv2.cvtColor(x,cv2.COLOR_BGR2GRAY) ret, binary1 = cv2.threshold(gray1,127,255,cv2.THRESH_BINARY) ret, binary2 = cv2.threshold(gray2,127,255,cv2.THRESH_BINARY) ret, binary3 = cv2.threshold(gray3,127,255,cv2.THRESH_BINARY) xret, xbinary = cv2.threshold(xgray,127,255,cv2.THRESH_BINARY) contours1, hierarchy = cv2.findContours(binary1, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)   contours2, hierarchy = cv2.findContours(binary2, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)   contours3, hierarchy = cv2.findContours(binary3, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)   xcontours, hierarchy = cv2.findContours(xbinary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)   cnt1 = contours1[0] cnt2 = contours2[0] cnt3 = contours3[0] x = xcontours[0] ret=[] ret.append(cv2.matchShapes(x,cnt1,1,0.0)) ret.append(cv2.matchShapes(x,cnt2,1,0.0)) ret.append(cv2.matchShapes(x,cnt3,1,0.0)) max_index = ret.index(min(ret))  #计算最大值索引 if max_index==0: r="paper" elif max_index==1: r="rock" else: r="sessiors" return r t1=cv2.imread('test1.jpg',1) t2=cv2.imread('test2.jpg',1) t3=cv2.imread('test3.jpg',1) # print(reg(t1)) # print(reg(t2)) # print(reg(t3)) # ===========显示处理结果================== org=(0,60) font = cv2.FONT_HERSHEY_SIMPLEX fontScale=2 color=(255,255,255) thickness=3 cv2.putText(t1,reg(t1),org,font,fontScale,color,thickness) cv2.putText(t2,reg(t2),org,font,fontScale,color,thickness) cv2.putText(t3,reg(t3),org,font,fontScale,color,thickness) cv2.imshow('test1',t1) cv2.imshow('test2',t2) cv2.imshow('test3',t3) cv2.waitKey() cv2.destroyAllWindows()   四、实践 1.程序运行       2、原始图像包含训练图像       3.识别结果 识别到了 剪刀 石头 布     原始图片      

  • 2024-12-06
  • 发表了主题帖: 助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4

    学习如何在 MYIR 的 ZU3EG FPGA 开发板上部署 Tiny YOLO v4,对比 FPGA、GPU、CPU 的性能,助力 AIoT 边缘计算应用。   一、 为什么选择 FPGA:应对 7nm 制程与 AI 限制 在全球半导体制程限制和高端 GPU 受限的大环境下,FPGA 成为了中国企业发展的重要路径之一。它可支持灵活的 AIoT 应用,其灵活性与可编程性使其可以在国内成熟的 28nm 工艺甚至更低节点的制程下实现高效的硬件加速。 米尔的 ZU3EG 开发板凭借其可重构架构为 AI 和计算密集型任务提供了支持,同时避免了 7nm 工艺对国产芯片设计的制约。通过在 ZU3EG 上部署 Tiny YOLO V4,我们可以为智能家居、智慧城市等 AIoT 应用提供高效的解决方案。    CPU GPU FPGA 架构对比 二、 了解 Tiny YOLO 模型及其适用性 YOLO(You Only Look Once)是一种实时物体检测模型,它通过一次性扫描整个图像,实现高效的对象识别。 而其简化版 Tiny YOLO V4 更适合嵌入式设备,具有较少的层数和参数。其轻量化特性更适合在资源受限的设备上运行,尤其在低功耗、实时检测的边缘计算设备中表现出色。 相比传统 GPU,FPGA 能在小面积和低功耗下实现类似的推理性能,非常契合 AIoT 应用。像米尔 ZU3EG 这样的 FPGA 开发板,通过底板和丰富接口的载板设计,非常适合高效的嵌入式低功耗数据处理。     Yolo V4 网络结构图   Tiny Yolo V4 网络结构图   (通过优化网络结构和参数,保持较高检测精度的同时,降低模型的计算量和内存占用)   三、 获取数据集和模型 可下载开源训练集或预训练模型。为了确保兼容性,建议将模型转换为 ONNX 格式,以便后续能在 FPGA 上完成优化。   1.下载 Tiny YOLO V4 模型:从Darknet 的 GitHub 仓库 获取 Tiny YOLO 的预训练权重,或者在 COCO 等数据集上自行训练模型。自定义的模型适用于特定应用场景(如车辆检测、人脸检测等)。 2.数据准备:若要自定义模型,可使用 LabelImg 等工具对数据集进行标注,将数据转为 YOLO 格式。之后,可将 YOLO 格式转换为 ONNX 格式,以便兼容 FPGA 优化工具链。 Tiny YOLO 在 Darknet 上训练的截图   四、 通过 Vivado HLS 为 FPGA 准备模型 要将模型部署到 FPGA,需要将神经网络操作转换为硬件级描述。使用 Xilinx 的 Vitis HLS(高级综合)可以将 Tiny YOLO v4 的 C++ 模型代码的转化为 Verilog RTL(寄存器传输级)代码,从而将模型从软件世界带入硬件实现。 详细步骤: 1.模型层映射和优化: 将 YOLO 的每一层(如卷积层、池化层)映射为硬件友好的 C/C++ 结构。例如,将卷积映射为乘累加(MAC)数组,通过流水线实现并行化。   2.算子加速与指令优化: 流水线(Pipelining):利用流水线来处理多项操作并行,减少延迟。 循环展开(Loop Unrolling):展开循环,以每周期处理更多数据,尤其在卷积操作中有效。 设置 DATAFLOW 指令,使层间独立处理。   3.量化与位宽调整: 将激活值和权重量化为定点精度(例如 INT8),而非浮点数。这在维持准确度的同时显著降低计算量,尤其适合 FPGA 的固定点运算支持。   Tiny YOLO 模型在 Vivado HLS 中的层层转化流程图   五、 使用 Vivado 综合与部署 Verilog 到 米尔的ZU3EG FPGA开发板 当 HLS 生成的 RTL 代码准备就绪后,可以使用 Vivado 将模型部署到 FPGA。 1.Vivado 中的设置: 将 HLS 输出的 RTL 文件导入 Vivado。 在 Vivado 中创建模块设计,包括连接AXI 接口与 ZU3EG 的 ARM 核连接。 2.I/O 约束与时序: 定义 FPGA 的 I/O 引脚约束,以匹配 ZU3EG 板的特定管脚配置。配置时钟约束以满足合适的数据速率(如视频数据 100-200 MHz)。 进行时序分析,确保延迟和响应速度达到实时要求。 3.生成比特流并下载到 ZU3EG: 生成的比特流可以直接通过 JTAG 或以太网接口下载到 ZU3EG。     将 Tiny YOLO 处理模块连接到 米尔ZU3EG开发板 的外设和接口   六、 在 FPGA 上测试并运行推理 现在 Tiny YOLO 已部署,可以验证其实时对象检测性能。 1.数据采集: 通过连接的相机模块捕捉图像或视频帧,或者使用存储的测试视频。 使用 ZU3EG 的 ARM 核上的 OpenCV 对帧进行预处理,再将它们传入 FPGA 预处理后进行推理。   2.后处理与显示: 模型检测对象后,输出边框和类别标签。使用 OpenCV 将边框映射回原始帧,并在每个检测到的对象周围显示类别和置信度。   3.性能测试: 测量帧速率(FPS)和检测准确度。微调量化位宽或数据流参数,以优化实时需求。     Tiny YOLO 模型在 ZU3EG 上显示检测结果的实时输出,视频帧中标注了检测到的对象 七、 性能优化与调试技巧 为提高性能,可以进行以下调整: 内存访问:设计数据存储方式,最大限度利用缓存并减少数据传输,降低内存瓶颈。 降低延迟:重新评估关键路径延迟。若延迟过高,调整 Vitis HLS 中的流水线深度,并验证层间的数据依赖性。 量化改进:尝试 INT8 量化。Xilinx 的 Vitis AI 可帮助微调量化参数,以平衡准确性与速度。   不同优化配置对资源使用的影响   米尔MYC-CZU3EG/4EV/5EV-V2核心板及开发板   在MYIR 的 ZU3EG 开发平台上提供了一种高效的解决方案。利用 FPGA 独特的灵活性和低功耗优势,助力未来 AIoT 设备的普及和智能升级。

  • 2024-11-29
  • 发表了主题帖: FacenetPytorch人脸识别方案——基于米尔全志T527开发板

    本篇测评由优秀测评者“小火苗”提供。 本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志 T527开发板)的FacenetPytorch人脸识别方案测试。   一、facenet_pytorch算法实现人脸识别 深度神经网络 1.简介 Facenet-PyTorch 是一个基于 PyTorch 框架实现的人脸识别库。它提供了 FaceNet 模型的 PyTorch 实现,可以用于训练自己的人脸识别模型。FaceNet 是由 Google 研究人员提出的一种深度学习模型,专门用于人脸识别任务。 在利用PyTorch神经网络算法进行人脸图像对比的实验设置中,我们专注于对比环节,而不涉及实际项目的完整实现细节。但55555贴近实际应用,我们可以构想以下流程: 1)捕捉新人脸图像:首先,我们使用摄像头或其他图像采集设备捕捉一张新的人脸照片。 2)加载存储的人脸图像:接着,从数据库中加载所有已存储的人脸图像。这些图像是之前采集并存储的,用于与新捕捉到的人脸照片进行对比。 3)构建神经网络模型:为了实现对比功能,我们需要一个预先训练好或自定义的神经网络模型。这个模型能够提取人脸图像中的关键特征,使得相似的图像在特征空间中具有相近的表示。 4)特征提取:利用神经网络模型,对新捕捉到的人脸照片和存储的每一张人脸图像进行特征提取。这些特征向量将用于后续的对比计算。 5)计算相似度:采用合适的相似度度量方法(如余弦相似度、欧氏距离等),计算新照片特征向量与存储图像特征向量之间的相似度。 6)确定匹配图像:根据相似度计算结果,找到与新照片相似度最高的存储图像,即认为这两张图像匹配成功。 7)输出匹配结果:最后,输出匹配成功的图像信息或相关标识,以完成人脸对比的实验任务。   2.核心组件 MTCNN:Multi-task Cascaded Convolutional Networks,即多任务级联卷积网络,专门设计用于同时进行人脸检测和对齐。它在处理速度和准确性上都有出色的表现,是当前人脸检测领域的主流算法之一。 FaceNet:由Google研究人员提出的一种深度学习模型,专门用于人脸识别任务。FaceNet通过将人脸图像映射到一个高维空间,使得同一个人的不同图像在这个空间中的距离尽可能小,而不同人的图像距离尽可能大。这种嵌入表示可以直接用于人脸验证、识别和聚类。   3.功能     支持人脸检测:使用MTCNN算法进行人脸检测,能够准确识别出图像中的人脸位置。     支持人脸识别:使用FaceNet算法进行人脸识别,能够提取人脸特征并进行相似度计算,实现人脸验证和识别功能。 二、安装facenet_pytorch库 1.更新系统 更新ubuntu系统,详情查看米尔提供的资料文件   2.更新系统软件 apt-get update     3.安装git等支持软件   sudo apt-get install -y python3-dev python3-pip libopenblas-dev libssl-dev libffi-dev git cmake   4.安装Pytorch支持工具 # 克隆 PyTorch 源代码 git clone --recursive https://github.com/pytorch/pytorch # 进入 PyTorch 目录 cd pytorch # 安装 PyTorch (需要根据你的需求选择 CUDA 版本,如果不需要 GPU 支持则不需要 --cuda 参数) pip3 install --no-cache-dir torch -f https://download.pytorch.org/whl/torch_stable.html # 测试 PyTorch 安装 python3 -c "import torch; print(torch.__version__)"     5.安装facenet_pytorch   pip3 install facenet_pytorch     三、CSDN参考案例 1.代码实现 ############face_demo.py############################# import cv2 import torch from facenet_pytorch import MTCNN, InceptionResnetV1 # 获得人脸特征向量 def load_known_faces(dstImgPath, mtcnn, resnet): aligned = [] knownImg = cv2.imread(dstImgPath) # 读取图片 face = mtcnn(knownImg) # 使用mtcnn检测人脸,返回人脸数组 if face is not None: aligned.append(face[0]) aligned = torch.stack(aligned).to(device) with torch.no_grad(): known_faces_emb = resnet(aligned).detach().cpu() # 使用ResNet模型获取人脸对应的特征向量 print("n人脸对应的特征向量为:n", known_faces_emb) return known_faces_emb, knownImg # 计算人脸特征向量间的欧氏距离,设置阈值,判断是否为同一张人脸 def match_faces(faces_emb, known_faces_emb, threshold): isExistDst = False distance = (known_faces_emb[0] - faces_emb[0]).norm().item() print("n两张人脸的欧式距离为:%.2f" % distance) if (distance < threshold): isExistDst = True return isExistDst if __name__ == '__main__': # help(MTCNN) # help(InceptionResnetV1) # 获取设备 device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # mtcnn模型加载设置网络参数,进行人脸检测 mtcnn = MTCNN(min_face_size=12, thresholds=[0.2, 0.2, 0.3], keep_all=True, device=device) # InceptionResnetV1模型加载用于获取人脸特征向量 resnet = InceptionResnetV1(pretrained='vggface2').eval().to(device) MatchThreshold = 0.8 # 人脸特征向量匹配阈值设置 known_faces_emb, _ = load_known_faces('yz.jpg', mtcnn, resnet) # 已知人物图 faces_emb, img = load_known_faces('yz1.jpg', mtcnn, resnet) # 待检测人物图 isExistDst = match_faces(faces_emb, known_faces_emb, MatchThreshold) # 人脸匹配 print("设置的人脸特征向量匹配阈值为:", MatchThreshold) if isExistDst: boxes, prob, landmarks = mtcnn.detect(img, landmarks=True) print('由于欧氏距离小于匹配阈值,故匹配') else: print('由于欧氏距离大于匹配阈值,故不匹配')   此代码是使用训练后的模型程序进行使用,在程序中需要标明人脸识别对比的图像。 2.实践过程 第一次运行时系统需要下载预训练的vggface模型,下载过程较长,后面就不需要在下载了运行会很快。如图所示:   3.程序运行异常被终止 运行程序,提示killed,系统杀死了本程序的运行,经过多方面的测试,最终发现是识别的图片过大,使得程序对内存消耗过大导致。后将图片缩小可以正常运行了。 以下是对比图像和对比结果。       四、gitHub开源代码 1.首先下载代码文件 代码库中,大致的介绍了facenet算法的训练步骤等。       2.代码实现 以下是facenet的python代码,注意需要更改下面的一条程序"cuda" False,因为t527使用的是cpu,芯片到时自带gpu但是cuda用不了,因为cuda是英伟达退出的一种计算机架构。 import matplotlib.pyplot as plt import numpy as np import torchimport torch.backends.cudnn as cudnn from nets.facenet import Facenet as facenet from utils.utils import preprocess_input, resize_image, show_config #--------------------------------------------# # 使用自己训练好的模型预测需要修改2个参数 # model_path和backbone需要修改! #--------------------------------------------# class Facenet(object): _defaults = { #--------------------------------------------------------------------------# # 使用自己训练好的模型进行预测要修改model_path,指向logs文件夹下的权值文件 # 训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。 # 验证集损失较低不代表准确度较高,仅代表该权值在验证集上泛化性能较好。 #--------------------------------------------------------------------------# "model_path" : "model_data/facenet_mobilenet.pth", #--------------------------------------------------------------------------# # 输入图片的大小。 #--------------------------------------------------------------------------# "input_shape" : [160, 160, 3], #--------------------------------------------------------------------------# # 所使用到的主干特征提取网络 #--------------------------------------------------------------------------# "backbone" : "mobilenet", #-------------------------------------------# # 是否进行不失真的resize #-------------------------------------------# "letterbox_image" : True, #-------------------------------------------# # 是否使用Cuda# 没有GPU可以设置成False #-------------------------------------------# "cuda" : False, } @classmethod def get_defaults(cls, n): if n in cls._defaults: return cls._defaults[n] else: return "Unrecognized attribute name '" + n + "'" #---------------------------------------------------# # 初始化Facenet #---------------------------------------------------# def __init__(self, **kwargs): self.__dict__.update(self._defaults) for name, value in kwargs.items(): setattr(self, name, value) self.generate() show_config(**self._defaults) def generate(self): #---------------------------------------------------# # 载入模型与权值 #---------------------------------------------------# print('Loading weights into state dict...') device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') self.net = facenet(backbone=self.backbone, mode="predict").eval() self.net.load_state_dict(torch.load(self.model_path, map_location=device), strict=False) print('{} model loaded.'.format(self.model_path)) if self.cuda: self.net = torch.nn.DataParallel(self.net) cudnn.benchmark = True self.net = self.net.cuda() #---------------------------------------------------# # 检测图片 #---------------------------------------------------# def detect_image(self, image_1, image_2): #---------------------------------------------------# # 图片预处理,归一化 #---------------------------------------------------# with torch.no_grad(): image_1 = resize_image(image_1, [self.input_shape[1], self.input_shape[0]], letterbox_image=self.letterbox_image) image_2 = resize_image(image_2, [self.input_shape[1], self.input_shape[0]], letterbox_image=self.letterbox_image) photo_1 = torch.from_numpy(np.expand_dims(np.transpose(preprocess_input(np.array(image_1, np.float32)), (2, 0, 1)), 0)) photo_2 = torch.from_numpy(np.expand_dims(np.transpose(preprocess_input(np.array(image_2, np.float32)), (2, 0, 1)), 0)) if self.cuda: photo_1 = photo_1.cuda() photo_2 = photo_2.cuda() #---------------------------------------------------# # 图片传入网络进行预测 #---------------------------------------------------# output1 = self.net(photo_1).cpu().numpy() output2 = self.net(photo_2).cpu().numpy() #---------------------------------------------------# # 计算二者之间的距离 #---------------------------------------------------# l1 = np.linalg.norm(output1 - output2, axis=1) plt.subplot(1, 2, 1) plt.imshow(np.array(image_1)) plt.subplot(1, 2, 2) plt.imshow(np.array(image_2)) plt.text(-12, -12, 'Distance:%.3f' % l1, ha='center', va= 'bottom',fontsize=11) plt.show() return l1   3.代码实现 此代码调用的签名的代码,但其可以直接的去调用图片进行人脸识别。 from PIL import Image from facenet import Facenet if __name__ == "__main__": model = Facenet() while True: image_1 = input('Input image_1 filename:') try: image_1 = Image.open(image_1) except: print('Image_1 Open Error! Try again!') continue image_2 = input('Input image_2 filename:') try: image_2 = Image.open(image_2) except: print('Image_2 Open Error! Try again!') continue probability = model.detect_image(image_1,image_2) print(probability)   4.程序运行     运行程序后首先显示的是程序的配置信息,然后可以输入图像对比检测的内容。以下是图像识别的效果和对比的准确率。       五、参考文献   CSDN博客 https://blog.csdn.net/weixin_45939929/article/details/124789487?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-124789487-blog-142987324.235^v43^pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.2&utm_relevant_index=4 官方源码来源 https://gitcode.com/gh_mirrors/fac/facenet-pytorch/overview *部分图片来源于网络,如有版权问题请联系删除

  • 2024-11-15
  • 发表了主题帖: 如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    本篇测评由优秀测评者“eefocus_3914144”提供。 本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。 OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头) 1、安装python3-opencv apt install python3-opencv 2、查看摄像头支持的格式与分辨率 root@debian:~# v4l2-ctl --device=/dev/video0 --list-formats-ext     经测试,只能支持640*480 为此建立opencv_test.py import cv2 video = cv2.VideoCapture(0)   设置相机参数 video .set(cv2.CAP_PROP_FRAME_WIDTH, 1280) video .set(cv2.CAP_PROP_FRAME_HEIGHT, 720) while True:     ret, frame = video.read()     cv2.imshow("A video", frame) c = cv2.waitKey(1) if c == 27:     breakvideo.release()cv2.destroyAllWindows()   保存后执行”python3 opencv_test.py     OpenCV装好后,可以为后面的人脸检测提供可行性。 要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 OpenCV人脸检测方法 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多的是Haar特征人脸检测,此外OpenCV中还集成了深度学习方法来实现人脸检测。 【参考资料】 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)_opencv人脸识别-CSDN博客 【Haar级联检测器预训练模型下载】 opencv/opencv: Open Source Computer Vision Library (github.com) 下载好的,在opencv-4.xdatahaarcascades文件夹下有模型,把他上传到开发板。     【获取检测人脸的图片】 我在百度上找到了**的图片,并把它也上传到开发板。 【编写检测代码】 import numpy as np import cv2 as cv if __name__ == '__main__':     # (6) 使用 Haar 级联分类器 预训练模型 检测人脸     # 读取待检测的图片     img = cv.imread("yanmi.jpg")     print(img.shape)          # 加载 Haar 级联分类器 预训练模型     model_path = "haarcascade_frontalface_alt2.xml"     face_detector = cv.CascadeClassifier(model_path)  # <class 'cv2.CascadeClassifier'>     # 使用级联分类器检测人脸     faces = face_detector.detectMultiScale(img, scaleFactor=1.1, minNeighbors=1,                                              minSize=(30, 30), maxSize=(300, 300))     print(faces.shape)  # (17, 4)     print(faces[0])  # (x, y, width, height)          # 绘制人脸检测框     for x, y, width, height in faces:         cv.rectangle(img, (x, y), (x + width, y + height), (0, 0, 255), 2, cv.LINE_8, 0)      # 显示图片      cv.imshow("faces", img)      cv.waitKey(0)      cv.destroyAllWindows()   【实验效果】 运行程序后,可以正确地识别,效果如下:  

  • 2024-11-08
  • 发表了主题帖: 上新!米尔-新唐MA35D1核心板512M DDR新配置发布!

    米尔在2024年8月推出了基于新唐MA35D1芯片设计的嵌入式处理器模块MYC-LMA35核心板及开发板。MA35D1是集成2个Cortex-A35与1个Cortex-M4的异构微处理器芯片。核心板采用创新LGA 252PIN设计,原生17路UART和4路CAN FD等丰富的通讯接口,可广泛应用于新能源充电桩、工程机械控制器、OBD汽车诊断仪、工业网关、运动控制器和电力DTU等场景。 配置上新,容量选择更丰富 现为满足开发者更强大的性能和存储需求,助力更复杂的应用开发,米尔MA35D1核心板和开发板新增不同内存配置,芯片内置512MB DDR,8GB eMMC。     核心板型号 产品型号 主芯片 内存 存储器 工作温度 MYC-LMA35-8E256D-80-I MA35D16A887C 芯片内置256MB DDR3L 8GB eMMC -40℃~+85℃ MYC-LMA35-8E512D-80-I MA35D16AJ87C 芯片内置512MB DDR3L 8GB eMMC -40℃~+85℃ MYC-LMA35-256N256D-80-I MA35D16A887C 芯片内置256MB DDR3L 256MB NAND FLASH -40℃~+85℃ 开发板型号 产品型号 主芯片 内存 存储器 工作温度 MYD-LMA35-8E256D-80-I MA35D16A887C 芯片内置256MB DDR3L 8GB eMMC -40℃~+85℃ MYD-LMA35-8E512D-80-I MA35D16AJ87C 芯片内置512MB DDR3L 8GB eMMC -40℃~+85℃ MYD-LMA35-256N256D-80-I MA35D16A887C 芯片内置256MB DDR3L 256MB NAND FLASH -40℃~+85℃ 新唐 MA35D1 系列微处理器 NuMicro® MA35D1系列为一颗异核同构的多核心微处理器。它拥有两颗 64 位 Arm® Cortex®-A35 内核,执行速度可达 800 MHz,并搭载一颗 180 MHz Arm® Cortex®-M4 内核。为了简化系统设计和生产,MA35D1系列提供了DDR2/ DDR3L SDRAM,最大容量达 512 MB,集成了较大DDR内存,方便进行数据处理和硬件设计。MA35D1系列提供多组高性能的通讯接口,如千兆以太网、SDIO3.0、高速 USB 2.0、CAN-FD 等。MA35D1系列支持 LCD 显示控制器,分辨率可达 1920 x 1080 每秒 60 帧,内嵌图形加速器、JPEG 和 H.264 译码器等,带来更好的图形人机接口和视频播放效果。  

  • 2024-11-01
  • 发表了主题帖: 在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

    1. 引言 随着网络视频平台的发展,用户对于4K高清画质的需求日益增长。然而,许多用户发现,即使购买了视频平台的会员,观看4K内容时画质却不如预期,有时甚至还会出现模糊、卡顿的情况。这种现象背后涉及到视频编码、网络带宽、和视频传输的诸多因素。     近期“影视飓风”发布的视频《清晰度不如4年前!视频变糊是你的错觉吗?》因讨论视频平台降低码率和改变编码格式以压缩视频画质,影响了内容表达。          4K视频清晰度下降的一个主要原因是平台为了节省带宽而压缩视频流,有时导致比特率降低,无法发挥4K分辨率的全部潜力。 在这种背景下,如何高效地压缩和传输4K视频成为了一个关键技术难题。本文将探讨如何通过米尔电子的ZU4EV MPSoC平台,接入真4k 60UHD-SDI视频源后,使用VCU进行高效H.265编解码,再通过SGMII万兆以太网实现网络推流,以确保高质量4K视频的流畅传输。     2. 视频质量下降的原因与优化方法 1)带宽瓶颈:在用户数量增加的情况下,服务器和网络的带宽常常无法满足4K视频流的需求。 2)压缩算法不足:传统的视频压缩技术在高分辨率内容上表现不佳,容易导致画面模糊。       3)视频流传输的优化 在推流过程中,网络带宽和视频压缩效率直接决定了视频播放的清晰度与流畅度。为了确保4K视频在万兆以太网上的高效传输,本设计采用以下优化措施:   合理的码率控制:在保证视频清晰度的前提下,调整H.265编码的目标码率,避免过低的码率影响视频质量或过高的码率导致带宽浪费或。通过CBR或VBR模式可以根据网络情况动态调整码率。 低延时模式:VCU支持低延时编码模式,确保视频在压缩和传输过程中保持尽可能低的延迟,提升用户的观看体验。 网络传输协议选择:根据应用场景选择合适的传输协议。对于实时性要求较高的场景,可选择UDP传输,而对于数据可靠性要求较高的场景,则推荐使用TCP协议。     3. MPSoC与VCU架构在4K UHD音视频广播领域的优势   1.高性能与低功耗的结合:Zynq UltraScale+ MPSoC采用了16nm FinFET工艺,集成了多核处理器和可编程逻辑,能够在提高性能的同时降低功耗,这对于音视频广播领域来说至关重要,因为它可以在保证高清晰度视频传输的同时,减少能源消耗。 2.实时压缩与解压缩能力:集成的VCU支持H.264/AVC和H.265/HEVC标准,能够实现高达4K UHD分辨率的视频的实时压缩和解压缩。这意味着在广播应用中,可以利用VCU进行高效的视频编码,减少存储空间和带宽的需求,同时保持视频质量。 3.多视频流处理能力:VCU能够同时处理多达八个不同的视频流,这对于需要同时广播多个视频源的4K UHD广播应用来说非常有用。这种多任务处理能力使得MPSoC成为多媒体中心和视频服务器的理想选择。 4.灵活性和可扩展性:MPSoC的可编程逻辑(PL)提供了任意到任意高速视频/音频接口的灵活性,可以为多媒体管道带来定制图像及视频处理功能的差异化效果。这种可编程性使得系统能够适应不断变化的音视频广播需求。 5.专用硬件加速:MPSoC提供了专用的处理引擎,如基于ARM Cortex A53的APU、Mali图形处理单元等,这些专用硬件能够加速图形和视频处理任务,提高系统的整体性能。           6.支持多种视频格式:VCU支持高达4:2:2 10位UHD-4K的视频格式,适合专业和高端消费级的制作与后期制作解决方案。这种广泛的格式支持使得MPSoC可以应用于各种不同的音视频广播场景。 7.集成的多媒体框架支持:MPSoC结合常见的多媒体框架GStreamer,可以开发硬件加速型多媒体应用。这种集成支持简化了开发过程,使得开发者能够快速实现复杂的音视频处理任务。 8.优化的功耗管理:Zynq UltraScale+ MPSoC将处理引擎、硬件编解码器等组件放置在具有独立电轨的不同电源域中,这种配置可用于为整个系统设计优化功耗管理方案,进一步降低系统功耗。 9.高速互联外设:MPSoC提供高速互联外设,如集成式DisplayPort接口模块,支持高达6 Gb/s的工作速率,这有助于处理来自PS或PL的实时音视频流,进一步降低系统BOM成本。 10.支持新一代地面数字电视广播技术:随着超高清电视时代的到来,MPSoC与VCU架构能够支持新一代地面数字电视广播技术,如DVB-T2、ATSC 3.0和DTMB-A等,这些技术支持更高的视频质量和新的广播应用模式。 综上所述,MPSoC与VCU架构在4K UHD音视频广播领域提供了高性能、低功耗、实时压缩解压缩、多视频流处理、灵活性、硬件加速、广泛格式支持、多媒体框架集成、优化的功耗管理和高速互联外设等多重优势,使其成为该领域理想的解决方案。   4. 系统架构概述 在本设计中,我们使用Zynq UltraScale+ MPSoC平台(具体型号为MYIR XCZU4EV),通过FPGA实现对SDI视频的H265压缩,并通过SGMII接口推送到万兆以太网上。系统架构主要包括以下几个部分:       1.视频输入:输入源可以是SDI摄像机、SDI信号发生器或通过HDMI转SDI设备从电脑接入的HDMI信号。视频信号通过TI公司的LMH1219芯片做均衡处理,并将单端信号转换为差分信号后输入FPGA。 2.SDI视频解码:FPGA中的UHD-SDI GT IP核用于SDI视频的解串,并将视频信号转换为AXI4-Stream格式供后续处理。通过SMPTE UHD-SDI RX SUBSYSTEM IP核,SDI视频被解码为RGB格式。 3.视频帧缓存与处理:解码后的视频信号存储在PS侧的DDR4中,通过Xilinx提供的Video Frame Buffer Write IP核实现。在这一阶段,可以对视频帧进行颜色转换、缩放等处理。 4.H.265视频压缩:使用Zynq UltraScale+ VCU IP核对存储的RGB视频帧进行H.265编码压缩。VCU支持YUV420格式的视频,编码分辨率最高可达到4K@60fps。 5.SGMII万兆以太网传输:经过H.265压缩后的视频流通过SGMII接口推送至万兆以太网。通过PetaLinux系统,利用TCP/UDP协议将压缩后的码流传输到PC或服务器端,用户可以通过VLC播放器等软件实时播放接收到的H.265码流。   5. 工程设计主要流程   1.SDI输入:通过LMH1219进行信号均衡,SDI信号转换为AXI4-Stream格式。 通过HDMI转SDI盒子,通过12G UHD-SDI输出4K 60FPS视频给FPGA,用户也可以使用SDI 工业相机; 2.视频解码:UHD-SDI GT IP核完成视频解串,SMPTE UHD-SDI RX SUBSYSTEM IP核将视频解码为RGB信号。         3.视频缓存:使用Video Frame Buffer Write IP核将视频写入DDR4。         用户可以选择在这里做出customer ISP,例如图像缩放,拼接         4.视频压缩:通过Zynq UltraScale+ VCU IP核对视频进行H265压缩。         5.网络传输:通过SGMII万兆以太网接口,将压缩后的H265视频流通过UDP协议推送至PC端,使用VLC播放器播放。               6. 结论 在视频内容不断向4K发展的大背景下, 通过Zynq UltraScale+ MPSoC平台,基于VCU实现的SGMII万兆以太网视频压缩推流方案,不仅能够高效地压缩和传输4K视频,还可以确保较低的延迟和高质量的图像输出。该方案适用于视频监控、医疗影像、工业自动化等对高分辨率视频有需求的应用场景。 对于希望在网络视频平台上获得更好观看体验的用户来说,视频平台和服务提供商则需要在视频编码、网络传输等方面进行优化,以满足用户对于4K视频的画质需求。 7. 互动环节 在SGMII网兆以太网推流到PC端,因为是万兆网,CPU无法负担这里的高速吞吐率,这里我们需要用到网络卸载,米尔电子的MYC-J7A100T双芯设计核心板可通过SFP采集SGMII万兆以太网数据后,PC通过PCIE读取视频源,实现万兆网口数据包卸载,我们会在后续系列文章中做出分享基于米尔MYC-J7A100T SFP采集后PCIE XDMA中断读取。  

  • 2024-10-25
  • 发表了主题帖: 米尔瑞芯微RK3576核心板上新!8核6T高算力,革新AIoT设备

    随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。近日,米尔电子发布了一款基于瑞芯微RK3576核心板和开发板。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能数据处理能力、领先的AI智能分析、多样化的显示与操作体验以及强大的扩展性与兼容性。‌下面详细介绍这款核心板的优势。     6 TOPS超强算力,8核CPU赋能AI 瑞芯微RK3576搭载了四核A72与四核A53处理器,主频高达2.2GHz,确保了系统的高效运行和强大的计算能力。RK3576集成了6TOPS的NPU,支持多种深度学习框架,能够处理复杂的AI算法,提高监控效率,降低误报率。     AI算力强,搭载6 TOPS的NPU加速器,3D GPU,赋能工业AI     三屏异显,丰富多媒体功能 RK3576支持三屏异显,最高支持4K分辨率的视频显示,提供清晰的视觉体验。它还支持8K分辨率的硬解码,满足多场景多样化的显示需求。此外,RK3576的灵活VOP设计允许根据实际需求调整视频输出配置,提升系统的适用性和易用性‌。     丰富的接口,强大的扩展性和兼容性 RK3576拥有双千兆以太网接口、PCIE2.1、USB3.2、SATA3、DSMC/Flexbus、CANFD、UART等丰富接口,具备强大的扩展性和兼容性,支持大模型运行和多模态检索功能,处理复杂的监控数据和场景信息。它还支持512Mbps的接入、转发和存储能力,确保数据的高效传输和存储。     米尔RK3576核心板采用LGA创新设计,可靠性高,又能节省连接器成本。     高可靠性保证,严格的测试标准,保障产品高质量     国产核心板,应用场景丰富 专为新一代电力智能设备、工业互联网设备、工业控制设备、工业机器人、商显、触控一体机、工程机械、轨道交通等行业设计         米尔基于瑞芯微3576核心板及开发板配置型号 核心板产品型号 主芯片 内存 存储器 工作温度 MYC-LR3576-32E4D-220-C RK3576 4GB LPDDR4X 32GB eMMC 0℃~+70℃ 商业级 MYC-LR3576-64E8D-220-C RK3576 8GB LPDDR4X 64GB eMMC 0℃~+70℃ 商业级 MYC-LR3576J-32E4D-160-I RK3576J 4GB LPDDR4X 32GB eMMC -40℃~+85℃ 工业级 MYC-LR3576J-64E8D-160-I RK3576J 8GB LPDDR4X 64GB eMMC -40℃~+85℃ 工业级 开发板产品型号 对应核心板型号 工作温度 MYD-LR3576-32E4D-220-C MYC-LR3576-32E4D-220-C 0℃~+70℃ 商业级 MYD-LR3576-64E8D-220-C MYC-LR3576-64E8D-220-C 0℃~+70℃ 商业级 MYD-LR3576J-32E4D-160-I MYC-LR3576J-32E4D-160-I -40℃~+85℃ 工业级 MYD-LR3576J-64E8D-160-I MYC-LR3576J-64E8D-160-I -40℃~+85℃ 工业级  

  • 2024-10-18
  • 发表了主题帖: 米尔全志T527系列核心板,高性能车载视频监控、部标一体机方案

    在国内对于特种车辆有重点安全防范要求,"两客一危"是对道路运输车辆的一种分类方式,其中“两客”指的是客运车辆和公交车辆,而“一危”指的是危险货物运输车辆。这种分类方式主要用于强调这些车辆在道路运输中的特殊地位,因为它们通常需要满足更高的安全标准。 在国内,“两客一危"车辆通常需要安装"部标机”,也就是满足特定部门标准的设备。这些设备可能包括但不限于定位设备、驾驶员行为监控设备、车辆定位系统等系统构件。 随着安全管理意识的加强,在理解满足部标机要求的基础上,运营方往往提出更高要求、更多功能需求。T527方案以强悍的8核A55+6路高清视频流编码+2Tops AI加速能力给客户带来更多附加价值。   MYC-LT527核心板介绍 MYC-LT527核心板采用高密度高速电路板设计,在大小为43mm*45mm板卡上集成了T527、DDR、eMMC、E2PROM、看门狗等电路。MYC-LT527具有最严格的质量标准、超高性能、丰富外设资源、高性价比、长供货时间的特点,适用于高性能车载设备所需要的核心板要求。     配置灵活、适应性强、选择多 为了适应T527系列处理器广泛的用途和具体需求,我们米尔给核心板实现6种标准配置: 也可根据用户需求定制配置型号。  

  • 2024-10-11
  • 发表了主题帖: 米尔新唐MA35D1核心板原生17路UART和4路CAN FD,应用多种场景

    米尔电子发布了基于新唐MA35D1处理器设计的MYC-LMA35核心板,MA35D1处理器集成了双核Cortex-A35和Cortex-M4,原生17路UART和4路CAN FD接口,可实现多种设备的高效互联并满足通信需求,此外,MYC-LMA35核心板还提供了丰富的外设资源:RGMII/USB/SDIO/I2S/I2C/EADC/EPWM/SPI等,丰富的外设资源使得MYC-LMA35核心板能够广泛应用于串口服务器、工业网关、新能源充电桩、振动监测、工程机械控制器、运动控制器和电力DTU等场景。 图1 MYC-LMA35 核心板框图   下面是基于MYC-LMA35核心板(米尔基于MA35D1核心板)在串口服务器、工业网关、充电桩、振动监测应用的介绍。 串口服务器: 串口服务器是一种网络设备,主要用于将串行通信设备与网络转换和通信,实现远程数据传输和管理。它通过将传统的串口信号转换为网络协议,使得用户能够访问和控制多个串行设备。可应用于工业自动化、数据采集、智能家居等。 在串口服务器上,米尔基于MA35D1核心板具备强大的应用优势。MA35D1处理器支持17个原生UART接口,可以根据需求灵活实现RS232、RS485串口通信方式,利用这些串口连接多种传感器,满足不同设备的连接需求,确保数据实时采集;配备4路CAN FD接口,支持高速的数据速率和更大的有效载荷,适用于复杂的工业通信场景;双千兆以太网接口的设计可用于连接网络,提供了更快的数据传输速度;核心板支持USB HOST,可连接WIFI/4G模块,实现灵活的无线通讯。这些特性使得MYC-LMA35核心板能够更好地应用在串口服务器中,高效地处理实时数据,适应多样化的应用需求。 图2 串口服务器应用框图   工业网关: 工业网关是一种专为工业环境设计的网络设备,用于连接不同的工业网络和设备,帮助实现数据的采集、传输和处理。它充当了各种工业控制系统之间的桥梁,使得不同协议和接口的设备能够无缝通信,从而提高了生产效率和设备管理的灵活性。 在工业网关上,米尔基于MA35D1核心板展现了强大的应用能力。核心板支持USB HOST,方便连接4G模组,确保工业设备能够进行实时数据传输;配备两路千兆以太网接口,确保高速数据传输;原生4路CAN FD接口可用于连接CAN 设备,提升工业自动化系统的互联互通性;核心板能够通过EBI与FPGA进行高效数据交互,拓展系统的处理能力;原生UART能够连接传感器等多种外部设备,可检测环境并采集数据;可利用SDHC连接WIFI/BT模块,增强无线通信的灵活性;I2C接口向外拓展连接RTC,确保系统时间准确性;核心板还支持LINUX操作系统,提供灵活的开发环境,适合工业应用的定制需求。基于这些性能MYC-LMA35核心板在工业网关中广泛应用,处理和管理来自不同设备的数据流。 图3 工业网关应用框图   充电桩: 充电桩是为电动车辆提供电能补给的设备,通过将电网中的电能转换为适合电动车使用的形式,实现快速、安全的充电。充电桩种类多样,包括直流快充和交流慢充,满足不同用户的需求。随着电动车的普及,充电桩的建设变得越来越重要,为绿色出行提供了便利保障。 MYC-LMA35核心板在充电桩的应用中展现了其强大的技术优势。MA35D1处理器配备原生17路UART接口,能够利用UART接口实现内外电压检测、计量电压采样和调试,也可以将UART接口根据需求转换为RS232、RS485串口通信方式,连接刷卡器、电表和扫码枪,使得其与电动车及其他设备的通信更加高效和灵活;核心板支持ADC,能够监测控制电压电流和温度,确保充电过程安全与高效;USB接口可连接U盘,实现数据存储和更新;两路千兆以太网,可以实现高速数据传输,满足充电桩实时监控和远程管理的需求;支持SPI和I2C接口,为外部传感器和模块的连接提供了便利;I2S、RGB等多媒体接口,帮助实现人机交互的界面显示和操作输入。MYC-LMA35核心板支持的多种拓展外设,使得其成为充电桩解决方案的理想选择,推动智能充电技术的发展。 图4 直流充电桩应用框图   振动监测: 振动监测是对设备或结构的振动特性进行检测、分析和评估的过程,以了解其运行状态和性能。分为高频振动监测,如电机振动监测;低频振动监测,如桥梁振动监监测。振动监测能够及时发现设备故障、评估设备性能、预测潜在风险,并采取相应的维护措施,确保设备安全、稳定、高效地运行。 MYC-LMA35核心板在振动监测领域具有强大的应用潜力。MA35D1芯片内置的DDR内存,使得数据处理更加高效,支持复杂的硬件设计;芯片集成的M4内核能够有效解决实时数据采集的问题,能够灵活配置ADC、串口、SPI和IIC等外设,确保系统在高频率下的稳定运行;核心板支持LINUX操作系统,方便程序的编制与维护,并通过以太网和4G模块实现更优的连接性能,增强了系统的兼容性和稳定性;M4内核与A35内核之间通过共享DDR内存进行数据传输,确保了在微秒级别内完成大量数据的传递。以上特性确保MYC-LMA35在振动监测中能够更好地应用。 图5 振动监测应用框图   综上所述,核心板在振动监测、充电桩、工业网关和串口服务器等领域的应用展现了其广泛的适用性和灵活性。原生17路UART和4路CAN FD为工业自动化和智能设备的开发提供了强有力的支持,满足更复杂和多样化的应用需求。 图6 米尔基于MA35D1核心板及开发板

  • 2024-09-30
  • 发表了主题帖: 国产首发!米尔全志T536核心板,搭载四核A55,17串口4CAN口

    在智能制造与物联网技术日新月异的今天,一款集高性能、低功耗、高可靠性于一身的工业级核心板成为了推动产业升级的关键力量。米尔电子向市场推出——国产真工业级四核Cortex-A55米尔全志T536核心板,助力国产真工业级工控板快速发展,为工业自动化、工业控制、机器人等领域提供强大的算力支持。MYC-LT536系列核心板采用LGA封装,存储配置2GB LPDDR4、16GB eMMC、接口丰富。   全志T536系列处理器是一款工业级应用芯片,基于ARM架构设计,专为高效能、低功耗的嵌入式应用而生。集成了4xCortex-A55 高性价比CPU,E907协处理器,含有2Tops NPU、G2D、VPU 4K高清视频编解码器。支持多种多媒体接口MIPI-DSI、Parallel DSI、Dual-LVDS和MIPI-CSI、Parallel CSI、5M ISP;此外,T536处理器还集成双千兆以太网、PCIe2.1/USB3.1、Localbus、4*CANFD、17*UART、SDIO、SPI、PWM、I2C等接口。其强大的处理能力,能够轻松应对复杂的工业计算任务,无论是数据处理、图像识别还是边缘计算,都能游刃有余。   作为一款国产真工业级产品,T536核心板在设计之初就充分考虑了工业环境的严苛要求。采用高质量元器件,经过严格的环境适应性测试,确保在宽温、高湿、振动等恶劣条件下仍能稳定运行。同时,其紧凑的封装设计和灵活的接口配置,便于用户快速集成到各类工业设备中,提升整体系统的可靠性和稳定性。   LGA创新设计,可靠性高 MYC-LT536系列核心板采用高密度高速电路板设计,在大小为43mm*45mm*3.85mm板卡上集成了T536、LPDDR4X、eMMC、E2PROM、PMIC电源等电路。具有最严格的质量标准、超高性能、丰富外设资源、高性价比、长供货时间的特点,适用于高性价比入门级智能设备所需要的核心板要求。   丰富的应用场景 米尔全志T536核心板凭借其卓越的性能和广泛的应用适应性,可广泛应用于电力继保、电力DTU、工业互联网设备、工业控制设备、工业机器人、显控一体机等多个领域。它不仅能够提升设备的智能化水平,助力开发者项目落地,节约开发时间和降低开发难度,加速数字化转型进程。   核心板型号 产品型号 主芯片 内存 存储器 工作温度 MYC-LT536ME-8E1D-180-I T536MX-CEX 1GB LPDDR4 8GB eMMC -40℃~+85℃  MYC-LT536ME-16E2D-180-I T536MX-CEX 2GB LPDDR4 16GB eMMC -40℃~+85℃  MYC-LT536MN2-32E4D-180-I T536MX-CEN2 4GB LPDDR4 32GB eMMC -40℃~+85℃    开发板型号 产品型号 对应核心板型号 工作温度 MYD-LT536ME-8E1D-180-I-GK MYC-LT536ME-8E1D-180-I -40℃~+85℃ 工业级 MYD-LT536ME-16E2D-180-I-GK MYC-LT536ME-16E2D-180-I -40℃~+85℃ 工业级 MYD-LT536MN2-32E4D-180-I-GK MYC-LT536MN2-32E4D-180-I -40℃~+85℃ 工业级  

  • 2024-09-20
  • 发表了主题帖: 首发新品!米尔STM32MP2核心板上市,更高性能MPU,多接口+边缘算力

    米尔发布基于STM32MP257设计的嵌入式处理器模块MYC-LD25X核心板及开发板。核心板基于STM32MP2系列是意法半导体推出最新一代工业级64位微处理器,采用LGA 252 PIN设计,存储配置1GB/2GB LPDDR4、8GB eMMC,具有丰富的通讯接口,适用于高端工业HMI、边缘计算网关、新能源充电桩、储能EMS系统、工业自动化PLC、运动控制器等场景。     STM32MP257处理器,ST第二代更高性能MPU STM32MP257配备了双核Cortex-A35 64位内核,最高主频可达1.5 GHz,还集成了用于实时操作的400 MHz Cortex-M33内核,具有单精度浮点单元(FPU)、数字信号处理(DSP)指令、TrustZone 安全特性和内存保护单元(MPU)。此外,该处理器还配备了总算力达1.35 TOPS的NPU加速器和3D GPU, 支持H.264/VP8 1920*1080@60FPS视频编解码。该处理器还支持多种外设拓展:3路千兆以太网/3路CAN FD/1路1 lane PCIE2.0/1路USB3.0&2.0 OTG/1路USB2.0 HOST/3路SDIO3.0/9路UART接口/8路I2C/4个I3/8路SPI/1路16bit FMC等。STM32MP2凭借先进算力、丰富接口和高安全性,为高性能和高度互联的工业4.0应用赋能。     机器视觉 先进的边缘AI  STM32MP25内置算力高达1.35 TOPS的NPU边缘AI加速器,支持带ISP的 MIPI CSI接口,可实现如机器视觉在内的多种AI应用;STM32MP25还内置主频900MHz的3D GPU;开发者可灵活选择在CPU、GPU、NPU上运行AI应用。3D GPU支持高达1080p分辨率,配有ISP处理器的MIPI CSI-2 摄像头接口,STM32MP25还内置全高清视频编解码并具有丰富的显示接口,支持RGB、LVDS 和DSI输出。         更强的安全特性,适用于更多工业场景 STM32MP25通过了SESIP 三级以及PSA 一级目标认证,内置强大的安全加密硬件,可以实现存储器和外设保护,防止非法访问与控制;具有安全加密加速器,增强抵御物理攻击的稳健性;支持运行时代码隔离保护,以及产品生命周期内的设备真伪验证。     丰富外设接口,强大的连接能力 在工业4.0的浪潮中,随着智能制造和自动化需求的增加,MPU不仅要支持高速、低延迟的有线和无线连接,还需实现设备间的无缝协作。STM32MP257系列为支持互连应用的扩展,具有增强的连接功能,接口丰富:支持TSN(时间敏感网络)、多达3个千兆以太网端口(内置双端口交换机)、PCIe Gen2、USB 3.0、3个CAN-FD接口等。     LGA创新设计,可靠性高 MYC-LD25X 核心板采用高密度高速电路板设计,在大小为37mm*39mm板卡上集成了STM32MP257x、LPDDR4、eMMC、E2PROM、PMIC等电路。MYC-LD25X 具有最严格的质量标准、超高性能、丰富外设资源、高性价比、长供货时间的特点,适用于高性价比智能设备所需要的核心板要求。           应用场景丰富 STM32MP257有出色的性能、更高的集成度和多样的应用扩展,适用于高端工业HMI、边缘计算网关、新能源充电桩、储能EMS系统、工业自动化PLC、运动控制器等场景。          

  • 2024-09-13
  • 发表了主题帖: 兼容7A100T和PG2L100H双芯核心板,米尔FPGA平台

    本帖最后由 blingbling111 于 2024-9-14 17:14 编辑 随着物联网(IoT)、工业自动化、医疗设备等领域对嵌入式系统的需求不断增加。嵌入式核心板(SOM)作为嵌入式系统的核心组件,其市场需求也随之增长。在快速发展的同时,也面临一定的挑战:如进口芯片供应链不可控、单一平台受地域政策限制、多平台产品开发周期长、开发难度高等问题,米尔电子设计开发了纯FPGA 开发平台,支持一款平台,双芯设计,支持同款底板可换国产和进口芯片,推出MYIR 7A100T和PG2L100H核心板,解决客户对国内国际市场的不同需求。   国产开发维护与进口主流出货痛点 痛点一 政策受限,国内与海外客户对产品有不同需求 MYIR推出FPGA 开发平台具有极高的灵活性,用户可以根据项目需求自由选择AMD XC7A100T 和紫光同创 PG2L100H 这两款核心板,共享同一底板平台,可以实现无缝切换,在地缘政治不确定的环境下,双平台策略可以适应国内国际市场的不同需求。       痛点二  维护主流与国产替代两款平台开发周期长,难度大 MYIR 7A100T和PG2L100H两款核心板均采用260PIN MXM金手指封装形式,方便在开发生产过程中快速插拔、更换,极大简化了开发与测试工作。用户可以根据项目需求选择国产或进口平台,极大地提高了开发和部署的灵活性。       MYIR FPGA开发平台优势 优势一 行业应用案列丰富 米尔推出的FPGA开发平台基于同一底板,提供了国产与进口双芯选择,满足了不同区域市场的需求。后面结合其在软件定义无线电(SDR)、电力监测及工业自动化等领域的实际应用,展示这一平台的强大潜力。       优势二  产品稳定,生命周期长 米尔嵌入式核心板在应用于各种复杂环境时,经过严格的高低温测试、压力测试、信号完整性测试等,以确保其稳定性和可靠性。   行业应用案例详解 应用一、 软件定义无线电(SDR)应用 应用场景:软件定义无线电(SDR)是目前通信领域的热点技术,广泛应用于国防、商业通信以及科研领域。7A100T和PG2L100H核心板凭借其出色的FPGA性能和灵活的编程能力,成为SDR项目中的理想选择。它能够支持多种无线通信协议,并在不更换硬件的情况下,通过重配置实现不同频段和制式的切换。 案例分析:在某无线通信公司开发的SDR设备中,7A100T核心板被用于处理中频信号和基带数据。借助其强大的逻辑资源和高速数据处理能力,该设备能够灵活应对不同频段的信号处理需求,显著提升了设备的通用性和稳定性。 技术优势:7A100T核心板集成了大量DSP模块和可编程逻辑单元,支持复杂信号调制解调的高速处理。同时,其低功耗特性使其能够在电池供电的环境下长时间运行,满足便携式设备的需求,在开发稳定后,对于国内信创终端客户替换为PG2L100H核心板,国际客户稳定出7A100T核心板,实现国际国内市场双赢。   图:SDR设备架构示意图 应用二:电力监测与智能电网应用 应用场景:电力监测是保障电网安全运行的关键环节。FPGA的实时处理能力使其成为电力监测系统中的重要组成部分。7A100T和PG2L100H核心板凭借其稳定的性能和低功耗特性,在电力监测与智能电网中得到了广泛应用。 案例分析:在某智能电网项目中,PG2L100H核心板被用于电压、电流和功率因子的实时监测。该系统通过对电网关键数据的高速处理和分析,能够及时发现异常并做出预警,有效防止电力事故的发生。 技术优势:PG2L100H的高密度逻辑单元和多通道ADC接口,使其能够处理海量的实时数据,同时支持大规模并行运算。这一特性在复杂电力系统中的应用尤其突出,确保了数据处理的速度和准确性,之后客户放在官网的产品信息获得巴西某水电站关注,客户无缝替换为7A100T核心板供应给巴西终端,极大满足了终端对于开发时效紧急性和稳定以及出口认证资质等要求   图:智能电网监控系统示意图   应用三:工业自动化控制应用 应用场景:工业自动化是现代制造业的核心,涉及复杂的运动控制、机器视觉和数据采集等多个环节。7A100T核心板由于其可靠性和高性能,被广泛应用于工业自动化控制系统中。 案例分析:某大型制造企业在其生产线升级中采用了7A100T核心板,用于运动控制和视觉检测。通过该核心板的高速数据处理能力和灵活的I/O接口,企业成功提升了生产线的效率和产品质量。 技术优势:7A100T支持多轴运动控制、实时数据采集以及高精度的图像处理。其丰富的外围接口和强大的逻辑资源,使得控制系统能够应对各种复杂工况,实现全自动化生产,客户在对于国内特种装备行业同样的工业运动控制卡需求时,无缝替换为PG2L100H核心板,极快的加速了产品开发,认证上市时间。   图:工业自动化控制应用示意图   结语:全国产自主与国际标准的结合 米尔的FPGA平台为用户提供了双芯选择的可能,无论是需要国际认可的高端项目,还是对成本与安全性要求更高的国内项目,都能在这一平台上找到合适的解决方案。PG2L100H核心板基于国产紫光自主研发的芯片,代表了国内FPGA技术的发展方向。它不仅满足了对高安全性、高可靠性的要求,也实现了与国际标准的兼容性。MYIR的双芯平台凭借其灵活的双芯片选择和强大的性能,为各行业提供了全面的解决方案。无论是针对国际市场的高端应用,还是国内市场的自主创新需求,米尔的7A100T和PG2L100H FPGA平台都能满足开发者的多样化需求。未来,随着技术的不断进步和更多应用场景的开发,MYIR的FPGA开发平台将成为FPGA领域的标杆选择。​     图:开发平台框图   MYIR的7A100T和PG2L100H FPGA开发平台通过其一体化设计、灵活的双芯选择和出色的行业适应性,为众多应用场景提供了强大的支持。从软件定义无线电到电力监测,再到工业自动化控制,平台已在多个领域展现了其不可替代的价值。

最近访客

< 1/4 >

统计信息

已有46人来访过

  • 芯积分:287
  • 好友:1
  • 主题:106
  • 回复:11

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言