FPGA實現CameraLink視頻解碼轉SDI輸出,基于LVDS+GTX架構,提供2套工程源碼和技術支持

目錄

  • 1、前言
    • 工程概述
    • 免責聲明
  • 2、CameraLink協議理論學習
  • 3、相關方案推薦
    • 我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
    • FPGA實現CameraLink視頻編解碼方案
    • 本博已有的 SDI 編解碼方案
  • 4、工程詳細設計方案
    • 工程設計原理框圖
    • 輸入CameraLink相機
    • LVDS視頻解碼模塊
    • LVDS視頻對齊
    • Video In To AXI4-Stream
    • VDMA視頻緩存
    • RGB轉BT1120
    • SMPTE SD/HD/3G SDI IP核
    • GTX 串化
    • LMH1218RTWR 驅動器
    • SDI轉HDMI盒子
    • 工程源碼架構
  • 5、Vivado工程詳解1詳解:Kintex7-325T版本
  • 6、Vivado工程詳解2詳解:Zynq7045版本
  • 7、工程移植說明
    • vivado版本不一致處理
    • FPGA型號不一致處理
    • 其他注意事項
  • 8、上板調試驗證
    • 準備工作
    • FPGA解碼CameraLink視頻轉SDI輸出效果演示
  • 9、工程代碼獲取

FPGA實現CameraLink視頻解碼轉SDI輸出,基于LVDS+GTX架構,提供2套工程源碼和技術支持

1、前言

FPGA實現CameraLink視頻解碼現狀:

FPGA實現CameraLink視頻解碼目前有兩種方案:
一是使用專用編芯片解碼,比如典型的DS90CR287,優點是簡單快捷,缺點是需要額外的芯片,導致PCB布線難度加大,系統成本上升;另一種方案是使用FPGA邏輯資源實現編解碼,其中7系列FPGA使用ISERDES2原語實現解串,UltraScale系列FPGA使用ISERDES3原語實現解串,優點是充分利用了FPGA資源,系統設計簡單,成本更低,缺點是實現難度大,對FPGA工程師水平要求較高;本設計使用7系列FPGA的ISERDES2原語實現CameraLink視頻解碼;

FPGA實現SDI視頻解碼現狀:

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

工程概述

本文詳細描述了FPGA實現CameraLink視頻解碼的設計方案;輸入視頻為CameraLink相機,相機為Base模式;CameraLink相機LVDS視頻對首先送入純verilog代碼實現的LVDS接收解碼模塊實現LVDS視頻解碼,輸出并行視頻數據,LVDS接收解碼模塊需要用到Xilinx ISERDES2原語;然后解碼視頻送入純verilog代碼實現的LVDS視頻對齊模塊實現視頻時序恢復,根據CameraLink協議和相機數據手冊將并行視頻數據恢復為Native視頻時序,提取出行同步信號、長同步信號、數據有效信號和視頻像素數據;然后調用Xilinx官方的Video In To AXI4-Stream IP核將Native視頻流轉換為AXI4-Stream視頻流;然后調用Xilinx官方的VDMA IP核視頻圖像緩存,緩存方案為3幀緩存,緩存介質為DDR3顆粒;然后緩存視頻從DDR3中讀出,調用Xilinx官方的AXI4-Stream To Video Out IP核將AXI4-Stream視頻流轉換為Native視頻流;然后Native視頻流送入入純verilog代碼實現的RGB轉BT1120模塊實現視頻格式轉換;然后BT1120視頻進入Xilinx官方的SMPTE SD/HD/3G SDI IP核,進行SDI視頻編碼操作并輸出SDI視頻;然后并行的SDI視頻經過Xilinx官方的GTX高速資源,實現并行數據到高速串行的轉換,本博稱之為串化;然后差分高速信號再進入板載的LMH1218RTWR芯片實現差分轉單端和驅動增強的功能;最后SDI視頻通過FPGA開發板的BNC座子輸出,通過同軸線連接到SDI轉HDMI盒子連接到HDMI顯示器;整個工程需要用到MicroBlaze或Zynq軟核做相關IP配置和相關IC配置;針對市場主流需求,本博客提供2套工程源碼,具體如下:
在這里插入圖片描述
現對上述2套工程源碼做如下解釋,方便讀者理解:

