FPGA高端项目:12G-SDI 视频编解码,提供工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 我这里已有的 GT 高速接口解决方案
    • 我目前已有的SDI编解码方案
  • 3、详细设计方案
    • 设计框图
    • UltraScale GTH 的SDI模式应用
      • UltraScale GTH 基本结构
      • 参考时钟的选择和分配
      • UltraScale GTH 发送和接收处理流程
      • UltraScale GTH 发送接口
      • UltraScale GTH 接收接口
      • UltraScale GTH IP核调用和使用
      • UltraScale GTH 控制说明
    • SMPTE UHD-SDI详解
      • SMPTE UHD-SDI 接收
      • SMPTE UHD-SDI 发送
      • SMPTE UHD-SDI IP核调用和使用
    • 12G-SDI 接收数据处理
    • 发送数据彩条
    • 视频输出
  • 4、vivado工程详解
    • FPGA 逻辑设计
    • Vitis SDK 软件设计
  • 5、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 6、上板调试验证
    • 准备工作
    • 输出静态演示
  • 7、福利:工程代码的获取

FPGA高端项目:12G-SDI 视频编解码,提供工程源码和技术支持

1、前言

Xilinx系列FPGA实现SDI视频编解码目前有两种方案:
一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCRCB,GS2972发送器直接将并行的YCRCB编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的价格;另一种方案是使用FPGA实现编解码,利用FPGA的GTP/GTX/GTH/UltraScale GTH等资源实现解串,优点是合理利用了FPGA资源,缺点是操作难度大一些,对FPGA水平要求较高;UltraScale GTH 适用于Xilinx UltraScale系列的FPGA上,包括Virtex UltraScale、Kintex UltraScale、Zynq® UltraScale等器件,在UltraScale系列之下只有GTH,而UltraScale GTH相比于GTH,线速率更高,支持协议类型更多,功耗更低,带宽更高;同样的,Xilinx也提供了SDI视频编解码的专用IP,比如SMPTE UHD-SDI,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码;

本文使用Xilinx的7系列Kintex7 UltraScale xcku040-ffva1156-2-e型号的FPGA实现12G-SDI 视频编解码;本设计分为12G-SDI 视频编码和12G-SDI 视频解码两部分,即12G-SDI 视频发送和接收,两个部分功能做在一个工程里;12G-SDI 视频接收过程为:输入摄像头为标准的12G-SDI摄像头,然后接入专用的SDI转接板,接口为FMC,转接板插在FPGA开发板的FMC接口上;然后调用Xilinx官方UltraScale GTH IP进行SDI视频解串,将高速串行的SDI视频解为并行数据,IP配置为GTH-12G_SDI模式,该模式专门用于12G-SDI视频协议的解串与串化;然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码,该IP在Kintex7 UltraScale器件上只支持3G-SDI、6G-SDI和12G-SDI的编解码,本设计配置为12G-SDI-8DS模式;到这里,12G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;12G-SDI 视频发送过程为:纯verilog实现的静态彩条作为视频源,然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频编码,该IP在Kintex7 UltraScale器件上只支持3G-SDI、6G-SDI和12G-SDI的编解码,本设计配置为12G-SDI-8DS模式,这个过程是接收过程的逆过程;然后调用Xilinx官方UltraScale GTH IP进行SDI视频串化,将并行的SDI视频数据串化为高速串行数据,IP配置为GTH-12G_SDI模式,该模式专门用于12G-SDI视频协议的解串与串化,这个过程是接收过程的逆过程;然后将视频信号送入SDI转接板发送出去,我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;本方案提供1套vivado2022.2版本的FPGA工程源码;

本博客详细描述了Xilinx的7系列Kintex7 UltraScale xcku040-ffva1156-2-e型号的FPGA实现12G-SDI 视频编解码的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我这里已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

我目前已有的SDI编解码方案

我的博客主页开设有SDI视频专栏,里面全是FPGA编解码SDI的工程源码及博客介绍;既有基于GS2971/GS2972的SDI编解码,也有基于GTP/GTX资源的SDI编解码;专栏地址链接:点击直接前往

3、详细设计方案

