Raspberry 樹莓派 CM4模塊的底板設計注意事項

1, 樹莓派CM4底板設計

?樹莓派CM4模塊集成了CPU, 存儲器,以太網, 無線模塊,電源等等, 大大降低了硬件設計的要求。對我們使用樹莓派提供了很好的便利性。
本人近期因為項目的需要設計了一款CM4的底板, 先上圖:?

該板子的特性主要包含:?
1, 提供2個USB接口,一個USB2.0 device, 一個USB3.0 host
2,板子集成有一個4口的百兆以太網交換芯片。其中對外提供一個RJ45連接器接口, 一個連接CM4, 另外兩個用來級聯設備。
3,板子左右兩端提供級聯板卡。多個板子可以通過串行的方式連接 。理論上只要電源功率足夠,可以無限個板卡連接。
4,板子提供UI接口, 可以外接MIPI DSI 顯示屏+觸摸屏。

2,參考設計

樹莓派官方提供了CM4模塊的底板參考設計

https://www.raspberrypi.com/products/compute-module-4-io-board/
其中大部分設計都可以直接拿來使用。
但是在獨特的個人項目設計時,難免會碰到各種各樣的問題,以下是本人總結的一些注意事項。

3, 原理圖設計的注意事項

3.1 原理圖設計中碰到第一個事情是如何對CM4連接器進行標示。 如圖, 在官方IO板子中,它是直接將CM4作為一個完整的個體來看待的,即CM4模塊相當于我們設計使用中的任何一款芯片。它有400個引腳,每一個引腳都有自己的信號名稱,例如102號管腳為PCIe_CLK_nREQ。如果我們直接制作一個CM4的原理圖符號庫,并在設計中使用它,那么在完成設計后導出的器件清單BOM中,將只有CM4模塊的信息,而丟失了連接器本身的信息。

感興趣的讀者可以自己試一下導出官方IO板的BOM。

下圖是本人導出官方IO板子的BOM表:它只包含了CM4,而沒有包含連接器DF40C-100DS-0.4V。

為了防止在BOM中遺失連接器的信息,本人采用的方法是在原理圖中使用連接器符號庫而不是CM4符號庫。
為了方便對比,我把兩個圖片并排顯示:?

在我的設計中, 我直接創建的是DF40C-100DS-0.4V的符號庫。請注意庫中的管腳名稱直接是數字,而不是功能名稱。如管腳2, 它的名字也是2, 而不是PCIe_CLK_nREQ。因為我創建的DF40C-100DS-0.4V的符號庫也可以使用在其他的項目原理圖中,所以名稱不能固定為CM4的信號名。你可能會注意到,在上圖中我使用了M1來代表CM4模塊本身。這樣在到導出的BOM中將同時包含CM4和連接器的信息。
可能有的讀者覺得上面的討論不是一個很大的問題。因為這個完全可以通過手動在BOM中添加連接器的信息。這是建立在BOM表不經常更新的前提下。如果BOM表還沒有固定的情形下, 漏掉連接器的信息的可能性是非常大的。
另外一個直接使用CM庫符號的缺點是,在焊接PCB的時候,PCB只有CM4的位置信息而沒有連接器的位置信息。

當然我的方法也有不好的方面,那就是在原理圖設計的時候,需要仔細比對每一個管腳的信號名稱,同時在PCB設計的時候,如果連接器的位置需要調整,則要非常小心,確保兩個連接器同時移動。

這個問題類似于硬件設計中如何在BOM中添加線纜, 端子插頭等等不在PCB上的器件。
對于這個問題,我在先前的博客中也有說明。 感興趣的讀者可以看看以下鏈接。
https://blog.csdn.net/dylanZheng/article/details/110304051

3.2 注意以太網信號的正負極, TRD1 和 TRD1信號對名稱是上 _P 下 _N,TRD0和TRD2信號對名稱是上_N下_P。雖然以太網信號線正負極能夠自適應,但是按照正常的順序總歸更符合設計要求。

