首页 > 其他分享 >基于TI Sitara系列AM5728工业开发板——FPGA视频开发案例分享

基于TI Sitara系列AM5728工业开发板——FPGA视频开发案例分享

时间:2024-07-15 15:57:53浏览次数:15  
标签:cameralink FPGA IP 配置 模式 开发板 Base TI CameraLink

前 言

 

本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。

评估板简介

创龙科技TL5728F-EVM是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板,由核心板与评估底板组成。AM5728与Artix-7在核心板内部通过GPMC、I2C通信总线连接,在评估底板通过PCIe通信总线连接。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路千兆网口、双路SFP光口、USB 3.0、CAN、RS485、SATA、HDMI、GPMC、FMC等接口,方便用户快速进行产品方案评估与技术预研。

在进行本文如下操作前,请先按照调试工具安装文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。

根据评估底板丝印将Artix-7的BOOT SET拨码开关(SW3)拨至01(1~2),此档位为SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正常连接至PC机。

 

图 1

cameralink_display案例

cameralink_display案例分为FPGA程序与MicroBlaze裸机程序两部分。FPGA程序位于产品资料“4-软件资料\Demo\FPGA_Demo\All-Programmable-FPGA-demos\cameralink_display\hw\”目录下,包含project和bin两个目录。基于MicroBlaze软核的裸机程序位于产品资料“4-软件资料\Demo\All-Programmable-FPGA-demos\cameralink_display\sw\baremetal_demo”目录下,包含project和bin两个目录。

案例功能

案例功能:评估板通过FMC视频模块TLCameraLinkF的CameraLink接口采集分辨率为1280 x 1024的视频,并通过TLCameraLinkF模块的HDMI OUT接口输出采集到的视频。

图 2 程序功能框图

本案例FPGA程序支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。

Full模式工程编译后生成的可执行文件为cameralink_display_full_xx.bit,Base模式工程编译后生成的可执行文件为cameralink_display_base_xx.bit。

 

操作说明

本案例支持三款CameraLink相机,具体说明如下。

表 1

Full模式硬件连接方法

如采用Full模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。

请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将CameraLink相机的CL1通过数据线连接至TLCameraLinkF模块的CameraLink2接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。

图 3

Base模式硬件连接方法

如采用Base模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。

请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。

图 4

下面对三款不同型号的CameraLink相机在Full/Base模式下的操作步骤进行说明。

  1. 黑白CameraLink相机RS-A5241-CM107-S00,Full模式

请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出黑白图像。

图 5

图 6

  1. 彩色CameraLink相机RS-A5241-CC107-S00,Full模式

请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出彩色图像。

图 7

图 8

备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。

  1. 黑白CameraLink相机RS-A5241-CM107-S00,Base模式

请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出黑白图像。

图 9

图 10

  1. CameraLink相机RS-A5241-CC107-S00,Base模式

请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出彩色图像。

图 11

图 12

备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。

  1. 黑白CameraLink相机MVC1381SAM-CL60-S00,Base模式

请运行Base模式程序,即可看到串口调试终端打印如下信息。请输入"3"选择相机型号为MVC1381SAM-CL60-S00。配置完成后,即可看到HDMI显示屏输出黑白图像。

图 13

图 14

关键代码(MicroBlaze)

MicroBlaze裸机源码为"sw\baremetal_demo\project\cameralink_display\src\",关键代码说明如下。

  1. main函数。

图 15

图 16

图 17

  1. 初始化VDMA,将采集到的视频数据缓存至DDR,再进行HDMI视频输出。

图 18

  1. 初始化Sil9022。

图 19

  1. 初始化AXIS Switch IP核。

图 20

  1. 初始化Sensor Demosaic IP核,以将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。

图 21

  1. 初始化Video Mixer IP核。

图 22

Vivado工程说明

点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。

图 23

本案例分别支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。两者区别如下:

  1. Full模式Vivado工程:Pixels Per Clock配置为8,即每个时钟8个像素。
  2. Base模式Vivado工程:Pixels Per Clock配置为2,即每个时钟2个像素。

图 24 Full模式

图 25 Base模式

CameraLink Full模式Vivado工程顶层文件为"hw\project\cameralink_display_full_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_full.v"。