本文使用Xilinx的7系列Kintex7 UltraScale xcku040-ffva1156-2-e型号的FPGA实现12G-SDI 视频编解码;本设计分为12G-SDI 视频编码和12G-SDI 视频解码两部分,即12G-SDI 视频发送和接收,两个部分功能做在一个工程里;12G-SDI 视频接收过程为:输入摄像头为标准的12G-SDI摄像头,然后接入专用的SDI转接板,接口为FMC,转接板插在FPGA开发板的FMC接口上;然后调用Xilinx官方UltraScale GTH IP进行SDI视频解串,将高速串行的SDI视频解为并行数据,IP配置为GTH-12G_SDI模式,该模式专门用于12G-SDI视频协议的解串与串化;然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码,该IP在Kintex7 UltraScale器件上只支持3G-SDI、6G-SDI和12G-SDI的编解码,本设计配置为12G-SDI-8DS模式;到这里,12G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;12G-SDI 视频发送过程为:纯verilog实现的静态彩条作为视频源,然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频编码,该IP在Kintex7 UltraScale器件上只支持3G-SDI、6G-SDI和12G-SDI的编解码,本设计配置为12G-SDI-8DS模式,这个过程是接收过程的逆过程;然后调用Xilinx官方UltraScale GTH IP进行SDI视频串化,将并行的SDI视频数据串化为高速串行数据,IP配置为GTH-12G_SDI模式,该模式专门用于12G-SDI视频协议的解串与串化,这个过程是接收过程的逆过程;然后将视频信号送入SDI转接板发送出去,我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;本方案提供1套vivado2022.2版本的FPGA工程源码;

设计框图

本设计参考了Xilinx官方设计文档,官方的参考设计框图如下:
在这里插入图片描述
具体到本工程详细设计方案框图如下:
在这里插入图片描述

UltraScale GTH 的SDI模式应用

关于UltraScale GTH介绍最详细的肯定是Xilinx官方的《ug576-ultrascale-gth-transceivers》,我们以此来解读:《ug576-ultrascale-gth-transceivers》的PDF文档我已放在了资料包里,文章末尾有获取方式;我用到的开发板FPGA型号为Kintex7 UltraScale xcku040-ffva1156-2-e;UltraScale GTH的收发速度为 500 Mb/s 到 16.375 Gb/s 之间,比GTH高出3G;UltraScale GTH收发器支持不同的串行传输接口或协议,比如 PCIE 1.1/2.0 接口、万兆网 XUAI 接口、OC-48、串行 RapidIO 接口、 SATA(Serial ATA) 接口、数字分量串行接口(SDI)等等;

工程调用UltraScale GTH配置为GTH-12G_SDI模式,该模式专门用于12G-SDI视频协议的解串与串化;代码位置如下:
在这里插入图片描述
UltraScale GTH基本配置如下:板载差分晶振148.5M,线速率配置为11.88G,协议类型配置为GTH-12G_SDI
,编解码模式为RAW,内部数据位宽为40bit,如下;
在这里插入图片描述
还有其他的配置选项,比如勾选DRP动态配置接口等,具体请参考工程;

UltraScale GTH 基本结构

Xilinx 以 Quad 来对串行高速收发器进行分组,四个串行高速收发器和一个 COMMOM(QPLL)组成一个 Quad,每一个串行高速收发器称为一个 Channel(通道),下图为UltraScale GTH 收发器在Kintex7 UltraScale FPGA 芯片中的示意图:《ug576-ultrascale-gth-transceivers》第19页;
在这里插入图片描述
在 Ultrascale/Ultrascale+架构系列的 FPGA 中,GTH 高速收发器通常使用 Quad 来划分,一个 Quad 由四个GTHE3/4_CHANNEL 原语和一个 GTHE3/4_COMMON 原语组成。每个GTHE3/4_COMMON 中包含两个 LC-tank pll(QPLL0 和 QPLL1)。只有在应用程序中使用 QPLL 时,才需要实例化 GTHE3/4_COMMON。每个 GTHE3/4_CHANNEL 由一个 channel PLL(CPLL)、一个 transmitter,和一个 receiver 组成。一个参考时钟可以直接连接到一个 GTHE3/4_CHANNEL 原语,而不需要实例化 GTHE3/4_COMMON;

