news 2026/4/23 18:40:43

例说FPGA:可直接用于工程项目的第一手经验【2.9】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
例说FPGA:可直接用于工程项目的第一手经验【2.9】

12.7 Verilog代码解析

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

各个模块的基本功能定义如表12-2所示。

表12-2 Verilog各个模块功能描述

1.vip.v模块代码解析

略。

2.sys_ctrl.v模块代码解析

略,请参考例程工程实例1。

3.ddr2_controller.v模块代码解析

略,请参考例程工程实例2。

4.ddr_avl_bridge.v模块代码解析

该模块用于衔接DDR2控制器IP核与用户逻辑,即adv7180_ctrl.v模块产生的两个通道(分别由奇场和偶场还原的完整视频帧)视频流通过该模块写入到DDR2存储器中,而DDR2存储器中的视频流又通过该模块送往lcd_driver.v模块,用于LCD的显示。该模块的功能框图如图12-28所示。该模块例化了3个FIFO,两个用于缓存写入DDR2数据的缓存,一个用于DDR2读出数据的缓存。

仲裁逻辑部分的数据读写状态机切换如图12-29所示。

5.led_controller.v模块代码解析

略,请参考例程工程实例1。

6.lcd_driver.v模块代码解析

略,请参考例程工程实例9。

7.adv7180_ctrl.v模块代码解析

该模块包含了6个子模块,即iic_ctrl.v模块、tviic_debug.v模块、dbcheck_ctrl.v模块、dbfir模块以及两个ycbcr2rgb.v模块。该模块主要是对6个子模块进行例化,实现它们之间的接口连接以及和外部的接口连接。该模块及其下所有子模块之间的连接和功能示意如图12-30所示。

8.tviic_debug.v模块代码解析

该模块是直接例化了IP核,它的IP核配置参考后续的IP核配置部分内容。在adv7180_ctrl模块中,对该模块的例化代码如下所示。

//例化In-System Sources and Probes对ADV7180的IIC接口做实时调试tviic_debug tviic_debug_inst (

.probe ( tiic_rddb ),

.source ( {tiic_en,tiic_wr_rdn,tiic_ab,tiic_wrdb} )

);

例化的两个接口信号probe和source,顾名思义,probe就是探针,用于连接FPGA逻辑的输出信号,便于用户在Quartus II集成的In-System Probes and Sources Editor中进行实时的监控;而source,即源,表示它作为FPGA逻辑信号的一个“源”输入进来,这样,在我们的In-System Probes and Sources Editor中就可以给FPGA的某些输入信号产生激励,从而达到在线调试的目的。

probe和sorce信号都可以是任意定义位宽,我们将它们连接到FPGA逻辑中,并且引到可以进行控制或检测的输入或输出信号上。这个实例中,我们连接的信号都是和IIC时序产生逻辑iic_ctrl.v模块的信号,通过这些接口,我们就可以任意地读写ADV7180的IIC寄存器。接口信号的功能映射如表12-3所示。

9.iic_ctrl.v模块代码解析

略,设计的思路和工程实例9的iic_ctrl.v模块基本一致,请参考那里的详细解析。

10.dbcheck_ctrl.v模块代码解析

该模块实现最前端的视频流的采集,对视频协议进行解析。因此在对代码进行详解之前,我们不得不多花一些篇幅来认识一下我们所使用的AV视频解码芯片ADV7180以及它用于传输视频数据流的协议格式。

如图12-31所示,这是ADV7180芯片的内部功能框图。从图示可以看到,这颗芯片无非是对模拟的AV视频信号进行采样、AD转换、数字处理以获得期望的数字视频流信号(这些步骤我们称之为“AV解码”),并且按帧对视频流编码为ITU-R BT.656(我们简称ITU656)送出。我们的FPGA端就连接着ITU656送数据的数字总线,通过这些接口,我们就

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:42:55

用 XinServer 给桌面端应用搭建轻量后台

用 XinServer 给桌面端应用搭建轻量后台 最近好几个做桌面端应用的朋友跑来问我,说他们想给软件加个数据同步、用户管理或者简单的后台管理功能,但一提到要自己搞服务器、写后端接口、设计数据库就头大。有个兄弟甚至说:“我连 SELECT * FRO…

作者头像 李华
网站建设 2026/4/23 9:18:20

用React Native开发OpenHarmony应用:Image图片滤镜效果

React Native for OpenHarmony 实战:Image 图片滤镜效果详解 摘要 本文深入探讨在 React Native 0.72.5 环境下,针对 OpenHarmony 6.0.0 (API 20) 平台开发应用时,如何利用 Image 组件实现高效、流畅的图片滤镜效果。文章结合 AtomGitDemos…

作者头像 李华
网站建设 2026/4/23 9:16:30

技术演进中的开发沉思-355:重排序(上)

今天梳理重排序三类核心类型表非常精准,把 JMM 中重排序的来源、本质、范畴划分得一清二楚,这也是理解并发有序性问题的核心基础 —— 重排序并非 “bug”,而是编译器 / 处理器为提升执行效率做的合法优化,其核心底线是不破坏单线…

作者头像 李华
网站建设 2026/4/23 9:20:39

AI写作大师-Qwen3-4B-Instruct参数详解:low_cpu_mem_usage加载与token速率优化

AI写作大师-Qwen3-4B-Instruct参数详解:low_cpu_mem_usage加载与token速率优化 1. 为什么4B模型在CPU上也能“思考”得又稳又准? 你可能已经试过不少轻量级AI写作工具,输入指令后秒出结果——但内容常常泛泛而谈、逻辑断层、代码跑不通。而…

作者头像 李华
网站建设 2026/4/23 9:16:12

MedGemma 1.5快速上手:基于Chain-of-Thought的本地医学问答完整指南

MedGemma 1.5快速上手:基于Chain-of-Thought的本地医学问答完整指南 1. 这不是另一个“能聊医学”的AI,而是一个你能在自己电脑上运行的临床推理伙伴 你有没有试过在深夜查一个医学术语,翻了三页维基百科和两篇综述,还是没搞懂它…

作者头像 李华
网站建设 2026/4/23 9:20:19

机器人开发工程师职位深度解析与面试指南

重庆兆光科技股份有限公司 机器人开发工程师 职位信息 【工作内容】 - 负责或参与机器人系统的设计与开发,包括硬件集成、软件编程及算法实现; - 参与机器人项目的规划,制定详细的技术方案,并确保项目按时交付; - 进行技术研究,跟踪行业动态,提升产品性能与用户体验; -…

作者头像 李华