基于T35F324的FPGA开发板图像采集显示系统方案

时间:2025-09-12  作者:Diven  阅读:0

1.前言

基于T35F324的FPGA开发板图像采集显示系统方案

个人觉得易灵思的Trion系列比钛金系列FPGA,就目前而言,更适合做图像显示相关应用,以T35和Ti60为例,主要原因如下表所示:

易灵思如果专注图像细分领域,毕竟大部分客户还是用DDR和MIPI,因此我觉得钛金系列的架构真的脑袋被驴踢了,DDR和MIPI用硬核才是正确的选择!

另外,钛金系列FPGA相对推出时间不够,目前IP也不成熟。以T35为例,DDR硬核IP在Efinity Interface中直接可以调用DDR IP并设定相关参数,但是钛金系列Ti60还没有包含到工具链中,这让拿不到一手资源的FPGAer就很尴尬,虽然可以理解不集成到IDE中,可以更快的迭代前提不成熟的版本。

如上图所示,T35F324的FPGA开发板,我都做了快半年了,一直没有做一个基于视频图像的像样点的Demo,甚是惭愧。为了给当下煎熬的大家送点福利,我打算分2步走,如下:

DVP相机+DDR3+LVDS-LCD实时显示系统

MIPI相机+DDR3+LVDS-LCD实时显示系统

前者更关注DDR3硬核、LVDS TX,以及进行并口相机的配置与图像采集,完成实时图像采集、缓存、显示系统;后者则借用1)的基础,更关注MIPI相机的开发,进一步把易灵思FPGA进行图像采集的优势,有着一下。

当然这过程肯定还是有不少的坑,有些坑只有自己趟过,才有发言权。

2.FPGA设计详解

言归正传,我们开始干正事:基于T35的摄像头采集、存储、显示系统的介绍。

首先是FPGA时钟网络

这里涉及到DDR控制器的时钟,LVDS TX的快慢时钟,系统时钟,以及外设驱动时钟等,大致示意图如下:

由于Trion的PLL是能输出3个时钟,因此将2个PLL都用上了,一个产生100MHz的系统时钟,48/168M的LVDS慢/快时钟,另一个PLL产生DDR的驱动时钟400MHz,以及外部传感器的驱动时钟27MHz。另外,还有一个从传感器输入的像素时钟74.25MHz,作为视频流的同步时钟。

其次是硬核的配置

这里用到了DDR与LVDS TX硬核。关于DDR硬核的使用,外部使用的是三星的K4B4G1646E-BYMA,4G 16bit容量。

在Interface中配置DDR控制器相关参数,如下图所示:

其实软件包含了颗粒的型号,因此配置还是挺简单的,对于用户接口,Interface提供的是标准的AXI接口,其都是在硬核中,用户不需要例化,非常的简单。

关于LVDS TX的使用,主要是PORT的配置,以TX0为例,Interface配置如下图所示:

这里特别需要注意的是,PLL1设置tx_fastclk时,需要90度响铃;另外,Efinity的LVDS是LSB的,也就是先发LSB,这在Interface的说明文档中有解释,如下图所示:

另外,在1024*600 LVDS手册中,LVDS时钟有一定的相位关系,如下所示,在7bit数据传输时,时钟为1100011:

所以如上这部分代码,如下所示:

接着是相机的驱动

目前采用的AR0135是车规常用的130万全局曝光黑白相机,成像质量非常好,相关的参数如下所示:

我曾在《FPGA设计技巧与案例开发详解》一书中详细介绍了如何使用FPGA驱动CMOS摄像头,因此这里不再描述细节,给出框图如下:

这里在进行相机的初始化后,捕获输入的并行视频流数据;另外为了适配后面1024*600的LVDS LCD,再捕获数据后,直接Crop到1024*600分辨率。接着将数据送入AXI读写模块,将DVP转成AXI后写入DDR。

最后是视频流的缓存与显示

这一步其实和相机的数据缓存比较类似,无非是用一样的时序反着走一遍:即采用AXI从DDR中读取数据,转成并口后,送给后续的LCD驱动模块,再通过LVDS送给LCD显示,框图如下所示:

汇总整个时钟、DDR、相机、LCD驱动显示的框图,基于T35的摄像头采集、存储、显示系统,如下图所示:

由于该趟的坑,都已经趟过一遍了,这里我们不得不再静下心来再分析讨论一下,这个设计中遇到的最大的坑——DDR3的AXI接口竟然是Shared Read/Write Address Channel,配置与接口代码如下所示:

那就意味着,虽然AXI可以做到读写通道独立,但我不能同时发起读命令与写命令。如果AXI读写通道是完全独立的,则我们可以这样设计,即读归读,写归写,设计相对简单。

但是现在竟然AXI的读写地址通道是shared,我被惊讶到了,毕竟做了七八年芯片,AXI也是手撸过很多遍,Shared地址通过的阉割版,还是有点不适应,毕竟当读写冲突的时候,必须做仲裁,同时也需要更大的FIFO,还缓存读写通道的数据。

3.

花了九牛二虎之力,搞定了1280*720@60Hz的AR0135采集,然后裁剪成1024*600后,与1024*600的LCD显示数据仲裁读写DDR(加入读写仲裁,且读数据优先,),最后得到的效果是这样的:

这里,我还是不解,易灵思的DDR控制器,如果是买的,那Synopsys应该是标准的AXI;或者如果是买的DDR PHY+自研的控制器,那应该至少遵循标准,为什么会出一个阉割版本的AXI接口呢?

百思不得其解,但这也无法阻碍我们前进。在不久的将来,我将写基于易灵思FPGA的MIPI相机采集显示开发详解。

编辑:黄飞

 

猜您喜欢

限位开关和行程开关是工业自动化中常用的设备,主要用于检测机械运动位置和控制设备的运行状态。限位开关通常安装在机械运动部件的终点,当运动部件达到预设位置时,限位开...
2012-01-03 00:00:00

工具放置架是实用的储物解决方案,通过合理的空间利用,帮助我们更好地管理工具和设备。工具放置架能够有效地分类和存放各种工具,使工作环境更加整洁有序,减少寻找工具的...
2020-04-28 00:00:00

2010-09-21 00:00:00

贴片电阻1202并非指阻值大小,而是指它的封装尺寸。1202表示该电阻的长宽分别为1.2mm和0.2mm,相当于英制尺寸的0402。要确定1202封装电阻的具体...
2024-11-26 11:29:15

现代科技快速发展的时代,配件的选择对设备的性能和使用体验非常重要。本文将重点介绍名为“Accessories_9.5X4.3MM_SM”的配件,在多个领域中都展...
2025-04-26 03:00:05

0402贴片电阻的阻值范围非常广,从几欧姆到几兆欧姆都有,并不能简单地说成是多少K。 0402指的是电阻的封装尺寸,长0.4mm,宽0.2mm。阻值则需要根据电...
2024-11-29 10:25:58


现代电子产品的设计与制造中,选择合适的电子元件至关重要。VSON14_4X3MM_EP作为一种高性能封装电子元件,因其独特的设计和优越的性能,受到广泛关注。本文...
2025-02-24 16:10:47

DB3双向触发二极管是重要的电子元器件,应用于电源电路、信号处理和保护电路等领域。基本功能是控制电流的流动,保护电路不受过电压和过电流的影响。本文将深入探讨DB...
2025-04-09 02:30:34

摘要语义占用网格感知对于自动驾驶至关重要,因为自动驾驶车辆需要对3D城市场景进行细粒度感知。然而,现有的相关基准测试在城市场景的多样性方面存在不足,并且仅评估...
2023-08-14 09:37:00