特权同学

例说FPGA连载96:基于HDMI的AV采集显示之Verilog代码解析

0
阅读(3278)

例说FPGA连载96:基于HDMI的AV采集显示之Verilog代码解析

特权同学,版权所有

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

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

1.jpg

本实例分为4个层级,大大小小共计25个模块,其层次结构如图19.4所示。

图19.4 工程实例17代码层次图

2.jpg各个模块的功能描述如表19.1所示。

表19.1 代码模块功能描述

模块名

功能描述

vip.v

该模块是顶层模块,其下例化了6个子模块。该模块仅仅用于子模块间的接口连接,以及和FPGA外部的接口定义,该模块中未作任何的逻辑处理。

ddr2_controller.v

该模块是一个软核IP,实现DDR2的时序控制功能,并且通过一个简单的Avalon接口实现DDR2和FPGA逻辑之间的读写数据传输。

ddr_avl_bridge.v

该模块作为连接ddr2_controller的桥接模块,用户逻辑中要写入或读出DDR2的数据都需要通过该模块例化的DDR2读数据缓存FIFO或DDR2写数据缓存FIFO实现。

rdfifo_for_sdram.v

该模块为片内存储器例化的FIFO,用于缓存从DDR2读出的数据。

wrfifo_for_sdram.v

该模块为片内存储器例化的FIFO,用于缓寸写入DDR2的数据。

hdmi_controller.v

该模块产生480p/600p/768p/960p/1024p/1080p分辨率可调的HDMI接口显示驱动逻辑,同时该模块也产生DDR2读操作接口的控制信号。

sys_ctrl.v

该模块中例化了PLL模块,并且对输入PLL的复位信号以及PLL锁定后的复位信号进行“异步复位,同步释放”的处理,确保系统的复位信号稳定可靠。

pll_controller.v

该模块为FPGA器件特有的IP硬核模块,其主要功能是产生多个特定输入时钟的分频、倍频、相位调整后的输出时钟信号。

adv7180_ctrl.v

该模块包含6个子模块,实现对ADV7180芯片的IIC寄存器初始化以及ITU656格式AV视频信号的采集、协议解析、去隔行处理、YCrCb转RGB处理等功能。

iic_ctrl.v

该模块产生IIC的读写时序,实现对ADV7180芯片的IIC接口寄存器访问。

tiic_debug.v

例化的“In-System Sources and Probes Editor”IP核,可用于在线访问IIC寄存器。

dbcheck_ctrl.v

ITU656协议的AV视频流解码,去除协议的帧头和帧尾,提取出有效的视频数据。

dbfir.v

使用移位寄存器和FIFO,对视频流缓存并实现去隔行处理。

dbsr_ctrl.v

移位寄存器,用于缓存一行的视频图像。

kfifo_ctrl.v

该模块的FIFO用于缓存ITU656协议解码后的有效视频数据流。

ycbcr2rgb.v

将YCrCb格式输入的视频流转换为RGB格式输出的视频流。

muxadd.v

3路输入的乘累加IP核。

Muxadd2.v

2路输入的乘累加IP核。

vip_qsys.v

该模块是Qsys系统的例化,该模块例化了一个NIOS II处理器,作为Avalon-MM总线的主机;Avalon-MM总线上可访问的从机有片内RAM、System ID、JTAG UART、HDMI_MODE_PIO、LED_PIO、Timer以及自定义的IIC控制器组件。

以上模块的代码解析请参考工程实例10例程的代码详解,一些特殊的模块见如下解析。


Baidu
map