3.3 CM4 IO官方板子中將所有的GPIO直接通過GPIO數來命名信號。在自己的設計中可以命名的時候更具體一點。 如GPIO5 UART3 RXD,讓原理圖更容易閱讀。

3.4 管腳78 GPIO_VRE 用來設定CM4 的GPIO電平,可以直接外接3.3V或者1.8V。但是最好串聯一個0歐電阻,方便萬一需要更改。

3.5 CM4 管腳84和86提供3.3V的電壓輸出,但是最大電流600mA, 使用它們給外部電路供電的時候,需要仔細計算功耗。

3.6 管腳57,61, 62, 63, 64, 67, 68, 69, 70,72, 75提供的SD卡信號在帶有emmc模塊的CM4上已經被使用(鏈接到了eMMC)。所以如果需要外接SD卡的話,需要另外選擇其他GPIO功能管腳。例如可以使用GPIO22~27

3.7 CM4模塊上自帶的ethernet Phy是BCM54210,沒有找到它是否支持capacitive coupling的連接方式。它和交換芯片的連接保持使用變壓器的方式。

4,PCB設計的注意事項

CM4模塊已經高度集成化,常見的DD接口,千兆以太網接口等已經不需要我們考慮。 CPU的電源,以及CPU上電順序等等比較耗費時間,需要仔細設計的部分也已經集成好,不需要我們再考慮。所以CM的底板的PCB設計其實是相當簡單的了。 需要注意的事項也不多,這里列舉幾個我個人決定比較重要的。

4.1 在設計PCB板之前,需要注意CM4模塊的高度。連接器DF40C-100DS-0.4V的Stacking Height 只有1.5mm。所以最好不要在CM4模塊底下放置任何的元器件。 電容電阻最好也不要放。一個標準的0603封裝的電阻高度大約0.45mm。 原則上是可以放置的,但是請注意CM4模塊本身底層也有焊接元器件。下圖是官方底板PCB,可以看到CM4模塊下除了一個電阻,沒有其他任何元器件。

如果PCB布局受限,則可以采用更高的連接器DF40HC(3.0)-100DS-0.4v. 它的Stacking Height 是3mm,所以此時在CM4模塊下面放置不高于1.5mm的元器件是安全的。

如果需要放置更高的器件,則需要導入CM4的3D模型,進行精確位置對比查看。這要求能用機械工程軟件或者請機械工程師幫忙查看

4.2 CM4上的無線模塊天線對應著的PCB區域,需要放置keep out區域。
如下圖的綠色方塊區域所示

4.3 阻抗設定.
CM4對于高速差分信號有阻抗的要求。攝像頭,DSI,以太網以及HDMI要求100 ohm差分阻抗,而PCIe,USB則需要90 ohm的差分阻抗。具體的阻抗與PCB厚度,材質,線寬,線距等等有很大關系。一般來講都是需要先聯系PCB制造商。根據阻抗要求,制造商一般都會提供推薦的疊層結構以及線寬線距的設定。
以下是我根據自己的需求,在某一個PCB制造商的網站上得到的設定:


網站上提供了好幾種PCB材質,一般我們選擇的原則是L1和L2層間距比較小的(L3和L4同樣間距比較小的),因為L1是信號走線層而L2是參考地層,他們的間距比較小,對EMC有好處。

4.4 信號線長度匹配.

除了阻抗匹配,上述信號線還需要進行長度匹配。 需要注意的是, 在計算上述信號長度的時候,需要考慮到CM4上信號長度的差異。
在CM4的手冊的4.1章節, 例舉了信號長度的差異:


為了使得最終的長度相等, 本人使用excel表格計算了底板上信號的走線長度:?

4.5 5V信號的寬度
CM4由5V供電, 它的功耗要求是7W,最高可能達到9W,因此,5V信號的最大電流可以達到1.8A. 所以5V信號的寬度至少要0.9mm(1oz的銅皮),最好能夠1.2mm以上。 作為參考,官方底板的5V信號寬度是3mm

…………………………………完……………………………………………………………

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

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

相關文章

Java后端開發(十八)-- 使用JAXB,將JavaBean轉換XML文本