Ultrascale GTH 收发器的发送端和接收端功能是相互独立,都是由 Physical Media Attachment(物理媒介适配层 PMA)和Physical Coding Sublayer(物理编码子层 PCS)组成。PMA 内部集成了串并转换(PISO)、预加重、接收均衡、时钟发生器和时钟恢复等;PCS 内部集成了GTH-3G-SDI、弹性缓冲区、通道绑定和时钟修正等,每个 GTHE3/4_CHANNEL源语的逻辑电路如下图所示:《ug576-ultrascale-gth-transceivers》第20页;
在这里插入图片描述
这里说多了意义不大,因为没有做过几个大的项目是不会理解这里面的东西的,对于初次使用或者想快速使用者而言,更多的精力应该关注IP核的调用和使用,后面我也会重点将到IP核的调用和使用;

参考时钟的选择和分配

UltraScale 器件中的 GTH 收发器提供了不同的参考时钟输入选项。参考时钟选择架构支持 QPLL0、QLPLL1 和CPLL。从架构上讲,每个 Quad 包含四个 GTHE3/4_CHANNEL 原语,一个 GTHE3/4_COMMON 原语,两个专用的外部参考时钟引脚对,以及专用的参考时钟路由。如果使用到了高性能 QPLL,则必须实例化 GTHE3/4_COMMON,如下面 GTHE3/4_COMMON 时钟多路复用器结构的详细视图所示,(《ug576-ultrascale-gth-transceivers》第33页)在一个 Quad 中有 6 个参考时钟引脚对,两个本地参考时钟引脚对:GTREFCLK0或GTREFCLK1,两个参考时钟引脚对来自上面的两个Quads:GTSOUTHREFCLK0或 GTSOUTHREFCLK1,两个参考时钟引脚对来自下面的两个 Quads: GTNORTHREFCLK0 或GTNORTHREFCLK1。
在这里插入图片描述
由下图可知,这个 GTHE3/4_COMMON 就是一个基准时钟选择器,用来选择不同来源的时钟作为收发器的基准时钟。GTHE3/4_COMMON 支持 7 种基准时钟源的选择。当然,一般来说,性能最好的基准时钟源就是最近的这个 Quad 自身的 refclk,也就是 GTREFCLK00 和 GTREFCLK10。在高清视频传输中,美国、加拿大等使用 NTSC 标准,基准时钟为 148.35MHZ、74.176MHZ。中国、德国等国家采用的 PAL 标准,基准时钟为 148.5MHZ 和 74.25MHZ。在高清视频领域,这两者的差别只在于基准时钟,而视频时序都是相同的。这也造成了在设备上我们经常看到两种帧率,如 60hz 和 59.94hz。所以本设计GTH的参考时钟为差分148.5M;

UltraScale GTH 发送和接收处理流程

首先用户逻辑数据经过GTH-12G_SDI*模式解串后,进入一个发送缓存区(Phase Adjust FIFO),该缓冲区主要是 PMA 子层和 PCS 子层两个时钟域的时钟隔离,解决两者时钟速率匹配和相位差异的问题,最后经过高速 Serdes 进行并串转换(PISO),有必要的话,可以进行预加重(TX Pre-emphasis)、后加重。值得一提的是,如果在 PCB 设计时不慎将 TXP 和 TXN 差分引脚交叉连接,则可以通过极性控制(Polarity)来弥补这个设计错误。接收端和发送端过程相反,相似点较多,这里就不赘述了,需要注意的是 RX 接收端的弹性缓冲区,其具有时钟纠正和通道绑定功能。这里的每一个功能点都可以写一篇论文甚至是一本书,所以这里只需要知道个概念即可,在具体的项目中回具体用到,还是那句话:对于初次使用或者想快速使用者而言,更多的精力应该关注IP核的调用和使用。

UltraScale GTH 发送接口

《ug576-ultrascale-gth-transceivers》的第104到179页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲UltraScale GTH例化时留给用户的发送部分需要用到的接口;
在这里插入图片描述
用户只需要关心发送接口的时钟和数据即可,UltraScale GTH例化模块的这部分接口如下:该文件名为例化GTH后官方生成的供例化的文件;
在这里插入图片描述

UltraScale GTH 接收接口

《ug576-ultrascale-gth-transceivers》的第181到314页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲UltraScale GTH 例化时留给用户的发送部分需要用到的接口;
在这里插入图片描述
用户只需要关心接收接口的时钟和数据即可,UltraScale GTH例化模块的这部分接口如下:该文件名为例化GTH后官方生成的供例化的文件;
在这里插入图片描述

UltraScale GTH IP核调用和使用

