Lattice CrosslinkNx LIFCL-40应用连载5:如何使用MIPI D-PHY硬核IP

2023-10-26

作者:Hello,Panda

一、目标

配置CMOS Sensor OV9734,并通过MIPI DPHY硬核接收数据。

  1. 使用一个RISC-V软核,实通过AHB总线访问I2C FIFO,通过I2C总线配置OV9734 Sensor;
  2. 使用MIPI DPHY硬核接收图像数据,并实现CSI层恢复成为图像像素。
  3. OV9734配置为连续时钟模式,单Lane,数据率360Mbps,1280*720P,30fps。

二、软件设计 

本例涉及到使用RISC-V软核,MIPI DPHY硬核,I2C FIFO和MIPI CSI解析层等。软件架构如下图1所示。

 图1 FPGA软件总体框图

2.1 RISC-V软核

软核在propel Builder开发环境中进行例化和配置,如下图2所示,例化了RISC-V软核、本地32KB运行RAM、Ahb2Apb桥、Apb interconnect、GPIO和UART等基础IP,另外自定义一个Apb export IP用于给引出到外部的APB总线分配地址。

 图2 RISC-V软核配置

2.2 MIPI DPHY硬核

Crosslink-NX器件有两个2.5Gbps lane速率的MIPI D-PHY硬核。使用硬核IP MIPI_DPHY(V1.3.0)模组进行例化(注:在Radiant中,不同版本的IP端口相差很大),例化参数如下图3。

图3 例化参数

在本例中,结合OV9734的配置,接口时钟为180MHz,Lane(bus width)数为1,时钟模式为continuous,Gearing Ratio为1:8,模式为包括控制模块CIL。

MIPI硬核在使用前需通过lmmi总线对其内部寄存器进行配置,配置寄存器空间见下图4,详细的寄存器描述请参考官方数据手册,lattice文档编号为:FPGA-IPUG-02061-1.5。

图4 寄存器地址空间

针对本例的D-PHY接口参数,配置值见下图5(请特别注意,虽然在IP生成器里面进行了参数例化,还必须通过lmmi总线向寄存器控制配置正确的值硬核才可正常工作)。

图5 本例寄存器空间配置值

按照之前相关连载文章的示例,编译和在线下载bit文件,运行Lattice Propel下的RISC-V软核C代码配置好OV9734,系统即可正常采集到MIPI输出的图像数据,如下图6所示。

图6 在线调试抓取到的D-PHY硬核输出数据

2.3 CSI层

Lattice Radiant开发环境中提供了官方IP,CSI-2/DSI D-PHY Receiver这个IP,内容很全面,但是需要购买付费授权,以熊猫君羞涩的口袋,自然是购买不起,咱只能自己手撸一个针对本例的CSI解析代码,说实在的,做一个能稳定针对特定格式的代码,解析帧头,做一个帧头效验和数据效验,并将其转化为stream格式输出,不难,一会儿就做好了。下图7是在线调试抓取到的CSI-2解析后的数据。

图7 在线调试抓取到的CSI-2层解析后的数据

2.4 Video Bridge

该模块将来自CSI层数据按照DT指定的格式拼接并生成标准的视频时序。后端即可接入通用的ISP处理模块进行进一步的算法运算处理。下图7是接收OV9734的MIPI数据后直接显示的RAW照片。

腾讯视频https://v.qq.com/x/page/s33163rhxsu.html?url_from=share&second_share=0&share_from=copy

 图8 解码显示RAW图像

三、结语

