FPGA高端项目:UltraScale GTH + SDI 视频编解码,SDI无缓存回环输出,提供2套工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 我这里已有的 GT 高速接口解决方案
    • 我目前已有的SDI编解码方案
  • 3、详细设计方案
    • 设计框图
    • 3G-SDI摄像头
    • LMH0384均衡EQ
    • 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核调用和使用
    • FIFO缓冲
    • LMH0302SQ增强驱动
    • 视频输出
  • 4、vivado工程1:1路SDI视频编解码
  • 5、vivado工程2:4路SDI视频编解码
  • 6、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 7、上板调试验证
    • 准备工作
    • 输出演示
  • 8、福利:工程代码的获取

FPGA高端项目:UltraScale GTH + SDI 视频编解码,SDI无缓存回环输出,提供2套工程源码和技术支持

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的Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i 型号的FPGA实现UltraScale GTH + SDI 视频编解码;摄像头为标准的3G-SDI摄像头,开发板板载LMH0384芯片,SDI视频经过LMH0384起到均衡EQ的作用,也可以理解为单端转差分;然后调用Xilinx官方的UltraScale GTH IP核实现SDI视频的解串与串化,IP配置为GTH-3G-SDI模式,该模式专门用于SDI视频协议的解串与串化;然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码与编码,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码,本设计配置为3G-SDI模式;SDI视频接收流程至此已经由原始的同轴线传输的单端视频变为了并行的视频数据了,此时可以作为图像处理的输入源了,可以缓存、颜色转换、缩放等等操作,但本设计仅作回环操作,所以调用一个Xilinx官方的FIFO作为视频缓冲,然后再将视频送入SMPTE UHD-SDI做SDI视频编码,再送入UltraScale GTH做SDI视频串化,这个过程是接收过程的逆过程,此时,SDI视频又变为高速差分数据了;开发板板载LMH0302SQ芯片,高速差分的SDI视频经过LMH0302SQ起到增强驱动的作用,也可以理解为差分转单端;我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;
注意!!
注意!!
注意!!
本工程和方案只适用于Xilinx UltraScale和UltraScale+系列FPGA器件,因为用到了UltraScale GTH IP核,其他系列FPFA不包含UltraScale GTH,诸如Xilinx 的A7、K7、V7、Zynq7000系列等均不可用,遑论其他公司的FPGA;

提供2套vivado2022.2版本的FPGA工程源码,两套工程的区别在于SDI摄像头的路数,第一套工程只用到了1路SDI摄像头做回环;第二套工程用到了4路SDI摄像头做回环;详情如下:

vivado工程11路SDI输入,回环后1路SDI输出;
vivado工程24路SDI输入,回环后4路SDI输出;

本博客详细描述了Xilinx的Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i 型号的FPGA实现UltraScale GTH + 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的Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i 型号的FPGA实现UltraScale GTH + SDI 视频编解码;摄像头为标准的3G-SDI摄像头,开发板板载LMH0384芯片,SDI视频经过LMH0384起到均衡EQ的作用,也可以理解为单端转差分;然后调用Xilinx官方的UltraScale GTH IP核实现SDI视频的解串与串化,IP配置为GTH-3G-SDI模式,该模式专门用于SDI视频协议的解串与串化;然后调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码与编码,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码,本设计配置为3G-SDI模式;SDI视频接收流程至此已经由原始的同轴线传输的单端视频变为了并行的视频数据了,此时可以作为图像处理的输入源了,可以缓存、颜色转换、缩放等等操作,但本设计仅作回环操作,所以调用一个Xilinx官方的FIFO作为视频缓冲,然后再将视频送入SMPTE UHD-SDI做SDI视频编码,再送入UltraScale GTH做SDI视频串化,这个过程是接收过程的逆过程,此时,SDI视频又变为高速差分数据了;开发板板载LMH0302SQ芯片,高速差分的SDI视频经过LMH0302SQ起到增强驱动的作用,也可以理解为差分转单端;我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;

提供2套vivado2022.2版本的FPGA工程源码,两套工程的区别在于SDI摄像头的路数,第一套工程只用到了1路SDI摄像头做回环;第二套工程用到了4路SDI摄像头做回环;详情如下:

vivado工程11路SDI输入,回环后1路SDI输出;
vivado工程24路SDI输入,回环后4路SDI输出;

设计框图

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

3G-SDI摄像头

大体就是这种相机:
在这里插入图片描述
分辨率:1920x1080@60Hz;
视频格式:YUV422;
数据速率:2.97Gbps;
输出方式:BNC头同轴线输出;

LMH0384均衡EQ

开发板板载LMH0384芯片,SDI视频经过LMH0384起到均衡EQ的作用,也可以理解为单端转差分;原理图部分如下:
在这里插入图片描述