CameraLink Base模式Vivado工程顶层文件为"hw\project\cameralink_display_base_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_base.v"。

关键代码说明如下。

  1. 定义模块接口。

图 26

  1. 使用STARTUPE2原语输出复位信号。

图 27

  1. 调用Block Design。

图 28

模块/IP核配置

lvds_n_x_1to7_sdr_rx模块

本案例使用lvds_n_x_1to7_sdr_rx模块将CameraLink相机输入的差分视频数据转化成并行视频数据。

lvds_n_x_1to7_sdr_rx模块开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《xapp585-lvds-source-synch-serdes-clock-multiplication.pdf》。lvds_n_x_1to7_sdr_rx模块源码文件为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\lvds_n_x_1to7_sdr_rx.v",具体配置说明如下。

  1. delay_refclk_in接入由Clocking Wizard输出的200MHz参考时钟。

图 29

  1. 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。配置X为4,表示“每个通道的数据差分对数量为4”。
  • Base模式:单通道,每通道数据差分对为4组,需1个连接器。
  • Medium模式:双通道,每通道数据差分对为4组,需2个连接器。
  • Full模式:三通道,每通道数据差分对为4组,需2个连接器。

图 30

cameralink_bit_allocation_rx模块

本案例使用cameralink_bit_allocation_rx模块将转化后的并行视频数据进行重组,分离出行同步信号、场同步型号、数据有效信号和像素数据。

cameralink_bit_allocation_rx模块源码为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\cameralink_bit_allocation_rx.v",具体配置与关键代码说明如下。

  1. 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。
  • Base模式:单通道,输出端PortA、PortB、PortC有效。
  • Medium模式:双通道,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。
  • Full模式:三通道,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。

图 31

  1. data_in的数据排列格式。

下图为Base模式单通道4组差分对图像数据排列,例如TxIN[7:6]对应D[0:1],TxIN[4:0]对应D[2:6]。

图 32

将Base模式单通道4组差分对图像数据保存在data_in数组的排列顺序如下。

图 33

  1. 分离行同步信号、场同步信号、数据有效信号和像素数据。

根据CameraLink V2.0协议,RX24对应行有效信号LVAL(行同步信号),RX25对应帧有效信号FVAL(场同步信号),RX26对应数据有效信号DVAL,具体对应关系如下。

图 34

根据上图说明,即可将行同步信号、场同步型号、数据有效信号和像素数据进行分离。

图 35

VDMA IP核

本案例使用VDMA IP核进行视频数据缓存。

VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg020_axi_vdma.pdf》。

VDMA IP核寄存器列表如下,其中S2MM_xx将视频数据缓存至DDR,MM2S_xx将视频数据从DDR中取出。

图 36

图 37

VDMA IP核具体配置说明如下。

  1. Frame Buffers配置为4个。
  2. Write Burst Size、Read Burst Size均配置为128。
  3. 读通道的Stream Date Width配置为8。
  4. 读/写通道的Line Buffer Depth均配置为2048。

图 38

  1. 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。

图 39

Video In to AXI4-Stream IP核

本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。

Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。

  1. Full模式:Pixels Per Clock配置为8,即每个时钟8个像素。Base模式:Pixels Per Clock配置为2,即每个时钟2个像素。
  2. 视频格式配置为Mono/Sensor。
  3. 数据位宽配置为8bit。

图 40

AXI4-Stream to Video Out IP核

本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。

AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。

  1. FIFO Depth配置为2048。
  2. Clock Mode配置为Independent(独立时钟)。

图 41

Video Mixer IP核

本案例使用Video Mixer IP核将视频数据叠加到1920 x 1080分辨率的视频中。

Video Mixer IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg243-v-mix-v2.0.pdf》,具体配置说明如下。

Mixer通过MicroBlaze配置寄存器进行使能。

图 42

  1. Number of Layers配置为3,其中Master Layer(s_axis_video)未使用,仅使用Layer1(s_axis_video1)与Layer2(s_axis_video2)。当采集黑白CameraLink相机的图像时,使用Layer1;当采集彩色CameraLink相机的图像时,使用Layer2。
  2. 配置可支持的最大分辨率为1920 x 1080。

图 43

VTC IP核

本案例使用VTC IP核产生用于视频输出的时序。

VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。

  1. 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。