工程源碼1

開發板FPGA型號為Xilinx–>Kintex7–325T–xc7k325tffg676-2;輸入視頻為CameraLink工業相機,相機為Base模式,輸出分辨率為2448x2050@15Hz,輸出灰度圖,輸出為1-Tap模式,即一個像素時鐘輸出1個像素,像素時鐘頻率80M Hz;CameraLink相機LVDS視頻對首先送入純verilog代碼實現的LVDS接收解碼模塊實現LVDS視頻解碼,輸出并行視頻數據,LVDS接收解碼模塊需要用到Xilinx ISERDES2原語;然后解碼視頻送入純verilog代碼實現的LVDS視頻對齊模塊實現視頻時序恢復,根據CameraLink協議和相機數據手冊將并行視頻數據恢復為Native視頻時序,提取出行同步信號、長同步信號、數據有效信號和視頻像素數據;然后調用Xilinx官方的Video In To AXI4-Stream IP核將Native視頻流轉換為AXI4-Stream視頻流;然后調用Xilinx官方的VDMA IP核視頻圖像緩存,緩存方案為3幀緩存,緩存介質為DDR3顆粒;然后緩存視頻從DDR3中讀出,調用Xilinx官方的AXI4-Stream To Video Out IP核將AXI4-Stream視頻流轉換為Native視頻流;然后Native視頻流送入入純verilog代碼實現的RGB轉BT1120模塊實現視頻格式轉換;然后BT1120視頻進入Xilinx官方的SMPTE SD/HD/3G SDI IP核,進行SDI視頻編碼操作并輸出3G-SDI視頻,分辨率為1920x1080@60Hz;然后并行的SDI視頻經過Xilinx官方的GTX高速資源,實現并行數據到高速串行的轉換,本博稱之為串化;然后差分高速信號再進入板載的LMH1218RTWR芯片實現差分轉單端和驅動增強的功能;最后SDI視頻通過FPGA開發板的BNC座子輸出,通過同軸線連接到SDI轉HDMI盒子連接到HDMI顯示器;整個工程需要用到MicroBlaze軟核做相關IP配置和相關IC配置;由此形成FPGA+CameraLink+SDI的高端架構;該工程適用于CameraLink視頻轉換卡應用;

工程源碼2

開發板FPGA型號為Xilinx–>Zynq7045–xc7z045ffg900-2;輸入視頻為CameraLink工業相機,相機為Base模式,輸出分辨率為2448x2050@15Hz,輸出灰度圖,輸出為1-Tap模式,即一個像素時鐘輸出1個像素,像素時鐘頻率80M Hz;CameraLink相機LVDS視頻對首先送入純verilog代碼實現的LVDS接收解碼模塊實現LVDS視頻解碼,輸出并行視頻數據,LVDS接收解碼模塊需要用到Xilinx ISERDES2原語;然后解碼視頻送入純verilog代碼實現的LVDS視頻對齊模塊實現視頻時序恢復,根據CameraLink協議和相機數據手冊將并行視頻數據恢復為Native視頻時序,提取出行同步信號、長同步信號、數據有效信號和視頻像素數據;然后調用Xilinx官方的Video In To AXI4-Stream IP核將Native視頻流轉換為AXI4-Stream視頻流;然后調用Xilinx官方的VDMA IP核視頻圖像緩存,緩存方案為3幀緩存,緩存介質為DDR3顆粒;然后緩存視頻從DDR3中讀出,調用Xilinx官方的AXI4-Stream To Video Out IP核將AXI4-Stream視頻流轉換為Native視頻流;然后Native視頻流送入入純verilog代碼實現的RGB轉BT1120模塊實現視頻格式轉換;然后BT1120視頻進入Xilinx官方的SMPTE SD/HD/3G SDI IP核,進行SDI視頻編碼操作并輸出3G-SDI視頻,分辨率為1920x1080@60Hz;然后并行的SDI視頻經過Xilinx官方的GTX高速資源,實現并行數據到高速串行的轉換,本博稱之為串化;然后差分高速信號再進入板載的LMH1218RTWR芯片實現差分轉單端和驅動增強的功能;最后SDI視頻通過FPGA開發板的BNC座子輸出,通過同軸線連接到SDI轉HDMI盒子連接到HDMI顯示器;整個工程需要用到Zynq軟核做相關IP配置和相關IC配置;由此形成FPGA+CameraLink+SDI的高端架構;該工程適用于CameraLink視頻轉換卡應用;

