2026年2月4日 星期三

深入淺出 FPGA 網路實作:從「精簡版手刻電路」到「完整版 TSE IP」架構解析

 

在開發 Altera Cyclone V SoC FPGA(如 DE10-Nano)時,網路功能一直是學員最感興趣也最具挑戰性的部分。許多同學會問:「為什麼有的範例可以直接上網,有的卻只能傳送簡單的封包?」

本文將透過精簡版(手刻邏輯) 與 完整版(TSE IP + Linux)兩種架構的對比,帶您看懂 FPGA 網路通訊的底層邏輯。




一、 精簡版架構:理解 RGMII 協議的敲門磚

精簡版的目的不在於「連接網際網路」,而是為了讓開發者掌握如何透過 Verilog 直接驅動外部的 Ethernet PHY 晶片。


1. 系統組成與資料流

如【圖一】與【圖二】所示,精簡版架構跳過了複雜的 MAC IP,直接在 FPGA Fabric(邏輯閘陣列)中實作:

  • Ethernet Frame Generator: 負責根據 RGMII 協議產生傳送封包。
  • Ethernet Frame Receiver: 負責解析從網線進來的原始資料。


【圖一】


【圖二】


2. 關鍵技術:LOANIO 的橋接

由於 Cyclone V 的硬體設計限制,FPGA Fabric 要存取特定的 Ethernet PHY 引腳,必須經過 HPS LOANIO 進行「借用」。如【圖三】所示,這是一種雙向 IO 的配置方式。

在程式碼實作上(參見【圖三】的 Verilog 程式片段),我們需要手動指派 loan_io_out loan_io_in,將 FPGA 內部的訊號與實體引腳掛鉤:

Verilog

// 範例:將 FPGA 內部訊號對接到 LOANIO 引腳

assign loan_io_out[14] = HPS_ENET_GTX_CLK;

assign HPS_ENET_RX_CLK = loan_io_in[24];


【圖三】


3. 時序與訊號實作

根據 RGMII 100Mbps 的波形規範【圖四】,資料是在時鐘的邊緣進行傳輸。

*實務上 RGMII 可支援到 1000Mbps (Gigabit),但在精簡版手刻實驗中,為了簡化時序處理,通常先從 100Mbps 開始。

  • 傳送端【圖五: rgmii_tx_gen 模組負責將資料對齊時鐘送出。
  • 接收端【圖六: 透過 rx_payload_cnt 計數器與 rx_payload 暫存器,在每個時鐘邊緣重組封包位元組(Byte)。

圖四】


【圖五】


【圖六】





二、 完整版架構:實現 Linux 上網的標準方案

當您的需求是「執行 Linux 並開網頁」或「進行 Socket 通訊」時,就必須採用【圖七】所示的完整架構。


圖七

1. 核心元件:TSE IP

完整版使用 Altera 官方提供的 Triple Speed Ethernet (TSE) MAC IP,取代了前面辛苦手刻的 Generator ReceiverTSE IP 處理了所有乙太網路層的複雜協議(如 CRC 校驗、前導碼處理等)。


2. 資料高速公路:msgdma

為了讓 HPSARM CPU)能處理網路資料,中間必須建立一條高速通道。這裡使用 msgdma (Modular Scatter-Gather DMA),將網路封包直接搬移到 HPS DDR3 記憶體中,大幅降低 CPU 參與資料搬移的負擔,提升整體網路處理效率。


3. 軟硬體整合:Linux Driver

有了上述硬體配置後,在 Linux 核心中載入對應的 Ethernet Driver。對作業系統而言,它看到的是一個標準的 eth0 介面,這時才能叫醒那隻「網路小精靈」,實現真正的上網功能。




三、 總結:我該選擇哪種架構?

我們將兩者差異整理如下表:

特性

精簡版 (Hand-coded Verilog)

完整版 (TSE IP + DMA)

主要目的

學習 RGMII 協議、底層時序控制

實際應用、Linux 系統整合

通訊層級

實體層/資料鏈結層 (Partial)

完整的 MAC 層支援

複雜度

低,僅需基礎 Verilog 知識

高,需配置 Qsys (Platform Designer)

軟體支援

無,需自行處理資料

支援標準 Linux Network Stack


老師的建議:

如果您是初學者,建議先從精簡版下手,理解訊號如何在 FPGA PHY 之間流動(【圖六】的接收邏輯是很好的練習)。一旦掌握了基礎,再進階到完整版架構,屆時您對 Preloader 的重製與 Linux Driver 的掛載將會有更深刻的體會。


FPGA

📌 艾鍗學院FPGA課程 https://www.ittraining.com.tw/ittraining/course/hardware/fpga



