Zynq系列FPGA實現SDI視頻編解碼,基于GTX高速接口,提供5套工程源碼和技術支持

目錄

  • 1、前言
    • 工程概述
    • 免責聲明
  • 2、相關方案推薦
    • 本博已有的 SDI 編解碼方案
    • 本方案在Xilinx--Kintex系列FPGA上的應用
  • 3、詳細設計方案
    • 設計原理框圖
    • SDI 輸入設備
    • Gv8601a 均衡器
    • GTX 解串與串化
    • SMPTE SD/HD/3G SDI IP核
    • BT1120轉RGB
    • 圖像緩存
    • 視頻讀取控制
    • HDMI輸出
    • RGB轉BT1120
    • Gv8500 驅動器
    • SDI轉HDMI盒子
    • 工程源碼架構
  • 4、工程源碼1詳解-->3G-SDI轉HDMI,無緩存輸出方案
  • 5、工程源碼2詳解-->3G-SDI轉HDMI,FDMA緩存輸出方案
  • 6、工程源碼3詳解-->3G-SDI轉3G-SDI,FDMA緩存輸出方案
  • 7、工程源碼4詳解-->3G-SDI轉HDMI,VDMA緩存輸出方案
  • 8、工程源碼5詳解-->3G-SDI轉3G-SDI,VDMA緩存輸出方案
  • 9、工程移植說明
    • vivado版本不一致處理
    • FPGA型號不一致處理
    • 其他注意事項
  • 10、上板調試驗證
    • 準備工作
    • 輸出視頻演示
  • 11、福利:工程代碼的獲取

Zynq系列FPGA實現SDI視頻編解碼,基于GTX高速接口,提供5套工程源碼和技術支持

1、前言

目前FPGA實現SDI視頻編解碼有兩種方案:一是使用專用編解碼芯片,比如典型的接收器GS2971,發送器GS2972,優點是簡單,比如GS2971接收器直接將SDI解碼為并行的YCrCb422,GS2972發送器直接將并行的YCrCb422編碼為SDI視頻,缺點是成本較高,可以百度一下GS2971和GS2972的價格;另一種方案是使用FPGA邏輯資源部實現SDI編解碼,利用Xilinx系列FPGA的GTP/GTX資源實現解串,利用Xilinx系列FPGA的SMPTE SDI資源實現SDI編解碼,優點是合理利用了FPGA資源,GTP/GTX資源不用白不用,缺點是操作難度大一些,對FPGA開發者的技術水平要求較高。有意思的是,這兩種方案在本博這里都有對應的解決方案,包括硬件的FPGA開發板、工程源碼等等。

工程概述

本設計基于Zynq系列的Zynq7100 FPGA開發板實現SDI視頻編解碼,輸入源為一個3G-SDI相機或者HDMI轉3G-SDI盒子,也可以使用HD-SDI或者SD-SDI相機,因為本設計是三種SDI視頻自適應的;同軸的SDI視頻通過同軸線連接到FPGA開發板的BNC座子,然后同軸視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ的功能;然后差分SDI視頻信號進入FPGA內部的GTX高速資源,實現數據高速串行到并行的轉換,本博稱之為解串;解串后的并行視頻再送入Xilinx系列FPGA特有的SMPTE SD/HD/3G SDI IP核,進行SDI視頻解碼操作并輸出BT1120視頻,至此,SDI視頻解碼操作已經完成,可以進行常規的圖像處理操作了;

本設計的目的是輸出解碼的SDI視頻,針對目前市面上的主流項目需求,本博設計了兩種輸出方式,一種是HDMI輸出,另一種是3G-SDI輸出,這兩種方式都需要對解碼BT1120視頻進行轉RGB和圖像緩存操作;本設計使用BT1120轉RGB模塊實現視頻格式轉換;使用本博常用的FDMA或者Xilinx官方的VDMA圖像緩存架構實現圖像3幀緩存,緩存介質為板載的PS端DDR3;也可以不要緩存直接輸出,這種方式的優點是延時很低,適用于低延時場景;圖像從DDR3讀出后,進入HDMI發送模塊輸出HDMI顯示器,這是HDMI輸出方式;或者經過RGB轉BT1120模塊實現視頻格式轉換,然后視頻進入SMPTE SD/HD/3G SDI IP核,進行SDI視頻編碼操作并輸出SDI視頻,再經過FPGA內部的GTX高速資源,實現并行數據到高速串行的轉換,本博稱之為串化,差分高速信號再進入板載的Gv8500芯片實現差分轉單端和驅動增強的功能,SDI視頻通過FPGA開發板的BNC座子輸出,通過同軸線連接到SDI轉HDMI盒子連接到HDMI顯示器,這是SDI輸出方式;本博客提供5套工程源碼,具體如下:
在這里插入圖片描述
現對上述5套工程源碼做如下解釋,方便讀者理解:

工程源碼1

開發板FPGA型號為Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;輸入視頻為3G-SDI相機或者HDMI轉3G-SDI盒子,輸入分辨率為1920x1080@60Hz,輸入視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ后送入FPGA;再經過GTX將SDI視頻解串為并行數據;再經過SMPTE SDI IP核將SDI解碼BT1120數據;再經過BT1120轉RGB模塊將BT1120轉換為RGB888視頻;然后不經過任何緩存,直接將視頻送RGB轉HDMI模塊,將RGB888視頻轉換為HDMI視頻,輸出分辨率為1920x1080@60Hz;最后通過HDMI顯示器顯示圖像;該工程不需要緩存,適用于SDI轉HDMI的低延時場景;

工程源碼2

開發板FPGA型號為Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;輸入視頻為3G-SDI相機或者HDMI轉3G-SDI盒子,輸入分辨率為1920x1080@60Hz,輸入視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ后送入FPGA;再經過GTX將SDI視頻解串為并行數據;再經過SMPTE SDI IP核將SDI解碼BT1120數據;再經過BT1120轉RGB模塊將BT1120轉換為RGB888視頻;再經過自研的FDMA圖像緩存方案將視頻寫入PS側DDR3做三幀緩存;然后讀出視頻送入RGB轉HDMI模塊,將RGB888視頻轉換為HDMI視頻,輸出分辨率為1920x1080@60Hz;最后通過HDMI顯示器顯示圖像;該工程需要緩存,需要運行Zynq軟核;適用于SDI轉HDMI場景;

工程源碼3

開發板FPGA型號為Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;輸入視頻為3G-SDI相機或者HDMI轉3G-SDI盒子,輸入分辨率為1920x1080@60Hz,輸入視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ后送入FPGA;經過GTX將SDI視頻解串為并行數據;再經過SMPTE SDI IP核將SDI解碼BT1120數據;再經過BT1120轉RGB模塊將BT1120轉換為RGB888視頻;再經過自研的FDMA圖像緩存方案將視頻寫入PS側DDR3做三幀緩存;然后讀出視頻送RGB轉BT1120模塊,將RGB888視頻轉換為BT1120視頻;再經過SMPTE SD/HD/3G SDI IP核,將BT1120視頻編碼為SDI視頻;再經過FPGA內部的GTX高速資源,將SDI并行數據轉換為高速串行信號;再經過板載的Gv8500芯片實現差分轉單端和驅動增強后輸出,輸出分辨率為1920x1080@60Hz;最后使用SDI轉HDMI盒子連接到HDMI顯示器顯示;該工程需要緩存,需要運行Zynq軟核;適用于SDI轉HDMI場景;

工程源碼4

開發板FPGA型號為Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;輸入視頻為3G-SDI相機或者HDMI轉3G-SDI盒子,輸入分辨率為1920x1080@60Hz,輸入視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ后送入FPGA;再經過GTX將SDI視頻解串為并行數據;再經過SMPTE SDI IP核將SDI解碼BT1120數據;再經過BT1120轉RGB模塊將BT1120轉換為RGB888視頻;再經過Xilinx官方的VDMA圖像緩存方案將視頻寫入PS側DDR3做三幀緩存;然后讀出視頻送入RGB轉HDMI模塊,將RGB888視頻轉換為HDMI視頻,輸出分辨率為1920x1080@60Hz;最后通過HDMI顯示器顯示圖像;該工程需要緩存,需要運行Zynq軟核;適用于SDI轉HDMI場景;

