0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM+FPGA架构开发板PCIE2SCREEN示例分析与测试-米尔MYD-JX8MMA7

米尔电子 2023-03-02 09:44 次阅读

本篇测评由电子发烧友的优秀测评者“zealsoft”提供。

537bdf10-b899-11ed-ad0d-dac502259ad0.gif 本次测试内容为米尔MYD-JX8MMA7开发板其ARM端的测试例程pcie2screen并介绍一下FPGA端程序的修改。

01.

测试例程pcie2screen
例程pcie2screen是配合MYD-JX8MMA7开发板所带的MYIR_PCIE_5T_CMOS 工程的测试例,它的作用是显示FPGA所连接的摄像头所采集的视频。运行该程序后屏幕会显示一个标题为demo的窗口。
538a3de4-b899-11ed-ad0d-dac502259ad0.png
使用鼠标点击 ready按钮,demo 窗口会显示连续的视频,说明摄像头、DDR、PCIE接口各部分正常。如果没有接摄像头,该程序会显示杂乱无章的图像。

该测试例的源码没有包括在SDK中,可以向米尔公司的技术人员索取。该实例程序是用Qt开发的,使用了OpenGL技术。程序包括以下几个主要的类:

  • MainWindow:QMainWindow子类,是显示窗口的。
  • uOpenglYuv:QOpenGLWidget子类,用于显示采集到的图像。该类的initializeGL函数用于初始化OpenGL。paintGL函数是用于绘制图像的,其中最核心的语句是:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, vW, vH, 0, GL_RGBA, GL_UNSIGNED_BYTE, pRGB);

其中的pRGB保存从FPGA读取的数据。从这句我们可以看出该程序所要求的图像的格式。

  • xdma_getImg:主线程类
  • xdma_programe:对RIFFA接口进行了封装,其中的read_pack用于读取FPGA数据,被主线程循环调用。其函数定义如下:

int xdma_programe::read_pack(char *pData, int len)
{
//int buffer[1920 * 1080];
//int buffer[1024 * 768];
int buffer[1280 * 720];
int i;

if(dev_fd != NULL)
{
fpga_send(dev_fd, 0, buffer, len / 4, 0, 1, 25000);
fpga_recv(dev_fd, 0, buffer, len / 4, 25000);
memcpy(pData, (char *)buffer, len);

return len;
}
else
{
return 0;
}
}

从函数中可以看出,在每次读数据前,该函数先向FPGA写一次数据(数据无意义,和FPGA的状态机有关),每次读入一整帧的数据。

02.

FPGA端程序的修改
FPGA端的逻辑控制在chnl_tester.v中,它定义了一个状态机,用于对数据收发进行控制。状态机定义如下:

always @(posedge CLK or posedge RST) begin
if (RST) begin
rLen <= #1 0;
rCount <= #1 0;
rState <= #1 0;
rData <= #1 0;
vout_vs_r <= #1 0;
end
else begin
case (rState)


3'd0: begin // Wait for start of RX, save length
if (CHNL_RX) begin
rLen <= #1 CHNL_RX_LEN;
rCount <= #1 0;
rState <= #1 3'd1;
end
end


3'd1: begin // Wait for last data in RX, save value
if (CHNL_RX_DATA_VALID) begin
rData <= #1 CHNL_RX_DATA;
rCount <= #1 rCount + (C_PCI_DATA_WIDTH/32);
end
if (rCount >= rLen)begin
rState <= #1 3'd2;
end
end

3'd2: begin // Prepare for TX
if (read_valid) begin
rCount <= #1 0;
rState <= #1 3'd3;
end
end

3'd3: begin // Start TX with save length and data value
if (CHNL_TX_DATA_REN) begin
//rData <= #1 data_in;
rCount <= #1 rCount + (C_PCI_DATA_WIDTH/32);
if (rCount >= rLen)
rState <= #1 3'd4; 
end
end
3'd4: begin
if (vout_vs_r)
rState <= #1 3'd5;
else begin
vout_vs_r <= #1 1;
rState <= #1 3'd4;
rCount <= #1 0;
end
end
3'd5: begin
if (vs_flag) begin
rState <= #1 3'd0;
vout_vs_r <= #1 0;
end
else
rState <= #1 3'd5;
end
endcase
end
end

我们手头没有摄像头进行测试,所以简单修改该程序,使程序发送蓝色渐变色带信号
核心修改如下:

……
reg [31:0] rColor = 0;
……
assign CHNL_TX_DATA = (read_en)? {rColor, rColor}:64'd0;
……
3'd3: begin // Start TX with save length and data value
if (CHNL_TX_DATA_REN) begin
//rData <= #1 data_in;
// if (rCount % 5 == 4)
rColor <= #1 rColor + 1;
if(rColor >= 255)
rColor <= #1 0;
rCount <= #1 rCount + (C_PCI_DATA_WIDTH/32);
if (rCount >= rLen)
rState <= #1 3'd4; 
end
end
……



03.

测试结果
我们没有修改ARM端的测试程序,仍然使用厂家提供的pcie2screen,只是重新烧写FPGA程序。程序的运行效果参见视频。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1628

    文章

    21721

    浏览量

    602865
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9079

    浏览量

    367293
  • 开发板
    +关注

    关注

    25

    文章

    5024

    浏览量

    97352
  • 米尔
    +关注

    关注

    0

    文章

    50

    浏览量

    7928