2025年12月26日 星期五

AI 算力新戰場:當 LPU 挑戰 GPU,推論時代的架構革命


當 AI 從雲端走向裝置端,市場需求發生了本質改變:追求低功耗、低延遲、即時互動與本地隱私。目前 AMD 與 Intel 全面主攻 AI PC 推論市場,無論是 Windows、Copilot 或 Edge AI,全部皆圍繞 Inference 打造。

LLM 的發展趨勢也開始「縮小模型、提高反應速度」。NVIDIA 雖然清楚 GPU 在「訓練」領域仍是王者,但推論市場不一定非 GPU 不可。這也是為什麼像 Groq 這樣的公司,以 LPU 架構(Chip + SRAM)展現出領先的高速推論能力,試圖與 NVIDIA GPU 並行發展。


技術瓶頸的突破 

  • GPU: 依賴 HBM(高頻寬記憶體)。為了訓練大模型,它追求極致的吞吐量 (Throughput),適合一次處理海量數據,但在單次生成的延遲上較難妥協。

  • LPU : 針對 LLM 的特性設計。由於 LLM 是「一個字猜一個字」的循序輸出,記憶體存取速度才是瓶頸。LPU 透過內建 SRAM 消除記憶體牆 (Memory Wall),在即時對話的速度上,表現遠超傳統 GPU。

未來的晶片格局將是「雙軌並行」: 是用 GPU 在雲端訓練出更聰明的大腦,再用 LPU 在你的裝置上實現秒回的互動。AI 硬體的下半場,才正要開始。


Related 

Google TPU步步進逼 黃仁勳出手收購Groq LPU技術反制?




2025年11月2日 星期日

ROC-AUC 不適合作為Anomaly Detection的效能指標

 

ROC-AUC 不適合作為Anomaly Detection的效能指標

在異常偵測任務中,即使模型對正樣本(異常樣本)的辨識能力較差,ROC-AUC 仍可能顯示出看似良好的結果。這是因為 ROC-AUC 同時考慮了 FPR(False Positive Rate),而在實務上正常樣本(TN, True Negatives)通常遠多於異常樣本。當 TN 的數量極大時,即使模型誤判許多異常樣本,也會使 FPR 接近 0,進而高估模型的整體表現。




What is ROC-AUC ?










Uderstanding ROC and AUC 



相關課程

*** 生成式 AI 實務:從基礎模型到 Agentic AI https://shorturl.at/zyJMe [1] 生成式AI能力認證 https://bit.ly/3E09jNs [2] python程式設計 https://bit.ly/359cz4m [3] 資料分析與視覺化 https://bit.ly/3XEaMjj [4] AI機器學習&深度學習 http://bit.ly/2KDZZz4 [5] 非監督式學習 https://bit.ly/422HA8h [6] AI自然語言與推薦系統應用 https://bit.ly/3qnO2Tg [7] TensorFlow Lite for MCU https://bit.ly/3j2fIIt [8] Intel OpenVINO邊緣運算實務 https://bit.ly/3BOPFjB [9] 電腦視覺演算法 https://bit.ly/3iOpC2x

2025年10月3日 星期五

GAN vs Conditional GAN:概念差異與去噪任務的應用

Standard GAN :

  1. Generator (G):輸入隨機噪聲 ,輸出 fake image
  2. Discriminator (D):輸入一張圖像(可能來自真實 MNIST,也可能是 G 的 fake),判斷 real/fake
    • 是MNIST 資料集的圖像 → 標記為 real (y=1)
    • G(z) 生成的假圖像 → 標記為 fake (y=0)
  3. D 不需要 paired data,只要能看到真實數據與生成數據
  4. 訓練過程中,G 會逐步學會把隨機 z 映射到「看起來像 MNIST 分佈」的圖像
  



Conditional  GAN 

想要生成「數字6」,就給模型條件 

  • ,生成器要輸出像「6」的圖片,而不是別的數字。
  • 圖片裡面打叉的「2」就是說:雖然它來自分佈,但不符合條件(y=6),所以不是正確輸出



Conditional GAN:

 Learn a mapping from condition → target (e.g. noisy → clean)
  • Discriminator (D):同時看 (noisy, clean) 或 (noisy, fake)

    • (noisy, clean) → 應該判斷為 real (y=1)

    • (noisy, fake) → 應該判斷為 fake (y=0)

  • D 的角色不只是判斷「像不像真實圖像」,還要檢查「輸出和 noisy 是否對應」

  • 透過 Binary Cross Entropy loss,D 訓練得更會分辨;而 G 則被迫學到正確 mapping (noisy → clean)
 


2025年9月21日 星期日

