IntelliJ IDEA下開發FPGA——FPGA開發體驗提升__上

前言

? ? ? ? 由于Quartus寫代碼比較費勁,雖然新版已經有了代碼補全,但體驗上還有所欠缺。于是使用VS Code開發,效果如下所示,代碼樣式和基本的代碼補全已經可以滿足開發,其余工作則交由Quartus完成

????????但VS Code的自帶的git功能,說實話并不好用,只能查看更改的,需要手動展開才能瀏覽全局代碼。而合并過程,辨識度并不是很高,容易造成重復代碼

????????分支方面并不清晰,雖然提供了多種視圖

????????基于此,打算使用CLion試試。在官網上恰好看到了對應的插件,那么也就意味著此法可行。不過官方這個插件似乎還不支持所安裝的CLion

一、安裝插件

? ? ? ? 于是打算換成IntelliJ IDEA。下圖中的第一個插件與VS Code下的差不多,有基本的代碼補全功能,可以滿足基本的Verilog開發。第三個插件有不少Verilog相關的代碼檢查等功能。

????????需要注意的是,后者與其他Verilog插件可能不兼容,所以需要作出取舍。此處使用后者,前者需要禁用,否則工程目錄會一直處在正在加載

????????這個牛掰的插件,同時也是開源項目。

教程文檔:Scaleda:將 IntelliJ IDEA 打造為 FPGA 開發工具 — Scaleda v0.2.1 文檔

手冊:快速開始 — Scaleda v0.2.1 文檔

二、創建新項目

1,創建工程

新建項目,指定好路徑,路徑不能有中文。下圖這個Scaleda圖標表明插件不兼容

圖標實際應為

創建后會自動生成下面文件

2,新建文件

①新建Verilog文件

新建后,會自動生成對應框架

先寫一個簡單的計數器模塊,在強大的代碼補全和代碼提示下,很輕松地完成了

module demo (
input clk,
input reset,
output reg [7:0] count
);
always @(posedge clk) beginif (reset)count <= 8'h00;elsecount <= count + 1;
endendmodule

②新建Testbench文件

先簡單寫一個測試激勵文件