UltraScale GTH基本配置如下:板载差分晶振148.5M,线速率配置为11.88G,协议类型配置为GTH-12G_SDI*,编解码模式为RAW,内部数据位宽为40bit,如下;
在这里插入图片描述
在这里插入图片描述
为了适应多种SD模式,需要对GTH做变速和复位操作,所以需要打开DRP接口,如下:
在这里插入图片描述
更多GTH配置细节请参考vivado工程;

UltraScale GTH 控制说明

这是GTH-3G-SDI模式的UltraScale GTH才有的模块文件;为了适应三种SD-SDI、HD-SDI 和 3G-SDI 不同模式,需要对GTH做变速和复位操作,主要通过DRP接口完成,为此,使用了Xilinx官方的参考代码,UltraScale GTH 控制部分代码如下:
在这里插入图片描述
UltraScale GTH 控制模块包含以下几种功能:1、用于控制 GTH 收发器的复位逻辑;2、允许 RX 和 TX 串行分频器进行动态切换,以支持多种SDI模式;3、TX 参考时钟的动态切换,用以支持多种SDI的比特率;4、数据恢复单元,用于以 SD-SDI 模式下恢复数据;5、RX 比特率检测,以确定接收器正在接收整数帧速率信号还是分数帧速率信号。
详细请参考代码;

SMPTE UHD-SDI详解

调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码与编码,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码,本设计配置为12G-SDI模式;根据官方手册,SMPTE UHD-SDI数据收发架构如下:
在这里插入图片描述

SMPTE UHD-SDI 接收

SMPTE UHD-SDI 接收端的框图如下:
在这里插入图片描述
来自串行收发器 RX 的数据通过 rx_data_in 端口进入 SMPTE UHD-SDI接收器,对于 SD、HD 和 3G 模式,每个时钟周期 20 位;对于 6G 和 12G 模式,每个时钟周期 40 位。在 SD 模式下,rx_data_in 上的 20 位数据转到 DRU (data recovery unit), DRU 从 11 倍过采样数据中恢复 10 位数据。数据由 SDI解扰器解扰,然后由 SDI 成帧器进行字对齐。之后就是同步位恢复功能。 此功能可还原由变送器修改的 3FF 和 000值,以减少 6G 和 12G-SDI 模式下的运行长度。这三个模块以全 rx_clk 速度运行,并根据 SDI 模式在每个时钟周期处理 40、20 或 10 位数据。 数据进入 stream demux,该 demux 确定有多少数据流交织在一起,然后在单独的数据路径上分离每个数据流,最多支持 16 个数据流。每路数据流进入一个处理单元,该单元进行 CRC 错误检查、行号捕获和 ST 352 包捕获。还可以从 stream demux 中
提取视频时序并产生 rx_eav,rx_sav 和 rx_trs 时序信号。这些时序信号由 SDI 模式检测并给传输检测模块使用。

SMPTE UHD-SDI 发送

SMPTE UHD-SDI 发射端的框图如下:
在这里插入图片描述
SMPTE UHD-SDI最多可以支持 16 路 SDI 数据流,数据流首先通过 ST 352 插入模块,可以有选择地插入 ST 352 有效负载 ID 数据包,从 ST 352 插入模块输出的数据流称为 tx_ds1_st352_out 至tx_ds16_st352_out。输出这些流可以方便用户在 ST 352 数据包后插入辅助数据。 发送器的其余部分可以直接使用ST 352 数据包插入模块输出的流,也可以使用 16 个 tx_ds1_anc_in 到 tx_ds16_anc_in 数据流。请注意,如果使用tx_dsn_anc_in 数据流,则它们必须是完整的 SDI 数据流,而不仅仅是辅助数据。通常情况下,每个 Y/C 数据流对的 Y 数据流中只插入 ST 352 包。而在 3G-SDI level A mode-only 模式下,数据流 1 和数据流 2 都必须插入 ST 352 报文。然后每对 Y / C 数据流经过一个数据流处理模块,该模块可以进行进行行号插入和 CRC 生成及插入。在流处理之后,数据流被 MUX 交织,形成 40、20 或 10 位宽的多路复用 SDI 数据流。然后,由 SDI 加扰器对多路复用的数据流进行加扰。最后,数据在 tx_txdata 端口上输出到对应的串行收发器。

SMPTE UHD-SDI IP核调用和使用

