FPGA上最简单的 DVI / HDMI frame_buffer(帧缓冲区)开源代码-FPGA开源项目论坛-FPGA CPLD-ChipDebug

FPGA上最简单的 DVI / HDMI frame_buffer(帧缓冲区)开源代码

该组件允许将 DVI/HDMI 输出添加到您的 FPGA 项目中。
IP 从外部 AXI-4 内存目标获取像素数据,并转换为适合从 FPGA 驱动 DVI 或 HDMI(DVI 模式)输出的 TMDS。

d079bbff3f081322

 

 

基于Mike Field 的TMDS 编码器代码。

特征

  • HDMI/DVI TMDS 输出。
  • RGB565 输入格式。
  • 支持突发的 AXI-4 总线主控器。
  • 4KB 像素数据预取 FIFO(映射到 Xilinx FPGA 中的 BlockRAM)。
  • AXI-4 Lite 寄存器接口,具有可编程帧缓冲区获取地址、启用、中断控制。
  • 帧中断输出开始。
  • 可配置的显示分辨率(640×480、800×600、1280×720、1920×1080)。
  • 适用于 Linux ‘simple-framebuffer’ 驱动程序。

接口

姓名 描述
clk_i 时钟输入 – 必须适合配置的 res/refresh 速率。
clk_x5_i 时钟输入 x 5。
rst_i 异步复位,高电平有效。
cfg_* AXI-4 Lite 配置端口(如果 VIDEO_ENABLE=1,则可选)。
外港_* 用于像素获取数据的 AXI4 主接口。
介绍 高电平有效中断输出(单周期选通)。

参数

姓名 默认 描述
VIDEO_WIDTH 800 显示分辨率 (H)。
视频高度 600 显示分辨率 (V)。
VIDEO_REFRESH 72 显示刷新率。
VIDEO_ENABLE 1 复位后像素获取启用(可通过 AXI-4L regif 更改)。
VIDEO_FB_RAM 32’h3000000 帧缓冲区基地址(可通过 AXI-4L regif 更改)。

Linux 帧缓冲区

示例 Linux DTS 配置,帧缓冲区位于 @ 0x300_0000 和 800×600 显示分辨率;

    framebuffer {
      compatible = "simple-framebuffer";
      reg = <0x3000000 (800 * 600 * 2)>;
      width = <800>;
      height = <600>;
      stride = <(800 * 2)>;
      format = "r5g6b5";
    }; 

测试

在配备戴尔 U2515 显示器和各种分辨率的 LG 液晶电视的 Xilinx Artix 7 (Digilent Arty A7) 上进行了测试。与 Linux Kernel ‘simple-framebuffer’ 驱动程序一起使用。

参考

请登录后发表评论

    没有回复内容