FPGA UltraScale GTY 全网最细讲解,aurora 8b/10b编解码,板对板视频传输,提供2套工程源码和技术支持

news2024/11/18 8:34:25

目录

  • 1、前言
    • 免责声明
  • 2、我这里已有的 GT 高速接口解决方案
  • 3、详细设计方案
    • 设计框图
    • 视频源选择
    • ADV7611解码芯片配置及采集
    • 动态彩条
    • 视频数据组包
    • UltraScale GTY 全网最细解读
      • UltraScale GTY 基本结构
      • UltraScale GTY 参考时钟的选择和分配
      • UltraScale GTY 发送和接收处理流程
      • UltraScale GTY 发送接口
      • UltraScale GTY 接收接口
      • UltraScale GTY IP核调用和使用
    • 数据对齐
    • 视频数据解包
    • SFP光口回环选择
    • 图像输出架构
  • 4、vivado工程1-->GTY 发送工程
  • 5、vivado工程2-->GTY 接收工程
  • 6、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 7、上板调试验证
    • 准备工作
    • 静态演示
    • 动态演示
  • 8、福利:工程代码的获取

FPGA UltraScale GTY 全网最细讲解,aurora 8b/10b编解码,板对板视频传输,提供2套工程源码和技术支持

1、前言

没玩过GT资源都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,更高端的U+系列还有GTY等,他们的速度越来越高,应用场景也越来越高端。。。UltraScale GTH 适用于Xilinx UltraScale系列的FPGA上,包括Virtex UltraScale、Kintex UltraScale、Zynq® UltraScale等器件,在UltraScale系列之下只有GTH,而UltraScale GTH相比于GTH,线速率更高,支持协议类型更多,功耗更低,带宽更高。。。

本文使用Xilinx的Kirtex UltraScale+系列的xcku5p-ffvb676-1-i型号FPGA 的UltraScale GTY资源做板对板视频传输实验,视频源有两种,分别对应开发者手里的开发板有没有HDMI输入接口的情况,一种是使用笔记本电脑模拟HDMI视频,ADV7611芯片将输入的HDMI视频解码为GRB后供FPGA使用;如果你的开发板有没有HDMI输入接口,或者你的开发板HDMI输入解码芯片不是ADV7611,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的define COLOR_TEST 宏定义选择宏定义进行,默认使用HDMI输入作为视频源;提供2套vivado2022.2版本的工程源码,第一套是GTY发送工程;FPGA采集到谁视频后,首先会送入数据组包模块对视频进行打包,并加上以字符BC为基础的控制帧头和帧尾以及其他标志符;然后调用Xilinx官方的UltraScale GTY IP核,并配置为8b/10b编解码模式,线速率配置为5G;然后通过板载的SFP光口将8b/10b编码后的视频发送出去;第二套是GTY 接收工程;SFP光口接收8b/10b编码后的视频;UltraScale GTY 再做8b/10b解码处理;然后将数据送入数据对齐模块进行对齐处理;然后将数据送入数据解包模块去掉帧头帧尾并恢复视频时序;为了方便起见,这里没有再对视频进行缓存,而是直接调用Xilinx官方的Video In to AXI4-Stream、Video Timing Controller、AXI4-Stream to Video Out三个IP将视频简单缓存后送入纯verilog代码实现的HDMI发送模块,将RGB视频转换为HDMI视频,最后输出显示器显示;

本博客提供2套vivado工程源码,2套工程的不同点在于GTH做发送还是接收;详情如下:

vivado工程1:HDMI/动态彩条输入,UltraScale GTY 编码,SFP光口1发送出去;
vivado工程2:SFP光口2输入,UltraScale GTY 解码,HDMI输出显示器;

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

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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开发板搭建;以下是专栏地址:
点击直接前往

3、详细设计方案

