Versal ACAP尝鲜

文章目录

  • 概要
  • 整体架构
  • 专有名词解释
  • IP配置
  • 总结

概要

        此demo工程基于Alinx的V100板卡(xcve2302-sfva784-1LP-e-S)搭建,使用AN5020摄像头模组(sensor型号:OmniVision (OS05A20)采集RAW10格式的视频图像,经过MIPI(4 lane)接口给到Versal,在PL端进行视频处理后通过LVDS接口(4lane,7:1)输出到AN7000显示屏(7寸LCD屏、1280*720)实时显示。

        Versal ACAP芯片架构与软件开发环境均与之前的器件有所不同,通过此demo重点需要掌握:1)、Versal ACAP的架构;2)、CIPS的配置与使用方法;3)、NoC的配置与使用方法、4)、SDK软件使用方法。

整体架构流程

技术名词解释

CIPS:Control,Interfaces & Processor System

PMC:Platform Management Controller

PS:Processor System

NoC:Network on Chip

IP配置

  • demo使用PS+PL的架构实现,因此,需要使用CIPS(Control,Interface & Processing System),PS的作用主要是初始化摄像头寄存器以及VDMA、Sensor Demosaic的寄存器;

  • 摄像头通过4个lane的MIPI接口输出RAW格式的像素,因此,需要通过MIPI CSI-2 Rx Subsystem接收串行像素bit流,恢复成4个RAW10bit像素;

  • 使用Sensor Demosaic将RAW格式数据转为RGB格式数据,插值出每个像素的R、G、B分量;

  • 通过VDMA将RGB像素缓存到DDR存储器,因此需要使用VDMA和NoC,为什么必须要使用NoC呢?这是由Versal设备的架构决定的,无论PS还是PL访问DDR存储器都需要通过NoC实现;

  • LCD屏幕是LVDS接口,需要通过Video Timing Controller和AXI4-Stream to Video Out产生显示时序,以及LVDS 7:1串化电路(Advanced IO Wizard)将显示时序信息通过4个LVDS lane发送至显示屏。

CIPS配置

PL与PS都使用,所以选择Full System;如果只是用PL端的逻辑资源则选择PL Subsystem。接下来是配置PMC,有几项是必须配置的。

  • Boot Mode:这个跟我们使用的配置模式有关,例如:直接从JTAG下载启动,则可以不用勾选就行;如果选择使用从SD卡启动,则勾选相应的SD0或SD1选项即可。这里我们选择使用JTAG配置,方便debug,因此,可以不勾选任何一个。提示:具体使用哪种配置模式需要根据硬件板卡确定;例如:V100的SD卡是连接的SD1控制器,因此,如果要使用SD卡启动模式需要配置SD1/eMMC1。

  • Peripherals:这里主要是配置PS端的外设控制器,根据项目需求选择相应的外设控制器即可,但并不是所有的外设控制器都可以勾选,这个跟MIO引脚数量有关,有些外设是复用的相同的MIO引脚。所以,如果项目中需要使用多个相同的外设而PS的MIO数量不足以支持时,需要考虑其他方法,比如:利用PL端的引脚实现相应的功能。在这个项目中,需要使用PS端的1个IIC控制器(共有2个)作为Master配置摄像头寄存器、一个UART控制器(共有2个)用于PS端调试、一个GPIO引脚用于摄像头模组上电开关;

  • IO:配置对应的外设控制器连接到哪些MIO(PS MIO或PMC MIO)或EMIO;具体如何选择需要根据硬件PCB设计选择,例如:在V100开发板上,PS端的UART控制器引脚连接到PS_MIO16..17,故UART0的IO选择PS_MIO16..17;而摄像头的IIC引脚连接在PL端,故LPD_I2C0的IO选择EMIO,当然,在PL端用逻辑实现摄像头寄存器配置也是可以的。

  • PS PL Interface:配置PL与PS之间的总线连接,PS向PL提供一个reset信号以及AXI-Master Lite总线;reset信号用于复位PL端逻辑;AXI-Master Lite用于配置IP核寄存器;

  • NoC:PS需要通过NoC实现对外部DDR4存储器的访问,所以需要使能PS到NoC之间的接口连接;

  • 其它配置在这里保持默认状态即可。

NoC配置

NoC的配置比较重要,因为PS和PL对DDR4存储器的访问都是通过NoC实现的。

General:AXI Slave一共配置8个,其中4个用于PS Cache Coherent Interface(缓存一致性接口)和DDR存储器控制器的连接,1个用于LPD和DDR4的连接,1个用于PMC和DDR4的连接,2个用于VDMA和DDR4的连接(S2MM、MM2S);时钟配置7个即可,VDMA的两个AXI Slave接口共用一个时钟即可;Memory Controller配置为"Single Memory Controller"、Number of Memory Controller Port配置为4个,可以支持1、2、4个DDR存储器控制器接口,这里配置为4,有利于充分发挥DDR访问效率,实际上小一些应该也是可以的,因为在这个demo中视频带宽不超过250MB/S,这个流量对NoC来说是小意思;

Inputs:配置NoC和外部的连接关系,根据前面提到的那样,在Connected To下选择每一个AXI接口连接到哪里。

Connectivity:这里主要是分配8个AXI Slave总线和4个DDR4 Controller Port的连接关系,这里就平均分配吧;

QoS:这里是配置DDR4 Controller的服务质量(性能和带宽),可以配置大一点;

DDR Basic:根据带宽需求设置DDR4存储器时钟频率即可,系统时钟频率可以由外部晶振提供差分时钟(Differential),也可以由内部提供(No Buffer);

DDR Memory:根据硬件板卡上的DDR4存储器的型号与数据总线位宽配置即可。

其它配置保持默认。

MIPI CSI-2 Rx Subsystem配置

         摄像头使用4lane MIPI 接口输出RAW10bit格式的图像数据,因此,按照上面的配置即可,需要注意的是,Lane Rate不能配置小了,需要根据摄像头输出视频的分辨率和帧率(带宽)配置,太小的话带宽跟不上,这里设置为每个lane 1000Mbps的线速率足够了。

demosaic配置

VDMA配置

LCD驱动设计

        在驱动LCD屏幕时,需要将每个RGB888像素的24bit数据、HSYC、VSYNC、DE以及1bit 0,共28bit信息映射到4个LVDS lane上,在每个源同步差分时钟周期内每个lane串行传输7bit,难点在于如何实现7:1的串化。Versal器件集成了SelectIO资源,而且比之前器件的SelectIO资源性能更优秀,因此称之为Advanced IO;Advanced IO可以支持高速源同步传输,可以使用Advanced IO Wizard IP核实现LVDS发送的功能。但是,不幸的是,Advanced IO Wizard只能实现串化因子为2、4、8的情况,因此,官方提供了一个变速箱,巧妙地利用时钟占空比将7biti数据变为2个4bit数据,再经过Advanced IO Wizara实现4:1串化。

Advanced IO配置

总结

       Vitis部分主要是编写PS IIC控制器初始化函数、摄像头寄存器配置函数、VDMA配置函数、demosaic配置函数,比较简单,不再赘述。最终实现出来的效果看上去颜色偏绿,猜测是因为摄像头色彩校准参数配置不合适,不过这不是重点,所以没有深入研究。

展望

        最后,在显示通路中集成了去噪算法(双边滤波)和调色算法(3D-LUT)。

        后续,还会进一步研究AI引擎的开发和使用,到时候再继续更新吧。敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值