本文詳細描述了FPGA解碼CameraLink視頻轉SDI輸出的設計方案,工程代碼可綜合編譯上板調試,可直接項目移植,適用于在校學生、研究生項目開發,也適用于在職工程師做項目開發,可應用于醫療、軍工等行業的高速接口領域;
提供完整的、跑通的工程源碼和技術支持;
工程源碼和技術支持的獲取方式放在了文章末尾,請耐心看到最后;

免責聲明

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

2、CameraLink協議理論學習

關于這部分,網上有很多博主解釋過,我找了幾篇推薦學習理論知識:
博客鏈接如下:
點擊直接前往
你也可以去網上通過其他途徑免費學習CameraLink協議,在學了CameraLink協議基礎上看本工程源碼能更快理解吸收;

3、相關方案推薦

我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目

其實一直有朋友反饋,說我的博客文章太多了,亂花漸欲迷人,自己看得一頭霧水,不方便快速定位找到自己想要的項目,所以本博文置頂,列出我目前已有的所有項目,并給出總目錄,每個項目的文章鏈接,當然,本博文實時更新。。。以下是博客地址:
點擊直接前往

FPGA實現CameraLink視頻編解碼方案

我的CameraLink視頻專欄有很多FPGA的CaeraLink視頻編解碼方案,既有CaeraLink接收,也有CaeraLink發送,既有CaeraLink普通輸出顯示,也有CaeraLink視頻拼接輸出等等,專欄鏈接如下:歡迎前往查看:
點擊直接前往

本博已有的 SDI 編解碼方案

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

4、工程詳細設計方案

工程設計原理框圖

工程設計原理框圖如下:
在這里插入圖片描述

輸入CameraLink相機

輸入視頻為CameraLink工業相機,相機為Base模式,輸出分辨率為2448x2050@15Hz,輸出灰度圖,輸出為1-Tap模式,即一個像素時鐘輸出1個像素,像素時鐘頻率80M Hz;CameraLink相機如下:
在這里插入圖片描述

LVDS視頻解碼模塊

本設計參考了Xilinx官方設計,基于ISERDES2原語實現的LVDS解碼模塊對輸入的CameraLink視頻進行解碼;LVDS視頻解碼模塊設計框圖如下:
在這里插入圖片描述
LVDS視頻解碼模塊輸入為隨路差分時鐘對和LVDS差分數據對;利用Xilinx官方IDELAY和ISERDES原語實現串并轉換;模塊總體代碼架構如下:
在這里插入圖片描述
IDELAY原語用于接收延時,保證接收端視頻的穩定性;ISERDES2原語用于串并轉換,將輸入串行差分數據轉換為并行數據;此外,LVDS解串視頻還需要做對齊處理,隨路時鐘也需要通過MMCM輸出同步處理;整個LVDS視頻解碼模塊嚴格按照設計框圖實現,解碼模塊頂層接口如下:
在這里插入圖片描述
Block Design設計中,直接將LVDS視頻解碼模塊頂層拖入Block Design中形成自定義IP,方便調用和使用,如下:
在這里插入圖片描述
雙擊LVDS視頻解碼模塊的自定義IP,可以看到配置參數如下:
在這里插入圖片描述
這兩個參數可自由配置,以適應CameraLink相機的不同模式;具體配置如下:
在這里插入圖片描述

LVDS視頻對齊

