在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1912|回复: 0

[原创] 例说FPGA连载97:基于HDMI的AV采集显示之hdmi_controller.v模块代码解析

[复制链接]
发表于 2017-5-2 22:36:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
例说FPGA连载97:基于HDMIAV采集显示之hdmi_controller.v模块代码解析

特权同学,版权所有

配套例程和更多资料下载链接:

http://pan.baidu.com/s/1c0nf6Qc

1.jpg


该模块产生多分辨率的HDMI显示驱动逻辑,将AV视频采集到的图像送到HDMI终端显示器。该模块的内部功能框图如图19.5所示。XY坐标计数器产生基本的HDMI时序,如hdmi_hsyhdmi_vsyhdmi_de等基本同步信号;同时,也产生DDR2读缓存fifo的读端口控制信号,如FIFO读请求lcd_rflreqlcd_rfrreqFIFO清除信号lcd_rfclrFIFO读出的数据总线lcd_rfldblcd_rfrdb最终将送到HDMI显示器上。

2.jpg

19.5 HDMI驱动模块功能框图


关于“一拖四”的实现,思路是这样的:在ddr_avl_bridge.v模块中定义两个用于缓存DDR2读出数据的FIFO,这两个FIFODDR2送来的输入的数据是完全一致的,它们分别由不同的请求信号lcd_rflreqlcd_rfrreq触发读取操作。即在同一行要显示两个相同的视频图像,那么每一行视频数据就要被读取两次,逻辑中产生读请求信号lcd_rflreqlcd_rfrreq就是左半屏和右半屏分开实现,其逻辑代码如下。

    //读取DDR2中640*480的AV图像请求信号(左侧视频)

always @(posedge clk or negedge rst_n)

    if(!rst_n) lcd_rflreq <= 1'b0;

    else if((ycnt >=(VGA_VST+VGA_VBP)) && (ycnt < (VGA_VST+VGA_VBP+960)) &&(xcnt >= (VGA_HST+VGA_HBP-2)) && (xcnt <(VGA_HST+VGA_HBP-2+640))) lcd_rflreq <= 1'b1;

    else lcd_rflreq <= 1'b0;


    //读取DDR2中640*480的AV图像请求信号(右侧视频)

always @(posedge clk or negedge rst_n)

    if(!rst_n) lcd_rfrreq <= 1'b0;

    else if((ycnt >=(VGA_VST+VGA_VBP)) && (ycnt < (VGA_VST+VGA_VBP+960)) &&(xcnt >= (VGA_HST+VGA_HBP-2+640)) && (xcnt <(VGA_HST+VGA_HBP-2+1280))) lcd_rfrreq <= 1'b1;

    else lcd_rfrreq <= 1'b0;


此外,我们将显示的上半屏幕和下半屏幕分别进行完整的图像读取,很容易就实现上下屏幕图像的“复制”。






您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 21:32 , Processed in 0.017154 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表