本文使用Xilinx的Kirtex UltraScale+系列的xcku5p-ffvb676-1-i型号FPGA 的UltraScale GTY资源做板对板视频传输实验,视频源有两种,分别对应开发者手里的开发板有没有HDMI输入接口的情况,一种是使用笔记本电脑模拟HDMI视频,ADV7611芯片将输入的HDMI视频解码为GRB后供FPGA使用;如果你的开发板有没有HDMI输入接口,或者你的开发板HDMI输入解码芯片不是ADV7611,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的define COLOR_TEST 宏定义选择宏定义进行,默认使用HDMI输入作为视频源;提供2套vivado2022.2版本的工程源码,第一套是GTY发送工程;FPGA采集到谁视频后,首先会送入数据组包模块对视频进行打包,并加上以字符BC为基础的控制帧头和帧尾以及其他标志符;然后调用Xilinx官方的UltraScale GTY IP核,并配置为8b/10b编解码模式,线速率配置为5G;然后通过板载的SFP光口将8b/10b编码后的视频发送出去;第二套是GTY 接收工程;SFP光口接收8b/10b编码后的视频;UltraScale GTY 再做8b/10b解码处理;然后将数据送入数据对齐模块进行对齐处理;然后将数据送入数据解包模块去掉帧头帧尾并恢复视频时序;为了方便起见,这里没有再对视频进行缓存,而是直接调用Xilinx官方的Video In to AXI4-Stream、Video Timing Controller、AXI4-Stream to Video Out三个IP将视频简单缓存后送入纯verilog代码实现的HDMI发送模块,将RGB视频转换为HDMI视频,最后输出显示器显示;

设计框图

工程详细设计方案框图如下:
在这里插入图片描述
框图解释:箭头表示数据流向,箭头内文字表示数据格式,箭头外数字表示数据流向的步骤;
上图中的开发板1对应vivado工程1,即 GTY 发送工程;开发板2对应vivado工程2,即 GTY 接收工程;

视频源选择