UltraScale GTH 的SDI模式应用

关于UltraScale GTH介绍最详细的肯定是Xilinx官方的《ug576-ultrascale-gth-transceivers》,我们以此来解读:
《ug576-ultrascale-gth-transceivers》的PDF文档我已放在了资料包里,文章末尾有获取方式;
我用到的开发板FPGA型号为Kirtex7-UltraScale-xcku060-ffva1156-2-i;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-3G-SDI模式,该模式专门用于SDI视频协议的解串与串化;代码位置如下:
在这里插入图片描述
UltraScale GTH基本配置如下:板载差分晶振148.5M,线速率配置为2.97G,协议类型配置为GTH-3G-SDI;
在这里插入图片描述
还有其他的配置选项,比如勾选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-3G-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,线速率配置为2.97G,协议类型配置为GTH-3G-SDI;
在这里插入图片描述
为了适应三种SD-SDI、HD-SDI 和 3G-SDI 不同模式,需要对GTH做变速和复位操作,所以需要打开DRP接口,如下:
在这里插入图片描述
更多GTH配置细节请参考vivado工程;

UltraScale GTH 控制说明

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

SMPTE UHD-SDI详解

调用Xilinx官方的SMPTE UHD-SDI IP核实现SDI视频解码与编码,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码,本设计配置为3G-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的使用请参考工程代码,因为接口很多,这里写不下;

FIFO缓冲

调用一个Xilinx官方的FIFO作为视频缓冲,这个很简单,不赘述;FIFO具体配置请参考vivado工程;

LMH0302SQ增强驱动

开发板板载LMH0302SQ芯片,高速差分的SDI视频经过LMH0302SQ起到增强驱动的作用,也可以理解为差分转单端;LMH0302SQ原理图如下:
在这里插入图片描述

视频输出

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

4、vivado工程1:1路SDI视频编解码

开发板FPGA型号:Xilinx–Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i;
开发环境:Vivado2022.2;
输入:1路3G-SDI摄像头,分辨率1920x1080@60Hz;
输出:SDI;分辨率1920x1080@60Hz;
应用:FPGA高端项目:UltraScale GTH + SDI 视频编解码;
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

5、vivado工程2:4路SDI视频编解码

开发板FPGA型号:Xilinx–Zynq UltraScale+MPSoCs–xczu7ev-ffvc1156-2-i;
开发环境:Vivado2022.2;
输入:4路3G-SDI摄像头,分辨率1920x1080@60Hz;
输出:4路SDI;分辨率1920x1080@60Hz;
应用:FPGA高端项目:UltraScale GTH + SDI 视频编解码;
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

6、工程移植说明

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软核;

7、上板调试验证

准备工作

FPGA开发板;
3G-SDI相机;
BNC转SMA同轴线;
SDI转HDMI盒子;
显示器,需要支持1080P;

输出演示

输出演示如下:
在这里插入图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HFish蜜罐搭建及简单使用

一、HFish蜜罐 HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的…

零基础学人工智能:TensorFlow 入门例子

