xilinx-pg243 AI翻译

文档版本:

Video Mixer v5.2

Vivado Design Suite

PG243 January 2, 2024

IP Facts

Introduction

AMD LogiCORE™ IP Video Mixer core提供了一个灵活的视频处理模块,用于进行alpha混合和合成多个视频 和/或 图形层。支持最多十七层(一个主层和十六个覆盖层),还提供了一个可选的logo层,这些图层的数据来自 memory 内存映射或 streaming 流媒体视频 cores(通过AXI4-Stream接口)的视频输入的组合。此IP核可以通过详尽的寄存器接口进行编程,以控制帧大小、背景颜色、图层位置以及AXI4-Lite接口。同时,提供了一套全面的中断状态位用于处理器监控。

Features

支持(每个像素)十七层视频/图层和logo层视频/图层的alpha混合。

可选的logo层(在块RAM中),支持颜色透明。

层可以是内存映射的AXI4接口或AXI4-Stream。

提供可编程的背景颜色

提供可编程的图层位置和大小

提供图层的放大功能,可放大1倍、2倍或4倍

可选的内置色彩空间转换和色度重新采样 

支持RGB、YUV 444、YUV 422、YUV 420

在stream interface上支持8位、10位、12位和16位每颜色分量的输入和输出,在memory
interface上支持8位和10位每颜色分量

支持半平面内存格式以及打包内存格式

支持的空间分辨率从64 × 64 到 8,192 × 4,320

在所有支持的设备系列中支持8K60

        注意:在低功耗设备上的性能可能会较低

支持可编程的CSC系数以支持各种色度计,如BT601、BT709和BT2020

支持每个时钟采集1、2、4或8个样本

支持可编程的CSC(颜色空间转换)系数寄存器

1. Overview

AMD LogiCORE™ IP Video Mixer 可以从多个外部视频和/或图形源生成一个单一的输出视频流。这些源可以被动态定位、缩放,并使用alpha混合进行组合。

1.2 Feature Summary

The Video Mixer是一个高度可配置的IP核,支持将多达十七层视频和/或图形图层以及一个额外的logo图层混合成一个单一的输出视频流。除了主图层之外,所有图层可以是内存映射的AXI4接口或基于AXI4-Stream的接口。每一层都支持alpha混合(全局或每像素)和缩放功能。最后,内置的色彩空间转换在RGB与YUV 4:4:4之间是可选的,以及在YUV 4:4:4、YUV 4:2:2和YUV 4:2:0之间的色度重采样也是可选的。

Video Mixer提供了一个可选的logo图层。它将存储在块RAM中的logo混合到最顶层。可以使用可编程的颜色键来使logo的部分内容透明。此外,也可以使用alpha混合(全局或每像素)来实现logo的透明度。

Alpha混合是对两个图像层进行凸组合,以实现透明度。混合器中的每一层都有一个固定的Z平面顺序;或者从概念上讲,每一层都更接近观察者,具有不同的深度。因此,图像和直接“覆盖”在其上的图像会被混合。混合的顺序和程度可以实时编程。这可以通过全局alpha来完成,即每个像素使用相同的alpha值,或者在选择了RGBA8、BGRA8或YUVA8内存视频格式的情况下,通过每个像素的alpha值来完成。每像素alpha还支持RGBA和YUVA444流媒体视频格式。

通过像素和线条重复的方式进行缩放得到支持,能够提供1倍、2倍或4倍的图层缩放。这项功能可以用来节省由图层所使用的内存带宽,也就是说,一个内存层可以读取一个1920×1080的帧缓冲区,同时实时将其放大到3840×2160的分辨率。

Video Mixer支持每个时钟周期并行处理多个像素,从而支持超过1080p60的分辨率,并且支持多达三种颜色分量,每种颜色分量可以是8位、10位、12位或16位。

1.3 Applications

1.4 Licensing and Ordering Information

2. Product Specification

2.1 Standards

Video Mixer符合AXI4-Stream视频协议、AXI4-Lite互连和内存映射AXI4接口标准。

2.2 Performance

以下部分详细介绍了视频混合器的性能特征。

2.2.1 Maximum Frequencies