調用LVDS視頻對齊模塊,根據CameraLink視頻協議提取出行同步信號、場同步信號、數據有效信號和像素數據;模塊總體代碼架構如下:
在這里插入圖片描述
模塊頂層接口如下:
在這里插入圖片描述
Block Design設計中,直接將CameraLink視頻恢復模塊頂層拖入Block Design中形成自定義IP,方便調用和使用,如下:
在這里插入圖片描述

Video In To AXI4-Stream

調用Xilinx官方的Video In To AXI4-Stream IP核將Bayer視頻轉換為 AXI4-Stream視頻流;Block Design中如下:
在這里插入圖片描述
需要注意的是,Base模式下,相機1個像素時鐘輸出2個像素;
需要注意的是,Full模式下,相機1個像素時鐘輸出8個像素;
在IP配置時需要針對性配置,具體請參考工程;

VDMA視頻緩存

LVDS解碼后的視頻轉為Xilinx的AXI4-Sream的視頻流,經VDMA送入DDR3做4幀緩存,VDMA在Block Design中如下:
在這里插入圖片描述
需要注意的是,輸入VDMA的視頻數據位寬只有8位,是Bayer格式圖像,在IP配置時需要針對性配置,具體請參考工程;此外,VDMA需要調用MicroBlaze或Zynq軟核運行SDK來配置;

RGB轉BT1120

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

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核代碼架構如下:
在這里插入圖片描述

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 解串與串化模塊代碼架構如下:
在這里插入圖片描述

LMH1218RTWR 驅動器

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

SDI轉HDMI盒子

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

工程源碼架構

提供2套工程源碼,以工程源碼1為例,工程Block Design設計如下:
在這里插入圖片描述
提供2套工程源碼,以工程源碼1為例,綜合后的工程源碼架構如下:
在這里插入圖片描述
提供2套工程源碼,以工程源碼1為例,工程源碼需要運行MicroBlaze軟核,用于相關IP配置和相關IC配置;SDK工程架構如下:
在這里插入圖片描述
需要注意的是,在SDK工程中,我們將所有子函數都放在了主函數里,并提供了詳細的中文注釋和使用方法注釋,用戶可根據注釋快速理解和使用;不懂的可以問我;如果你打開后注釋顯示亂碼,請將SDK字符設置為國標;

本博主發布的工程均已編譯完成,且時序收斂,無時序違約,如下:
在這里插入圖片描述

5、Vivado工程詳解1詳解:Kintex7-325T版本

開發板FPGA型號:Xilinx–>Kintex7–325T–xc7k325tffg676-2;
FPGA開發環境:Vivado2019.1;
輸入:CameraLink相機,Base模式,分辨率2448x2050@15Hz,輸出灰度圖;
輸出:3G-SDI,RTL邏輯編碼,分辨率為1920x1080@60Hz;
CameraLink視頻解碼方案:Xilinx官方ISERDES2原語LVDS解碼方案;
LVDS差分對:4對差分數據+1對隨路差分時鐘;
圖像緩存方案:Xilinx官方VDMA+DDR3顆粒,3幀緩存;
SDI視頻解串方案:Xilinx–GTX高速接口解串;
SDI視頻解碼方案:Xilinx–SMPTE SD/HD/3G-SDI 解碼;
實現功能:FPGA解碼CameraLink視頻轉SDI輸出;
工程作用:此工程目的是讓讀者掌握FPGA解碼CameraLink視頻轉SDI輸出的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第4章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

6、Vivado工程詳解2詳解:Zynq7045版本

開發板FPGA型號:Xilinx–>Zynq7045–xc7z045ffg900-2;
FPGA開發環境:Vivado2019.1;
輸入:CameraLink相機,Base模式,分辨率2448x2050@15Hz,輸出灰度圖;
輸出:3G-SDI,RTL邏輯編碼,分辨率為1920x1080@60Hz;
CameraLink視頻解碼方案:Xilinx官方ISERDES2原語LVDS解碼方案;
LVDS差分對:4對差分數據+1對隨路差分時鐘;
圖像緩存方案:Xilinx官方VDMA+DDR3顆粒,3幀緩存;
SDI視頻解串方案:Xilinx–GTX高速接口解串;
SDI視頻解碼方案:Xilinx–SMPTE SD/HD/3G-SDI 解碼;
實現功能:FPGA解碼CameraLink視頻轉SDI輸出;
工程作用:此工程目的是讓讀者掌握FPGA解碼CameraLink視頻轉SDI輸出的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第4章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

