2021年12月24日 星期五

Mini Raspberry Pi Compute Module 4 Cluster

 

標題跟圖片好像就夠解釋了,總之這台是一個迷你型叢集電腦,一共有四組Raspberry Pi Compute module 4 (CM4) + Raspberry Pi 4 作為控制器

先上架構圖:


架構圖是有點過度複雜,因為實際上就是 Gigabit ethernet Hub + USB hub + Serial port/GPIO control.

先來講講這片Cluster Hat:

Gigabit ethernet switch用的是RTL8367N,主要是因為Raspberry Pi 擴充板的面積不是很大,沒有什麼空間可以放大顆QFP封裝的IC,我也不想弄成複雜的雙面電路板,這顆是5-port的剛好四個Node + 一個聯外。 
這種高密度的Cluster有一個比較麻煩的是網路PHY-PHY直接對接,因為其實這麼短的線路沒有必要放隔離變壓器佔空間,但是PHY直接對接就要看PHY是怎麼設計推動變壓器的,幸好這個只需要中間放一個.1uF的電容既可.


板子上有預留SPI Flash不過不確定能不能弄成managed switch,不過現在用起來也沒有感覺非要managed switch的必要。

CM4有一些可以被控制的GPIO,EN pin控制板子PMIC開關,BOOT控制USB開機(透過USB燒錄CM4),RUN控制SoC的Reset,RST監控SoC狀態,我稍微算了一下其實買I2C GPIO expender其實不是很划算,相比RP2040其實差不了多少所以......


RP2040除了有一堆GPIO,還有四個ADC pins所以我拿來測量個別CM4的耗電量,而RP2040可以透過UART或者是USB跟Raspberry Pi 溝通,而Raspberry Pi可以透過兩個GPIO模擬SWD上傳程式。這應該算是滿廢的用法我覺得,但是 1 USD + 1 USD的零件真的想不到為啥要買I2C GPIO expender。

USB 2.0 Hub是USB2517,主要是用來燒錄CM4以及一條除了ethernet以外直接跟Raspberry Pi 4控制版對接的方式。另外因為我找不到一個組合可以透過GPIO config出我要的,所以還是放了一個I2C eeprom放config。

除此之外板子上也有一些周邊,這種高密度的Cluster一定是需要風扇,所以拿了EMC2301來控制PWM 4cm 5v的風扇,另外因為有一堆DC-DC是直接吃Input供電,剛上電的時候因為一堆分散的電容在各處,Inrush 電流會很高,所以我拿了一個eFuse IC當作保險絲兼緩啟動(Soft-Start)。最後順便塞一個INA226監控輸入電流跟電壓。

風扇的連接器也要小心放,因為很容易就會碰到RPI4的連接器的外殼。
喔對了電源輸入跟網路孔之間還有一個Qwiic連接器在中間XD

擴充板上大概就是這樣,接下來介紹的是Node版:

Node版很簡單,就是把CM4的IO拉到一個M.2的連接器加上5V DC-DC 供電。拉到M.2的只有gigabit ethernet跟USB還有些許的GPIO跟I2C,還有一個很有意思的PCIe不想浪費,所以直接在Node版放了一個M.2 Connector讓我能夠接上NVMe SSD,也為了這個M.2 Connector 的供電所以板子上又放了一組DC-DC降壓。

另外一個就是板子上有一個TMP117溫度計在CM4的SoC正下方,透過散熱墊(?)跟CM4接觸,這個溫度計的I2C是直接接上控制的Raspberry Pi 4,所以風扇溫度控制並不需要Node透過其他方式回報溫度而是RPI4直接測量後控制。


當然最後就是Input供電的保護以及eFUSE,為了熱插拔所以放了eFUSE作爲緩啟動,另外也放了一個IC型的TSV突波保護。Camera Connector只是因為M.2 Connector有這個空間就順便放上去了。
這顆eFUSE也能順便幫我測量電流,所以Node的電流測量不需要另外裝電流檢測電阻跟相關的電路了。
左邊那顆是TVS,右邊是eFUSE
只能說晶片缺的另一個理由就是越來越多傳統元件被IC取代,好久沒有在電源輸入用到傳統的保險絲跟TVS Diode。


第二版想說省一點空間所以把M.2放到背面,另外轉個方向朝內,缺點就是沒辦法支援2280長度的裝置但是我找到一批便宜的2242 Optane 16G SSD所以就沒差了.


整組叢集電腦如果火力全開(CPU/跟網路壓力測試但是沒有接NVMe)的話大概可以飆到32W,放桌上冬天當手的暖氣還稍嫌不足就是。


以上。