因Crosslink-NX集成了2.5Gbps Lane速率的MIPI硬核,因此开发变得像通用处理器一样简单,只要认真阅读手册,很快就能上手出图。另外,针对特定DT格式的CSI层的协议解析也很容易,可以不依赖官方的付费IP,对熟悉的同学们而言,几乎就是一日之功而已。最后,欢迎大家加入QQ讨论群或关注“ZYNQ分享客”微信公众号,共同讨论进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lattice CrosslinkNx LIFCL-40应用连载5:如何使用MIPI D-PHY硬核IP 的相关文章

  • 带误差线的点图,两个系列,轻微抖动

    我收集了多项研究的数据 对于每项研究 我都对性别变量的平均值感兴趣 以及是否存在显着差异 对于每项研究 我都有男性和女性的平均值和 95 置信区间 What I would like to do is something similar t
  • 如何绘制带有排序水平误差线的图表(带有错误标记的排序条形图)?

    我想将平均值和标准误差绘制为水平条形图 并且我希望对平均值进行排序 我找到了使用格子绘制水平排序条形图的方法 但我不知道如何添加错误标记 以下是我的数据和我想出的 R 代码 data lt structure c 0 67 0 67 0 7
  • spplot 图例在地图中的自定义放置

    是否可以放置 spplot spplot 多边形 图例within地图 在左下角 像这样 我能得到的最接近的是这个 我没有发布我的数据 我只是使用示例数据 所以在这种情况下 尝试将图例放在地图的左上角 data meuse grid gri
  • 如何在 R 中使用 Lattice 绘制线段或箭头? (来自宽格式数据集)

    我想创建一个带有线段或箭头的图 假设我有这个玩具示例 temp lt data frame posi c 1 2 3 3 2 1 5 from c A B C D D B A to c C D D C A A B posi from to
  • 如何在R中的xyplot中获得阴影背景?

    using xyplot来自lattice包中 我绘制了多年的时间序列 我会为其中一些年份添加阴影区域 以表明这个时期是 特殊的 例如战争 如果这是微不足道的 请道歉 但我不知道该怎么做 所以如果有人可以帮助我 或者至少为我指出正确的方向
  • Linux驱动程序DMA传输到PC作为主机的PCIe卡

    我正在开发一个 DMA 例程 将数据从 PC 传输到 PCIe 卡上的 FPGA 我阅读了 DMA API txt 和 LDD3 ch 15 详细信息 但是 我不知道如何从 PC 到 PCIe 卡上的一致 iomem 块进行 DMA 传输
  • 获取点阵条形图函数中分组条形的中点值

    我试图弄清楚如何确定分组条形的中点值 即每个条形中心的实际 X 位置 这在基本 R 中很容易完成barplot功能 但是我希望能够做到这一点lattice s barchart 我的目标是在相应栏的顶部显示文本列的值 只要我不使用子组 下面
  • R 中一个 PDF 页面上的多个 hexbin 图

    我正在尝试创建一个包含多个内容的 PDFhexbin我希望每页有特定数量的绘图 这个有效 PDFPath C temp some pdf pdf file PDFPath par mfrow c 2 2 for i in seq 5 10
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • FPGA 有哪些实际应用?

    我对我的程序为一个小型七段显示器提供动力感到非常兴奋 但是当我向不在现场的人展示它时 他们总是说 那么你能用它做什么 我永远无法给他们一个简洁的答案 谁能帮我吗 第一 它们不需要具有易失性存储器 事实上 大厂商 Xilinx Altera
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • xyplot 中的多个 ablines

    我有一个 长 数据框定义为 q lt data frame Indicator Code factor Year numeric Value numeric 我试图在单个 xyplot 中绘制每个不同年份的值作为年份的函数Indicator
  • 如何从 Spartan 6 写入 Nexys 3 FPGA 板上的 Micron 外部蜂窝 RAM?

    我到处都查过了 数据表 Xilinx 网站 digilent 等等 但什么也没找到 我能够使用 Adept 工具来验证我的蜂窝 RAM 是否正常运行 但我找不到任何库存 VHDL 代码作为控制器来写入数据和从中读取数据 帮助 找到了此链接
  • R:使用 Lattice 从子图到 2x2 grid.arrange 面板共享图例 [重复]

    这个问题在这里已经有答案了 我正在研究这个问题here https stackoverflow com questions 40691773 r four lattice barcharts side by side in 2x2 wind
  • 从 R 中的库效果中删除图​​中第三轴和第四轴上的刻度

    我想知道是否有一种方法可以删除库生成的绘图的第三轴和第四轴上的刻度线 轴 effects如下所示 library effects m lt lm Fertility data swiss plot allEffects m rug FALS
  • 键入lattice命令后图形不显示

    我安装了这个包lattice 并输入xyplot 没有错误消息 但也没有显示图表 我尝试切换到plot 而且效果很好 知道为什么会这样吗 谢谢你 尝试这个 require lattice require stats Depth lt equ
  • 更改 R 中函数的默认参数

    我正在跟进这个答案 https stackoverflow com a 62946040 7223434 我想知道是否有办法设置参数的默认值rug to FALSE和论证multiline to TRUE在生成的图中library effe
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • 在 Rlattice xyplot 上分别控制轴刻度和轴线

    我怎样才能去除周围的盒子xyplot 同时保留轴刻度刻度线 本着爱德华 塔夫特 Edward Tufte 极简主义数据图形美学的精神 这些轴线是 非数据墨水 并且可以 应该 被 擦除 library lattice my df lt dat