对于目标设备,以下是典型的时钟频率:
• AMD Virtex™ 7 和 AMD Virtex UltraScale™ 设备,速度等级为 –2 或更高:300 MHz
• AMD Kintex™ 7 和 AMD Kintex UltraScale™ 设备,速度等级为 –2 或更高:300 MHz
• AMD Artix™ 7 设备,速度等级为 –2 或更高:150 MHz
• AMD UltraScale™+ 设备,速度等级为 -1 或更高:300 MHz
• AMD Versal™ Adaptive SoC 设备,速度等级为 -1 或更高:300 MHz

最大可实现的时钟频率可能会有所变化。最大可实现的时钟频率以及所有资源计数可能会受到其他工具选项、设备中的额外逻辑、使用不同版本的 AMD 工具以及其他因素的影响。

2.2.2 Throughput

The Video Mixer支持其 AXI4-Stream 从属和主接口之间的双向数据节流。如果从属端数据源未提供有据样本(s_axis_video_tvalid 未断言),则在其内部缓冲区耗尽后,核心无法生成有效的输出样本。同样,如果主接口未准备好接受有效数据样本(m_axis_video_tready 未断言),则在其缓冲区变满后,核心将无法接受有效的输入样本。

如果主接口能够提供有效样本(s_axis_video_tvalid 为高),并且从属接口准备好接受有效样本(m_axis_video_tready 为高),通常情况下,核心可以根据 AMD Vivado™ 集成设计环境(IDE)中的每个 ap_clk 周期的 Samples Per Clock 参数,处理并生成一、两、四或八个像素。

然而,在每条扫描线和帧结束时,核心会清空内部流水线,持续几个时钟周期,在此期间 s_axis_video_tready 被取消断言,表示核心尚未准备好处理样本。

当Video Mixer处理定时流式视频(这在大多数视频源中是典型的)时,刷新周期与消隐期重合,因此不会降低系统的吞吐量。

对于流式视频源(即非帧缓冲数据),视频混合器必须以最小的突发数据速率运行。例如,对于 IP 的每个时钟周期一个样本的配置,对于 1080p60 视频源,数据速率为 148.5 MHz。对于 4K 60 fps 视频源,核心必须在每个时钟周期两个样本的配置下以 297 MHz 运行,或者对于 AMD Artix™ 7 等较慢的设备,以每个时钟周期四个样本的配置下以 148.5 MHz 运行。

2.3 Resource Utilization

有关视频混合器性能和资源利用的详细信息,请访问性能和资源利用网页。

2.4 Port Descriptions

视频混合器使用行业标准的控制和数据接口与其他系统组件进行连接。以下各节介绍了核心所提供的各种接口。图2-1显示了视频混合器的输入输出图。在此配置中,IP 具有10个AXI接口:

• AXI4-Lite control interface (s_axi_CTRL)
• AXI4-Stream streaming video output (m_axis_video)
• AXI4-Stream streaming video input (s_axis_video, s_axis_video1, etc.)
• Memory mapped AXI4 interface (m_axi_mm_video4, m_axi_mm_video5, etc.).

接口会根据层的数量和层类型(流式或基于内存)而改变。例如,图2-2显示了视频混合器 IP 的最小配置,仅包含一个主层和一个标志层。

2.4.1 Common Interface Signals

表2-1总结了由专用的AXI4-Stream、内存映射的AXI4数据或AXI4-Lite控制接口共享或不包含在内的信号。

ap_clk 和 ap_rst_n 信号在核心、AXI4-Stream、内存映射的AXI4数据接口以及AXI4-Lite控制接口之间共享。

ap_clk
AXI4-Stream、内存映射的AXI4和AXI4-Lite接口必须与核心时钟信号ap_clk同步。所有AXI4-Stream、内存映射的AXI4接口输入信号和AXI4-Lite控制接口输入信号在ap_clk的上升沿采样。所有AXI4-Stream输出信号的更改发生在ap_clk的上升沿之后。

ap_rst_n
ap_rst_n引脚是一个与AXI4-Lite、AXI4-Stream和内存映射的AXI4接口相关的低电平有效的同步复位输入。当ap_rst_n设置为0时,核心将在下一个ap_clk的上升沿进行复位。

interrupt
中断状态输出总线可以与外部中断控制器集成,该控制器具有独立的中断使能/屏蔽、中断清除和中断状态寄存器,从而可以对系统处理器进行中断聚合。

2.4.2 AXI4-Stream Video Interface