7、工程移植說明

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

8、上板調試驗證

準備工作

需要準備的器材如下:
CameraLink相機,可以找本博主提供;
CameraLink轉接板,可以找本博主提供;
SDI轉接板,可以找本博主提供;
FPGA開發板,沒有開發板可以找本博主提供;
SDI轉HDMI盒子;
HDMI顯示器和HDMI線纜,這個很常見,自備即可;

FPGA解碼CameraLink視頻轉SDI輸出效果演示

FPGA解碼CameraLink視頻轉SDI輸出效果演示如下:

FPGA實現CameraLink轉SDI,工程源碼分享

9、工程代碼獲取

工程代碼如下:
在這里插入圖片描述

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

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

相關文章

戶外人像要怎么拍 ?

前言: ” 接上篇,培養你的眼力 - 攝影構圖,本文是整理自《美國紐約攝影學院 攝影教材》,第三單元 - 第9課 - 自然光,課后習題及解答。“ 1. 正面光產生無深淺反差的平面感覺。 理解這題,首先得明白什么是…

華為云Flexus+DeepSeek征文 | 華為云 ModelArts Studio 賦能高情商AI聊天助手:用技術構建有溫度的智能對話體驗

前言 華為云 ModelArts Studio 是基于 ModelArts 構建的一站式大模型即服務平臺(MaaS),可通過與開源 Agent 框架 Dify.AI 結合來開發對接 AI 聊天助手。 在打造 “高情商” 特性的過程中,華為云ModelArts Studio 的自定義提示詞…

Spring Boot屬性配置方式

一、Spring Boot屬性配置方式。 在編寫完成后端程序之前,可以通過yml配置文件鍵值對的方式修改配置環境,一旦打包完成,再次修改yml配置文件較為麻煩,此時,可以使用以下配置方式: 1.命令行參數方式 …

Webpack原理剖析與實現

1. 整體架構設計 Webpack 5 的整體架構設計包括以下幾個核心模塊: Compiler:負責整個編譯過程,從讀取配置、解析模塊、生成依賴圖,到輸出最終的打包結果,主要文件是 lib/Compiler.js 。 Compilation:代表一次編譯過程,包括所有模塊、依賴關系和編譯結果,主要文件是 li…

【Python使用】嘿馬python運維開發全體系教程第2篇:日志管理,Linux概述【附代碼文檔】

教程總體簡介:網絡設定 學習目標 1、手動設定 2、DHCP自動獲取 系統基本優化 一、永久關閉SELinux 1. 永久關閉 二、關閉防火墻 2. 臨時啟動關閉防火墻 三、設定運行級別為3(命令行模式) 四、修改ssh端口號 ssh服務 一、ssh介紹 二、客戶端遠…

Hibernate報No Dialect mapping for JDBC type 1111(APP)

文章目錄 環境癥狀問題原因解決方案報錯編碼 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 癥狀 客戶應用中報錯No Dialect mapping for JDBC type 1111。 問題原因 客戶使用Hibernate,實體類的中設置的數據類型與數…

【數據分析】環境數據降維與聚類分析教程:從PCA到可視化

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹教程內容數據預處理主成分分析(PCA)聚類分析可視化分析結果提取簇特征教程目的加載R包數據下載導入數據數據預處理主成分分析(PCA)計算相關矩陣繪制相關矩陣熱圖執行PCA可視化…

mac 安裝python,切換python版本

一、安裝多版本的PYTHON 在macOS上,你可以通過Homebrew包管理器安裝多個版本的Python 安裝Homebrew 首先,如果你的macOS上沒有安裝Homebrew,需要先進行安裝。打開終端(Terminal)并輸入以下命令: /bin/b…

