前言:前文中,我们实现了控制DDR3 SDRAM的读写操作,本项目将会把 DDR3 SDRAM 中原始的数据读出,并通过 HDMI 接头显示在显示器上,图片的分辨率选择 1024x768@60Hz,1pixel=24bit。
1.总框架介绍与结构框图设计
由于 DDR3 SDRAM 读出的数据所在的时钟域和 HDMI 的时钟域不同,需要进行数据的跨时钟域处理。
因此我们需要在 DDR3 SDRAM 和 HDMI 之间加入一个fifo缓存器。
由于 HDMI 端每次至少会连续的需求一行的数据量,为了 HDMI 能够从 fifo 中取出足够的数据,我们需要保证该缓存 fifo 中存有的数据量不能少于 HDMI 所需求的一行数据,因此每当缓存器 fifo 中的数据量低于 HDMI 所需的一行数据时,我们就应该启动DDR3 SDRAM 的读,并将读出的数据输入到缓存器中,下图为 DDR3 SDRAM的读数据流程图。
问:如何确保数据(像素)被hdmi显示在正确的位置上呢?
答:除了缓存数据量的问题,还需要注意像素点和扫描区域匹配的问题
所以我们读取 fifo 时需要满足三个条件:(Assign rd_fifo_en=h_active_flag & v_active_flag )
1、缓存 fifo 内够 1.5 行的像素点个数;
2、Vga 扫描到显示区域;
3、新的一行的开始位置。
结构框图设计: