0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建Zynq图像增强系统

454398 来源:网络整理 作者:网络整理 2019-11-20 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:材料

完成此项目您将需要:

硬件

-任何具有HDMI以太网的ZYNQ板都可以正常工作/我正在使用Digilent Zybo

-USB A到micro B USB电缆

-HDMI电缆

-以太网电缆

-带有HDMI输入的显示器

软件

-Xilinx Vivado

-Xilinx SDK

步骤2:输出-VGA控制器第1部分

我们将使用开发板上的HDMI端口输出视觉数据。 HDMI端口连接到ZYNQ的PL(可编程逻辑= FPGA)端,我们将需要为其设计VHDL控制器。如果您曾经设计过VGA控制器,您会发现它非常相似。 HDMI和VGA的时序实际上是相同的,实际上您可以在现有的VGA控制器上构建以获得HDMI控制器。

为更好地了解实际情况,我们将首先设计一个VGA控制器

我们要以1920x1080的分辨率显示。

VGA控制器负责将像素数据(RGB格式)依次逐像素传输到显示器。在1920x1080的实际显示区域之外,还有一些“边界”区域,即:前沿,后沿和回扫。这些区域的像素大小是标准的,并针对每种分辨率。这些区域实际上并没有出现在屏幕上,但是它们是必需的,并且该区域中像素的颜色必须为黑色。一个有效的问题是,为什么需要这些额外的区域。这个问题违背了这个可指导性的目的,但是如果您好奇的话,我鼓励您在线进行进一步研究。

这是一个很好的视频,解释了VGA接口https://goo.gl/vfSw6o

在我们的情况下,我们希望以1920 * 1080的分辨率进行显示,这些时间是:

水平显示区域= 1920像素

水平Fron门廊= 88像素

水平后沿= 148像素

水平回扫= 44像素

垂直显示区域= 1080像素

垂直前沿= 4像素

垂直后沿= 36像素

垂直回扫= 5像素

(您可以在此处找到其他分辨率的时间http://goo。 gl/hFNRVb)

因此,我们的实际分辨率为2200 x1125。我们希望60 fps(每秒帧数),因此我们的像素时钟将为60 * 2200 * 1125 = 148.5 MHz。在Zybo板上,提供了125 Mhz的时钟。我们将使用MMCM IP生成所需的148.5 MHz像素时钟。

步骤3:输出-VGA控制器第2部分

《在上一步的理论背景下,您应该可以设计自己的VGA控制器。我将为您提供一个Vivado项目,但我建议您至少尝试自己尝试一下。

大多数VGA端口不会为每个像素的每个颜色通道提供8位(参见上图),因此您需要使设计适应开发板提供的每种颜色的引脚数(尽管这对于HDMI来说不是问题)。

设计会将整个屏幕涂成蓝色,除了左上方的像素将变为红色。应当指出,该项目使用了ZYBO董事会的约束条件。因此,如果要在另一个开发板上运行该项目,则应更新约束文件并调整每种颜色的引脚数。

请看图nr。 2.请记住,尽管我们的VGA控制器在每种颜色下输出5/6位,但是在通过电缆之前,这些位会针对每种颜色通道(红色,绿色和蓝色)转换为一个模拟信号

第4步:输出-HDMI控制器第1部分

现在,我们知道了VGA控制器的工作原理,并且我们有一个可行的设计,我们可以继续使用HDMI控制器。 HDMI控制器实际上将使用我们在VGA控制器中开发的所有代码。 HDMI和VGA使用相同的时序和相同的信号。差异出现在输出引脚上。

虽然VGA每种颜色使用一根线并传输一条模拟信号,但HDMI每次每种颜色以1位数字方式传输数据并使用差分信号。差分信号意味着HDMI的每一位都有2个引脚,而另一个则相反。因此,如果我们要传输信号“ 1”,我们将在一根线上传输“ 1”,而在另一根线上传输“ 1”。这样可以确保信号的完整性,您可以在https://goo.gl/6CPCzB上了解更多信息。对于每种颜色(红色,绿色和蓝色),我们都有一个通道,对于时钟,我们有一个通道。由于差分信号的特殊性,我们通过HDMI发送的信号必须经过DC平衡处理,这意味着1和0的数量必须在特定的时间范围内大致相等。为了实现这一点,我们将使用8b/10b编码。您可以从DVI规范(http://goo.gl/hhh8Ge,DVI和HDMI使用相同的视频信号)上了解很多有关差分信号和8b/10b编码的工作原理。

第5步:输出-HDMI控制器第2部分

足够的理论,让我们进入我们的项目。在VGA控制器中,我们获得了148.5 MHz的时钟,但是在这里,我们将不得不提供10倍的频率,因为我们要为每种颜色传输8位,并使用8b/10b编码转换为每个像素10位和10 * 148.5MHz = 1485MHz。这是Zybo板上无法获得的巨大频率。幸运的是,我们掌握了一些技巧。我们可以管理5 * 148.5MHz = 742.5MHz,我们将使用OSERDES(串行器)IP在742.5Mhz时钟的上升沿和下降沿都传输数据,因此实际上我们将以1485MHz传输数据。 Vivado会给我们一些时间警告,您可以始终使用较小的时钟来获得较低的分辨率,但是由于它可以正常工作,因此我们暂时不介意(警告与时钟缓冲区未正式存在有关

因此,我们需要做的是将来自VGA控制器输出的数据编码为8b/10b格式,然后如上所述进行序列化。我们还需要在项目中添加另一个MMCM,以生成用于序列化的742.5MHz时钟。

我在编码器和序列化器的vhdl文件下面附加了该文件。您必须首先对RGB通道进行编码,然后对其进行序列化。

红色通道示例:

TMDS_encoder_RED:TMDS_encoder

端口图(clk148,red_channel_8bits,c_red,video_on ,encode_red_10bits);

Serialiser_RED:Serialiser10_1

端口映射(clk148,clk742,encoded_red_10bits,重置,red_serial_1bit);

TMDS_encoder的“ c”输入是红色和绿色的“ 00”,蓝色是“ vsync&hsync”(这是DVI规范http://goo.gl/hhh8Ge)。

步骤6:从RAM显示图像

HDMI控制器的目的是显示处理后的图像。现在,在实现控制器并准备就绪后,我们应该考虑为该控制器提供数据。鉴于很多图像增强过程将在PS中进行(处理系统= ARM处理器),并且生成的图像将驻留在DDR RAM中。因此,我们需要一种从RAM到HDMI控制器获取数据的方法。

要实现此目的,您需要3个IP:

1)VDMA(视频直接内存访问) )

2)VTC(视频定时控制器)