`timescale 1ns / 1psmodule demo_tb;// 信號聲明reg clk;reg reset;wire [7:0] count;// 實例化被測模塊demo dut (.clk  (clk),.reset(reset),.count(count));// 時鐘生成(50MHz)initial beginclk = 0;forever #10 clk = ~clk;  // 10ns半周期end// 測試流程控制initial beginreset = 1'b1;  // 初始復位#100;  // 保持100nsreset = 1'b0;  // 釋放復位// 監控信號變化$monitor("Time=%0t: count=%d", $time, count);// 運行16個時鐘周期repeat (16) @(posedge clk);// 驗證最終值(預期255+16會溢出)
//        if (count !== 8'd15) begin
//            $error("Final count mismatch! Expected 15, got %d", count);
//        end$finish;end//    這段語句會自動生成,所以不用加
//    // VCD波形記錄
//    initial begin
//    $dumpfile("demo_tb_waveform.vcd");
//    $dumpvars;    // 記錄測試臺頂層信號
//    end
endmodule

③格式化文件

? ? ? ? 從上圖可以看出,有很多警告表示應用Tab代替空格。

可以先按Ctrl + A全選,然后再按Ctrl + Alt + L 格式化代碼

④代碼檢查

? ? ? ? 代碼出現問題,不僅會有報錯提示,還有對應的解決措施,成功地把編寫代碼的難度降低一大截

3,基本功能

①語言服務器

? ? ? ? 在設置中可以找到該插件的相關配置,首先是如圖的語言服務器(LSP),提供代碼檢查等功能

????????Verible是檢測Verilog的,svls則是檢測System Verilog

? ? ? ? 手冊中亦有記載

②代碼樣式

③配色方案

4,添加工具鏈

①Intel Quartus

? ? ? ? 由于本人使用的是Quartus,所以添加的是Quartus的工具鏈,Vivado等在手冊中有相關配置教程

點擊添加,會有多個工具鏈模板,選擇最后一個Intel Quartus

在Quartus的安裝路徑中找到bin64這個路徑即可

②Icarus Verilog

????????Intel Quartus是FPGA的綜合和實現工具,而Icarus Verilog是開源仿真器,主要用于驗證HDL代碼

下載

? ? ? ? ?? ? ? ? 進入網址Icarus Verilog for Windows,然后選擇對應版本下載,比如最新版

安裝

? ? ? ? 選擇合適的目錄即可

????????可以選擇添加環境變量,環境變量若想生效,需要重啟(此時可以不重啟)

安裝完成后就可以添加該工具鏈了,由于已經包含了所需的三個程序,故路徑非常簡單。但要注意,此時需要指向程序,而非目錄

5,添加仿真配置

①添加目標平臺

? ? ? ? 點擊右上角的任務視圖

????????再點擊編輯任務

? ? ? ? 然后點擊“+”,會出現一個目標平臺,選擇對應的目標名稱、工具鏈和頂層模塊

????????頂層模塊,這里應添demo,而非demo_tb。約束文件暫時不管

②添加仿真任務

????????點擊目標平臺后,再點擊這個目標平臺,然后點擊“+”來添加仿真項目。注意!是仿真任務,所以使用的工具鏈是Icarus Verilog這個開源工具鏈

③刷新

? ? ? ? 回到任務視圖,點擊刷新

可以看到對應配置都刷新出來了,這里方括號的顯示與前面不一致,應該是個小bug

6,運行

? ? ? ? 雙擊運行可以看到有正確的輸出提示

????????尷尬的是,沒有產生手冊中的波形圖

設置波形

????????回到設置里咱去看看怎么個事。可以看到前面兩個選項勾選很正常,但波形處理這塊應該沒有生效

點開后,可以看到三個選項,其中gtkwave我們在iverilog的目錄里看到過,那么就選擇它吧

gtkwave

? ? ? ? 雙擊任務視圖里的仿真任務,或者點擊上面的運行,效果相同

????????此時,會彈出一個新窗口(老窗口)

點擊SST欄里的demo_tb,可以將其展開,其下方欄也會有相應信息

點擊這些信號,Signals那一欄就會出現相應信號,Waves下則出現對應波形

縮放一下,有那么一點韻味了

Surfer

? ? ? ? 與前面相同,在設置里選擇即可,點擊運行后,可以彈出這樣一個窗口。不得不說,這個背景色調相當有吸引力

Rvcd(未解決)

? ? ? ? 雖然插件里提到,Rvcd和Surfer是內置的,不過實際運行仿真任務時Rvcd卻沒有任何窗口,可能是我姿勢不對?

? ? ? ? 應該是插件錯誤導致的

7、曲線救Rvcd(失敗)

? ? ? ? 找到Rvcd項目(非常棒的項目),Scaleda/rvcd: VCD viewer in Rust, running on ANY platform

? ? ? ? 不過,我們并不需要下載Rust編譯器。到設置里,我們可以看到LSP的可執行路徑,那么我們就前往這個路徑

在bin這里,可以找到我們想要的文件

雙擊運行

找到我們項目下的仿真波形文件

然后什么都沒發生,疑似程序崩潰。那么根據README提示,使用命令行來完成操作(路徑需自行替換)

.\rvcd -i "E:\Program\Embedded\FPGA\demo\.sim\demo-iverilog-sim\demo_tb_waveform.vcd"

????????剛才當我沒說,Rust編譯器還是得下,下載是基本功,這里不啰嗦了。下載Rvcd源碼壓縮包后,執行下面命令進行編譯

# run rvcd
cargo run
# compile to release executable
cargo build --release

三、綜合Quartus項目

1,遷移

?把前面工程下的scaleda.yml復制到Quartus的舊工程里

然后右鍵工程文件夾,使用IDEA打開

????????接著修改配置即可,如果配置不生效,那么就重啟IDEA。可以選擇在任務視圖里修改,也就是圖形化操作

????????該插件對System Verilog的支持有限,建議文件后綴名為.v,使用Verilog

2,原理

? ? ? ? 接下來是對項目進行綜合,不知道為什么,這個插件Quartus的綜合項目時只會卡著,什么反應都沒有

????????不過綜合這一步終歸是利用Quartus的工具,自己手動配置也沒多麻煩。于是在Quartus里運行一下,進行綜合。

????????然后再根據輸出信息框篩選出命令,可以看到它執行了下面的五條命令,我們只需要把這些命令添加到外部工具即可

????????打開設置,找到外部工具,點擊“+”添加外部工具

可以輸入下面信息

????????這些信息怎么來的呢?前面在輸出信息框里,我們先找第一條命令

Info: Command: quartus_map --read_settings_files=on --write_settings_files=off Firefly -c Firefly

????????“Command:”后面的內容其實就是終端里執行的命令,quartus_map就是可執行程序,后面則是它需要的參數,也就是實參

? ? ? ? 而這個程序在哪呢?它在Quartus安裝目錄下的quartus/bin64目錄,此目錄就是Intel Quartus的工具鏈路徑。因此程序一欄添該程序的完整執行路徑即可

? ? ? ? 我們需要編譯(綜合)本工程,那么工作目錄自然是當前目錄(項目根目錄)

????????

????????剩下的外部工具皆是如此配置,幸運的是工作目錄和實參都差不多,只有程序名稱不同。不過這種方法有些劣質,如果是不同的工程,那么工作目錄就需要重新改了

2,powershell目標

? ? ? ? 為此,干脆寫一個powershell腳本,創建一個powershell目標,進行一鍵綜合。

????????點擊添加目標,選擇Shell Script

? ? ? ? 接下來找一個目錄存放腳本

? ? ? ? 可根據自己的情況更改

# 設置程序路徑
$QUARTUS_BIN = "E:\Tools\Develop\Embedded\intelFPGA\quartus\bin64"
# 設置項目名
$PROJECT_NAME = "Firefly"
# 設置工作目錄
$WORK_DIR = "E:/Program/Embedded/FPGA/Firefly"# 初始化環境
$env:PATH = "$QUARTUS_BIN;$env:PATH"
Set-Location $WORK_DIR# 執行流程
$commands = @("quartus_map --read_settings_files=on --write_settings_files=off $PROJECT_NAME -c $PROJECT_NAME","quartus_fit --read_settings_files=off --write_settings_files=off $PROJECT_NAME -c $PROJECT_NAME","quartus_asm --read_settings_files=off --write_settings_files=off $PROJECT_NAME -c $PROJECT_NAME","quartus_sta $PROJECT_NAME -c $PROJECT_NAME","quartus_eda --read_settings_files=off --write_settings_files=off $PROJECT_NAME -c $PROJECT_NAME"
)foreach ($cmd in $commands) {Write-Host "Run: $cmd" -ForegroundColor CyanInvoke-Expression $cmdif ($LASTEXITCODE -ne 0) {Write-Host "[Error] $LASTEXITCODE" -ForegroundColor Redexit $LASTEXITCODE}
}

此時在目標里填上腳本路徑,把解釋器路徑清空

執行目標后,輸出結果與Quartus相同,除了最后一條總結外

這里只是提供了一種可行性的方案,進行綜合還是要到Quartus里。至于燒錄等操作,則同理

3,編寫項目(重要)

? ? ? ? 如果以前有項目時要非常注意,該插件對System Verilog的支持有些問題。試過許多次,最后發現,代碼里不能出現中文等非ASCII字符,否則打開即崩。但它對V文件相當寬容

? ? ? ? 這就有些難辦了,既想使用System Verilog,又不能寫中文注釋

[Crash] Verible LSP fails to open .sv files with non-ASCII characters (e.g. Chinese comments) in IntelliJ IDEA

????????考慮到Verilog下的代碼提示和代碼樣式明顯更好,Verilog就Verilog吧

4,仿真

? ? ? ? 該插件對仿真的支持可謂差的一塌糊涂,主要是無法對sv文件進行仿真,如$sin、real、break等常見特性根本用不了。這個有空看看有沒有平替或者次替

ModelSim(GUI)

? ? ? ? 與前面綜合一致,仿真時,在Quartus的輸出信息框里找命令。可以看到在打開ModelSim后,輸出框里有這樣一條信息

而括號內的就是我們需要的命令

quartus_sh -t "e:/tools/develop/embedded/intelfpga/quartus/common/tcl/internal/nativelink/qnativesim.tcl" --rtl_sim "Firefly" "Firefly"

由于命令比較簡單,改為腳本文本,同時加上quartus_sh的路徑

E:\Tools\Develop\Embedded\intelFPGA\quartus\bin64\quartus_sh -t "e:/tools/develop/embedded/intelfpga/quartus/common/tcl/internal/nativelink/qnativesim.tcl" --rtl_sim "Firefly" "Firefly"

運行后會自動啟動ModelSim,與前面執行仿真任務Surfer差不多,唯一的區別就是,它的仿真是根據Quartus自帶的tcl腳本實現的

而內置的tcl腳本與qsf文件有關,換句話說,打開qsf文件,我們可以看到相關的約束命令

qsf的仿真解析

? ? ? ? 在qsf文件中,搜索test,右邊藍色區域可以就是所有涉及到測試激勵(仿真)的地方

? ? ? ? 這三句對應的是圖形后操作后保存的信息

這幾條是仿真器的配置

這條是正在仿真的文件

這幾條就是把測試激勵模塊與實際文件對應起來,用的是相對路徑

????????知道這些信息后,可以很輕松地手動修改。事實上,測試激勵文件的相關操作在配置文件里修改要比圖形化添加要方便一些。

? ? ? ? 需要注意的是ModelSim仿真前,需要進行綜合,也就是前面那個目標

ModelSim(命令行)

? ? ? ? 前面的ModelSim的GUI有些簡陋,那么接下來我們就可以使用命令行模式下的ModelSim,運行結束后讓其再執行Surfer。

? ? ? ? 首先我們可以在simulation/modelsim這個目錄里找到Quartus自動生成的do腳本,該腳本用于vsim(也就是ModelSim的boss?可以這么說的話)。前面不是提到過Quartus運行RTL仿真時,其實是讓quartus_sh執行了tcl腳本,該腳本自動生成了do腳本,并讓vsim運行該腳本

腳本的內容很簡單,都是些配置和啟動命令

????????因此我們可以讓vsim來執行該腳本,并且以命令行的模式(需要帶上參數-c),vsim的可執行路徑需要自行去找(沒有安裝ModelSim是沒有的,可以搜索“Quartus ModelSim”,會有一堆安裝教程)

E:\Tools\Develop\Embedded\intelFPGA\ModelSim\modelsim_ase\win32aloem\vsim -c -do "do E:\\Program\\Embedded\\FPGA\\Firefly\\simulation\\modelsim\\Firefly_run_msim_rtl_verilog.do"

可以看到,腳本很順利地執行下去了,執行后,可能會停留在vism界面(按Ctrl+C可退出)

我們可以在自動生成的do腳本里加上下面這句,即可讓其仿真結束后自動退出

????????那么也就意味著,我們把前面vsim執行do腳本的命令寫入到ps1腳本或者bat腳本,再在后面補充上Surfer的命令。那么就可以讓其仿真后,自動打開Surfer顯示波形了,與之前雙擊Scaleda的仿真任務無異了

? ? ? ? 為了進一步簡化流程,可以寫一個腳本先讀取qsf中的頂層文件,再到test目錄里去找有沒有對應的測試激勵文件,然后再生成對應的do腳本,接著讓vsim執行仿真,在控制臺輸出信息,輸出完之后,再自動打開Surfer,最后就可以優雅地欣賞波形了

? ? ? ? ? ? ? ? 【未完待續】

5、波形顯示

? ? ? ? 由于心心念念的Rvcd不能使用,只得另辟蹊徑來查看“波形”而非“波形數據”(也就是模擬波形)。在VS Code里可以找到這樣的兩個插件,完美代替了Rvcd和Surfe

? ? ? ? 安裝插件后,點擊生成的vcd文件即可。如果兩個插件都安裝的話,可以在上方自行切換,二者擇其一即可

WaveTrace

? ? ? ? 點擊左下角的添加信息,雙擊你要顯示的信號即可

點擊左邊的信號后,上面會有三個顯示類型,分別是數字、數字量化和模擬

Digital IDE

? ? ? ? 此插件功能更豐富,但若想使用還需安裝Vivado

? ? ? ? 如此看來,除了內置git外,IDEA在Verilog方面能做到的VS Code都能做到,且某些方面更強

6、分工考慮

? ? ? ? 編寫一些基本模塊的話,使用Verilog就足夠了,Scaleda中的Verible可以提供非常好的語言支持。此外,git方面,IntelliJ IDEA能提供更好的體驗。

????????仿真的話,僅使用Verilog既冗余、晦澀難懂,又不能很好地達到效果,比如Verilog里沒有real、$sin和break等,想要模擬ADC數據采集有些麻煩。而使用System Verilog的話,Scaleda的支持非常差,近乎不能使用,包括里面的仿真任務。此時只能依賴VS Code的hdl_checker插件了,對System Verilog有基本的支持(代碼檢查)。

? ? ? ? 如果要對System Verilog進行仿真,那么iverilog就無能為力了,只能使用ModelSim等支持的仿真器。在測試激勵文件里可以加上下面這句,以生成波形文件。然后可以在ModelSim仿真后再啟動Surfer觀察波形(可選項)。

initial begin$dumpfile("xxx.vcd");$dumpvars;
end

? ? ? ? 綜合起來,編寫模塊仿真測試使用IntelliJ IDEA仿真代碼編寫方面使用VS Code資源消耗方面使用Quartus。Scaleda的任務目標由于目前其缺陷性,不太適合使用。

????????verilator????????questasim

四、展望

? ? ? ? 目前來說,想要一站式開發,得需要使用VS Code。IntelliJ IDEA與VS Code關于Verilog的插件并不互通,比如Digtal IDE只在VS Code有,Scaleda只在IntelliJ IDEA上有。兩者都是非常優秀的工具,可根據自身開發體驗自行選擇。

? ? ? ? IntelliJ IDEA界面可能更為簡介優美,且運行目標由于有現成的框架,想要運行腳本更方便。VS Code更為輕量且插件功能更為豐富,適合一站式開發,但想要達到更好的配置還需著重學習json等,學習難度較大。

????????VS Code下開發FPGA——FPGA開發體驗提升__下-CSDN博客

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

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

相關文章

昂貴的DOM操作:一次DOM導致的性能問題排查記錄

公司來了一個前端實習生&#xff0c;踏實&#xff0c;勤快&#xff0c;很快得到老大的認可&#xff0c;分配給她一個需求&#xff0c;大概如下&#xff1a;構建一個公司產品的評論展示頁面&#xff0c;頁面可以滾動加載新的內容&#xff0c;同時如果已經加載的內容發生變化&…

前端服務配置詳解:從入門到實戰

前端服務配置詳解&#xff1a;從入門到實戰 一、環境配置文件&#xff08;.env&#xff09; 1.1 基礎結構 在項目根目錄創建 .env 文件&#xff1a; # 開發環境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生產環境&#xff08;.env.produc…

【學習筆記】計算機網絡(七)—— 網絡安全

第7章 網絡安全 文章目錄 第7章 網絡安全7.1 網絡安全問題概述7.1.1 計算機網絡面臨的安全性威脅7.1.2 安全的計算機網絡7.1.3 數據加密模型 7.2 兩類密碼體制7.2.1 對稱密鑰密碼體制7.2.2 公鑰密碼體制 7.3 鑒別7.3.1 報文鑒別7.3.2 實體鑒別 7.4 密鑰分配7.4.1 對稱密鑰的分配…

我用Cursor + DeepSeek + Claude-3.7-Sonnet + DevBox,10分鐘開發了一個系統

大家好&#xff0c;我是袁庭新。Cursor最近可謂是火的一塌糊涂&#xff0c;于是我深度體驗了一波。我用的環境是Cursor Claude-3.7-Sonnet DevBox&#xff0c;整個過程我一行代碼都沒有寫&#xff0c;10分鐘幫我開發了一個系統&#xff0c;且前后端聯調一把通過。驚出一身冷汗…

SpringBoot企業級開發之【用戶模塊-登錄】

開發之前我們先看一下接口文檔的要求&#xff1a; 開發思路&#xff1a; 開發實操&#xff1a; 因為我們之前開發注冊的時候&#xff0c;就有了一些相關的操作&#xff0c;所以在這里我們只需要定義登錄的controller即可&#xff1a; //用戶登錄PostMapping("/login"…

mysql 8.0.27-docker

安裝 可以略過本步 https://dev.mysql.com/downloads/https://dev.mysql.com/downloads/ 鏡像查詢與安裝 先查詢&#xff1a; docker search mysql 明顯會報錯 Error response from daemon: Get "https://index.docker.io/v1/search?qmysql&n25": dial tcp…

Pgvector的安裝

Pgvector的安裝 向量化數據的存儲&#xff0c;可以為 PostgreSQL 安裝 vector 擴展來存儲向量化數據 注意&#xff1a;在安裝vector擴展之前&#xff0c;請先安裝Postgres數據庫 vector 擴展的步驟 1、下載vs_BuildTools 下載地址&#xff1a; https://visualstudio.microso…

Python高階函數-sorted(深度解析從原理到實戰)

一、sorted()函數概述 sorted()是Python內置的高階函數&#xff0c;用于對可迭代對象進行排序操作。與列表的sort()方法不同&#xff0c;sorted()會返回一個新的已排序列表&#xff0c;而不改變原數據。 基本語法 sorted(iterable, *, keyNone, reverseFalse)二、核心參數詳…

ArcGIS Pro/GeoScene Pro AI 助手 2.1

引言 面對ArcGIS Pro/GeoScene Pro復雜的操作界面和腳本開發需求&#xff0c;你是否還在為功能定位、代碼調試和效率優化而煩惱&#xff1f;今天&#xff0c;推出自制的Pro AI助手2.0版本&#xff0c;七大核心功能將革新你的GIS工作方式&#xff01;無論是界面操作指引、一鍵生…

如何將本地更改的README文件同步到自己的GitHub項目倉庫

如何將本地更改的 README 文件同步到 GitHub 倉庫 在你 git clone 下來的工程目錄下&#xff1a; 先使用 robocopy YOUR\SOURCE\CODE\DIR YOUR\GIT\CLONE\DIR /E /XD .git /DCOPY:T 將你的更改Copy到你git下來的工程中&#xff08;上面的命令會自動處理&#xff0c;例如只會C…

PostIn V1.0.8版本發布,IDEA 插件支持一鍵掃描上報,讓接口定義不再繁瑣

PostIn是一款國產開源免費的接口管理工具&#xff0c;包含項目管理、接口調試、接口文檔設計、接口數據MOCK等模塊&#xff0c;支持常見的HTTP協議、websocket協議等&#xff0c;支持免登陸本地接口調試&#xff0c;同時可以對項目進行靈活的成員權限、消息通知管理等。本周Pos…

UE5學習筆記 FPS游戲制作36 UI動畫

文章目錄 目的效果創建動畫UI準備制作動畫 播放動畫目的效果創建動畫UI準備制作動畫 播放動畫注冊播放事件 目的效果 我們要創建一個提示動畫&#xff0c;文字先漸顯&#xff0c;然后向上移動&#xff0c;同時漸隱 創建動畫 UI準備 創建一個UI控件&#xff0c;然后創建一個…

HTTP 響應頭 Strict-Transport-Security 缺失漏洞

HTTP 響應頭 Strict-Transport-Security 缺失漏洞 這個漏洞就是說明網站的HTTP響應頭中沒有設置Strict-Transport-Security&#xff0c;沒有設置則可以通過將https自己手動改成htttp的方式進行訪問。不安全 解決方法 1.nginx配置 nginx中增加如下配置&#xff1a; location / …

代理模式的優缺點是什么?

什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過創建代理對象來控制對原始對象的訪問。 這種模式在前端開發中廣泛應用&#xff0c;特別是在需要控制對象訪問、添加額外邏輯或優化性能的場景中。 ??核心…

【嵌入式學習3】UDP發送端、接收端

目錄 1、發送端 2、接收端 3、UDP廣播 1、發送端 from socket import *udp_socket socket(AF_INET,SOCK_DGRAM) udp_socket.bind(("127.0.0.1",3333))data_str "UDP發送端數據" data_bytes data_str.encode("utf-8") udp_socket.sendto(d…

AI重構SEO關鍵詞精準布局

內容概要 在傳統SEO策略面臨搜索場景碎片化、用戶意圖復雜化的挑戰下&#xff0c;AI技術通過多維數據分析與算法建模&#xff0c;正在重構關鍵詞布局的邏輯框架。基于自然語言處理&#xff08;NLP&#xff09;的語義分析能力&#xff0c;AI可精準識別搜索詞背后的需求層級&…

谷歌發布網絡安全AI新模型Sec-Gemini v1

谷歌近日宣布推出實驗性AI模型Sec-Gemini v1&#xff0c;旨在通過人工智能技術革新網絡安全防御體系。該模型由Sec-Gemini團隊成員Elie Burzstein和Marianna Tishchenko共同研發&#xff0c;旨在幫助網絡安全人員應對日益復雜的網絡威脅。 攻防不對稱的破局之道 Sec-Gemini團隊…

IntelliJ IDEA下開發FPGA——FPGA開發體驗提升__下

前言 由于Quartus寫代碼比較費勁&#xff0c;雖然新版已經有了代碼補全&#xff0c;但體驗上還有所欠缺。于是使用VS Code開發&#xff0c;效果如下所示&#xff0c;代碼樣式和基本的代碼補全已經可以滿足開發&#xff0c;其余工作則交由Quartus完成 但VS Code的自帶的git功能&…

Python語言的需求分析

Python語言的需求分析 引言 在信息技術快速發展的今天&#xff0c;編程語言的選擇對于軟件開發的成功與否起著至關重要的作用。Python作為一種高級編程語言&#xff0c;以其簡潔易讀的語法和強大的功能受到越來越多開發者的青睞。通過對Python語言的需求分析&#xff0c;我們…

抓wifi無線空口包之Ubuntu抓包(二)

一、設置網卡信道和頻段&#xff0c;并抓包 1、使用iwconfig查看自己機器的無線網卡名稱 wangwang-ThinkCentre-M930t-N000:~$ iwconfig lo no wireless extensions. eno1 no wireless extensions. enxc8a3624ab329 no wireless extensions. wlx90de80d1b5b1 IE…