顯示具有 物聯網 標籤的文章。 顯示所有文章
顯示具有 物聯網 標籤的文章。 顯示所有文章

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



2024年9月21日 星期六

what is Botnet ?

 

A botnet is a network of compromised computers or devices, often referred to as "bots" or "zombies," that are controlled remotely by a malicious actor (known as a "botmaster"). These devices are typically infected with malware, allowing the botmaster to execute various commands on them without the device owner’s knowledge.

Here are some common uses and dangers of botnets:

  1. Distributed Denial of Service (DDoS) Attacks: Botnets are often used to flood a target server or website with traffic, overwhelming it and causing it to crash or become unavailable to users.

  2. Spam Distribution: They can be used to send out massive amounts of spam emails or phishing messages, which can lead to further infections or fraud.

  3. Credential Stuffing: Botnets may attempt to use stolen usernames and passwords on different sites, automating the process to try many combinations quickly.



2022年6月25日 星期六

UART over TTL/RS232

 

UART 是軟體層面的 serial 通訊協議(也可以借力 UART IC來完成)。定義baudrate, start bit, stop bit , data bit, parity check 等等, 但這些0和1都是只邏輯的0和1。而實際走的硬體訊號, 則要看使用的是TTL還是 RS232。TTL和 RS232 描述的是 Physical 電氣訊號。

TTL (transistor-transistor logic) 就是定義 0V 為 0,Vcc 為 1 , 一般 MCU、SoC 都會用的方式。  RS-232 定義 -3 to -25V 為 0, 而+3V~+25V為1。不過 RS232 是一個完善的標準通訊規範,所以尚包含硬體流量控制的機制及 Connector 的型式(如DB-9) 等內容。正常的PC 用的就是RS232 界面。不過若僅僅只是做基本的傳輸,不是拿來接數據機(Modem)這類的,其實也只是用了其中3條通訊線而已,TXD, RXD, GND。現在你懂了,為何 UART over TTL 只有3條訊號線的原因。

Source image: https://components101.com/


PC(RS232)—----- UART ——MCU (5V), 因為電壓不同所以要做level shifter , 這可以使用MX232之類的IC來完成. UART over RS-232 (上) 及 UART over TTL (下) 傳送 01010101的電壓圖。總之,我送0/1, 你要解讀成0/1, 而不是解讀成1/0。
Source Image: https://www.sparkfun.com/

相關文章: 


相關課程: 
[1] Linux 驅動程式設計 -實作LINUX UART/TTY Driver
[2] ARM Boot loader 設計-實作UART
[3] MUC 韌體設計-UART驅動


2022年2月7日 星期一

關於 Raspberry Pi Pico

Raspberry Pi 基金會於 2021 年 1 月推出 Raspberry Pi Pico,正式進軍微控制器(MCU)領域。Pico 採用基金會自主設計的 RP2040 晶片,該晶片配備雙核 ARM Cortex-M0+(運行頻率最高可達 133MHz),內建 264KB SRAM 和 2MB Flash,其 GPIO 輸出為 3.3V。2024 年 11 月,基金會推出了 Raspberry Pi Pico 2 W 版本。其中「W」代表此版本內建 802.11n 無線網路功能,其核心晶片為 RP2350。


Pico 本身內建 bootloader,但不像 Raspberry Pi 或 Pi Zero 那樣運行 Linux 作業系統。為了方便開發,Raspberry Pi 基金會提供了 C/C++ SDK 和 MicroPython SDK。軟體和硬體與Raspberry Pi Pico 1相容。 Pico 也支援 TensorFlow Lite 框架,可用於開發輕量級的機器學習應用。 


 
7 × 7 mm QFN-56 package 

Raspberry Pi Pico 2的硬體規格:

    • 雙Arm Cortex-M33或雙Hazard3處理器@150MHz
    • 520 KB片上SRAM
    • 2個UART。
    • 2個SPI控制器。
    • 2個I2C控制器。
    • 24個PWM通道。
    • 4個ADC通道。
    • 1個USB 1.1控制器和PHY,支援主機和裝置。
    • 12個PIO狀態機。
    • 工作溫度-20°C至+85°C。
    • 支援輸入電壓1.8–5.5V DC。


Raspberry Pi Pico


Pi Pico 擴充板規格

由於Raspberry Pi Pico 本身並未內建任何感應器,為了使其能夠應用於物聯網(IoT)及邊緣人工智能(Edge AI)等領域,特別採用了台灣程式教育協進會開發的 Pi Pico 擴充板。該擴充板的規格如下:








Pico + Pico 擴充板的一些物聯網應用

DEMO1



DEMO2



DEMO3




DEMO4



[課程]Raspberry Pi Pico 物聯網應用實作

https://bit.ly/4hTRptE

