开云-BPO行业整合方案提供者
专业化、科技化、国际化;高标准、广覆盖、全流程
了解更多基在 FPGA 的低本钱、低延时成像系统 时候:2024-12-07 20:24:02 手机看文章
扫描二维码随时随地手机看文章
基在 FPGA 的低本钱、低延时成像系统 副题目:优异的IC/FPGA开源项目(三)-低本钱、低延时成像系统《优异的IC/FPGA开源项目》是新开的系列,旨在介绍单一项目,会比《优异的 Verilog/FPGA开源项目》内容介绍加倍具体,包罗但不限在综合、上板测试等。二者相辅相成,互补互充~
今朝商用范畴的成像系统仍是以嵌入式ASIC为主(制品时候快,性价比高),对一些兵工、医学等非凡范畴仍是以FPGA为主,在非凡范畴里延迟是最早斟酌的问题(本钱不是首要问题),所以今天介绍一下利用FPGA实现低延迟的成像系统,这里申明一下,全部系统调试比力麻烦(和sensor有关),很年夜可能调试不出图象,所以大师只需要知道有这个架构便可,有需求可以本身调试。
低延迟架构我们此次利用的是AMD-Xilinx FPGA,年夜部门的图象处置都有IP可使用,在官方文档中有相干的架构,具体以下:
上面的架构是比力通用的架构,官方也有例程可以参考,可是上面架构多了一个VDMA,这就致使视频传输的时辰有1到几帧的延迟,这对低延迟、高分辩率的景象必定是不克不及容忍的。所以官方对非凡环境建议利用下面的架构:
去失落了VDMA,可是对时钟系统要去更高,对视频输入输出在分歧时钟域环境下是利用不了的,所以整体要求比力高。可是砍失落了VDMA和DDR,所以整体本钱会低良多。关在没有VDMA环境下的各个IP的设置和测试可以看下面的文章《不利用VDMA环境下利用AXI4总线实现视频输入输出(低延迟首选)》。
FPGA系统架构设计我们仍是参考上面的架构来设计我们的系统。
当我们与图象sensor对接时,我们凡是会以分歧的格局领受图象,例如 MIPI 、并行接口,在我们领受视频之前,我们需要先设置装备摆设sensor依照我们的需求运行。凡是,sensor需要经由过程 I2C 或 SPI 进行设置装备摆设。
此次演示的平台:
7系列FPGA MT9M114 sensorsensor 的接口很是简单,可以分为视频接口和设置装备摆设接口(IIC)。
视频接口由 10 位数据(分为 8 位和 2 位)、帧和行有用、像素时钟和参考时钟 (24 MHz) 构成。
设置装备摆设接口由毗连到sensor的 I2C 和 复位IO构成。
该解决方案的架构以下:软核处置器(MicroBlaze)经由过程 I2C 设置装备摆设sensor。固然图象处置路径将在 FPGA 中实现,但因为这是一种低本钱利用,该解决方案不会利用 DDR 存储器中实现外部帧缓冲区,而是图象处置流水线将完全在 FPGA 中实现。
Sensor中因为我们设置装备摆设的是RAW数据,所以还需要利用Sensor Demosaic和Gamma(根基成像IP)IP。
该设计还将利用软核处置器来节制视频时序和图象处置路径的其他相干设置装备摆设使命。
Vivado 工程构建 搭建MicroBlaze 系统这一部门比力简单,可以看看之前的文章《【Vivado那些事儿】MicroBlaze最小系统搭建和法式固化》
添加其他IP全部系统需要的IP首要以下:
CAM 接口 - 此接口与 sensor接口毗连,简单处置数据(选择RAW数据的位数),此IP非必需 Video to AXIS - 这会将并行视频转换为 AXI 流格局 Sensor Demosaic - 将代表 R、G 或 B 的 RAW 像素值转换为 24 位 RGB 格局 Video Timing Generator - 生成输出格局的视频时序旌旗灯号 AXI Stream to Video Out - 将 AXI Stream 转换为并行视频 AXI IIC - 毗连到 MicroBlaze,用在设置装备摆设sensor AXI UART - 毗连到 MicroBlaze,用在软件调试添加完后便可以连线了,完全的框图应以下所示。完全的工程在文章最后给出。
在 AXI Stream 中,利用 TUser 唆使帧的最先,利用 TLast 唆使行的竣事。
IP的要害设置 Video to AXIS Sensor Demosaic AXI IIC 设置其他IP可以查看文章最后的工程查看。
资本利用率在Arty S7-50 的总操纵率以下所示。
SDK 中编写软件生成 Vivado 硬件后,下一步就是编写利用软件,用在设置装备摆设sensor和视频处置IP核。
是以,软件中将履行以下操作:
初始化 AXI IIC、VTC 和中止节制器 设置AXI 相干中止节制器 - 这包罗三个中止办事例程。IIC 发送、领受和状况各一个。 在 VTC 设置装备摆设输出时序 经由过程 I2C 复位sensor并点亮 sensor板子上 LED 经由过程I2C读取sensor-MT9M114的ID,来检测相机是不是存在(外围设置是不是准确) 经由过程 I2C 设置装备摆设和初始化相机 - 这是最华侈时候的,好在有良多资料可以参考初始化相机后,我们将可以或许在 ILA 上看到视频流。
调试进程中丈量的FPGA和sensor之间的 I2C 通讯旌旗灯号。
利用 AXI UART 调试软件:
一旦相机初始化,我们可使用 ILA 收集旌旗灯号:
上图显示了 1280 像素的线宽。
AXI Stream 是一种单向总线,用在将数据从主机传输到从机,作为数据流,它不包括地址通道。为了经由过程 AXI 流节制流和传递视频时序信息,我们利用了以下旌旗灯号:
TReady - 当预备好领受数据时由下流外设断言 TValid - 当输出数据有用时经由过程发送外设断言 TUser - 为帧的最先发出 TLast - 为行尾标记因为我们没有 利用VDMA,所以 AXIS 流上的视频输出是一个持续块,而且 TValid 在勾当像素周期内不会断言和打消断言。
我们可以经由过程利用图象处置链的像素时钟来确保 Tvalid 是持续的。
软件部门仍是参考最后的工程吧,除sensor需要零丁编写,其他都是由SDK自带的例程点窜而来。
欲知详情,请下载word文档 下载文档