无论以何种配置,视频混合器都具有名为 s_axis_video 和 m_axis_video 的AXI4-Stream视频输入和输出接口。对于每个额外的流式层,还有一个名为 s_axis_videoi 的额外AXI4-Stream视频输入,其中 i 代表层号减1。所有视频流接口均遵循AXI4-Stream视频IP和系统设计指南(UG934)[参考3]中定义的接口规范。视频AXI4-Stream接口可以是每个时钟单像素、双像素、四像素或八像素,并且可以支持每个分量8、10、12或16位。流接口配置(每时钟采样数和每分量位数)在IP级别选择,并适用于AXI4-Stream接口的所有实例。

表2-2到表2-6解释了所有支持的颜色格式中,具有每时钟2个像素和每分量10位配置的AXI4-Stream接口的像素映射。鉴于视频混合器始终需要至少三个分量视频的硬件配置,因此需要AXI4-Stream子集转换器来与YUV 4:2:2、4:2:0或仅亮度的其他1个或2个分量视频接口的IP进行通信。

表2-7显示了输入和输出AXI4-Stream视频流接口的接口信号。

2.4.3 Memory Mapped AXI4 Interface

对于每个内存层,都有一个名为 m_axi_mm_videoi 的内存映射AXI4接口,其中 i 代表层号减1。内存映射的AXI4接口在ap_clk时钟域上运行。这些信号遵循Vivado Design Suite:AXI参考指南(UG1037)中定义的规范。表2-8显示了视频混合器支持的内存中的像素格式。

video 格式 P14-P18 不再翻译

2.4.4 AXI4-Lite Control Interface

AXI4-Lite接口允许您在核心内动态控制参数。配置可以使用AXI4-Lite主状态机、嵌入式ARM®或软系统处理器(如AMD MicroBlaze™)来完成。通过Vitis驱动程序提供的功能,可以使用AXI4-Lite接口来控制视频混合器。另一种方法是对寄存器空间执行读写事务,但仅在第一种方法不可用时才应使用。表2-9显示了AXI4-Lite控制接口信号。此接口在ap_clk时钟上运行。

2.5 Register Space (P19-P30 不再翻译)

2.5.1 Top-Level Registers

2.5.2 CSC Coefficient Registers

2.5.3 Layer Registers

2.5.4 Logo Layer Registers

3. Design Flow Steps

本章描述了定制和生成核心、约束核心以及针对该IP核心的仿真、综合和实现步骤。关于标准AMD Vivado™设计流程和IP集成器的更详细信息,请参阅以下Vivado Design Suite用户指南:
• Vivado Design Suite用户指南:使用IP集成器设计IP子系统(UG994)[Ref 4]
• Vivado Design Suite用户指南:使用IP设计(UG896)[Ref 5]
• Vivado Design Suite用户指南:入门指南(UG910)[Ref 6]
• Vivado Design Suite用户指南:逻辑仿真(UG900)[Ref 7]

3.1 Customizing and Generating the Core

本节包含使用AMD工具在Vivado Design Suite中自定义和生成核心的信息。

如果您正在Vivado IP集成器中进行核心的定制和生成,请参阅Vivado Design Suite用户指南:使用IP集成器设计IP子系统(UG994)[Ref 4]以获取详细信息。IP集成器在验证或生成设计时可能会自动计算某些配置值。要检查这些值是否有变化,请参阅本章节中参数的描述。要查看参数值,请在Tcl控制台中运行validate_bd_design命令。

您可以通过以下步骤为与IP核心相关的各种参数指定值,以自定义用于您的设计的IP:

1. 在Vivado设计中打开IP Integrator。
2. 选择您要自定义的IP核心实例。
3. 在属性面板中找到与该IP核心相关的参数。
4. 对于每个参数,指定所需的值。
5. 完成参数设置后,保存并生成设计。

通过这些步骤,您可以根据需要自定义IP核心,并将其应用到您的设计中。

1. 从Vivado IP目录中选择IP。
2. 双击所选IP,或者从工具栏或右键菜单中选择“定制IP”命令。

有关详细信息,请参阅Vivado Design Suite用户指南:使用IP设计(UG896)[Ref 5]和Vivado Design Suite用户指南:入门指南(UG910)[Ref 6]。

注意:本章中的图示是Vivado集成设计环境(IDE)的示意图。此处描绘的布局可能与当前版本有所不同。