- 理解 Raspberry Pi Pico 硬體架構與擴充功能,並能運用 GPIO、ADC、PWM 等技術進行基礎硬體控制與感測應用。
- 熟悉 Thonny IDE 與 MicroPython 程式設計,具備多執行緒與時間控制能力。。
- 能運用通訊協定與 Wi-Fi 模組實作 IoT 應用,包含資料傳輸、Web 伺服器與雙向 I/O 控制。

更多Web 技術開發課程
- JavaScript 程式設計精修 https://bit.ly/3nF7bfH
- web全端開發應用班 https://goo.gl/fjEHfT
- IoT 物聯網實務班 https://bit.ly/2XwwHcx

2020年11月17日 星期二

iPAS 物聯網應用工程師認證(葵花寶典)



0.) 關於iPAS 物聯網應用工程師考試簡介



1.) IoT 技術架構簡介
2.) IoT 通訊技術
3.) IoT Cloud平台

4) 物聯網感測層
4) 物聯網應用層 





5.)  Quick Overview



 
  6.) IoT Project Demo:

ARM mbed 物聯網平台實戰(課程節錄)
https://youtu.be/sslJLgOPfCM



ARM mbed Cloud 平台架構簡介
https://youtu.be/GrMD8Me5qg0




IoT Gateway Demo
https://youtu.be/tZFMY5UIG6s



智慧POS機-人臉自動結帳
https://youtu.be/DHTQCF6t1Jw



AIoT智能居家燈控系統
https://youtu.be/Dcz28sASv0w



Control your Raspberry Pi using Line Bot
https://youtu.be/WL2RrYrGB1Q



Iot自動販賣機
https://youtu.be/9jxIuyiIXko





2020年7月27日 星期一

DYNAMIXEL Motor 控制使用TTL

DYNAMIXEL Motor 


Dynamixel智能馬達是模組化形式,採用菊鏈多串接方式。這讓用戶可以輕鬆地更改和添加馬達關節,以獲得所需的扭力和自由度。

DYNAMIXEL Motor 有的是使用TTL,有的是使用RS485的訊號來做控制

而XL430-W250 則是使用TTL訊號來做控制

控制器 <----------TTL-------------> DYNAMIXEL Motor (XL430-W250 )

 TTL 共有3個Pin 
Data ---- 5V
VDD ---12V
GND 


所謂TTL 訊號控制可以看成是UART的半雙工模式,即出去(TX)和進來(RX) 都是走同一個TTL 的Data訊號

 UART TX -----------------------> TTL Data

 UART RX <----------------------- TTL Data


2019年1月10日 星期四

AIoT軟體架構圖


實現一個AIoT架構,一個可能的方式參考下列作法

在Raspberry Pi 這邊, 將一個ML/DL Model 所預測出來的結果, 也許是0或1, 或是分類的softmax機率值等, 依據結果,以事件方式丟到雲端,再由雲端的程式負責進和外界的通訊,通訊的方式可以E-mail, LINE, MQTT, WebSocket等機制。

這樣的好處是資料與通訊管理的細節都在雲端處理, 而Raspberry Pi 只會根據AI預測的結果,於條件滿足的時候再會用到網路。好處: 終端能減少網路的使用, 而且也不必霊端方面的應用邏輯。並且能專司其職,懂AI的人專注在AI身上,懂雲端/Web 技術的人就專注這些Web技術。







#Python  code snippet 

利用python上驗證各種通訊程序, 包含 MQTT, LinePutsh,...


#Node.js code snippet 


// parse application/json
var jsonParser = bodyParser.json()

/MQTT
app.post('/agent/mqtt',jsonParser, function (req, res) {

  //console.log(req.body)
  console.log(req.body.topic);
  console.log(req.body.message);

//測試Linebot是否能通
app.post('/webhook', bot.parser());

//Line Push
app.post('/agent/line', function (req, res) {

  console.log('Line');

  ////Line code/////////////
 // pushLinemsg(req.body.message['0'])
 pushLinemsg(JSON.stringify(req.body.message))


  ////Repsone to http client/////
     respond_http(res);

});





#為使用Linebot 我們使用ngrok 來解決private IP及要提供https服務

./ngrok http 3010




2a87b84c.ngrok.io/webhook 貼到Line的設定中,並verify https 200 OK, 如果可以通代表ngrok 已打通的channel







2018年2月22日 星期四

SIGFOX 連線&傳送教學





Serial (UART) Parameters:9600 baud, no parity, 8 data bit and 1 stop bit
依序輸入指令,建議使用putty連線
AT // will return OK if not, check Arduino UART, board communition or change Terminal app
AT$GI? //will return X,Y, If X=0 or Y<3
AT$RC
AT$SF= xxxxxxxxxxxx //it's what you want to send

This procedure will force the module to send the frame within the macro channel listened by SIGFOX network.