这是第一套vivado工程的内容;视频源有两种,分别对应开发者手里的开发板有没有HDMI输入接口的情况,一种是使用笔记本电脑模拟HDMI视频,ADV7611芯片将输入的HDMI视频解码为GRB后供FPGA使用;如果你的开发板有没有HDMI输入接口,或者你的开发板HDMI输入解码芯片不是ADV7611,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的define宏定义进行,默认使用HDMI输入作为视频源;视频源的选择通过代码顶层的`define宏定义进行;如下:
代码位于顶层system_wrapper.v;
在这里插入图片描述
选择逻辑代码部分如下:
在这里插入图片描述
选择逻辑如下:
当(注释) define COLOR_TEST时,输入源视频是HDMI输入;
当(不注释) define COLOR_TEST时,输入源视频是动态彩条;

ADV7611解码芯片配置及采集

这是第一套vivado工程的内容;使用ADV7611解码输入的HDMI视频,适应板载ADV7611解码芯片的FPGA开发板;ADV7611解码芯片需要i2c配置才能使用,ADV7611解码芯片配置及采集这两部分均用verilog代码模块实现,代码中配置为1920x1080分辨率;代码位置如下:
在这里插入图片描述
代码中配置为1920x1080分辨率;

动态彩条

这是第一套vivado工程的内容;动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,我这里配置为辨率1920x1080,动态彩条模块代码位置和顶层接口和例化如下:
在这里插入图片描述
在这里插入图片描述

视频数据组包

这是第一套vivado工程的内容;由于视频需要在UltraScale GTY中通过aurora 8b/10b协议收发,所以数据必须进行组包,以适应aurora 8b/10b协议标准;视频数据组包模块代码位置如下:
在这里插入图片描述
首先,我们将16bit的视频存入FIFO中,存满一行时就从FIFO读出送入GTY发送;在此之前,需要对一帧视频进行编号,也叫作指令,GTY组包时根据固定的指令进行数据发送,GTY解包时根据固定的指令恢复视频的场同步信号和视频有效信号;当一帧视频的场同步信号上升沿到来时,发送一帧视频开始指令 0,当一帧视频的场同步信号下降沿到来时,发送一帧视频开始指令 1,视频消隐期间发送无效数据 0 和无效数据 1,当视频有效信号到来时将每一行视频进行编号,先发送一行视频开始指令,在发送当前的视频行号,当一行视频发送完成后再发送一行视频结束指令,一帧视频发送完成后,先发送一帧视频结束指令 0,再发送一帧视频结束指令 1;至此,一帧视频则发送完成,这个模块不太好理解,所以我在代码里进行了详细的中文注释,需要注意的是,为了防止中文注释的乱序显示,请用notepad++编辑器打开代码;指令定义如下:

32'h55_00_00_bc    一帧视频开始指令032'h55_00_01_bc    一帧视频开始指令132'h55_00_02_bc    无效数据032'h55_00_03_bc    无效数据132'h55_00_04_bc    一行视频开始指令;
32'h55_00_05_bc    一行视频结束指令;
32'h55_00_06_bc    一帧视频结束指令032'h55_00_07_bc    一帧视频结束指令1

指令可以任意更改,但最低字节必须为bc;

UltraScale GTY 全网最细解读

关于UltraScale GTY 介绍最详细的肯定是Xilinx官方的《ug578-UltraScale Architecture GTY Transceivers》,我们以此来解读:《ug578-UltraScale Architecture GTY Transceivers》的PDF文档我已放在了资料包里,文章末尾有获取方式;
我用到的开发板FPGA型号为Kirtex UltraScale+系列的xcku5p-ffvb676-1-i型号;UltraScale GTY 的收发速度为 500 Mb/s 到 30.5 Gb/s 之间,比UltraScale GTH高出一倍;UltraScale GTY 收发器支持不同的串行传输接口或协议,比如 PCIE 1.1/2.0 接口、万兆网 XUAI 接口、OC-48、串行 RapidIO 接口、 SATA(Serial ATA) 接口、数字分量串行接口(SDI)等等;
工程调用UltraScale GTY 做aurora 8b/10b协议的数据编解码,代码位置如下:
在这里插入图片描述
UltraScale GTY 基本配置如下:板载差分晶振125M,线速率配置为5G,协议类型被指为aurora 8b/10b;
在这里插入图片描述

UltraScale GTY 基本结构

在 Ultrascale/Ultrascale+架构系列的 FPGA 中,GTY 高速收发器通常使用 Quad 来划分,一个 Quad 由四个GTYE3/4_CHANNEL 原语和一个 GTYE3/4_COMMON 原语组成。每个 GTYE3/4_COMMON 中包含两个 LC-tank pll
(QPLL0 和 QPLL1)。只有在应用程序中使用 QPLL 时,才需要实例化 GTYE3/4_COMMON。下图为UltraScale GTY 收发器示意图:《ug578-UltraScale Architecture GTY Transceivers》第15页;
在这里插入图片描述
每个 GTYE3/4_CHANNEL 由一个 channel PLL(CPLL)、一个 transmitter,和一个 receiver 组成。一个参考时钟可以直接连接到一个 GTYE3/4_CHANNEL 原语,而不需要实例化 GTYE3/4_COMMON,如下图:
《ug578-UltraScale Architecture GTY Transceivers》第22页;
在这里插入图片描述

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

UltraScale GTY 参考时钟的选择和分配

UltraScale 器件中的 GTY 收发器提供了不同的参考时钟输入选项。参考时钟选择架构支持 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。《ug578-UltraScale Architecture GTY Transceivers》第31页;
在这里插入图片描述

UltraScale GTY 发送和接收处理流程

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

UltraScale GTY 发送接口

《ug578-UltraScale Architecture GTY Transceivers》的第101到181页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲UltraScale GTY 例化时留给用户的发送部分需要用到的接口;
在这里插入图片描述
用户只需要关心发送接口的时钟和数据即可,UltraScale GTY 例化模块的这部分接口如下:该文件名为gty_aurora_example_wrapper.v,例化IP后由官方自动生成;
在这里插入图片描述
在这里插入图片描述
在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下:
该文件名为gty_aurora_example_top.v;例化了官方的gty_aurora_example_wrapper.v;
在这里插入图片描述

UltraScale GTY 接收接口

《ug578-UltraScale Architecture GTY Transceivers》的第183到316页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲UltraScale GTY 例化时留给用户的发送部分需要用到的接口;
在这里插入图片描述
用户只需要关心发送接口的时钟和数据即可,UltraScale GTY 例化模块的这部分接口如下:该文件名为gty_aurora_example_wrapper.v,例化IP后由官方自动生成;
在这里插入图片描述
在这里插入图片描述
在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下:
该文件名为gty_aurora_example_top.v;例化了官方的gty_aurora_example_wrapper.v;
在这里插入图片描述

UltraScale GTY IP核调用和使用

在这里插入图片描述
UltraScale GTY 基本配置如下:板载差分晶振125M,线速率配置为5G,协议类型被指为aurora 8b/10b;
在这里插入图片描述
具体配置参考vivado工程,在IP配置好后,需要打开example工程,并将里面的文件复制出来作为自己的工程中使用,不过在我的工程中已经做好了这一步;打开example工程方法如下:
在这里插入图片描述

数据对齐

这是第二套vivado工程的内容;由于GT资源的aurora 8b/10b数据收发天然有着数据错位的情况,所以需要对接受到的解码数据进行数据对齐处理,数据对齐模块代码位置如下:
在这里插入图片描述
我定义的 K 码控制字符格式为:XX_XX_XX_BC,所以用一个rx_ctrl 指示数据是否为 K 码 的 COM 符号;

rx_ctrl = 4'b0000 表示 4 字节的数据没有 COM 码;
rx_ctrl = 4'b0001 表示 4 字节的数据中[ 7: 0] 为 COM 码;
rx_ctrl = 4'b0010 表示 4 字节的数据中[15: 8] 为 COM 码;
rx_ctrl = 4'b0100 表示 4 字节的数据中[23:16] 为 COM 码;
rx_ctrl = 4'b1000 表示 4 字节的数据中[31:24] 为 COM 码;

基于此,当接收到有K码时就对数据进行对齐处理,也就是将数据打一拍,和新进来的数据进行错位组合,这是FPGA的基础操作,这里不再赘述;

视频数据解包

这是第二套vivado工程的内容;数据解包是数据组包的逆过程,代码位置如下:
在这里插入图片描述
UltraScale GTY 解包时根据固定的指令恢复视频的场同步信号和视频有效信号;这些信号是作为后面图像缓存的重要信号;至此,数据进出GTX部分就已经讲完了;

SFP光口回环选择

板载有两个SFP光口,可以使用1个SFP光口做回环,也可以使用两个SFP光口做回环,代码里通过define SFP_0_LOOP宏定义选择,上电默认使用1个SFP光口做回环;代码部分如下:
代码位于uiAurora_8b10b_vid.v;
在这里插入图片描述
在这里插入图片描述
选择逻辑如下:
当(注释) define SFP_0_LOOP时,选择2个SFP光口回环;
当(不注释) define COLOR_TEST时,选择1个SFP光口回环;
这里说明一下:
由于工程1只用到了SFP光口1的发送,所以 SFP_0_LOOP 没有注释;
由于工程2只用到了SFP光口2的接收,所以 SFP_0_LOOP 注释掉了;

图像输出架构

这是第二套vivado工程的内容;为了方便起见,这里没有再对视频进行缓存,而是直接调用Xilinx官方的Video In to AXI4-Stream、Video Timing Controller、AXI4-Stream to Video Out三个IP将视频简单缓存后送入纯verilog代码实现的HDMI发送模块,将RGB视频转换为HDMI视频,最后输出显示器显示;这里需要注意的是,纯verilog代码实现的HDMI发送模块适用于UltraScale PLUS系列FPGA,因为使用的原语变了,UltraScale PLUS使用不同于7系列FPGA原语;

4、vivado工程1–>GTY 发送工程

开发板FPGA型号:Xilinx–Kirtex UltraScale+系列的xcku5p-ffvb676-1-i;
开发环境:Vivado2022.2;
输入:HDMI或者动态彩条,分辨率1920x1080@60Hz;
输出:SFP光口的TX端口;
应用:FPGA UltraScale GTY 全网最细讲解,aurora 8b/10b编解码,板对板视频传输;
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

5、vivado工程2–>GTY 接收工程

开发板FPGA型号:Xilinx–Kirtex UltraScale+系列的xcku5p-ffvb676-1-i;
开发环境:Vivado2022.2;
输入:SFP光口的RX端口;
输出:HDMI;
应用:FPGA UltraScale GTY 全网最细讲解,aurora 8b/10b编解码,板对板视频传输;
工程Block Design如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
综合编译完成后的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开发板两块;
笔记本电脑,你的板子没有HDMI输入接口可以选择动态彩条;
SFP光口模块及光纤;
连接光纤,板子上电,下载bit;
两块板子光纤接法如下:
在这里插入图片描述

静态演示

HDMI输入:当UltraScale GTY 运行5线速率时输出如下:
在这里插入图片描述
动态彩条输入:当UltraScale GTY 运行5G线速率时输出如下:
在这里插入图片描述

动态演示

录制了一个动态彩条输出的小视频,输出动态演示如下:

V7-GTH-COLOR

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

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

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

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

相关文章

微服务项目部署

启动rabbitmq \RabbitMQ\rabbitmq_server-3.8.2\sbin 找到你的安装路径 找到\sbin路径下执行这些命令即可 rabbitmqctl status //查看当前状态 rabbitmq-plugins enable rabbitmq_management //开启Web插件 rabbitmq-server start //启动服务 rabbitmq-server stop //停止服务…

Redis知识详解(超详细)

1. 背景 Redis是由意大利人Antirez(Salvatore Sanfilippo)在2009年创造的开源内存数据结构存储系统。Redis的名字来自意大利语“Repubblica di Redis”,意思是“基于字典的共和国”。它是一个基于内存的键值对存储系统,具有快速、…

MCU平台下一种简单的文件系统设计构想

本文介绍MCU平台下一种简单的文件系统设计构想。 在使用MCU的项目中,经常会涉及到一些数据的存储,受限于硬件,又不太可能直接上文件系统(如FAT文件系统),直接指定存储地址,数据长度对数据进行读…

C++ 重载括号运算符示例

重载括号运算符的写法是, 返回值 operator() ( 表达式表 ) 参数个数不限; VC6新建一个单文档工程; 添加一个示例类,比较短,直接加到视类h文件的头部; class A { public:// 重载 括号 () 运算符int oper…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于最优经济运行区域的主动配电网日前-日内协同调度方法》

这个标题涉及到主动配电网的日前-日内协同调度方法,其关键要素包括“最优经济运行区域”和“日前-日内协同调度”。 主动配电网: 这指的是一种能够主动响应和参与调度的配电网系统。传统的配电网通常是被动的,即电力从电源到终端用户的传输是…

机器学习:从概念到应用

机器学习:从概念到应用 一、引言 随着科技的飞速发展,人工智能已经渗透到我们生活的方方面面。作为人工智能领域的一个重要分支,机器学习正在改变我们的世界。它通过让计算机从数据中学习,实现自我优化和改进,为各行…

关于put_response和get_response的总结

Response总结,共三种情况 (1)每一笔都等response -> 直接get_response 注意put_response的前提是当前的seq的body没有直接结束,这个body一定是最底层发req的那个seq的body (2)连续发送数据&#xff0…

机器学习中的混沌工程:拥抱不可预测性以增强系统鲁棒性埃

一、介绍 在动态发展的技术世界中,机器学习 (ML) 已成为一股革命力量,推动各个领域的创新。然而,随着机器学习系统的复杂性不断增加,确保其可靠性和鲁棒性已成为首要问题。这就是混沌工程发挥作用的地方,混沌工程是一门…

Android--Jetpack--数据库Room详解二

本是青灯不归客,却因浊酒恋红尘 一,基本使用 关于Room数据库的基本使用,请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二,Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用,请参考文章Andr…

【Axure RP9】元件应用(图文并茂)----含登入,个人简历案例

目录 : 一,元件基本介绍 1.1 元件概述 1.2 元件操作 1.3 快捷键大全 二,基本元件的应用 2.1 形状 2.2 图片 2.3 文本 2.4 线段原件 2.5 热区 2.5.1 热区应用 三, 表单型元件的应用 3.1 文本框 3.2 文本域 3.3 下拉列表 3.4 列表框 3.5 …

mysql EXPLAIN命令的输出列简介

MySQL :: MySQL 8.2 Reference Manual :: 8.8.2 EXPLAIN Output Format explain命令提供了mysql数据库如何执行SQL语句的信息,可以跟 SELECT, DELETE, INSERT, REPLACE, UPDATE, 和 TABLE一起使用。 explain命令可能输出多行,每行涉及一个表 。 先来看…

嵌入式工程师是否需要学历和基础?

今日话题:嵌入式工程师是否需要学历和基础?想要成为一位真正独当一面的嵌入式工程师,不一定需要特定的学历和基础,但需要耐心和时间。通常,至少需要五年的坚定学习和实践。这个过程中,你将面临各种挑战&…

Linux CentOS7 Docker安装Jenkins

1 sudo yum update #确保yum包更新到最新 service network restart #重启网络 2、查询镜像 docker search jenkins 3、拉取镜像 docker pull jenkins/jenkins #拉取镜像 4、创建Jenkins工作目录,并将容器内目录挂载到此目录…

人工智能中的顺序学习:概念、应用和未来方向

一、介绍 人工智能 (AI) 中的顺序学习是一个关键研究领域,近年来引起了人们的极大兴趣。它指的是人工智能系统从数据序列中学习的能力,其中数据点的顺序至关重要。本文将探讨人工智能中顺序学习的概念、其重要性、应用、方法、挑战…

数字化管理系统:引领企业智能化时代

随着数字化和智能化的风潮席卷而来,企业数字化管理系统成为提升竞争力、提高效率的不可或缺的工具。在服装管理系统、仓储管理系统等方面应用的RFID技术和数字大屏更是为企业带来了前所未有的便利和优势。 数字化管理系统的重要性: 数字化管理系统是企…

CNS0创建交货单没有WBS元素

1、问题 CNS0创建交货单带不出WBS,但是交货单过账之后,又可以读取到WBS。 2、原因 2.1、项目挂料 创建项目挂料时,当物料为通用料,则在网络中挂料时,采购类型为网络预留 当物料为专用料,则在网络中挂料时…

linux中的od命令与hexdump命令

初步解读两个命令 在Linux中,"od"和"hexdump"命令都用于以十六进制和其他格式显示文件的内容。它们提供了对文件进行二进制查看和分析的功能。以下是它们的简要说明: od命令: “od”(octal dump)…

在javaweb项目中resource目录和webapp目录的区别

resource存放的是一些配置文件,这些文件一般都是与java代码相关的配置文件,比如这里的jdbc配置文件,在java中可以使用这个目录下的文件,不用写全路径 webapp存放的是web的资源文件,如jsp,html,css,js文件,在网页请求会…

并发编程-线程等待唤醒机制

目录 前言 ​编辑 线程等待和唤醒的方法 wait() 方法: notify() 方法: 注意事项和建议: 我的其他博客 前言 程等待唤醒机制是多线程编程中用于线程之间协调和通信的一种机制。在多线程环境中,有时候一个线程需要等待某个条件…

ResourceSat2卫星数据下载

印度5米遥感卫星数据开放下载 简介 印度国家遥感中心( NRSC )于近期开放了ResourceSat2卫星的LISS4传感器的数据下载权限,最高分辨率为5米。此次可供下载的有3个波段(近红外/红/绿),下载附带3个GeoTIFF和一个元数据文件&#xf…