3.1.1 Interface

视频混合器通过Vivado Design Suite进行配置,以满足您的特定需求。本节提供了在生成时可以配置的参数的快速参考。

以下图示显示了Video Mixer Vivado IDE的主配置屏幕。

3.1.1.1 General Settings

以下设置通常适用:

- Component Name:组件名称用作为模块生成的输出文件的基本名称。名称必须以字母开头,并且由字符a到z、0到9和"_"组成。
- Streaming Video Format:指定流输入(s_axis_video)和输出(m_axis_video)AXI4-Stream接口上的视频格式。可能的格式包括RGB、YUV 4:4:4、YUV 4:2:2或YUV 4:2:0。
  注意:视频格式是在构建时选择的,无法在运行时更改。
- Samples Per Clock:指定每个时钟周期处理的像素数。允许的值为每个时钟周期的一个、两个、四个和八个样本。此参数确定IP的吞吐量。每个时钟周期中的样本数越多,提供的吞吐量越大。更大的吞吐量总是需要更多的硬件资源。
  注意:此属性适用于所有具有流接口的层。
- Maximum Data Width:指定所有流接口上输入和输出样本的位宽。允许的值为8、10、12和16位。
  注意:此属性适用于所有具有流接口的层。
- Maximum Number of Columns:指定IP核在运行时可以产生的最大活动视频列/像素数。任何小于最大列数的视频宽度都可以通过AXI4-Lite控制接口进行编程,而无需重新生成核心。
- Maximum Number of Rows:指定IP核在运行时可以产生的最大活动视频行/行数。任何小于最大行数的视频高度都可以通过AXI4-Lite控制接口进行编程,而无需重新生成核心。
- Address Width:指定用于存储层AXI主接口的地址宽度,可以是32位或64位。
- Number of Overlay Layers:指定叠加层数,最少为一层,最多为16层。在GUI中将此参数选择为0时,仅主图层处于活动状态,默认情况下启用徽标层,视频混合器实质上是一个徽标叠加功能。
- Enable CSC Coefficient Registers器:选择此参数时,将包括您可以编程的所有CSC系数寄存器。

3.1.1.2 Layer Settings

以下设置适用于可选的覆盖层,ID为1至16。
-Layer ID:标识层ID。
-Video Format:指定每个层的视频格式。可能的格式包括RGB、YUV 4:4:4、YUV 4:2:2、YUV 4:2:0、RGBA、YUVA444等,如果层接口类型为流式,则还包括RGBX8、BGRX8、YUVX8、RGBA8、BGRA8、YUVA8、YUYV8、UYVY8、RGBX10、YUVX10、RGB565、Y_UV8、Y_UV8_420、RGB8、BGR8、YUV8、Y_UV10、Y_UV10_420、Y8、Y10等。
  注意:视频格式在构建时选择,无法在运行时更改。
-Enable Global Alpha:选中后,启用该层与下方层的Alpha混合。Alpha值需要通过AXI4-Lite控制接口在运行时进行编程。
  注意:如果为层选择了每像素Alpha格式中的任何一种,则全局Alpha会自动启用。
-Enable Scaling:选中后,启用该层的缩放。缩放因子(1x、2x或4x)需要通过AXI4-Lite控制接口在运行时进行编程。
-Line Buffer Width:仅在为层启用缩放时启用,指定在缩放之前此层的最大宽度。在块RAM中分配具有该维度的行缓冲区,以允许通过行重复进行缩放。宽度必须是样本每时钟周期设置的倍数。
  注意:行缓冲宽度的最大支持值为4096。默认情况下,设置值为1920。如果启用了缩放,行缓冲宽度 * 缩放因子 <= Min(4096,最大列数)
-Interface Type:确定层是内存层还是流式层。内存层具有内存映射的AXI4接口,而流式层具有AXI4-Stream接口。

3.1.1.3 Logo Layer Settings

以下设置适用于可选的标志层:
- Enable Logo Layer:选择后,将包括标志层。块RAM用于按照尺寸设置存储标志的像素。标志限制为每个颜色分量八位,并且始终需要格式化为RGB。
-Maximum Number of Columns for Logo:指定标志的最大像素宽度。宽度必须是样本每时钟周期设置的倍数。此设置会影响块RAM的利用率。
-Maximum Number of Rows for Logo:指定标志的最大行高。此设置会影响块RAM的利用率。
-Enable Logo Transparency Color:选择后,允许对指定的颜色关键进行透明处理,可在运行时进行编程。
-Enable Logo Per Pixel Alpha:选择后,为标志添加每像素Alpha混合功能。