随机推荐

  • 汇编语言(王爽第三版)实验三

    实验三 题目预览 将下面的程序保存为t1 asm文件 将其生成可执行t1 exe 用Debug跟踪t1 exe的执行过程 写出每一步执行后 相关寄存器中的内容和栈顶的内容 PSP的头两个字节是CD20 用Debug加载t1 exe 查看PS
  • python3编码格式_python3编码方式

    ascii A 00000001 8位 1个字节 unicode A 00000000 00000000 00000000 00000001 32位 4个字节 utf 8 A 0000 0010 8位 1个字节 中文 00000000 00
  • 数据挖掘:认识数据

    越来越多的人认识到 数据对这个世界的影响越来越大 掌握数据就掌握了发言权 如何从数据中找到想要的知识 是得到数据之后最需要关心的 数据挖掘 也是知识发现的过程 1 理解数据 现实世界中 各行各业每时每刻都在产生数量庞大的数据集 让人眼花缭乱
  • 怎样才能跳过实名认证_和平精英qq怎么跳过实名认证!老司机告诉你仅需5步

    qq怎么跳过实名认证玩家是否知晓 虽然来说跳过实名认证对于手游来说并没有什么帮助 但是这个方式方法玩家还是需要知道的 这样能够帮助玩家轻松的做到某些事情 而这里就是样式玩家如何进行和平精英实名认证怎么跳过 其实在老司机手机仅需5步即可 和平
  • gtx1660是什么级别的_显卡天梯图秒懂GTX1660Ti性能 GTX1660Ti相当于什么显卡

    GTX1660Ti是NVIDIA二月份刚发布的一款显卡 从命名上看 它是历代英伟达显卡中 最 6 的显卡 名称中包含了3个6字 作为上一代甜品级GTX1060的继任者 而颇受关注 那么GTX1660Ti相当于什么显卡 其大致性能是什么水平呢
  • 色值的封装方法以及RGB和RGBA的区别

    取色值相关的方法 define RGB r g b UIColor colorWithRed r 255 f green g 255 f blue b 255 f alpha 1 f define RGBA r g b a UIColor
  • 项目搭建之代码规范化解决方案

    代码规范化解决方案Eslint Prettier Eslint 是一个插件化的 javascript 代码检测工具 用于代码格式检测 不符合Eslint规则的代码 会被检测到发出警告 报错 通过 eslintrc js 文件可以进行自定义的
  • 约瑟夫环:循环链表,数组

    约瑟夫环 1 循环链表 设计思路 2 顺序表 数组实现 设计思路 站成一圈 从1报数 报数为m则出列 求出列序列 1 循环链表 设计思路 用循环链表实现逻辑结构 mermaid svg Ejge7i4yvNzv6PZ2 label font
  • Python opencv学习-5创建带调色板的画板

    test5 带调色板的画板 可改变线的粗细 颜色 缺点 其实是不断画圆 鼠标动作快了能看出执行间隔 import cv2 import numpy as np drawing False mouse callback function de
  • MATLAB回归分析--------2019/8/2

    回归分析 多元线性回归 Matlab 统计工具箱用命令 regress 实现多元线性回归 用的方法是最小二乘法 用 法是 b r e g r e
  • linux中摄像头旋转90度,ok335xD 如何将屏幕显示转90度在linux下,竖屏变横屏。

    我在内核里发现这样几个文件 不知是否能用的到 在drivers video 下 Kconfig and 8 15 or 16 bpp color 90 degrees clockwise display rotation for xilin
  • linux 日志查看

    Linux 查看日志相关命令总结 Linux日志筛选命令 常用Linux日志查看命令 grep常用用法 zgrep 不解压过滤压缩包中文本 Linux命令大全 手册 循环实时查看最后50行记录 tailf n 50 tomcat stdou
  • 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)...

    最近 在论坛中 遇到了不少比较难的sql问题 虽然自己都能解决 但发现过几天后 就记不起来了 也忘记解决的方法了 所以 觉得有必要记录下来 这样以后再次碰到这类问题 也能从中获取解答的思路 问题 求SQL 检索某个节点下所有叶子节点 部门表
  • centos7配置yum为国内源

    问题 yum install libXm so 4 报错 Cannot find a valid baseurl for repo base 7 x86 64 因为yum源不是国内的 切换一下 步骤 卸载 yum rpm aq grep y
  • 字节青训营第十三课之深入浅出RPC框架的笔记与总结.md

    基本概念 本地函数调用 函数调用完整过程如图 藏实际上编译器经常优化 参数和返回值少时直接将其存在寄存器 不需操作栈 直接online不需call 将a和b的值入栈 经函数指针找到calculate 进入函数取栈中值2和3赋给x和y 计算x
  • C# GDI+ 绘图

    1 坐标系统 1 坐标原点 在窗体或控件的左上角 坐标为 0 0 2 正方向 X轴正方向为水平向右 Y轴正方向为竖直向下 3 单位 在设置时 一般以像素为单位 像素 Pixel 是由图像 Picture 和元素 Element 组成 是用来
  • 怎么在百度里通过关键词搜索到自己的网站

    1 需要在百度站长平台提交自己的网址 2进入百度站长平台 点击链接提交 3 点击添加站点 等待百度收录之后 4 在百度搜索框中输入 如下图 site后面的是你的域名 然后空格 加你要搜索的关键词 在该域名上的网页上要有该关键字 5 输入关键
  • git bash 命令行反应慢、卡顿

    1 在Windows11的电脑上安装了git 后 鼠标右键打开git bash here 打开窗口缓慢 输入命令也慢的要死 如果安装git的时候选择在桌面创建图标 通过桌面图标打开也是一样的 2 最简单的ls 命令 都要停顿半秒 3 点击桌
  • Flops 计算以及代码快速查看网络参数、浮点数

    详细计算 卷积神经网络CNN中的参数量 parameters 和计算量 FLOPs 知乎 FLOPS 全大写 指每秒浮点运算次数 可以理解为计算的速度 是衡量硬件性能的一个指标 硬件 FLOPs s小写 指浮点运算数 理解为计算量 可以用来
  • Lattice CrosslinkNx LIFCL-40应用连载5:如何使用MIPI D-PHY硬核IP

    作者 Hello Panda 一 目标 配置CMOS Sensor OV9734 并通过MIPI DPHY硬核接收数据 使用一个RISC V软核 实通过AHB总线访问I2C FIFO 通过I2C总线配置OV9734 Sensor 使用MIP