AMD圖形和計算架構:RNDA

AMD圖形和計算架構:RNDA AMD RDNA 是 AMD 為顯卡(GPU)設計的 圖形和計算架構,專為高性能游戲、實時渲染和并行計算優化。目前已經迭代到 RDNA 3(如 RX 7000 系列顯卡),與 NVIDIA 的 RTX 系列和…

ubuntu20.04配置go環境

下載go語言安裝包 下載地址: All releases - The Go Programming Language 解壓安裝包 tar xfz go1.17.linux-amd64.tar.gz -C /usr/local 配置環境變量 編輯配置文件 vim ~/.bashrc # go env export GOROOT/usr/local/go export GOPATH$HOME/software/go ex…

Monorepo+Pnpm+Turborepo

以下是關于 Monorepo pnpm Workspace Turborepo 的詳細解析,涵蓋核心概念、技術優勢、配置實踐及協作機制,結合行業最佳實踐總結。 一、Monorepo 的核心價值 Monorepo(單一倉庫)指多個項目/模塊共享同一代碼庫的管理模式&#…

【Springai】 2指定模型的三種方式(Ollama)

Springai 指定模型的三種方式(Ollama) 在實際開發中,Ollama 支持三種常用的模型指定方式: 1. 從 yml 配置讀取默認模型 注意: 這是最基礎、最推薦的方式,必須先配置好才能用自動注入的 OllamaChatModel。…

python | numpy小記(四):理解 NumPy 中的 `np.round`:銀行家舍入策略

python | numpy小記(四):理解 NumPy 中的 np.round:銀行家舍入策略 一、函數簽名與參數說明二、“銀行家舍入”策略三、基礎示例四、與 Python 內建 round 的異同五、使用注意事項六、擴展用法:自定義舍入策略七、總結…

shell腳本定時執行收集Oracle大表的日分區及創建分區本地索引

近期業務上了一張大表,每日新增分區,每日分區數據量為3千萬行。根據每日分區創建分區本地索引。同事添加定時收集前一日每日分區統計信息。 1、創建分區本地索引 (分區索引數量需要和分區name數量一致) create index nmld.add_event_occur_time on nmld.esa_event (occur…

使用 Spread.net將 Excel 中的文本拆分為多段

引言: 在 .NET 應用程序中處理 Excel 數據時,常常會碰到需要把文本拆分成多段的情況。例如在數據清洗、數據分析等場景下,將長文本按照特定規則拆分為多段能讓數據更便于處理和分析。Spread.NET作為一款強大的 .NET 電子表格組件&#xff0c…

QT實現一個三軸位移臺的控制界面

文章目錄 0 引入1、圓形轉盤2、其他3、引用 0 引入 本來想做一個酷炫的3D位移臺控制程序,要有一個類似遙控器手柄那種界面,在網上找了半天也沒有,想要有那種效果還要用異性按鈕做,迫在眉睫的情況下,使用了自己的方法&…

Java 案例 6 - 數組篇(基礎)

數組的平均值、最大(小)值。數組的反轉 需求:開發一個程序。假設班級有8名學生,用戶可以錄入8名學生的Java成績,成績類型是小數,并輸出平均分,最高分和最低分。 import java.util.Scanner; …

Java外觀模式實現方式與測試方法

一、外觀模式的實現方式 外觀模式的核心是通過封裝復雜子系統的調用邏輯,為客戶端提供一個統一的簡單接口。以下是實現步驟及示例: 定義子系統類 子系統類負責實現具體功能,與外觀類解耦。例如,家庭影院系統中的投影儀、音響等組…

《解鎖AudioSet:開啟音頻分析的無限可能》

音頻新時代的 “密鑰”:AudioSet 登場 在科技飛速發展的今天,音頻作為信息傳播與交互的關鍵媒介,早已滲透到現代科技的各個角落。從智能手機中的語音助手,讓我們通過簡單的語音指令就能查詢信息、發送消息,到智能家居系…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | ThemeClock(主題時鐘)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— ThemeClock組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API 和 <script setup> 語法結…