3.1.2 User Parameters

3.1.3 Output Generation

请参阅《Vivado设计套件用户指南:IP设计(UG896)》[参考文献5]获取详细信息。

3.2 Constraining the Core 

这一部分包含了有关在Vivado设计套件中对核心进行约束的信息。

3.2.1 Required Constraints

这节内容不适用于此IP核。

3.2.2 Device, Package, and Speed Grade Selections

这节内容不适用于此IP核。

3.2.3 Clock Frequencies

这节内容不适用于此IP核。

3.2.4 Clock Management

这节内容不适用于此IP核。

3.2.5 Clock Placement

这节内容不适用于此IP核。

3.2.6 Banking

这节内容不适用于此IP核。

3.2.7 Transceiver Placement

这节内容不适用于此IP核。

3.2.8 I/O Standard and Placement

这节内容不适用于此IP核。

3.3 Simulation

有关Vivado仿真组件的详细信息以及使用支持的第三方工具的信息,请参阅《Vivado设计套件用户指南:逻辑仿真(UG900)》[参考文献7]。

3.4 Synthesis and Implementation

有关综合和实现的详细信息,请参阅《Vivado设计套件用户指南:IP设计(UG896)》[参考文献5]。

4. Designing with the Core

本章包括指南和额外信息,以便更好地使用该核心进行设计。

4.1 General Design Guidelines

视频混合器支持多达17个层,其中包括一个可选的logo层,使用来自帧缓冲区(通过内存映射的AXI4接口)或流式视频核心(通过AXI4-Stream接口)的视频输入的组合。图4-1显示了视频混合器的功能模块图。作为可选的功能在AMD Vivado™集成设计环境(IDE)控制下,稍后在本节中将对其进行解释。

视频混合器始终具有一个流式输入层和一个流式输出层,也称为主层、主控层或背景层。主层与s_axis_video AXI4-Stream输入和m_axis_video AXI4-Stream输出相关联。

主层输入位于最底部,所有其他层都在其上进行混合。层之间没有可编程的Z顺序。可以通过AXI4-Lite接口在运行时禁用主层,通过清除Layer Enable(0x0040)寄存器的Bit[0]来实现。当禁用时,主层不从流式接口读取数据,而是根据Background Y或R(0x0028)寄存器,Background U或G(0x0030)寄存器以及Background V或B(0x0038)寄存器的设置生成纯色的背景。

输视频混合器的视频格式由Vivado IDE中的Video Format字段确定。由于视频混合是在RGB领域中进行的,请注意,如果所选的视频格式是YUV 4:4:4,则将按照标准BT.601进行颜色空间转换,从入到RGB,在输出时再转回YUV 4:4:4。如果所选的视频格式是YUV 4:2:2或YUV 4:2:0,则在输入和输出时会执行额外的色度重采样,从YUV 4:2:2(或YUV 4:2:0)转换为YUV 4:4:4,然后再转回。

视频混合器最多可以有17个额外的视频或图形源,每个源都可以配置为AXI4-Stream或内存映射的AXI4帧缓冲区。在使用流式层时,请记住,视频混合器通过限制传入数据来实现将流式层与主输出层同步,如果混合器尚未准备好接受这些数据,则会进行数据节流。此外,混合器没有内部缓冲区来排队传入的数据。

如果使用并启用了流式层,则混合器会尝试从该流式接口读取数据。如果没有数据存在,混合器将暂停,直到有数据出现。仅在开始在该层接收视频输入时启用层。如果IP暂停并冻结,请对核心进行硬复位(因为核心仍处于暂停状态,无论您尝试禁用该层)。

如果选择了一个内存映射的AXI4帧缓冲区作为源,则视频混合器会自动处理与内存的接口,无需额外的AXI VDMA控制器。