SMPTE UHD-SDI配置界面很简单,本设计配置为3G-SDI模式,如下:
在这里插入图片描述
SMPTE UHD-SDI的使用请参考工程代码,因为接口很多,这里写不下;

12G-SDI 接收数据处理

到这里,12G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;开发者可以通过ILA观察SDI接收数据的正确性,在此基础上可以做后续处理;

发送数据彩条

发送数据彩条由纯verilog实现,为静态彩条,作为12G-SDI视频发送的数据源,代码位置截图如下:
在这里插入图片描述

视频输出

经过前面一顿操作,SDI输入视频解码后再编码,到这里又变成了高速差分视频,利用一个SDI转HDMI盒子将输出的SDI视频转换为HDMI视频,这样就可以输出显示器显示了;SDI转HDMI盒子某宝有卖,大概一两百的样子;

4、vivado工程详解

FPGA 逻辑设计

开发板FPGA型号:Xilinx–Kintex7 UltraScale xcku040-ffva1156-2-e;
开发环境:Vivado2022.2;
输入:12G-SDI摄像头;
输出:12G-SDI彩条;
FPGA高端项目:12G-SDI 视频编解码;
Block Design设计如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

Vitis SDK 软件设计

Vitis SDK 软件设计的作用是配置FMC转接板,如果你的12G-SDI硬件方案没有转接板或者不需要配置相关芯片,则不需要SDK软件的参与;Vitis SDK 软件设计代码架构如下:
在这里插入图片描述

5、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

6、上板调试验证

准备工作

FPGA开发板;
12G-SDI相机;
BNC转SMA同轴线;
SDI转HDMI盒子;
HDMI显示器;

输出静态演示

接收端,12G-SDI 视频输入解码后 ILA 波形如下:
在这里插入图片描述
发送端,12G-SDI 静态彩条视频输出如下:
在这里插入图片描述

7、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法:归并排序

数据结构与算法:归并排序 归并思想递归法非递归 归并思想 在讲解归并排序前,我们先看到一个问题: 对于这样两个有序的数组,如何将它们合并为一个有序的数组? 在此我们处理这个问题的思路就是:开辟一个新的…

ATA-1222A宽带放大器在二极管测试中的应用有哪些

宽带放大器是一种用于放大高频信号的电子设备,它在二极管测试中有多种应用。下面安泰电子将介绍宽带放大器在二极管测试中的几种常见应用。 宽带放大器可以用于二极管参数测试。二极管是一种常见的半导体器件,有正向电压-电流特性和反向电压-电流特性。为…

【2.5操作系统】数据传输控制方式

目录 1.输入输出技术2.IO设备管理软件 1.输入输出技术 cpu控制(主存/外设)进行数据交互的过程。 中断处理操作过程: 例题一: 解析: 第一问:选D。中断需要cpu发送中断指令。 例题二: 解析: 第…

css-实现溢出内容转换为...格式

代码:overflow: hidden; text-overflow: ellipsis; overflow: hidden;//当容器中的内容超出容器的尺寸时,将隐藏超出部分而不显示滚动条。 display: -webkit-box;//使用WebKit引擎的浏览器(如Chrome和Safari)中,将容器…

AI数字人短视频变现项目:打造短视频运营变现新模式

随着社交媒体和短视频平台的兴起,越来越多的人开始关注如何将短视频变现。在这个时代,创新和科技成为了推动变现模式发展的关键。AI数字人作为一种全新的创新形式,正在迅速进入人们的视野。本文将介绍AI数字人短视频变现项目,以及…

Mysql 安装通过mysql installer安装+配置环境+连接可视化工具

注意:不适合纯小白,小白建议移步别的大佬MySQL详细安装教程 目录 注意:不适合纯小白,小白建议移步别的大佬MySQL详细安装教程 前言 准备工作 一、Mysql下载 二、MySQL installer 安装以及系统环境配置 三、检验MySQL 四、可…

抖店商家怎么维护好与达人关系?2024新版维护达人思路方法

我是王路飞。 当你找到达人给你带货,且积累了一些达人资源之后,就需要维护好与达人的关系了。 毕竟找达人带货玩法的好处,就是长期稳定,他能给你带来持续的收益。 那么抖店商家应该如何维护好与达人的关系呢? 这篇…

【Python笔记】pip intall -e命令:让你的工程直接使用开源包的源码,可断点调试,修改源码!