3)流到视频输出(从现在开始我们将其称为S2VO)

S2VO实际上将提供输出的RGB 24BIT信号以及所需的HSYNC和VSYNC信号。因此,我们可以省去HDMI控制器的那一部分。

您应该将这些IP添加到设计中,进行配置并进行正确的连接。

最后,您应该得到类似于

步骤7:输出-SDK END

所有硬件均已设置好并准备就绪,我们现在必须在PS中构建软件。我们将导出硬件和比特流并启动SDK。

1)文件-》导出-》导出硬件-》选中包括比特流,然后按确定

2)文件-》启动SDK

在SDK中创建一个新的应用程序项目。

3)文件-》新建-》应用程序项目

4)为您的项目选择一个名称,然后按下一步

5)选择“ Hello World”模板然后按Finish

SDK中的应用程序将需要对VDMA进行编程。为了完成此操作,使用了一些标准功能(我会在有空的时候进行详细介绍)。

为了测试我们的设计,我们将使用SDK Restore(Xilinx工具-》转储/还原) )功能可将图像放入DDR RAM内存并使用我们的HDMI控制器显示。您可以将图像加载到所需的任何位置(内存开头的一些较小的受限区域除外)。在我们的示例中,我们选择了地址16777216,文件大小为8294400 = 1920 * 1080 * 4(4个通道= RGB + alpha)。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HDMI
    +关注

    关注

    34

    文章

    1921

    浏览量

    161533
  • usb
    usb
    +关注

    关注

    60

    文章

    8486

    浏览量

    286498
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    详解AMD Zynq UltraScale+ MPSoC的中断架构

    (处理器系统)内部的运作方式。可以预见,由于 Zynq MPSoC 拥有更多的处理器核,因此它的中断结构要比 Zynq SoC PS 略微复杂一些。
    的头像 发表于 05-16 09:34 219次阅读
    详解AMD <b class='flag-5'>Zynq</b> UltraScale+ MPSoC的中断架构

    ZYNQ通过eMMC启动完成分区操作

    操作。正确的步骤:ZYNQ通过SD卡启动,用户访问ZYNQ的嵌入式Linux系统,在嵌入式Linux系统上完成对eMMC的分区和拷贝,完成后板卡断电,模式调为eMMC启动即可。总结来说
    的头像 发表于 05-11 14:36 198次阅读
    <b class='flag-5'>ZYNQ</b>通过eMMC启动完成分区操作

    FPGA硬件设计之ZYNQ外围DDR介绍

    由于ZYNQ-PS端的BANK502基本就是为DDR设计的,所以原理图设计非常简单:几乎就是PIN TO PIN连接。
    的头像 发表于 03-25 15:30 451次阅读
    FPGA硬件设计之<b class='flag-5'>ZYNQ</b>外围DDR介绍

    图像上,Debian 无法为 wifi 构建驱动程序,怎么解决?

    图像上,Debian 无法为 wifi 构建驱动程序。缺少一些内核包。是否可以发布它,我们可以通过 apt 安装它?所以我们对系统无能为力 无论我愿意什么,都是不可能的。这让我很生气。 make
    发表于 03-25 06:00

    赋能工业、消费及机器视觉: 贸泽开售 ams OSRAM Mira050 NIR增强全局快门图像传感器

    ) 增强全局快门图像传感器。Mira050是一款紧凑型0.5MP图像传感器,专为2D和3D消费类及工业机器视觉应用而设计。 ams OSRAM Mira050 NIR增强全局快门
    的头像 发表于 01-20 15:12 989次阅读
    赋能工业、消费及机器视觉: 贸泽开售 ams OSRAM Mira050 NIR<b class='flag-5'>增强</b>全局快门<b class='flag-5'>图像</b>传感器

    Zynq全可编程片上系统详解

    Zynq 是由赛灵思(Xilinx,现为 AMD 的一部分)推出的一系列全可编程片上系统。它的革命性创新在于,它不是传统的 FPGA,也不是传统的处理器,而是将高性能的 ARM Cortex-A 系列处理器与传统的 FPGA 可编程逻辑紧密地集成在单一芯片上。
    的头像 发表于 01-13 11:41 2397次阅读
    <b class='flag-5'>Zynq</b>全可编程片上<b class='flag-5'>系统</b>详解

    如何在ZYNQ本地部署DeepSeek模型

    一个将最小号 DeepSeek 模型部署到 AMD Zynq UltraScale+ MPSoC 处理系统的项目。
    的头像 发表于 12-19 15:43 7967次阅读
    如何在<b class='flag-5'>ZYNQ</b>本地部署DeepSeek模型

    用于高速成像,科学和太阳蛋白紫外线应用的图像增强器解决方案

    图像增强器用于增强低照度图像,直至单光子的检测和成像。Photonis 是 Exosens 的一部分,为科学应用 (IIT) 提供各种图像
    的头像 发表于 11-19 07:36 335次阅读
    用于高速成像,科学和太阳蛋白紫外线应用的<b class='flag-5'>图像</b><b class='flag-5'>增强</b>器解决方案

    ZYNQ PS与PL数据交互方式

    ZYNQ SoC 的 PS (Processing System) 和 PL (Programmable Logic) 之间的数据交互是系统设计的核心。
    的头像 发表于 10-15 10:33 1433次阅读
    <b class='flag-5'>ZYNQ</b> PS与PL数据交互方式

    基于FPGA的CLAHE图像增强算法设计

    CLAHE图像增强算法又称为对比度有限的自适应直方图均衡算法,其算法原理是通过有限的调整图像局部对比度来增强有效信号和抑制噪声信号。
    的头像 发表于 10-15 10:14 887次阅读
    基于FPGA的CLAHE<b class='flag-5'>图像</b><b class='flag-5'>增强</b>算法设计

    Photonis图像增强器:技术原理、核心优势与应用领域

    Photonis是一家全球领先的光电传感器与夜视技术制造商,总部位于荷兰,专注于高性能图像增强器、光电倍增管(PMT)和微通道板(MCP)的研发与生产。其产品广泛应用于科研、医疗和工业领域,尤其在低
    的头像 发表于 10-10 09:28 1050次阅读
    Photonis<b class='flag-5'>图像</b><b class='flag-5'>增强</b>器:技术原理、核心优势与应用领域

    RTthread怎么加载zynq的支持包?

    RTthread有xilinx zynq的芯片支持包了么,SDK管理器里面怎么下载ZYNQ的支持包呢?求助
    发表于 09-23 06:05

    Photonis 科学图像增强器介绍

    对于寻求先进图像增强技术的增强相机制造商,Photonis 提供具有无与伦比规格的科学级图像增强管。其中包括市场领先的信噪比 (SNR)、卓
    的头像 发表于 09-19 09:20 552次阅读
    Photonis 科学<b class='flag-5'>图像</b><b class='flag-5'>增强</b>器介绍

    复杂电磁环境构建与测试软件系统解析(精简版)

    复杂电磁环境构建与测试软件系统解析(精简版)
    的头像 发表于 09-15 21:05 941次阅读
    复杂电磁环境<b class='flag-5'>构建</b>与测试软件<b class='flag-5'>系统</b>解析(精简版)

    CH367连接zynq问题

    通过四线SPI连接CH367和zynq时,CH367使用CH367StreamSPI函数设置为四线模式,然后设置SDI为MISO,SDX为MOSI,SCS和SCL为片选和时钟
    发表于 07-03 10:10