下面是測試時的運行環境: 1.jdk8 2.Maven,可能需要需要的依賴,如下: <dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency><dependency><gr…

【一起來學kubernetes】30、k8s的java sdk怎么用

Kubernetes Java SDK 是開發者在 Java 應用中與 Kubernetes 集群交互的核心工具&#xff0c;支持資源管理、服務發現、配置操作等功能。 一、主流 Java SDK 對比與選擇 官方 client-java 庫 特點&#xff1a;由 Kubernetes 社區維護&#xff0c;API 與 Kubernetes 原生對象嚴格…

PHP開發者2025生存指南

PHP&#xff0c;這個曾經被戲稱為“世界上最好的語言”的腳本語言&#xff0c;依舊在網絡世界占據著重要的地位。然而&#xff0c;技術發展日新月異&#xff0c;面向2025年&#xff0c;PHP開發者要想保持競爭力甚至實現職業生涯的飛躍&#xff0c;需要不斷學習和提升自身技能。…

MySQL與Redis數據一致性保障方案詳解

前言 在現代分布式系統中&#xff0c;MySQL和Redis的結合使用非常普遍。MySQL作為關系型數據庫負責持久化存儲&#xff0c;而Redis則作為高性能緩存層提升系統的響應速度。然而&#xff0c;在這種架構下&#xff0c;如何保證MySQL與Redis之間的數據一致性是一個重要的挑戰。本…

MySQL響應慢是否由堵塞或死鎖引起?

目錄標題 **1. 檢查當前運行的查詢和進程****2. 查看死鎖日志****方法一&#xff1a;通過錯誤日志****方法二&#xff1a;通過InnoDB狀態** **3. 檢查鎖信息****查看表鎖****查看行鎖&#xff08;InnoDB&#xff09;** **4. 分析慢查詢****開啟慢查詢日志****分析慢查詢** **5.…

【計算機網絡】記錄一次校園網無法上網的解決方法

問題現象 環境&#xff1a;實訓室教室內時間&#xff1a;近期突然出現 &#xff08;推測是學校在施工&#xff0c;部分設備可能出現問題&#xff09;癥狀&#xff1a; 連接校園網 SWXY-WIFI 后&#xff1a; 連接速度極慢偶發無 IP 分配&#xff08;DHCP 失敗&#xff09;即使分…

JavaScript函數式編程思想

1. 相關面試題 1.1. 什么是純函數&#xff1f; 純函數是一種函數&#xff0c;其返回值僅由其輸入參數決定&#xff0c;不產生任何可觀察的副作用&#xff0c;如修改全局對象或外部狀態。 純函數具有以下特性&#xff1a; 1. 確定性&#xff1a;相同的輸入永遠得到相同的輸…

Elasticsearch安全與權限控制指南

在Elasticsearch維護中&#xff0c;安全管理是保障數據合規性和集群穩定性的關鍵。本文將詳細介紹用戶與角色管理、索引/字段級權限控制、HTTPS加密通信、審計日志與合規性檢查等核心安全實踐&#xff0c;希望可以幫助你構建更安全的Elasticsearch環境。 1 用戶與角色管理 1.1…

『VUE』快速入門配置環境使用tailwind css 記憶tailwind css常見規則 (詳細圖文注釋)

目錄 效果預覽快速入門環境配置配置 tailwind.config.js 設置文件添加 Tailwind 的基礎樣式引入樣式到項目檢查構建工具配置測試 Tailwind CSS 效果 使用插件tailwind.config.js的最終內容app.vue演示 為什么不需要記憶 Tailwind 的類名&#xff1f;1. 類名直觀2. 文檔全面3. 工…

StdioIterator

參考這種用法&#xff1a; int a[3]{1,2,3}; copy(a,a3,ostream_iterator<int>(cout," ")); 以及 ostream_iterator 類 | Microsoft Learn 中的函數簽名&#xff0c;可以編寫出 StdioIterator&#xff0c;同樣支持 copy 函數的調用。 #include <stdio.h&…

制作service列表并打印出來