像主层一样,每个层都具有预定义的视频格式,可以是RGB、YUV 4:4:4、YUV 4:2:2或YUV 4:2:0。从YUV 4:2:2或YUV 4:2:0到YUV 4:4:4的可选色度重采样,以及从YUV 4:4:4到RGB的可选颜色空间转换,都是在RGB领域中进行混合时执行的。第1到第7层还可以通过Vivado IDE中的Enable Scaling字段选择是否具有缩放能力(1x、2x或4x)。缩放是通过像素和行重复来实现的,因此需要内部行缓冲区。

视频混合器提供一个可选的标志层。它将存储在块RAM中的标志混合到最顶层。可以使用可编程的颜色关键使标志的部分区域透明。此外,可以使用(逐像素)Alpha混合来实现标志的透明度。标志层还具有缩放功能(1x、2x或4x)。由于标志是从块RAM中读取的,因此不需要额外的行缓冲区。缩放是通过像素和行重复来实现的。

4.1.1 Alpha Blending

Alpha blending是将两个图像结合在一起,呈现出部分透明的外观。为了执行此合成,使用每个图层的alpha值(以及可选的每个像素的alpha值),其中包含图层内所有像素的覆盖信息。Alpha值的范围从0到1,其中0表示当前像素不对最终图像产生贡献,完全透明。1表示当前像素完全不透明。介于其中的任何值表示部分透明像素。

在应用alpha混合时,要混合的两个像素位于两个不同的图像层中。每个图层具有明确的Z轴顺序。换句话说,每个图层距离观察者更近或更远,并且具有不同的深度。因此,要混合图像像素和直接“覆盖”它的图像像素。

以下是将一个图层alpha混合到Z轴后面的图层的方程式。这个操作在概念上很简单,就是每个图层的每个颜色分量之间进行线性插值。

相同的方程式也适用于上面的下一图层,即z + 1图层。这些alpha混合操作可以通过将结果输出Component'(x, y, z)代入到Layer z + 1的方程式Component(x, y, z)中来串联在一起。这意味着将图层z与背景混合的结果成为了图层z + 1或直接位于其上方的新背景。在这种模式下,通过获取下面图层的混合结果,可以混合任意数量的图像图层。

注意:每个图层的Alpha混合是可选的,但对于Logo图层始终是启用的。如果禁用Alpha混合,像素始终作为完全不透明的叠加在底层上。

4.2 Clocking

视频混合器只有一个时钟域。所有接口,即控制器和目标AXI4-Stream视频接口以及AXI4-Lite接口,还有内存映射的AXI4接口都使用ap_clk引脚作为其时钟源。

视频混合器核心的像素吞吐量由时钟频率乘以Vivado IDE中的每时钟采样数设置定义。例如,对于ap_clk的时钟频率为300 MHz,并且每时钟两个采样的配置,视频混合器能够实现600兆像素的吞吐率,这足以处理60 Hz的4K分辨率。

4.3 Resets

视频混合器只有一个硬件复位选项,即ap_rst_n引脚。没有软件复位选项可用。外部复位脉冲需要保持至少16个或更多ap_clk周期才能复位核心。ap_rst_n信号与ap_clk时钟域同步。ap_rst_n信号会复位整个核心,包括AXI4-Lite、AXI4-Stream和内存映射的AXI4接口。

4.4 System Considerations

视频混合器必须针对实际的输入和输出图像帧大小进行配置,以正常运行。为了从图像视频流中获取帧大小信息,可以将其连接到Video In到AXI4-Stream输入和视频时序控制器。视频时序控制器中的定时检测逻辑会收集视频定时信号。视频时序控制器上的AXI4-Lite控制接口允许系统处理器读取测量的帧尺寸,并使用适当的图像尺寸对所有下游核心(例如视频混合器)进行编程。

需要考虑的另一个系统因素是视频混合器具有足够的带宽来维持正确的内存层功能。内存层所需的带宽(以MB/s为单位)可以用以下方程计算:
带宽(MB/s)= fps × height × stride
其中fps是视频混合器运行的每秒帧数,height是图层的高度(以行为单位),stride是图层的跨距(以字节为单位)。

4.5 Programming Sequence

大多数视频混合器处理参数(除了图像大小)可以在动态下进行更改,并且更改会立即生效。如果需要更改图像大小或整个系统需要重新启动,则建议禁用/复位从系统输出到系统输入的流水线化AMD IP视频核心,并从系统输出到系统输入编程/启用它们。

5. Example Design (不再翻译)

Appendix A

Appendix B

Appendix C

Appendix D

Appendix E

  • 48
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值