衡量降噪後的語音品質指標:SNR, PESQ, STOI

 

衡量降噪後的語音品質與可理解度的效能評估指標:

  • 訊噪比(SNR)
  • 語音品質感知評估(PESQ)
  • 短時客觀可懂度(STOI)

SNR → energy ratio (engineering view).

兩個訊號能量比

\[ \text{SNR} = 10 \log_{10} \frac{\|s\|^2}{\|s - \hat{s}\|^2} \]


PESQ 

在 20 世紀 90 年代末至 2000 年 ITU-T 標準化階段,研究人員對大量人類受試者進行了聽覺測試。一段語音會由一群人主觀評分,分數範圍 1 = 差,5 = 優,這種平均分數稱為 MOS(Mean Opinion Score,平均意見分數),代表人耳對語音品質的主觀感受。



PESQ(Perceptual Evaluation of Speech Quality)

目標:  PESQ(x, x′) ≈ MOS(x′), 即   (x, x')  ---> PESQ 模型 --->  MOS-like 的分數 

在當年的人類測試中,受試者只聽 xx′,然後給出 MOS(x′) 作為品質評分。但這種方式需要大量受試者,成本高、速度慢。因此,我們希望有一個模型(例如 PESQ),它能同時利用  做比較,並且自動算出一個與 MOS 接近的分數(MOS-like),就能取代昂貴的主觀實驗


要建立 PESQ,必須先有: clean 語音 xx和經過 degradation 的 xx′,還有 MOS(x′) 作為 ground truth。 這個 PESQ 可以模擬人耳如何聽到「差異」, 並自動輸出一個介於 –0.5 到 4.5 之間的類 MOS 的分數, 數值越高代表語音品質越好(越接近原始乾淨語音)。


 STOI (Short-Time Objective Intelligibility)

STOI 衡量的是 乾淨語音 vs 處理後語音短時頻帶能量包絡 上的相關性
  • 基於短時頻帶的相關性 → 相關係數愈高 → 語音可懂度愈好

  • 分數範圍介於 0 ~ 1

    • 越接近 1 → 表示語音幾乎完全可懂

    • 越接近 0 → 表示語音幾乎無法理解

在頻帶處理上,STOI 使用 1/3-octave band filters,這是一組模仿人耳頻率解析度的濾波器,把語音分解成符合聽覺特徵的頻帶。STOI 並不是直接比較波形,而是比較這些 能量包絡 的相似性。這是因為人耳在理解語音時,主要依靠的是 振幅起伏模式(例如母音的共振峰、子音的爆破音)。這些較慢的振幅變化(約 10–50 Hz 範圍)就是所謂的 能量包絡,而它們正是影響可懂度的關鍵。












2025年9月16日 星期二

YOLO 物件偵測的兩大誤判:漏檢與誤檢

 

模型常見的兩種誤判情況

1. 漏檢 (False Negative)
在標註階段,如果一張圖片中實際有 3 個 A 物件,但標註時只框選了其中 1 個,那麼剩下的 2 個未被標註的 A 物件,在模型訓練時就會被誤當作「背景」。這會造成模型學到錯誤資訊,認為「某些 A 物件其實是背景」,結果在預測時無法正確辨識,導致漏檢的情況發生,並使召回率 (Recall) 顯著下降。

2. 誤檢 (False Positive)
舉例來說,在黑熊偵測任務中,大型黑狗、山豬,甚至陰影下的其他動物,都可能因外觀特徵相似而被模型誤判為黑熊。這就是誤檢 (False Positive)。

為了減少誤檢,可以在訓練過程中加入「負樣本 (Negative Samples)」。所謂負樣本,是指那些容易被誤判成黑熊的圖片(如黑狗、山豬等),但不提供任何標註框。YOLO 的訓練機制中,如果模型讀取到一張圖片(例如 dark_dog.jpg),卻找不到對應的標註檔(.txt 檔),它會自動將該圖片視為「負樣本」。透過學習這些負樣本,模型能更準確地掌握「背景」與「非目標物」的特徵,進而提升判斷力,有效降低誤檢發生率。



2025年9月14日 星期日

在 Google Drive 建立捷徑存取共用資料夾

 

當你在 Google Drive 中,對一個分享的資料夾建立「捷徑」,你的帳號裡就會出現一個檔案,指向該共用資料夾。如此一來,當你在 Google Colab 掛載 Google Drive 時,只要存取這個捷徑,就能直接進入並使用他人分享的資料夾內容。

這樣你mount 了你的google driver 你也可以找到我這裡分享的google drive的內容.



只要存取這個捷徑,就能直接進入並使用他人分享的資料夾內容