工程源碼5

開發板FPGA型號為Xilinx–>Xilinx-Zynq7100–xc7z100ffg900-2;輸入視頻為3G-SDI相機或者HDMI轉3G-SDI盒子,輸入分辨率為1920x1080@60Hz,輸入視頻經過板載的Gv8601a芯片實現單端轉差分和均衡EQ后送入FPGA;經過GTX將SDI視頻解串為并行數據;再經過SMPTE SDI IP核將SDI解碼BT1120數據;再經過BT1120轉RGB模塊將BT1120轉換為RGB888視頻;再經過Xilinx官方的VDMA圖像緩存方案將視頻寫入PS側DDR3做三幀緩存;然后讀出視頻送RGB轉BT1120模塊,將RGB888視頻轉換為BT1120視頻;再經過SMPTE SD/HD/3G SDI IP核,將BT1120視頻編碼為SDI視頻;再經過FPGA內部的GTX高速資源,將SDI并行數據轉換為高速串行信號;再經過板載的Gv8500芯片實現差分轉單端和驅動增強后輸出,輸出分辨率為1920x1080@60Hz;最后使用SDI轉HDMI盒子連接到HDMI顯示器顯示;該工程需要緩存,需要運行Zynq軟核;適用于SDI轉HDMI場景;

免責聲明