收藏 人收藏

    评论

    相关推荐

    如何用OpenCV进行手势识别--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板米尔基于全志T527开发板)的OpenCV手势识别方案
    的头像 发表于 12-13 08:04 544次阅读
    如何用OpenCV进行手势识别--基于<b class='flag-5'>米尔</b>全志T527<b class='flag-5'>开发板</b>

    米尔-Xilinx XC7A100T FPGA开发板试用】测试

    感谢米尔电子和电子发烧友提供的米尔-Xilinx XC7A100T FPGA开发板MYD-J7
    发表于 12-08 08:48

    FacenetPytorch人脸识别方案--基于米尔全志T527开发板

    本篇测评由电子工程世界的优秀测评者“小火苗”提供。本文将介绍基于米尔电子MYD-LT527开发板米尔基于全志T527开发板)的Facene
    的头像 发表于 11-28 15:12 276次阅读
    FacenetPytorch人脸识别方案--基于<b class='flag-5'>米尔</b>全志T527<b class='flag-5'>开发板</b>

    追加名额丨米尔瑞芯微RK3576开发板有奖试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的
    的头像 发表于 11-22 01:00 153次阅读
    追加名额丨<b class='flag-5'>米尔</b>瑞芯微RK3576<b class='flag-5'>开发板</b>有奖试用

    米尔-Xilinx XC7A100T FPGA开发板试用】+01.开箱(zmj)

    1 JTAG 0 0 0 0 2 QSPI32 0 0 0 1 3.1JTAG连接 在使用米尔-Xilinx XC7A100T FPGA开发板
    发表于 11-12 15:45

    有奖丨米尔 瑞芯微RK3576开发板免费试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动来啦~~米尔提供了7块价值849元的
    的头像 发表于 11-12 01:00 285次阅读
    有奖丨<b class='flag-5'>米尔</b> 瑞芯微RK3576<b class='flag-5'>开发板</b>免费试用

    基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    本文将介绍基于米尔电子MYD-LMX93开发板米尔基于NXPi.MX93开发板)的基于OpenCV的人脸检测方案
    的头像 发表于 11-07 09:03 1071次阅读
    基于OPENCV的相机捕捉视频进行人脸检测--<b class='flag-5'>米尔</b>NXP i.MX93<b class='flag-5'>开发板</b>

    ARM开发板FPGA的结合应用

    一、引言 ARM开发板是一种基于ARM架构的嵌入式开发平台,具有高性能、低功耗的特点。FPGA
    的头像 发表于 11-05 11:42 421次阅读

    新品7折购!米尔RK3568国产开发板

    MYD-LR3568系列开发板7折回馈客户,原价499元,抢先体验价350元起!各型号限购20套,每个ID限购1套,售完即止!产品型号对应核心型号工作温度
    的头像 发表于 08-02 08:01 510次阅读
    新品<b class='flag-5'>7</b>折购!<b class='flag-5'>米尔</b>RK3568国产<b class='flag-5'>开发板</b>

    米尔T527系列加推工控和工控机,更多工业场景DEMO

    MYD-LT527-GK-B微型工控机。MYD-LT527-GK工控由工业开发板和扩展底板组成,方便客户使用米尔工业
    发表于 06-21 17:54

    点击参与米尔NXP i.MX 93开发板有奖试用

    米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-
    的头像 发表于 06-13 08:02 516次阅读
    点击参与<b class='flag-5'>米尔</b>NXP i.MX 93<b class='flag-5'>开发板</b>有奖试用

    米尔NXP i.MX 93开发板的Qt开发指南

    1.概述Qt是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔NXPi.MX93开发板MYD-LMX9X
    的头像 发表于 06-07 08:01 1724次阅读
    <b class='flag-5'>米尔</b>NXP i.MX 93<b class='flag-5'>开发板</b>的Qt<b class='flag-5'>开发</b>指南

    国产FPGA核心米尔紫光同创Logos-2和Xilinx Artix-7核心

    两款FPGA核心,经过一系列的软硬件测试,保障产品性能稳定关键信号质量测试、高低温测试、软件压力测试
    发表于 05-31 17:40

    G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

    本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试
    的头像 发表于 04-12 08:01 658次阅读
    G<b class='flag-5'>2</b>D图像处理硬件调用和<b class='flag-5'>测试</b>-基于<b class='flag-5'>米尔</b>-全志T113-i<b class='flag-5'>开发板</b>

    ROS系统的智能车开发-基于米尔芯驰MYD-JD9X开发板

    本篇测评由电子工程世界的优秀测评者“mameng”提供。本文将介绍基于米尔电子MYD-JD9X开发板的ROS系统智能车开发。目前实现ROS的方式主要有两种:Ubuntu系统+ROS;U
    的头像 发表于 01-26 08:01 915次阅读
    ROS系统的智能车<b class='flag-5'>开发</b>-基于<b class='flag-5'>米尔</b>芯驰<b class='flag-5'>MYD</b>-JD9X<b class='flag-5'>开发板</b>