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
    +关注

    关注

    1655

    文章

    22281

    浏览量

    630052
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9499

    浏览量

    388551
  • 开发板
    +关注

    关注

    25

    文章

    6121

    浏览量

    113144
  • 米尔
    +关注

    关注

    0

    文章

    55

    浏览量

    8361
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何移植EtherCAT Igh--基于米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微RK3576开发板)的端移植E
    的头像 发表于 09-26 08:04 9427次阅读
    如何移植EtherCAT Igh--基于<b class='flag-5'>米尔</b>RK3576<b class='flag-5'>开发板</b>

    Pico2-ICE FPGA开发板的应用示例

    FPGA 和 MCU 结合的开发板不多,而 Pico2‑ICE 则把小巧、灵活和易上手完美结合。搭载 RP2350 双核 RISC-V MCU + Lattice iCE40UP5K FPGA
    的头像 发表于 09-06 10:02 643次阅读
    Pico<b class='flag-5'>2</b>-ICE <b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>的应用<b class='flag-5'>示例</b>

    米尔RK3506国产开发板测试用】1、硬件介绍、SDK开发环境和QT开发环境搭建

    ,根据开发板的IP地址设置主机,同时使用页面的上公私钥配置工具生成公私钥信息并部署公钥到开发板。 Sysroot:设置为Buildroot输出目录中的/myd_yr3506_emmc_br/host
    发表于 08-02 15:02

    基于米尔全志T536开发板的多协议物联网关的方案测试

    本文将介绍基于米尔电子MYD-LT536开发板米尔基于全志T536开发板)的多协议物联网关方案的开发
    的头像 发表于 06-19 08:03 1465次阅读
    基于<b class='flag-5'>米尔</b>全志T536<b class='flag-5'>开发板</b>的多协议物联网关的方案<b class='flag-5'>测试</b>

    有奖丨米尔 瑞芯微RK3562开发板免费试用新增名额!

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3562应用处理器的MYD-YR3562开发板免费试用名额增加
    的头像 发表于 06-13 08:04 846次阅读
    有奖丨<b class='flag-5'>米尔</b> 瑞芯微RK3562<b class='flag-5'>开发板</b>免费试用新增名额!

    ARM,NPU,FPGA三种核心的开发板米尔安路飞龙派开发板

    最近我发现一个有趣的开发板。这个开发板集合了ARM核心,NPU核心甚至还有FPGA核心。它就是米尔新出的YM90X
    的头像 发表于 06-13 08:03 1347次阅读
    有<b class='flag-5'>ARM</b>,NPU,<b class='flag-5'>FPGA</b>三种核心的<b class='flag-5'>开发板</b> — <b class='flag-5'>米尔</b>安路飞龙派<b class='flag-5'>开发板</b>

    有奖丨米尔 NXP i.MX91开发板免费试用来啦

    米尔与NXP合作发布的新品基于NXPi.MX91应用处理器的MYD-LMX91开发板免费试用名额来啦~~米尔提供了3套价值588元的MYD-
    的头像 发表于 06-05 08:02 1108次阅读
    有奖丨<b class='flag-5'>米尔</b> NXP i.MX91<b class='flag-5'>开发板</b>免费试用来啦

    基于米尔全志T536开发板的视频识别应用方案

    本文将介绍基于米尔电子MYD-LT536开发板米尔基于全志T536开发板)的视频识别应用方案测试
    的头像 发表于 06-05 08:01 1769次阅读
    基于<b class='flag-5'>米尔</b>全志T536<b class='flag-5'>开发板</b>的视频识别应用方案

    米尔-STM32MP257开发板试用体验】初次体验米尔-STM32MP257开发板

    接口。 为了帮助开发者更好地理解与应用STM32MP257D处理器和MYD-LD25X开发板米尔将与ST在2025年1月7日和2025年1
    发表于 04-30 16:21

    OpenCV行人检测应用方案--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板米尔基于全志T527开发板)的OpenCV行人检测方案
    的头像 发表于 04-10 08:03 1096次阅读
    OpenCV行人检测应用方案--基于<b class='flag-5'>米尔</b>全志T527<b class='flag-5'>开发板</b>

    免费丨米尔 STM32MP257开发板有奖试用

    米尔与ST合作发布的新品基于STM32MP257应用处理器的MYD-LD25X开发板免费试用活动来啦~~米尔提供了2块价值488元的
    的头像 发表于 03-20 08:05 881次阅读
    免费丨<b class='flag-5'>米尔</b> STM32MP257<b class='flag-5'>开发板</b>有奖试用

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

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3562应用处理器的MYD-YR3562开发板免费试用活动来啦~~米尔提供了3块价值599元的MYD
    的头像 发表于 03-20 08:05 803次阅读
    有奖丨<b class='flag-5'>米尔</b> 瑞芯微YR3562<b class='flag-5'>开发板</b>免费试用

    人脸疲劳检测应用-米尔基于RK3576核心/开发板

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微RK3576开发板)的人脸疲劳检测方案
    的头像 发表于 12-20 08:06 1351次阅读
    人脸疲劳检测应用-<b class='flag-5'>米尔</b>基于RK3576核心<b class='flag-5'>板</b>/<b class='flag-5'>开发板</b>

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

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

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

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