最近学习MetaGPT,用到了 pip install -e . 安装命令,这个安装命令是从源代码安装包。 从源代码安装包有几个好处: 包内的代码是可见的,是白盒,不是黑盒,可以直接在项目中看源码断点调试可以直接断到源码里…

HCIA——10实验:跨路由转发。静态路由、负载均衡、缺省路由、手工汇总、环回接口。空接口与路由黑洞、浮动静态。

学习目标: 跨路由转发、负载均衡、环回接口、手工汇总、缺省路由、空接口与路由黑洞、浮动静态 学习内容: 跨路由转发静态路由、负载均衡、缺省路由、手工汇总。环回接口空接口与路由黑洞、浮动静态 目录 学习目标: 学习内容&#xff1a…

无/自监督去噪(1)——一个变迁:N2N→N2V→HQ-SSL

目录 1. 前沿2. N2N3. N2V——盲点网络(BSNs,Blind Spot Networks)开创者3.1. N2V实际是如何训练的? 4. HQ-SSL——认为N2V效率不够高4.1. HQ-SSL的理论架构4.1.1. 对卷积的改进4.1.2. 对下采样的改进4.1.3. 比N2V好在哪&#xff…

电影《潜行》中说的蜜罐是什么(网络安全知识)

近期刘德华、彭于晏主演的电影《潜行》在网上掀起了轩然大波,电影中有提到网络蜜罐,这引起了很多观众的疑问,蜜罐到底是什么? 从字面意思上来看,蜜罐就是为黑客设下的诱饵。这是一种具有牺牲性质的计算机系统&#xff…

即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器板

OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由器板。OpenWrt 是一个轻量级嵌入式 Linux 操作系统,支持近 1,800 个路由器和其他设备。然而,这将是第一块由 OpenWrt 直接开发的路由器板。 该主板将基于 MediaTek MT7981B (Filogic 82…

Linux下的shell命令执行set -ex 错误

shell脚本: #!/bin/bashset -exexport GOPATH/go ...(略)执行命令报错: $ ./build.sh : invalid option 2: set: - set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] ./build.sh: line 3: $\r: command not found ./build.sh: l…

.NET国产化改造探索(三)、银河麒麟安装.NET 8环境

随着时代的发展以及近年来信创工作和…废话就不多说了,这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来,看操作。 上一篇介绍了如何在银河麒麟操作系统上安装人大金仓数据库,这篇文章详细介绍下在银河麒麟操作系统上安装.NET8环境。…

JS-var 、let 、 const使用介绍

变量声明介绍 在我们日常开发用,变量声明有三个 var、 let 和 const,我们应该用那个呢? 首先var 先排除,老派写法,问题很多,可以淘汰掉…let or const ?建议: const 优先,尽量使…

GPT-4 现在是否已经足够划算?

我通常使用 GPT 的方式是,先用 GPT-4 来快速搭建一个原型,然后不断优化,直到解决方案能够在 GPT-3.5 模型上运行。 这个方法在我的实践中非常高效,它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使…

Unity3D学习之UI系统——GUI

文章目录 1. 前言2. 工作原理和主要作用3. 基础控件3.1 重要参数及文本和按钮3.1.1 GUI 共同点3.1.2 文本控件3.1.3 按钮控件 3.2 多选框和单选框3.2.1 多选框3.2.2 单选框3.2.3 输入框3.2.4 拖动条 3.3 图片绘制和框3.3.1 图片3.3.2 框绘制 4 工具栏和选择网格4.1 工具栏4.2 选…

JWT 入门级教程

下面内容参考文章JWT详细讲解(保姆级教程)-阿里云开发者社区 (aliyun.com) 1.什么是JWT? JSON Web Token(JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且独立的方式,用于作为 JSON 对象在…

Angular系列教程之路由守卫

文章目录 前言路由守卫的类型CanLoadCanActivateCanActivateChildCanDeactivateResolve总结 前言 在Angular中,路由守卫是一个非常有用的功能,可以帮助我们控制用户在导航过程中的权限和访问限制。通过使用路由守卫,我们可以拦截导航并根据需…

python PyQt5的学习

一、安装与配置 1、环境: python3.7 2、相关模块 pip install pyqt5 pyqt5-tools pyqt5designer 可以加个镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple3、配置设计器 python的pyqt5提供了一个设计器,便于ui的设计 界面是这样的&#xff1a…