识别手写图片 因为这个例子是 TensorFlow 官方的例子,不会说的太详细,会加入了一点个人的理解,因为TensorFlow提供了各种工具和库,帮助开发人员构建和训练基于神经网络的模型。TensorFlow 中最重要的概念是张量(Tenso…

I Doc View在线文档预览系统 cmd.json RCE漏洞复现

0x01 产品简介 IDocView是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。 0x02 漏洞概述 I Doc View在线文档预览系统 cmd.json 接口处存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 影…

Linux入门基础知识

1. 什么是操作系统? 正式定义:负责管理计算机的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统的系统软件。 通俗定义:是一个系统软件…

【头歌系统数据库实验】实验11 SQL互联网业务查询-2

目录 第1关:查询某网站每个日期新用户的次日留存率 第2关:查询满足条件的用户 第3关:查询未完成订单率排名前三的用户 如果对你有帮助的话,不妨点赞收藏评论一下吧,爱你么么哒😘❤️❤️❤️ 第1关&…

matlab实践(十一):导弹追踪

1.题目 a9.94,x062.06 2.方程 我们有: ( d x d t ) 2 ( d y d t ) 2 w 2 (\frac{\mathrm d\mathrm x}{\mathrm d\mathrm t})^2(\frac{\mathrm d\mathrm y}{\mathrm d\mathrm t})^2\mathrm w^2 (dtdx​)2(dtdy​)2w2 还有导弹始终指向船 ( d x d t d y d t ) …

Qt 网络编程

QT 网络编程 TCP 编程 模块引入 QT network 头文件 #include <QTcpServer> // TCP服务器端使用 #include <QTcpSocket> // TCP服务器和客户端都使用 编程流程 服务端 1&#xff09;实例化 QTcpServer 对象 -----------------------------> socket 2&#x…

【微服务】springboot整合kafka-stream使用详解

目录 一、前言 二、kafka stream概述 2.1 什么是kafka stream 2.2 为什么需要kafka stream 2.2.1 对接成本低 2.2.2 节省资源 2.2.3 使用简单 2.3 kafka stream特点 2.4 kafka stream中的一些概念 2.5 Kafka Stream应用场景 三、环境准备 3.1 搭建zk 3.1.1 自定义d…

05|提示工程(下):用思维链和思维树提升模型思考质量 ## 什么是 Chain of Thought

05&#xff5c;提示工程&#xff08;下&#xff09;&#xff1a;用思维链和思维树提升模型思考质量 什么是 Chain of Thought CoT 这个概念来源于学术界&#xff0c;是谷歌大脑的 Jason Wei 等人于 2022 年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large La…

Unity使用Rider作为默认编辑器

01.Edit -> Preferences 02.Externel Tools -> Open by file extension 如果界面选项有Rider直接选择&#xff0c;如果没有选择Browse) 03.选择rider64.exe 04.成功关联

【C# 技术】 C# 常用排序方式——常规数据排序

C# 常用排序方式——常规数据排序 前言 在最近的项目中经常会对C#中的数据进行排序&#xff0c;对于基本数据类型&#xff0c;其排序方式比较简单&#xff0c;只需要调用内置算法即可实现&#xff0c;但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦&#…

西门子博途与菲尼克斯无线蓝牙模块通讯

菲尼克斯无线蓝牙模块 正常运行时,可以使用基站控制字0发送00E0(得到错误代码命令) 正常运行时,可以使用基站控制字0发送00E0(得到错误代码命令)得到各个无线I/O是否连 接的信号(状态字IN word 1的第2、6、10位) 小车1连接状态 小车2连接状态 小车3连接状态 1#小车自…

操作系统 day18(死锁)

死锁 定义 在并发环境下&#xff0c;各进程因竞争资源而造成的一种互相等待对方手里的资源 &#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象&#xff0c;就是死锁。发生死锁后若无外力干涉&#xff0c;这些进程都将无法向前推进。如下图&#xff1a; 死锁、饥饿…

激发大规模ClickHouse数据加载(2/3)大规模数据加载的加速调优

本文字数&#xff1a;4552&#xff1b;估计阅读时间&#xff1a;12 分钟 作者&#xff1a;Maksim Kita 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 Meetup活动&#xff1a; ClickHouse Shenzhen User Group第1届 Meetup 火热报名中…

网络第3天

基于UDP的TFTP文件传输 功能&#xff1a;下载、上传、退出 #include <myhead.h> #define IP "192.168.8.100" #define PORT 69 int download_file(int…

方法论系列:数据科学框架入门

目录 第一章 - 数据科学家如何战胜困难第二章 - 数据科学框架第三章 - 步骤1&#xff1a;定义问题和步骤2&#xff1a;收集数据第四章 - 步骤3&#xff1a;准备数据第五章 - 数据清洗的4个C&#xff1a;纠正、补全、创建和转换第六章 - 步骤4&#xff1a;使用统计学进行探索性…

Unity新动画系统之动画层和动画遮罩

Unity新动画系统之动画层和动画遮罩 一、介绍二、动画骨骼遮罩层使用第一种就是create一个avatar Mask,如下&#xff1a;第二种遮罩&#xff0c;就是直接在动画剪辑的属性上更改&#xff0c;如图一为humanoid类型的动画剪辑属性&#xff1a; 一、介绍 之前分享过FSM动画控制系…

组学无参比对教程

转录组无参比对教程 当作物是没有参考基因组时&#xff0c;需要无参进行比对。Trinity是现在使用最广泛的转录组De novo组装软件。 Trinity 是无参考转录组从头组装转录组的常用软件&#xff0c;且trinity的使用文档非常详细&#xff0c;整合的内容非常完整&#xff0c;包括从…

企业知识库在跨地域团队协作中的价值

随着全球化进程的不断加速&#xff0c;越来越多的企业开始面临跨地域协作的挑战。在这种背景下&#xff0c;企业知识库作为一种重要的知识管理工具&#xff0c;对于提高团队协作效率、促进知识共享与创新具有不可替代的价值。接下来就说一下知识库在跨地域团队协作中的重要性及…

OpenSSH升级指南:实战检验的步骤,有效加固服务器安全

在做服务器漏扫时我们经常会遇到有关于OpenSSH相关的安全漏洞&#xff0c;本文主要给大家介绍一下有关于OpenSSH的升级方法&#xff0c;小伙伴们可以参考一下流程&#xff0c;按步骤操作&#xff0c;但是过程中一定会遇到各种各样的问题&#xff0c;需要自行解决&#xff0c;这…