本工程及其源碼即有自己寫的一部分,也有網絡公開渠道獲取的一部分(包括CSDN、Xilinx官網、Altera官網等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業用途,若由于讀者或粉絲自身原因用于商業用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。

2、相關方案推薦

本博已有的 SDI 編解碼方案

我的博客主頁開設有SDI視頻專欄,里面全是FPGA編解碼SDI的工程源碼及博客介紹;既有基于GS2971/GS2972的SDI編解碼,也有基于GTP/GTX資源的SDI編解碼;既有HD-SDI、3G-SDI,也有6G-SDI、12G-SDI等;專欄地址鏈接如下:
點擊直接前往

本方案在Xilinx–Kintex系列FPGA上的應用

本方案在Xilinx–Kintex系列FPGA上的也有應用,之前專門寫過一篇博客,博客地址鏈接如下:
點擊直接前往

3、詳細設計方案

設計原理框圖

設計原理框圖如下:
在這里插入圖片描述
注意!!!!
注意!!!!
紅色箭頭:無緩存HDMI輸出路徑
紫色箭頭:有緩存3G-SDI輸出路徑
綠色箭頭:有緩存HDMI輸出路徑

SDI 輸入設備

SDI 輸入設備可以是SDI相機,代碼兼容HD/SD/3G-SDI三種模式;SDI相機相對比較貴,預算有限的朋友可以考慮用HDMI轉SDI盒子模擬SDI相機,這種盒子某寶一百塊左右;當使用HDMI轉SDI盒子時,輸入源可以用筆記本電腦,即用筆記本電腦通過HDMI線連接到HDMI轉SDI盒子的HDMI輸入接口,再用SDI線連接HDMI轉SDI盒子的SDI輸出接口到FPGA開發板,如下:
在這里插入圖片描述

Gv8601a 均衡器

Gv8601a芯片實現單端轉差分和均衡EQ的功能,這里選用Gv8601a是因為借鑒了了Xilinx官方的方案,當然也可以用其他型號器件。Gv8601a均衡器原理圖如下:
在這里插入圖片描述

GTX 解串與串化

本設計使用Xilinx特有的GTX高速信號處理資源實現SDI差分視頻信號的解串與串化,對于SDI視頻接收而言,GTX起到解串的作用,即將輸入的高速串行的差分信號解為并行的數字信號;對于SDI視頻發送而言,GTX起到串化的作用,即將輸入的并行的數字信號串化為高速串行的差分信號;GTX的使用一般需要例化GTX IP核,通過vivado的UI界面進行配置,但本設計需要對SD-SDI、HD-SDI、3G-SDI視頻進行自動識別和自適應處理,所以需要使得GTX具有動態改變線速率的功能,該功能可通過DRP接口配置,也可通過GTX的rate接口配置,所以不能使用vivado的UI界面進行配置,而是直接例化GTX的GTXE2_CHANNEL和GTXE2_COMMON源語直接使用GTX資源;此外,為了動態配置GTX線速率,還需要GTX控制模塊,該模塊參考了Xilinx的官方設計方案,具有動態監測SDI模式,動態配置DRP等功能;該方案參考了Xilinx官方的設計;GTX 解串與串化模塊代碼架構如下:
在這里插入圖片描述

SMPTE SD/HD/3G SDI IP核

SMPTE SD/HD/3G SDI IP核是Xilinx系列FPGA特有的用于SDI視頻編解碼的IP,該IP配置使用非常簡單,vivado的UI界面如下:
在這里插入圖片描述
SMPTE SD/HD/3G SDI IP核必須與GTX配合才能使用,對于SDI視頻接收而言,該IP接收來自于GTX的數據,然后將SDI視頻解碼為BT1120視頻輸出,對于SDI視頻發送而言,該IP接收來自于用戶側的的BT1120視頻數據,然后將BT1120視頻編碼為SDI視頻輸出;該方案參考了Xilinx官方的設計;SMPTE SD/HD/3G SDI IP核代碼架構如下:
在這里插入圖片描述

BT1120轉RGB

BT1120轉RGB模塊的作用是將SMPTE SD/HD/3G SDI IP核解碼輸出的BT1120視頻轉換為RGB888視頻,它由BT1120轉CEA861模塊、YUV422轉YUV444模塊、YUV444轉RGB888三個模塊組成,該方案參考了Xilinx官方的設計;BT1120轉RGB模塊代碼架構如下:
在這里插入圖片描述

圖像緩存

圖像緩存方案有兩種;一是自研的FDMA圖像緩存架構,二是Xilinx官方的的VDMA圖像緩存架構;緩存介質為PS端DDR3;FDMA圖像緩存架構由FDMA、FDMA控制器、緩存幀選擇器構成;圖像緩存使用Xilinx vivado的Block Design設計,如下圖:
在這里插入圖片描述
關于FDMA更詳細的介紹,請參考我之前的博客,博文鏈接如下:
點擊直接前往

VDMA圖像緩存架構由VDMA、AXI互聯IP構成;圖像緩存使用Xilinx vivado的Block Design設計,如下圖:
在這里插入圖片描述

視頻讀取控制

FDMA圖像緩存架構使用VGA時序模塊完成視頻讀取控制,VGA時序模塊負責產生VGA時序,他有兩個作用,一是控制FDMA控制器從DDR3中讀出緩存的視頻,二是將同步后的VGA視頻送入下一級模塊,在HDMI輸出方式下VGA時序模塊的像素時鐘由用戶提供;在SDI輸出方式下VGA時序模塊的像素時鐘由SMPTE SD/HD/3G SDI IP核的發送用戶時鐘提供,在不同的SDI模式下像素時鐘不同,比如在3G-SDI模式下像素時鐘為148.5M,在HD-SDI的720P@60Hz模式下像素時鐘為74.25M;HDMI輸出方式下的VGA時序模塊代碼架構如下:
在這里插入圖片描述
SDI輸出方式下的VGA時序模塊代碼架構如下:
在這里插入圖片描述
VDMA圖像緩存架構使用VTC+AXI4-Stream To Video Out架構完成視頻讀取控制,架構如下:
在這里插入圖片描述

HDMI輸出

在HDMI輸出方式下,使用HDMI輸出模塊將RGB視頻編碼為HDMI差分信號,HDMI輸出模塊采用verilog代碼手寫,可以用于FPGA的HDMI發送應用,代碼如下:
在這里插入圖片描述
關于這個模塊,請參考我之前的博客,博客地址:點擊直接前往

RGB轉BT1120

在SDI輸出方式下需要使用該模塊;RGB轉BT1200模塊的作用是將用戶側的RGB視頻轉換為BT1200視頻輸出給SMPTE SD/HD/3G SDI IP核;RGB轉BT1120模塊由RGB888轉YUV444模塊、YUV444轉YUV422模塊、SDI視頻編碼模塊、數據嵌入模塊組成,該方案參考了Xilinx官方的設計;BT1120轉RGB模塊代碼架構如下:
在這里插入圖片描述

Gv8500 驅動器

Gv8500芯片實現差分轉單端和增強驅動的功能,這里選用Gv8500是因為借鑒了了Xilinx官方的方案,當然也可以用其他型號器件。Gv8500驅動器原理圖如下:
在這里插入圖片描述

SDI轉HDMI盒子

在SDI輸出方式下需要使用到SDI轉HDMI盒子,因為我手里的顯示器沒有SDI接口,只有HDMI接口,為了顯示SDI視頻,只能這么做,當然,如果你的顯示器有SDI接口,則可直接連接顯示,我的SDI轉HDMI盒子在某寶購買,不到100塊;

工程源碼架構

本博客提供5套工程源碼,以工程源碼2為例,vivado Block Design設計如下,其他工程與之類似,Block Design設計為圖像緩存架構的部分:
在這里插入圖片描述
以工程源碼2為例,使工程源碼架構如下,其他工程與之類似:
在這里插入圖片描述
FDMA圖像緩存架構雖然不需要SDK配置,但FDMA的AXI4接口時鐘由Zynq提供,所以需要運行SDK程序才能啟動Zynq,從而為PL端邏輯提供時鐘;由于不需要SDK配置,所以SDK軟件代碼就變得極度簡單,只需運行一個“Hello World”即可,如下:
在這里插入圖片描述
VDMA圖像緩存架構則需要SDK配置,代碼架構如下:
在這里插入圖片描述

4、工程源碼1詳解–>3G-SDI轉HDMI,無緩存輸出方案

開發板FPGA型號:Xilinx-Zynq7100–xc7z100ffg900-2;
開發環境:Vivado2019.1;
輸入:3G-SDI相機或HDMI轉SDI盒子,分辨率1920x1080@60Hz;
輸出:HDMI ,分辨率1920x1080@60Hz;
緩存方案:無緩存;
緩存介質:無緩存;
工程作用:此工程目的是讓讀者掌握Zynq系列FPGA實現SDI轉HDMI的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

5、工程源碼2詳解–>3G-SDI轉HDMI,FDMA緩存輸出方案

開發板FPGA型號:Xilinx-Zynq7100–xc7z100ffg900-2;
開發環境:Vivado2019.1;
輸入:3G-SDI相機或HDMI轉SDI盒子,分辨率1920x1080@60Hz;
輸出:HDMI ,分辨率1920x1080@60Hz;
緩存方案:自研FDMA方案;
緩存介質:PS端DDR3;
工程作用:此工程目的是讓讀者掌握Zynq系列FPGA實現SDI轉HDMI的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

6、工程源碼3詳解–>3G-SDI轉3G-SDI,FDMA緩存輸出方案

開發板FPGA型號:Xilinx-Zynq7100–xc7z100ffg900-2;
開發環境:Vivado2019.1;
輸入:3G-SDI相機或HDMI轉SDI盒子,分辨率1920x1080@60Hz;
輸出:3G-SDI,分辨率1920x1080@60Hz;
緩存方案:自研FDMA方案;
緩存介質:PS端DDR3;
工程作用:此工程目的是讓讀者掌握Zynq系列FPGA實現SDI轉HDMI的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

7、工程源碼4詳解–>3G-SDI轉HDMI,VDMA緩存輸出方案

開發板FPGA型號:Xilinx-Zynq7100–xc7z100ffg900-2;
開發環境:Vivado2019.1;
輸入:3G-SDI相機或HDMI轉SDI盒子,分辨率1920x1080@60Hz;
輸出:HDMI ,分辨率1920x1080@60Hz;
緩存方案:自研VDMA方案;
緩存介質:PS端DDR3;
工程作用:此工程目的是讓讀者掌握Zynq系列FPGA實現SDI轉HDMI的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

8、工程源碼5詳解–>3G-SDI轉3G-SDI,VDMA緩存輸出方案

開發板FPGA型號:Xilinx-Zynq7100–xc7z100ffg900-2;
開發環境:Vivado2019.1;
輸入:3G-SDI相機或HDMI轉SDI盒子,分辨率1920x1080@60Hz;
輸出:3G-SDI,分辨率1920x1080@60Hz;
緩存方案:自研VDMA方案;
緩存介質:PS端DDR3;
工程作用:此工程目的是讓讀者掌握Zynq系列FPGA實現SDI轉HDMI的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

9、工程移植說明

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

10、上板調試驗證

準備工作

需要準備的器材如下:
FPGA開發板;
SDI攝像頭或HDMI轉SDI盒子;
SDI轉HDMI盒子;
HDMI顯示器;
我的開發板了連接如下:
在這里插入圖片描述

輸出視頻演示

以工程2,3G-SDI輸入HDMI輸出為例,輸出如下:

3G-SDI輸入HDMI輸出

11、福利:工程代碼的獲取

福利:工程代碼的獲取
代碼太大,無法郵箱發送,以某度網盤鏈接方式發送,
資料獲取方式:私,或者文章末尾的V名片。
網盤資料如下:
在這里插入圖片描述
此外,有很多朋友給本博主提了很多意見和建議,希望能豐富服務內容和選項,因為不同朋友的需求不一樣,所以本博主還提供以下服務:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38549.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vuepress使用簡介及個人博客搭建

目錄 一、介紹二、環境準備三、安裝運行vuepress四、目錄結構五、配置文件六、導航欄配置七、導航欄logo八、瀏覽器圖標九、側邊欄配置十、添加 Git 倉庫和編輯鏈接十一、部署到GitHub十二、搭建成功 一、介紹 VuePress 是 Vuejs 官方提供的一個是Vue驅動的靜態網站生成器&…

Qt 配置ASan

Qt 配置ASan 文章目錄 Qt 配置ASan摘要關于ASan(AddressSanitizer)在Qt中配置 ASan1. 安裝必要的工具2. 修改項目的 .pro 文件3. 重新構建項目4. 運行應用程序5. 分析錯誤報告示例注意事項 關鍵字: Qt、 ASan、 AddressSanitizer 、 GCC …

CTFHUB-SSRF-Redis協議

本題需要用到: 在線編碼網址:https://icyberchef.com/ gopherus工具:https://mp.csdn.net/mp_blog/creation/editor/139440201 開啟題目,頁面空白 和上一個題FastCGI協議一樣,還是使用gopherus攻擊redis ./gopheru…

Oracle PL / SQL 插入insert 第二部分

DUAL表 dual是由具有一列和一行的oracle數據庫(所有者SYS)擁有的表。 要評估1 1的添加,請執行以下SQl SELECT語句: SELECT 1 1 FROM dual; 快速找出oracle如何評估你對內置函數length()的使用。 SELE…

vlan基礎相關

7.2以太網交換基礎 數據鏈路層也叫2層網絡,用的是Mac地址,想到Mac地址就要想到交換機。 以太網協議(LAN)以太網是建立在CSMA/CD載波監聽多路訪問/沖突檢測,機制上的廣播型網絡。CSMA工作原理是先監聽,在介…

110kV以下變電所電力監控-安科瑞電力監控解決方案

一、系統介紹 變電站電力監控系統為110kV及以下用戶變電站提供了完整的SCADA功能。 二、系統硬件 AM5SE系列微機保護裝置 全電參量測量 諧波制動獨立操作回路 可編程出口矩陣;定制化的邏輯設計;故障錄波;事件記錄、故障 錄波數據&#x…

在UniApp中使用Three.js渲染3D模型

在移動應用開發中,3D渲染正變得越來越普遍。本文將介紹如何在UniApp框架中集成Three.js庫來渲染3D模型,為您的應用增添引人注目的視覺效果。 1. 簡介 UniApp是一個跨平臺開發框架,允許開發者使用Vue.js開發一次,就能發布到iOS、Android、Web等多個平臺。Three.js則是一個強大…

3099. 哈沙德數 Easy

如果一個整數能夠被其各個數位上的數字之和整除,則稱之為 哈沙德數(Harshad number)。給你一個整數 x 。如果 x 是 哈沙德數 ,則返回 x 各個數位上的數字之和,否則,返回 -1 。 示例 1: 輸入&a…

高內聚低耦合舉個例子詳細介紹

學習目標: 高內聚低耦合舉個例子詳細介紹 學習內容: 高內聚和低耦合是軟件設計中的兩個重要原則,旨在提高系統的可維護性、可擴展性和靈活性。下面我們通過一個例子詳細介紹高內聚和低耦合的概念及其實現方法。 例子:在線購物系…

聊天交友系統開發專業語聊交友app開發搭建同城交友開發婚戀交友系統相親app開發

1、上麥相親互動:直播間內除了紅娘外,還有男女用戶兩個視頻麥位,直播間符合要求的用戶可以申請上麥 2、公屏聊天:為上麥用戶可以通過在公屏發言的方式參與直播間內的話題互動。 3、私信,異性用戶之間可以發送私信消息,通過付費或開通會員可解…

法國工程師IMT聯盟 密碼學及其應用 2023年期末考試補考題

1 JAVA 安全 1.1 問題1 1.1.1 問題 用 2 或 3 句話解釋 Java 執行模型(Java 虛擬機machine virtuelle Java))中引入introduit沙箱bac sable機制 mcanisme d’excution par isolation的目的。 1.1.2 問題解釋 在 Java 執行模型(Java 虛擬機…

知識見聞 - 什么是SAT求解器

SAT求解器(SAT solver,布爾可滿足性問題求解器)是一種計算工具,用于確定是否存在一個變量賦值,使給定的布爾公式為真。布爾可滿足性問題是計算理論中的一個重要問題,通常用來解決邏輯推理、驗證和優化問題。…

Java面試八股文

一、Redis 1. 使用場景 (1)Redis的數據持久化策略有哪些 RDB:全稱Redis Database Backup file(Redis數據備份文件),也被叫作Redis數據快照。簡單來說就是把內存中的所有數據都記錄到磁盤中。當Redis實例故…

【信息系統項目管理師】18年~23年案例概念型知識

文章目錄 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 請簡述 ISO 9000 質量管理的原則 領導作用、 過程方法、 管理的系統方法、 與供方互利的關系、 基于事實的決策方法、 持續改進、 全員參與、 以顧客為關注焦點 概念 國家標準(GB/T 1 9000 2008)對質量的定…

JS如何把年月日轉為時間戳

在JavaScript中,將年月日(通常表示為一個字符串或者分別的年、月、日數字)轉換為時間戳(即Unix時間戳,是自1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒)可以…

【proteus經典實戰】VB上位機程序控制DS1302時鐘的proteus仿真

一、簡介: VB上位機程序控制DS1302時鐘是一種常見的應用,DS1302是一款實時時鐘芯片,通常用于計算機、電子設備或其他系統中,以提供時間戳和其他時間相關功能,DS1302時鐘芯片通常需要外部電源供電,并且具有…

嵌入式c語言2——預處理

在c語言中,頭部內容,如include與define是不參與編譯而直接預先處理的 如include相當于把頭文件擴展,define相當于做了替換 c語言大型工程創建時,會有調試版本與發行版本,發行時不希望看到調試部分內容,此時…

基于多視點編碼光場的全景三維重建方法

歡迎關注GZH《光場視覺》 摘要:在基于光場的一系列應用中,目標的三維重建是基礎且關鍵的任務。普通光場只能重建單一視角而無法重建全景,并且在紋理特征匱乏的區域也無法生成準確的三維信息。針對以上問題,提出一種基于多視點編碼…

存算一體架構或成為AI處理器技術發展關鍵

©作者|堅果 來源|神州問學 引言 馬斯克巨資60億美元打造的“超級算力工場”,通過串聯10萬塊頂級NVIDIA H100 GPU,不僅震撼了AI和半導體行業,促使英偉達股價應聲上漲6%,還強烈暗示了AI大模型及芯片需求的急劇膨脹。這一行動…

【學習積累】自然資源全領域基本知識

【學習積累】自然資源領域基本知識 土地篇 1、我國土地管理的基本國策和基本國情是什么? 答:基本國策是十分珍惜、合理利用土地和切實保護耕地。基本國情是人多地少,耕地后備資源嚴重不足 2、耕地保護對我國經濟社會發展有何作用? 答:…