威三电子  

               威三电子

HDMI数据的接收发送实验(七)

2026-06-09 09:24:03

浏览:

一、概述本章节利用FPGA模拟EEPROM的从机响应程序,并创建hex文件写入EDID编码。二、设计流程我们可以在FPGA利用代码模拟EEPROM的响应程序,给


一、概述

本章节利用FPGA模拟EEPROM的从机响应程序,并创建hex文件写入EDID编码。

二、设计流程

我们可以在FPGA利用代码模拟EEPROM的响应程序,给HDMI主机返回正确的EDID编码。FPGA端把预设的EDID储存在片上ROM中,根据HDMI主机发送的IIC读写请求信号,利用IIC通信标准的时序将主机所读取的EDID编码传输给电脑端。电脑端接收到正确的EDID编码后,就会通过HDMI输出端口,输出所选尺寸的视频输出。该视频输入到FPGA开发板后,经过解码,编码再输出,***在显示屏上显示出所输出的画面。

三、获取EDID编码

为了获取显示器的原EDID信息,这里提供了一款softMCCS软件,打开软件后左上方的位置可以选择显示器,(如果主机只连接一个显示器就只有一个选项)。里面也可以看到显示器的信息,其中Raw data就是该显示器的EDID内容,点击右边数据可以看到具体的EDID编码。这里只显示了128位的基础EDID内容,不过我们也不用关心扩展的EDID信息。

1

接下来可以先修改显示器的名称和推荐分辨率的编码内容。H36-H47位置为推荐分辨率,00 00 00 FC 005个字节是显示器名称的标志,后边的编码内容为显示器名称,根据ASCII码修改,共13位。倒数第二个字节为扩展标识,因为我们没有用到扩展码,所以扩展标志设置为00。***一个字节的校验码再进行计算修改。到此我们的EDID内容已经修改完毕,接下来要把修改完的EDID编码储存在hex文件中,初始化加载到自定义的ROM模块中。利用‘“$readmemh”语句即可将hex文件中的数据初始化到内存阵列中。

2

hex文件中的编码内容按照一个字节一行,顺序进行排列。ROM模块如下所示:

module BRAM

   #(   parameter     MEMWIDTH= 8,                     //256 * data

                            parameter       DATAWIDTH= 32

   )               // Size = 32KB

   (

   input wire                                                      clk,

   input wire                                                      wen,

   input wire              [MEMWIDTH-1:0]                   waddr,              

   input wire              [MEMWIDTH-1:0]                   raddr,                

   input wire              [DATAWIDTH-1:0]     data_in,           

   output reg             [DATAWIDTH-1:0]     data_out         

   );

// Memory Array

reg  [DATAWIDTH-1:0] memory[0:((2**(MEMWIDTH))-1)];

initial

begin

              $readmemh('edid_data.hex', memory);

end     

always@(posedge clk)

begin

              if(wen)

                            memory[waddr]         <=         data_in;

end  

always@(posedge clk)

begin

              data_out          <=         memory[raddr];

end

endmodule

工程中添加hex文件:

在工程文件里创建一个新的文件夹:

3

‚文件夹中创建hex文件:

37

ƒvivado工程中添加设计文件:

4

„添加已创建文件:

5

…文件类型选择所有类型,点击hex文件并确认:

6

†vivado工程中选中hex文件,在源文件属性框里选择类型Memory initialization files

7

‡添加hex文件后文件目录如下:

8

四、总结

现在EDID已经可以存储到rom中,之后的章节来使用仿真模拟主机发送IIC读时序,来验证FPGA端发送的EDID信息。电脑端接收到正确的EDD编码后,会通过HDMI将显示器的视频输出到fpga,视频流经过FPGA后再输出到另一个显示器上。

本文章由威三学院出品

对课程感兴趣可以联系我们

0
HDMI数据的接收发送实验(七)
一、概述本章节利用FPGA模拟EEPROM的从机响应程序,并创建hex文件写入EDID编码。二、设计流程我们可以在FPGA利用代码模拟EEPROM的响应程序,给
长按图片保存/分享

北京威三电子科技有限公司

突破技术壁垒,芯创智联领航未来

 


北京威三电子科技有限公司 版权所有
京ICP备2026012969号
 

热线:

159-2199-9232

 

图片展示

淘宝店铺:

威三科教

地址:

北京市延庆区辰龙国际6号楼406室

微信公众号:

北京威三电子科技有限公司 

热线:159-2199-9232

淘宝店铺:威三科教

地址:北京市延庆区辰龙国际6号楼406


微信公众号

图片展示
北京威三电子科技有限公司 版权所有| 京ICP备2026012969号
微信公众号
客服中心
热线电话
15921999232
上班时间
周一到周五
二维码
扫码关注
客服中心
热线电话
15921999232
上班时间
周一到周五
二维码
扫码关注
添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了