图 44

  1. 点击Default/Constant,Video Mode配置为1080p,其余配置保持默认。

图 45

Sensor Demosaic IP核

本案例使用Sensor Demosaic IP核将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。

Sensor Demosaic IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg286-v-demosaic.pdf》,具体配置说明如下。图像宽高以及Bayer的格式,通过MicroBlaze配置寄存器进行设置。

图 46

由于Sensor Demosaic IP核视频数据输出格式为RBG,因此使用AXI4-Stream Subset Converter IP核将RBG转换成RGB,再进行视频输出。

图 47

图 48

AXI4-Stream Switch IP核

本案例使用AXI4-Stream Switch IP核选择黑白或彩色CameraLink相机视频数据进行处理。

AXI4-Stream Switch IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg085-axi4stream-infrastructure.pdf》,具体配置说明如下。本案例通过MicroBlaze配置寄存器,选择将S00_AXIS(视频数据输入通道)路由到M00_AXIS(黑白CameraLink相机视频数据处理通道)或M01_AXIS(彩色CameraLink相机视频数据处理通道)。

  1. Number of slave interfaces配置为1,即配置1个Slave接口。
  2. Number of master interfaces配置为2,即配置2个Master接口。
  3. Use control register routing配置为Yes,即使能AXI4-Lite接口。

图 49

Vivado工程编译

申请IP核License

如需重新编译工程或打开Video Mixer IP核,需在Xilinx官网申请Video Mixer IP核的免费License,并将其正确导入。License申请与导入方法,请查阅调试工具安装文档相关章节,其它IP核无需License。

成功导入后,可在View License Status窗口发现新添加的License。

图 50

工程编译异常解决

本案例包含HLS IP核,由于Vivado工程文件路径过长,可能导致工程编译过程中出现如下错误。

图 51

可在Tcl Console窗口执行如下命令,重新生成HLS IP核相关文件,即可正常编译工程。

Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_demosaic_0_0]}

图 52

Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_mix_0_0]}

图 53

标签:cameralink,FPGA,IP,配置,模式,开发板,Base,TI,CameraLink
From: https://www.cnblogs.com/Tronlong818/p/18303332

相关文章

  • 基于AM5708开发板——开箱初探+环境搭建、源码编译
    本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TISitara系列AM5708ARMCortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成。核心板经过专业的PCBLayout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路PRU百兆......
  • 开发板测试手册——系统启动、文件传送操作步骤详解(1)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • 开发板测试手册——SPI FLASH 读写、USB WIFI 模块(2)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • 【资料分享】全志科技T507-H开发板规格书
    1评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARMCortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级......
  • mybatisPlus使用sql注入器实现真正批量插入
    注入器packagecom.ruoyi.framework.interceptor;importcom.baomidou.mybatisplus.core.injector.AbstractMethod;importcom.baomidou.mybatisplus.core.injector.DefaultSqlInjector;importcom.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn......
  • Azure Function 时区设置
    一,引言AzureFunction上的默认使用UTC运行程序,我们在获取时间,或者通过时间执行某些逻辑时,返回UTC时间,导致业务数据不正常,由于AzureFunction是微软提供的IaaS托管服务,我们无法登录服务器来修改时区,那么我们今天将来实践操作,如何通过配置达到更改AzureFunction时区......
  • 基于AM62x GPMC并口的ARM+FPGA低成本通信方案
    GPMC并口简介GPMC(GeneralPurposeMemoryController)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口,如:(1)FPGA器件(2)ADC器件(3)SRAM内......
  • TimescaleDB时间序列数据库
    TimescaleDB:这是一款支持完整sql开源的时间序列数据库。用处1、数据量庞大2、只做时间索引类的插入3、很少更新数据TimescaleDB的好处:基于时序优化自动分片(自动按时间、空间分片(chunk))全SQL接口支持垂直于横向扩展支持时间维度、空间维度自动分区。空间维度指属性字......
  • static块执行时机
    不是类被加载的时候就执行,而是类初始化的时候才被执行。类初始化有以下几种情况:当一个类被主动使用时,Java虚拟就会对其初始化,如下六种情况为主动使用:当创建某个类的新实例时(如通过new或者反射,克隆,反序列化等)当调用某个类的静态方法时当使用某个类或接口的静态字段时当调用Java......