制作service列表并打印出來 在Linux中&#xff0c;服務&#xff08;Service&#xff09;是指常駐在內存中的進程&#xff0c;這些進程通常監聽某個端口&#xff0c;等待其他程序的請求。服務也被稱為守護進程&#xff08;Daemon&#xff09;&#xff0c;它們提供了系統所需的各…

CKS認證 | Day3 K8s容器運行環境安全加固

一、最小特權原則&#xff08;POLP&#xff09; 1&#xff09;最小特權原則 (Principle of least privilege&#xff0c;POLP) &#xff1a; 是一種信息安全概念&#xff0c;即為用戶提供執行其工作職責所需的最 小權限等級或許可。 最小特權原則被廣泛認為是網絡安全的最佳實…

Linux wifi 驅動移植適配流程詳解

基礎內容概要 將tplink wn725n 無線網卡驅動移植到ubuntu將tplink wn725n 無線網卡驅動移植到Linux開發板&#xff08;交叉編譯&#xff09;將tplink wn725n 無線網卡驅動移植到Linux開發板&#xff0c;在開發板中編譯 為什么還要包涵交叉編譯&#xff1f; 目標設備是ARM架構…

Day14 動態規劃(3)

一.746. 使用最小花費爬樓梯 FS記憶化搜索優化: const int N 1010;class Solution { public:int mem[N];int dfs(vector<int>& cost, int x){if(mem[x]) return mem[x];int sum 0;if(x 0 || x 1) return 0;else{sum min(dfs(cost, x - 1) cost[x - 1], dfs(c…

解鎖AI潛能:模型上下文協議(MCP)的革新與應用

解鎖AI潛能:模型上下文協議(MCP)的革新與應用 在人工智能發展的當下,大語言模型(LLM)正逐步滲透到各個領域。從智能客服快速響應客戶咨詢,到智能編程助手協助開發者高效編寫代碼,LLM展現出強大的能力。然而,隨著應用的深入會面臨一個問題:模型與數據之間的連接困境。…

windows與ubuntu雙硬盤雙系統安裝及啟動(全流程成功)

&#x1f451;主頁&#xff1a;吾名招財 &#x1f453;簡介&#xff1a;工科學碩&#xff0c;研究方向機器視覺&#xff0c;愛好較廣泛… ?&#x1f4ab;簽名&#xff1a;面朝大海&#xff0c;春暖花開&#xff01; windows與ubuntu雙硬盤雙系統安裝及啟動&#xff08;全流程成…

【學習筆記】計算機網絡(六)

第6章應用層 文章目錄 第6章應用層6.1 域名系統DNS6.1.1 域名系統概述6.1.2 互聯網的域名結構6.1.3 域名服務器域名服務器的分區管理DNS 域名服務器的層次結構域名服務器的可靠性域名解析過程-兩種查詢方式DNS 高速緩存機制 6.2 文件傳送協議6.2.1 FTP 概述6.2.2 FTP 的基本工作…

Python擴展知識詳解:lambda函數

目錄 前言 1 基本知識點 語法 特點 代碼示例 2 常見使用場景 1. 與高階函數配合使用 2. 作為排序鍵來使用 3. 立即調用函數 4. 在字典中使用 3 高級用法&#xff08;進階版&#xff09; 1. 多參數lambda 2. 設置默認參數 3. 嵌套lambda 注意事項 何時…

Android: Fragment 的使用指南

Android 中 Fragment 的使用指南 Fragment 是 Android 應用開發中的重要組件&#xff0c;它代表 Activity 中的一部分 UI 或行為&#xff0c;可以組合多個 Fragment 在一個 Activity 中構建多窗格 UI&#xff0c;并在不同 Activity 中重復使用某個 Fragment。 基本概念 Frag…

Vue React

Vue 的源碼主要分為以下幾個部分&#xff1a; 主要涉及 響應式、虛擬 DOM、組件系統、編譯器、運行時。 ├── packages/ │ ├── compiler-core/ # 編譯器核心 │ ├── compiler-sfc/ # 處理 .vue 單文件組件 │ ├── compiler-dom/ # 處理 DOM 相關…