作者: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 显示效果图