第一部分 设计概述 /Design Introduction
1.1 设计目的
随着人们对于图像质量、视场、视距的要求越来越高,单目相机往往不能满足人们的需求,因此我们设计了阵列相机组,以此来获得更大的视场,视距和多角度的即时显示,同时提供同步存储功能,以便后期的下载和为各类图像处理算法提供完整的数据流。
1.2 应用领域
阵列相机可用作户外大角度全景和超远景监控等系列安防专用相机,极大地扩展了安防监控范围并大幅提高现有的安防等级能力。阵列相机可用作大视场超高清摄像机,不仅可帮助用户获得前所未有的超高清图像数据,更能通过后期图像处理,为用户提供更多层次的全方位个性化 视觉体验,同时也可以为用户提供更加智能、可靠的安防布控。
1.3 适用范围
本项目适用于对于实时监控视场大、图像分辨率要求高,视距远的场合, 在此类场合中,作品可以完全发挥优势,帮助使用者迅速方便获得各个视角的即时图像和实时存储。同时,为进行后续的各类图像处理算法构建了一个完整的硬件平台。
第二部分 系统组成及功能说明 /System Construction & Function Description
2.1 系统介绍
本系统由我们自主设计PCB,布局布线,由第三方厂商制版焊接完成了最终的系统的搭建,具体分为 NVIDIA TX1 + A7 100t 交互处理模块,Sparton6 转接模块,226 探测器接收模块,A7 35t 相机数据处理模块,A7 35t 数据存储模块和上位机模块。我们自订了基于高速同步串口发送的指令集,完成从 PC 到 TX1 到 100T 到 Sparton6 到 35T 的阵列级联控制;TX1 与 100T 通过基于 XDMA 的 PCIE 协议完成指令和数据的交互;100T 到 Sparton6 到 35T 通过 高速同步串口完成指令的下行,基于高速串口串并转化 SERDES 原语完成数据 上行;通过 35T 以 SPI 协议配置 Sony IMX226 相机工作在 Slave 模式下,并 4000*3000@20 的工作模式,通过 ISERDES 解串相机数据在 35T 的 DDR3 中 进行降采样缓存和原图缓存,然后根据指令读出缓存数据进行通向 100T 方向的显示回传或者进行本地 TF 卡模块的存储以便后续的下载;最后完成了 10 个 相机的同步显示和其中任意 1 个相机 1080P 显示;并外接 SDI 输出同步 1080P 显示,在上位机上通过下发指令可以实时的调整曝光,一定范围的每个相机的视场等相机参数,同时完成了 TF 卡的实时存储,下载,查询,清空等功能。
2.2 各模块介绍
2.2.1 GPU + A7 100t 交互处理模块
本模块完成了整个 FPGA 系统的主控和与 GPU 之间的通信,首先 PC 通过 TCP 协议和 TX1 在操作系统层次完成了指令和相关数据交互的简单交互,TX1 和 100T 之间通过 PCIE 驱动和 XDMA IP 进行通信,在这一部分,其中 AXI4 通道完成数据的传输,AXI4-Lite 通道完成指令的下发和当前 FPGA 状态的轮 询;在本模块将 PC 的指令根据指令集通过高速同步串口发出,对于回传的数 据通过 ISERDES 解串并在 100T 的 DDR3 中缓存,最终搬运到 GPU,再到 PC,在这部分同时也完成 SDI 的外接同步输出。这部分还设计支持外挂在 TX1 上的 USB,HDMI 等接口便于调试。
2.2.2 Sparton6 转接模块
本模块在整个系统中有两个,每个模块共有 6 个 LVDS 接口,其中一个和 100T 部分连接剩下的 5 个接口分别连一个相机前端模块,共连接 10 个;这部分通过指令集中的参数来完成指令下行的转接和回传数据的转接,同时通过 Sparton6 中的原语 ISERDES 和 OSERDES 完成最开始的通道矫正。
2.2.3 IMX226 探测器接收模块
本模块完成 Sony IMX 226 相机的外围电路设计和 SPI 的配置接口,35T 通过连接件去以 SPI 协议配置相机工作在 4000*3000@20fps 的 Slave 模式 下,相机数据输出模式为 10 通道的串行 LDVS 相机数据输出。
2.2.4 A7 35t 相机数据处理模块
本模块完成对于相机数据的解串并将数据缓存在 35T 的 DDR3 中,对于 DDR3 中的缓存我们分为 3 部分区域:降采样区域,原图区域,其他信息区 域,降采样区域读出后返回给 Sparton6 来实时显示,原图区域读出后进行 TF 卡的写入;将数据通过 OSERDES 发送出去连接到 Sparton6 部分的一个端口上。同时在本模块完成了动态调整相机参数,基于 SD3.0 协议的 TF 卡写入, 数据流的降采样,仲裁和前端主控状态机的实现等多个功能。
2.2.5 A7 35t 数据存储模块
本模块将 DDR3 的原图数据读出写入 4 张 TF 卡中,4 张卡并行写入以提高 写入带,并在接收到下载指令后将数据读出并回传,对于这部分我们自己做了一个简易的文件系统便于 TF 的管理和控制;TF 卡工作在在 SD 模式下的 UHSI Operation Modes 下 SDR104 模式;
2.2.6 上位机模块
该模块在 QT 环境下,完成了基于 TCP 的 PC 和 TX1 之间的通信和用户界面搭建;
第三部分 完成情况及性能参数 /Final Design & Performance Parameters
3.1 完成情况:
目前预计的各个功能基本完成,由于硬件设计的一些问题和焊接物料的 质量和焊接工艺的一些问题,整个系统的不是特别的稳定,偶尔会出现一些问 题,大部分时间都是可以正常工作;主要完成 10 个相机实时显示和任意 1 个相机的 1080P 显示,外接 SDI 同步显示;实时调整曝光,视场范围,并进行 实时存储,下载,查询余量,清空等功能;
3.2 性能参数:
第四部分 总结 /Conclusions
4.1 主要创新点
(1)本系统的控制基本全部由 FPGA 控制实现并且 PCB 都是自主设计, 可以达到较高的速度和完全自主的控制,充分的使用了 FPGA 的特性,用最少的成本搭建了一个较大的系统;
(2)本系统所有的数据流都是自主控制的,裸露的,我们可以将这套系统作为一套基本的传输控制系统,在后续的改良版中,可以做各种各样的升级;
(3)本系统使用纯逻辑控制 4 张 TF 的读写,并自订了一个简易的文件系统,TF 卡可以跑在一个较高的速度;并且使用 LVDS 串行传输,速度快,稳定 性好;
(4)本系统自订了一个阵列相机控制的指令集,在理论上可以支持更多级和更多目的阵列系统控制;
(5)本系统采用了 GPU+FPGA+PC 的构架,在后续的设计中,可以进行丰富的图像处理工作,比如 FPGA 预处理数据,GPU 加速,PC 跑算法等,具 有较强的完备性和可升级性;
4.2 可扩展之处
(1)硬件设计中存在很多问题,比如过多的接插件导致成品率低,FLASH 固化芯片不稳定,端接电阻不匹配,供电不稳定等很多问题都导致了系统的稳 定性下降,在以后的设计中可以修正。
(2)相机工作的模式可以继续提升,包括帧率的提升,这需要更大的 DDR3 带宽,SERDES 速度和硬件稳定性,实现更高的帧率,同时由于在设计之初没有注意到 226 是卷帘式曝光且工作在 Slave 模式下,所以目前的曝光的 积分时间调整只能工作在室内和室外两种模式下,可动态调整的是增益值;如 果需要改良可以通过让相机工作在 Master 模式下,实现更大的曝光范围调整。
(3)TF 没能跑到理论支持的最高带宽下,后期可以通过完善硬件设计或者工作在 DDR 模式下,提高写入带宽,使写入帧率提升。
(4)目前的 GPU 只是进行了简单的数据搬运,没有利用其图像处理的能 力,后续可以在 GPU 上完善各种各样的图像处理算法,因为数据在 GPU 上是完全裸露的。
4.3 项目经验
从项目筹备阶段,开始准备这套系统的搭建,从PCB 的设计到系统理论构架再到实现经历了太多的困难和改版,不断的遇到问题,解决问题, 改进问题,在目前的硬件条件下做到了能做到的最好,但仍然还有很多问题和不足的地方。同时也收获了很多,大量的 RTL 代码编写,尤其是中途出现 FPGA 资源不够用时,通过各种各样的方式去优化代码来降低资源利用率,极大的锻炼了代码能力。软硬件系统的交互和配合让项目实施者对于数字系统的设计和操作系统的认识等各个方面都有了很大的提升。在组装阶段更是折磨人,反复的测试和更换使其深刻体会到了一个好的硬件设计有多么重要,好在最后的结果是满意的!
- THE END -
往期精选
FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注姓名+学校/公司+专业/岗位进群
FPGA技术江湖QQ交流群
备注姓名+学校/公司+专业/岗位进群