tag 标签: Crosslink-NX

相关博文
  • 热度 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 显示效果图
  • 热度 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 生成的文件,可以得到如下图所示的正确时序。
  • 热度 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”即可获取本文对应的完整工程文件。最后,欢迎大家关注微信公众号或讨论群,聊聊技术吹吹水,分享心得,共同进步!
  • 热度 5
    2021-12-21 01:08
    3223 次阅读|
    0 个评论
    Lattice CrosslinkNx LIFCL-40应用连载6-搭建HDMI(DVI)发送系统
    作者:Hello,Panda 1.目标 利用LICFL-40 FPGA接口的高速LVDS差分对实现HDMI显示测试视频,分辨率为1920×1080,帧率为30Hz,显示生成的RGB格式标准彩条测试图像。 2.硬件电路 硬件电路如下图所示,LIFCL-40 FPGA的高速LVDS信号经NXP的交流耦合电平转换和驱动芯片PTN3360D后变为TMDS_33信号经HDMI Type-A接口输出到显示屏显示。 图1 HDMI显示电路 3.软件设计 本节描述设计软件,开发工具为Radiant3.0。 3.1设计原理 时钟结构如下:使用LIFCL-40片上振荡器产生75MHz基准时钟,再经锁相环产生74.25MHz的视频时钟和371.25MHz的串行化时钟。 RGB视频数据、HSYNC、VSYNC和DE经过8B/10B编码形成30bit的新数据,经1:10串行化后通过3个TMDS通道发送,整体结构如下图所示。 图2 HDMI发送逻辑框图 3.2关键内容介绍 3.2.1并串转换 本例主要是使用LIFCL-40的ODDR5x原语实现串并转换,为简化设计,使用原语IP “DDR_Generic”实现,例化属性如下图3所示。 图3 IP例化属性 3.2.2时序约束 对video pll产生的两路时钟进行周期约束,并将之设置为互不相关。 create_clock -name {w_video_clk} -period 13.4680134680135 create_clock -name {w_video_clk5x} -period 2.69360269360269 set_clock_groups -group -group –asynchronous 3.2.3物理约束 需对IO、JTAG和QSPI加载等进行物理约束,详细内容见工程,本例工程源码可在“ZYNQ分享客”微信公众号下回复双引号内的字符串“ YSPL-LIFCL-APP005 ”自行下载。 4.效果图 示例程序效果见下图4。 图4 示例效果图 好了,今天的分享到此结束,利用fpga的lvds接口实现HDMI系统可以节省HDMI转接桥片,实现系统最简化。最后,欢迎大家加入QQ讨论群或添加“ZYNQ分享客”微信公众号共同讨论、进步。拜拜,睡觉喽!
  • 热度 11
    2021-12-21 01:00
    4519 次阅读|
    0 个评论
    lattice CrosslinkNx LIFCL-40应用连载5-如何使用MIPI D-PHY硬核IP?
    作者:Hello,Panda 1.目标 配置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。 2.软件设计 本例涉及到使用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处理模块进行进一步的算法运算处理。下图8是接收OV9734的MIPI数据后直接显示的RAW照片。 图8 显示RAW照片 3.结语 因Crosslink-NX集成了2.5Gbps Lane速率的MIPI硬核,因此开发变得像通用处理器一样简单,只要认真阅读手册,很快就能上手出图。另外,针对特定DT格式的CSI层的协议解析也很容易,可以不依赖官方的付费IP,对熟悉的同学们而言,几乎就是一日之功而已。最后,欢迎搭建加入QQ讨论群或关注“ZYNQ分享客”微信公众号,共同讨论进步!