tag 标签: LIFCL-40

相关博文
  • 热度 7
    2023-1-6 10:43
    1855 次阅读|
    0 个评论
    Lattice CrossLink-Nx LIFCL-40应用连载8:MIPI DSI接口驱动LCD显示器
    作者:Hello,Panda 一、 案例需求 使用 LIFCL-40 FPGA 的 MIPI DSI 硬核接口驱动 7 寸 LCD 显示器: (1) 显示器: 7 寸, 1024*600 横屏, 60Hz ; (2) MIPI 物理层: 4-Lane , 600Mbps/lane (最大可支持 3840*2160 分辨率 30Hz , 1920*1200 分辨率 120Hz ,最大支持 2.5Gbps/lane 速率); (3) DSI :支持突发模式, 24-bpp RGB 数据; (4) 代码:全手写,不使用 Lattice 官方 IP 核。 二、 硬件电路 采用 LIFCL-40 基础视觉开发平台,由 FPGA 产生本地测试图像,接口电路见下图 1 所示。 图 1 MIPI DSI LCD 驱动接口 如上图所示, MIPI DSI 数据通道为 4-lane MIPI D-PHY , LCD_RST_3V3 为 LCD 复位信号,低电平复位; LCD_PWM_3V3 为背光驱动信号, 10~20KHz PWM 信号。 三、 软件设计 软件使用 Radiant3.2 开发,软件的整体结构如下图 2 所示。 图 2 驱动 LCD 软件结构 (1) 片上晶振产生 50MHz 时钟给 MIPI D-PHY 物理层内部的 PLL 产生 300MHz 的源同步时钟和 75MHz 的字节时钟; (2) 核心板外部 50MHz 产生 65MHz 视频时钟,用于产生 1024*600 60Hz 的视频时序和产生测试数据; (3) 产生的数据经 FIFO 后给 u_dsi_nocil_4lane_inst 模块发送到 MIPI 物理层模块 u_mipi_dsi_phy_inst 进行串行化发出; (4) DSI 模块 u_dsi_nocil_4lane_inst 用于产生符合 MIPI D-PHY 物理层规范的长短包发送时序。 在开机后,延时 200ms 以上等待 LCD 显示屏初始化完毕后再发送 Turn On Peripheral Command 和 Color Mode Off Command 短包命令打开设备并进入正常显示模式。 MIPI DSI 数据发送模式选择为 Burst Mode ,如下图 3 所示。一帧发送一个 VSS (帧起始)短帧,其他行发送 HSS (行)起始短包,显示数据区域( VACT )行发送实际的 RGB-24bpp 打包的像素长包数据,其他区域 VSA 、 VBP 、 VFP 区域发送 Blanking 数据。 图 3 Burst 模式时序图 整个工程的代码结构见下图 4 所示: 图 4 工程代码结构 四、 显示效果 如下图所示,将显示器的软排线连接到板子的 J7 连接器,将 bit 文件烧入 flash ,重新上电显示效果见下图 5: 图 5 显示效果图
  • 热度 6
    2022-10-30 11:03
    2601 次阅读|
    1 个评论
    Lattice Crosslink-NX器件(LIFCL-40-7MG121I)用作视频输入桥接时支持的CMOS型号及可达性能汇总
    作者:Hello,Panda 大家早上好、中午好、晚上好。 熊猫君前几天回老家了,手上没得啥新素材码字,决定水一文,将 Lattice Crosslink-NX 系列器件中熊猫君前一阵子用得比较多的那个型号( LIFCL-40-7MG121I )用作 CMOS 图像传感器接口桥接时所支持的 CMOS 芯片型号简单罗列一下,可能会方便大家选型: (一)桥接的目的和意义 当前,很多监控、工业和特殊应用领域的 Camera Sensor 大多输出的是 LVDS 、 SLVS 或 HiSPi 电平(协议),常用的 Sony 、安森美器件均是如此。后端的处理器如果是 FPGA ,则可以直接接入并解码图像;如果是海思、瑞芯微、英伟达、高通等 SoC 的话,则需要桥接转换为标准的 MIPI D-PHY 比较方便接入。这就是 SLVS 、 LVDS 、 HiSPi 等转 MIPI 桥接存在的目的和意义。 (二)LIFCL-40桥接方案概要 方案采用 Lattice Crosslink-NX 器件( LIFCL-40-7MG121I ), 6mm*6mm BGA 小型封装,可作为一个中间模块单独存在或直接和 CMOS 芯片放置在同一个 PCB 上。如下图: 1 、 SLVS ( LVDS 或 HiSPi )转 MIPI 采用透传模式,即不关注采集的数据内容和正确与否,直接通过 MIPI D-PHY ( CSI-2 协议)转发出去; 2 、主控 SoC 配置 CMOS 和发出控制信号,无需关注 FPGA ,从主控端看,就相当于是 CMOS 直接输出为 MIPI 接口。 (三)LIFCL-40可达的功能性能参数 1 、输入支持电平类型: SLVS 、 LVDS 、 HiSpi ,支持 8bit 、 10bit 、 12bit 、 14bit 、 16bit 串行数据输入; 2 、输入支持的通道速率: 1.2Gbps/Lane Max; 3 、输入支持的通道数: 24 Lane (包含时钟 Lane+Data Lane ) Max ; 4 、输出支持的通道数: 8-Lane MIPI D-PHY Max ; 5 、输出支持的通道速率: 2.5Gbps/Lane ( 20Gbps Max Total ); 6 、输出支持的 MIPI 模式: CSI-2, 连续时钟模式和非连续时钟模式; 7 、支持 IIC 转 SPI 桥( 100KHz 、 400KHz 、 1MHz )。 https://v.qq.com/x/page/e3361hhfldc.html (四)桥接支持的器件列表(不一定全) 备注:输入 / 输出的定义以 FPGA 为基准参考, CH 数为时钟通道 + 数据通道的总数。 SONY的器件可支持:IMX122、IMX117/ IMX172、IMX178、IMX531/IMX541、IMX185、IMX226、IMX236、IMX273、IMX183、IMX250、IMX252、IMX253、IMX264、IMX265、IMX287、IMX661、IMX342、IMX530/IMX540、IMX367、IMX387、IMX532/IMX542、IMX535/IMX545、IMX304、IMX267、IMX255、IMX487/IMX536/IMX546、IMX428、IMX420、IMX537/IMX547/IMX548、IMX437、IMX429、IMX421、IMX392、IMX174、IMX302、IMX430、IMX422、IMX432、IMX425、IMX433、IMX426。 安森美的器件可支持:PYTHON1300、PYTHON2000、PYTHON300、PYTHON480、PYTHON500、PYTHON5000、AR132/AR134/AR140/AR141/AR0237/AR0238/AR0239/AR0331/AR550、XGS12000/XGS16000/XGS2000/XGS20000/XGS30000/XGS5000/XGS8000/XGS9400。 好了,今天的分享就到这里。各位晚安。
  • 热度 8
    2022-10-16 21:26
    1839 次阅读|
    1 个评论
    关于Radiant软件下Crosslink-NX物理层IP核MIPI_DPHY无法产生正确的非连续时钟时序的BUG修复办法
    作者:Hello,Panda 一、问题描述: ( 1 )器件: Lattice Crosslink-NX LIFCL-40-7MG121I ; ( 2 )软件: Radiant 3.1 ; ( 3 ) MIPI_DPHY IP 核版本: 1.4.0 ; ( 4 ) IP 核的配置: 1-lane MIPI 发送,无 CIL ,非连续时钟模式,见下图。 存在的问题是: MIPI CSI 层控制以下信号无法产生正确的非连续时钟发送时序。 hs_tx_en_i, hs_tx_data_i, hs_tx_data_en_i, lp_tx_data_p_i, lp_tx_data_n_i, lp_tx_data_en_i, lp_tx_clk_p_i, lp_tx_clk_n_i 。 二、问题查找 对封装的模块逐层追踪发现, DPHY 原语里面,时钟 HS_TX 的使能信号直接接到了 hs_tx_en_i, 时钟的 LP_TX 使能信号接到 lp_tx_en_i, 但是这个 lp_tx_en_i 在顶层例化的时候却直接赋值为“ 0 ”,这就导致在非连续时钟模式下, CLK 通道无法发出 LP 状态信号。 配置为非连续时钟并操控 IP 核引出的控制接口,实际得到的波形如下,时钟通道的 LP 状态为高阻,没有 HS 的状态变化过程: 三、解决办法 将 Radiant 软件自动生成的只读 IP Verilog 文件复制出来,重新命名,将需要的 lp_tx_en_i 引出给 CSI 层控制用于产生正确的 LP 信号。 hs_tx_en_i 可以用来控制产生 HS 时钟, hs_tx_en_i 和 hs_tx_data_en_i 相与可以使能 HS 数据发送。为了便于直观操作,也可以将 UCENCK 单独引出 hs_tx_clk_en_i 进行控制。 将复制并修改好的文件添加进去,写好正确的控制逻辑,并删除掉 IP 生成的文件,可以得到如下图所示的正确时序。
  • 热度 6
    2022-8-11 12:04
    2576 次阅读|
    0 个评论
    Crosslink-NX器件应用案例(2): MIPI的多源合成(MUX)与分发(DeMUX)
    作者:Hello,Panda 好久没有码文章了,今天讨论讨论MIPI多通道合成输出(MUX)和输入分发输出(DeMUX)的问题。这也是类似于Crosslink-NX此类器件的一个典型应用方向,通过增加传输速率的方式提升带宽,减少和主控的物理连线Lane数,这里熊猫君以Crosslink-NX基础视觉板和最常见的OV5640图像传感器为例,讲讲MIPI 4-MUX-1的实现思路,DeMUX将之反着实现就成。本质原理是利用MIPI的VC通道,因为VC通道占2bit,因此最多可支持4合1或者1分4使用。 1、技术参数 基于Crosslink-NX基础视觉板(芯片为LIFCL-40-7MG121I),采用OV5640图像传感器模组作为数据源,FPGA驱动并接收OV5640传感器数据并将其进行4-MUX-1合成后通过2.5Gbps硬核MIPI发出,需达到的主要技术参数如下: (1) 合成模式: 4-MUX-1 ,即支持 4 颗 sensor 数据源合成一路输出,亦支持 3-MUX-1 和 2-MUX-1 模式; (2) 摄像头模组: OV5640 ,配置成为 720P30 , MIPI 单 lane YUV 输出,亦可配置支持 MIPI 双 Lane 其它色空间格式输出; (3)输出参数: MIPI 4-lane , 1.5Gbps/lane , 4 个 VC 通道,连续时钟模式; (4) 本地显示:显示单摄像头图像, 720P30 , 4 个源交替显示。 从带宽考量,每路 OV5640 配置为 720P30 , YUV422 格式输出的话,那么每颗 Sensor 所需带宽为 336Mbps ,四路就是 1344Mbps 。因此,输出的 MUX MIPI 链路使用 1.5Gbps 4-lane 的配置已经带宽足够富余了。 2、硬件电路 本章节简要描述硬件电路,电路原理图见下图1。 图1 硬件原理图、 2.1 接口和信号描述 如图1所示, 硬件电路通过与 Crosslink-NX 的 J5 、 J6 连接,合成好的 MIPI 数据通过 30P FPC 接口输出。 (1) FPGA 通过 IIC 对 CMOS 进行配置,通过 IIC 通路切换芯片 PI4MSD5V9545A 实现 1:4 路的通路切换; (2) 给 CMOS 的板载参考时钟是 24MHz ,对应 MIPI 输出的 Lane 速率为 336Mbps ; (3) 连接到 30Pin FPC 接插件的 J1~J3 的 sensor 采用 softMIPI 采集, J4 上的 Sensor 采用硬核 MIPI 接收; (4)FPGA 引出一路 IIC 信号,通过 IIC 1:4 Switch 进行切换到 4 路 CMOS ,芯片采用 DIODES 的 PI4MSD5V9545A 芯片,其访问 IIC 地址为 0xE0 ,配置其内部的一个 8bit 寄存器实现通道的切换。 图2 实物照片 2.2 OV5640图像传感器 OV5640 是 OmniVision 推出的一款彩色图像传感器,全画幅有效像素为 2592*1944 ,内置 ISP 功能,图像输出接口支持 DVP 和 MIPI ( 2-lane )两种,本例中选择配置为 MIPI 接口。 OV5640 支持 RAW RGB 、 RGB565/555/444 、 CCIR565 、 YUV422/420 和压缩图像等,支持的分辨率和帧率包括 15fps@2592*1944 、 1080P30 、 960P45 、 720P60 、 480P90 、 240P120 ,本例选择 720P30 、 YCbCr4:2:2 输出。 3、软件设计 FPGA 芯片采用 Lattice Crosslink-NX LIFCL-40 芯片,软件开发使用 Radiant 。 图 3 软件框架 实现该需求的系统软件框图见上图 1 所示。通过一个 RISC-V 控制 IIC 外设配置四颗 OV5640 Sensor 使之输出 720P30 的 YCbCr4:2:2 图像, FPGA 接收 MIPI 数据后经过缓存后通过一个 MUX 状态机将之合成到不同的 VC 通道上并通过 HardMIPI 接口发出。另外,可从四路 sensor 中选择一路图像经 HyperRAM 缓存并通过 HDMI 接口显示到电视上(备注:因输出为 720P30 图像,故可能大多数的显示器都不支持,但电视是可以直接显示的)。 3.1IP配置 SoftMIPI 和 HardMIPI 均使用 Radiant 里面的免费物理层 IP MIPI DPHY 来实现, CSI-2 采用自己编写的源码,这样就避免了因部分用户未购买 Radiant 软件付费授权下无法使用的问题。下图 4 是 HardMIPI 的 IP 配置参数,图 5 是 SoftMIPI 的 IP 配置参数。 图 4 HardMIPI IP配置 图5 SoftMIPI IP配置 因 SoftMIPI 是用普通的真差分 IO 来接收的,因此不具有专用 MIPI Pad 可以自主识别 HS 和 LP 状态的功能,所以需要引入 MIPI LP 信号( Lane-0 的 N 端)来控制 HS 、 LP 的状态切换,判断依据是当 LP 信号翻转(说明有 MIPI 输入)时,当其为逻辑电平“ 0 ”时为 HS 状态,当其为逻辑电平‘ 1 ’时为 LP 状态。 3.2 CI S-2层 MIPI 接收边的 CSI 层将数据恢复为 Byte 并通过一个 Video Bridge 将视频恢复为 Vsync 、 Hsync 、 de 和 YCbCr4:2:2 数据,收到的数据写入到 Pingpong Buffer 中,每写满一行向 MUX 状态发送一个输出请求信号,状态机对该信号接收并仲裁,并通过发送端的 CSI-2 层发出 MUX 后的数据到物理层。 同时, DMA 会将给定通路 Video Bridge 恢复出来的视频数据通过 DMA 写入 HyperRAM 缓存供 HDMI 显示使用, HDMI 的显示 DMA 读取数据并将 YCbCr4:2:2 的格式转换为 RGB888 格式送显。 好了,熊猫君今天的简单分享就到此为止了。这种MIPI的集合与分发在无人机、汽车成像、医疗成像、多屏显示等领域中得到了广泛应用,毕竟连接线只需要原来的1/4,也可以节省主控端口IO,好处不少。 最后,随便说一句,熊猫君的企鹅讨论组被毙了,如有需要,新组织可小窗熊猫君或微信搜索“ZYNQ 分享客”公众号获取。
  • 热度 5
    2021-12-21 01:39
    3078 次阅读|
    0 个评论
    Lattice CrosslinkNx LIFCL-40应用连载7-使用HyperRAM存储器
    作者:Hello,Panda 今天熊猫君的技术分享是使用FPGA驱动读写HyperRAM。 首先,我们要了解什么是HyperRAM,这种器件出现的时间不太长,是近十年才面世的,一些RAM大厂如Cypress、华邦、ISSI等均有相关产品。它的访问接口类似于NOR Flash,每次访问都是先发命令,再取一个burst的数据,因此它不像SRAM或DRAM那样需要地址、控制和数据线等若干IO,它具有占用引脚少的特点,8bit位宽的片子只需要12个IO,16bit位宽的片子只需要20个IO。HyperRAM的运行速率有166MHz、200MHz和250MHz三个速率等级,双边沿采样,如果是8bit器件的话,那么对应的带宽就可以达到333MB/s、400MB/s和500MB/s,容量从32Mb到512Mb不等。 同时,HyperRAM具有低功耗的特点,并且时钟在非访问期间可以关闭,因此适合在穿戴设备、手持设备和部分车载应用等对功耗和体积要求严格且带宽吞吐不是那么特别大的场合使用,国内的FPGA厂商“高云”将HyperRAM集成到了它的“小蜜蜂”系列,一些传统的微控制器厂商也在产品中集成了HyperRAM控制器。 一、HyperRAM访问介绍 熊猫君以自有板子上搭载的华邦W956D8器件为例,详细介绍HyperRAM的访问流程。 华邦W956D8容量为64Mb,工作电压1.8V,8bit数据位宽,工作时钟200MHz(带宽400MB/s),最大突发长度128bytes(64clocks),在200MHz时钟频率工作时,命令插入等待周期最小为7clocks。 HyperRAM的访问分成寄存器访问、读数据、写数据三种来介绍。在器件复位信号释放以后需先对HyperRAM进行初始化。 1.1 HyperRAM命令集 每个HyperRAM访问周期均以命令开始,命令有内部配置寄存器访问和存储空间访问两个大类。命令一共有48个bit,占用3个时钟周期,下表1是命令字的位定义。 表1 命令字定义 1.2 寄存器访问 一般的,寄存器访问用于初始化HyperRAM内部寄存器,主要关注的是要正确设置“配置寄存器0”,写该寄存器对应的48bit命令字为16进制60-00-01-00-00-00,下表2为“配置寄存器0”的位定义。 表2 配置寄存器0位定义 在本例中,突发长度设为128bytes,其他为默认值,该寄存器的配置为8F2Ch。 在配置HyperRAM内部寄存器时,寄存器配置值紧跟CA命令字,主控无需驱动RWDS信号,时序如下图1所示。 图1 写寄存器时序图 1.3写数据 写数据的时序如下图2所示: (1)写数据周期时,需将CS信号拉低; (2)CA周期时,RWDS信号由HyperRAM驱动,在CA周期结束后,RWDS由主控FPGA驱动; (3)本例寄存器CR0设置为初始化延时7个时钟周期,固定2倍延时,因此需固定延时14个时钟周期后输出数据; (4)在数据输出时,RWDS可用作MASK信号,当RWDS为高电平时,对应的数据被屏蔽写入HyperRAM,一般RWDS恒为‘0’,数据全部写入HyperRAM即可。 图2 写数据时序图 1.4 读数据 读数据的流程和写数据类似,RWDS全程由HyperRAM驱动,在数据输出时,数据和RWDS的边沿对齐,此时RWDS不具备数据屏蔽功能,仅通过边沿的变化指示数据正在输出,时序图见下图3。 图3 读数据时序图 二、FPGA驱动HyperRAM FPGA驱动HyperRAM的整体框图如下图4所示。 图4 整体框图 这个东东比较的简单,就不在文章里面啰嗦碎碎念了,可直接下载代码分析即可。如上图所示:(1)内部时钟采用clk,为保证满足采样相位,输出到HyperRAM的时钟和内部时钟频率相同,相位相差135度;(2)主控检测RWDS的状态,当RWDS为边沿跳变的1-0-1-0…序列时,主控采样RWDS数据。 运行Demo功能,在线调试观察写入的数据和读出的数据,完全一致即为满足时序要求,运行结果见下图5。 图5 运行结果 好哒,今天的分享到此结束,通过关注微信公众号“ZYNQ分享客”,在对话框中回复双引号下的完整字符串“YSPL-LIFCL-APP006”即可获取本文对应的完整工程文件。最后,欢迎大家关注微信公众号或讨论群,聊聊技术吹吹水,分享心得,共同进步!