計(jì):從模塊拆解到實(shí)戰(zhàn)落地)
作為一個(gè)畫過不少板子的硬件工程師如果你到現(xiàn)在還在用單張?jiān)韴D硬扛整個(gè)項(xiàng)目那我強(qiáng)烈建議你花點(diǎn)時(shí)間把層次化原理圖設(shè)計(jì)這套東西吃透。我見過太多人把三四百個(gè)器件堆在一張?jiān)韴D里密密麻麻的連線看得人頭皮發(fā)麻后期改一個(gè)信號(hào)名都要順著蛛網(wǎng)找半天。這篇內(nèi)容只講一件事在 Altium DesignerAD里怎么用層次化原理圖把一個(gè)復(fù)雜的系統(tǒng)拆成邏輯清晰的模塊以及這套方法在實(shí)際項(xiàng)目里到底怎么落地。文章會(huì)從設(shè)計(jì)思路、核心元素、完整實(shí)操到排錯(cuò)技巧一步步展開。不論你是從 PCB 小白往進(jìn)階走的愛好者還是已經(jīng)被復(fù)雜項(xiàng)目折騰到頭疼的工程師只要能在 AD 里畫通一張簡單的原理圖這篇內(nèi)容里的操作你都能直接上手。1. 層次化原理圖設(shè)計(jì)從“一張大圖”到“一棟樓”1.1 為什么你畫到一半就想放棄先說說沒用層次化之前的狀態(tài)。單張?jiān)韴D本身沒有錯(cuò)它適合那種整套系統(tǒng)只有幾十個(gè)元件、信號(hào)關(guān)系一眼能看穿的小板子比如一個(gè) Arduino 擴(kuò)展板、一塊簡單的電源轉(zhuǎn)接板。但一旦項(xiàng)目規(guī)模上來單張圖的問題就會(huì)暴露得特別明顯。最直接的問題是信號(hào)追蹤。你想查一個(gè)控制信號(hào)從主控出來之后到底接到了哪個(gè)接口上就要在密密麻麻的連線和網(wǎng)絡(luò)標(biāo)簽里來回掃??绰┮桓€或者兩個(gè)同名網(wǎng)絡(luò)標(biāo)簽放得比較遠(yuǎn)非常容易得出錯(cuò)誤結(jié)論。然后是團(tuán)隊(duì)協(xié)作。兩個(gè)人同時(shí)改一張?jiān)韴D光是協(xié)調(diào)文件誰在用就很麻煩更別說每個(gè)人都往圖里添東西圖紙很快就被改得面目全非。還有一個(gè)經(jīng)常被忽略的問題設(shè)計(jì)復(fù)用。你花了很大精力畫好了一個(gè)電源模塊、一個(gè)通信接口電路下個(gè)項(xiàng)目用得上卻只能整個(gè)文件復(fù)制粘貼然后刪掉不相關(guān)的部分再把網(wǎng)絡(luò)一個(gè)個(gè)重新連好。一次兩次還能忍次數(shù)多了就是在消耗你的耐心。層次化原理圖解決的就是這三類問題。它的核心思路和寫代碼時(shí)拆函數(shù)一樣把一套完整系統(tǒng)按功能拆成若干個(gè)子模塊每個(gè)子模塊對(duì)應(yīng)一張獨(dú)立的原理圖再在最頂層用方塊圖把這些子模塊連接起來。整個(gè)項(xiàng)目的框架一目了然信號(hào)流向清清楚楚哪個(gè)模塊出了問題直接進(jìn)對(duì)應(yīng)的子圖去查效率完全不一樣。1.2 一張圖帶你理解父圖與子圖的協(xié)作關(guān)系層次化原理圖里最基礎(chǔ)的兩個(gè)概念是父圖和子圖。父圖也叫頂層圖通常只做一件事放置方塊圖Sheet Symbol并通過方塊圖之間的連線把各個(gè)子模塊的關(guān)系表達(dá)出來。子圖則是真正畫器件、連線、放端口的地方每個(gè)子圖對(duì)應(yīng)一個(gè)具體的功能模塊。拿一套簡單的溫控系統(tǒng)舉例。頂層圖上有三個(gè)方塊一個(gè)叫 MCU一個(gè)叫 SENSOR一個(gè)叫 POWER。方塊 SENSOR 的端口 TEMP_OUT 引出信號(hào)線連接到方塊 MCU 的對(duì)應(yīng)端口 ADC_IN方塊 POWER 的端口 VCC_3V3 連接到 MCU 和 SENSOR 的供電端口??吹竭@張頂層圖你就知道這個(gè)系統(tǒng)的信號(hào)流是傳感器采集溫度、送給 MCU 做處理電源模塊給各模塊供電。至于傳感器具體用的什么型號(hào)、MCU 內(nèi)部怎么配置引腳那是子圖里的事不需要在頂層圖里體現(xiàn)。這種結(jié)構(gòu)帶來的直接好處是任何一個(gè)子圖都能獨(dú)立閱讀、獨(dú)立修改。只要保證子圖的端口和頂層方塊圖的對(duì)應(yīng)關(guān)系不變哪怕你在子圖里把某個(gè)芯片從 STM32F103 換成了 GD32F303對(duì)頂層圖和其他模塊來說都是透明的。這一點(diǎn)在項(xiàng)目迭代時(shí)價(jià)值極高。1.3 兩類設(shè)計(jì)流程先搞清楚再動(dòng)手AD 的層次化設(shè)計(jì)支持兩種創(chuàng)建流程自上而下Top-Down和自下而上Bottom-Up。這兩種方式?jīng)]有絕對(duì)的優(yōu)劣取決于你習(xí)慣怎么思考問題。自上而下的流程是先畫頂層的方塊圖規(guī)劃好整個(gè)系統(tǒng)有哪些模塊、模塊之間怎么連接然后讓 AD 根據(jù)方塊圖自動(dòng)生成子圖的框架你在子圖里繼續(xù)細(xì)化電路。這種方式適合從零開始的系統(tǒng)級(jí)設(shè)計(jì)腦子里先有整體框架再逐層落實(shí)到具體電路思路非常順暢。自下而上的流程正好反過來你先把各個(gè)子模塊的原理圖單獨(dú)畫好驗(yàn)證沒有問題然后在頂層圖里讓 AD 根據(jù)已有的子原理圖自動(dòng)生成方塊圖再把方塊圖的端口連起來。這種方式適合已經(jīng)有成熟模塊積累的工程師比如手頭有現(xiàn)成的電源電路、接口電路把它們整合到新項(xiàng)目里比從頭畫頂層圖再逐步細(xì)化來得更快。如果你剛開始接觸層次化設(shè)計(jì)我建議從自上而下入手因?yàn)樵跊]有子圖約束的情況下你會(huì)主動(dòng)思考系統(tǒng)應(yīng)該拆分成哪些模塊、模塊之間的接口怎么定義。這本身就是一種非常好的設(shè)計(jì)訓(xùn)練。等項(xiàng)目上經(jīng)驗(yàn)多了再回頭看自下而上的方式會(huì)覺得順手很多。2. 動(dòng)手前的關(guān)鍵準(zhǔn)備端口、圖紙符號(hào)與網(wǎng)絡(luò)標(biāo)識(shí)范圍2.1 層次化設(shè)計(jì)的三個(gè)核心元素進(jìn)入實(shí)操之前有必要把 AD 里層次化設(shè)計(jì)涉及的幾個(gè)核心元素說清楚。它們分別是端口、圖紙符號(hào)和網(wǎng)絡(luò)標(biāo)簽。很多人用不好層次化設(shè)計(jì)根本原因就是對(duì)這三個(gè)元素的角色理解不到位。端口是子圖和父圖之間傳遞信號(hào)的接口畫在子圖的邊緣上好比硬件模塊對(duì)外引出的排針。AD 里的端口放在菜單“放置 端口”下放置后可以設(shè)置它的名稱和 I/O 類型。端口的具體圖形樣式和方向箭頭會(huì)自動(dòng)根據(jù) I/O 類型變化比如輸入端口箭頭朝內(nèi)輸出端口箭頭朝外非常直觀。圖紙符號(hào)是頂層圖上用來代表一個(gè)子圖的矩形框相當(dāng)于在頂層圖上貼了一張寫著“這里是電源模塊”的便簽。圖紙符號(hào)有兩個(gè)關(guān)鍵屬性Designator 和 Filename。Designator 是這個(gè)模塊在頂層圖上的命名比如 POWER_AFilename 必須和你實(shí)際的子原理圖文件名完全一致AD 靠這個(gè)對(duì)應(yīng)關(guān)系把方塊圖和子圖關(guān)聯(lián)起來。網(wǎng)絡(luò)標(biāo)簽的作用則要小心。在普通原理圖里兩個(gè)同名的網(wǎng)絡(luò)標(biāo)簽?zāi)呐庐嬙诓煌奈恢秒姎馍鲜沁B通的。但在層次化設(shè)計(jì)中這種“全局連通”的行為還有講究它受你設(shè)置的項(xiàng)目屬性影響。簡單說如果你想讓信號(hào)在子圖之間傳遞不能只靠網(wǎng)絡(luò)標(biāo)簽同名必須通過端口-圖紙符號(hào)條目的路徑走否則很容易出現(xiàn)編譯時(shí)信號(hào)沒有連接的情況。2.2 端口方向與命名規(guī)范端口的方向是你給子模塊定義的“契約”直接決定了信號(hào)在模塊之間怎么走。AD 里端口的方向一共有五種輸入、輸出、雙向、集電極開路和被動(dòng)。實(shí)際使用中我一般只用前三種集電極開路和被動(dòng)更多地出現(xiàn)在特殊總線或模擬信號(hào)場景普通數(shù)字系統(tǒng)用不到。項(xiàng)目多人協(xié)同時(shí)一定要對(duì)端口命名立規(guī)矩不然每個(gè)人按自己的習(xí)慣起名模塊一多就亂套了。我的建議是端口名稱使用大寫加下劃線比如 MCU_UART_TX、PWR_5V一眼能看出信號(hào)歸屬主動(dòng)發(fā)起的一端定義為輸出接收的一端定義為輸入所有子圖對(duì)外端口的命名必須和頂層方塊圖的圖紙符號(hào)條目Sheet Entry名稱完全一致否則編譯會(huì)報(bào)錯(cuò)。曾經(jīng)有一次我把子圖里一個(gè)端口命名為 EN_N頂層方塊圖里對(duì)應(yīng)條目創(chuàng)建的時(shí)候叫 EN編譯后信號(hào)直接斷開了。這種問題非常隱蔽因?yàn)樗粫?huì)報(bào)太多 error稍不留神就帶著錯(cuò)誤的連接狀態(tài)進(jìn)了 PCB。2.3 Net Identifier Scope決定信號(hào)跨圖規(guī)則的開關(guān)如果要選一個(gè)層次化設(shè)計(jì)里最容易被人忽視、影響卻最大的設(shè)置我首推 Net Identifier Scope。它在“工程 工程參數(shù) Options”里選項(xiàng)有 Automatic、Flat、Hierarchical、Global 四種。這組選項(xiàng)的核心作用決定網(wǎng)絡(luò)標(biāo)簽和端口在多個(gè)子原理圖之間以什么規(guī)則連通。Automatic 是讓 AD 根據(jù)工程內(nèi)容自動(dòng)決定絕大多數(shù)情況選這個(gè)不會(huì)錯(cuò)。Flat 模式下整個(gè)項(xiàng)目的所有網(wǎng)絡(luò)標(biāo)簽都視為全局有效端口的作用被弱化同名的網(wǎng)絡(luò)標(biāo)簽在任意子圖之間都能導(dǎo)通。Hierarchical 模式下網(wǎng)絡(luò)標(biāo)簽只在當(dāng)前圖紙內(nèi)有效子圖之間要通過端口和方塊圖來傳遞信號(hào)這是層次化設(shè)計(jì)的標(biāo)準(zhǔn)邏輯。Global 模式則把端口和網(wǎng)絡(luò)標(biāo)簽都強(qiáng)行視為全局連通和 Flat 類似但更徹底。新手最容易犯的錯(cuò)是在子圖 A 里放了一個(gè)網(wǎng)絡(luò)標(biāo)簽叫 CLK在子圖 B 里也放了一個(gè)同名的網(wǎng)絡(luò)標(biāo)簽以為它們連上了結(jié)果編譯一看沒有連接。原因就是在 Hierarchical 模式下網(wǎng)絡(luò)標(biāo)簽根本不跨圖紙生效。要跨圖傳信號(hào)必須把信號(hào)引出為端口再在頂層方塊圖里連起來。3. 完整實(shí)操從頂層方塊圖到細(xì)節(jié)電路的落地流程3.1 自上而下流程先搭骨架再填肉自上而下的第一步是在工程里新建一張空白的原理圖命名成頂層圖比如 TOP.SchDoc。在這個(gè)頂層圖里執(zhí)行“放置 圖紙符號(hào)”把方塊圖放到合適的位置。放置后雙擊方塊圖在屬性面板里把 Designator 和 Filename 填好。比如我想放一個(gè)“電源模塊”的方塊Designator 填 PWR1Filename 填 PWR.SchDoc。下一步是關(guān)鍵選中這個(gè)方塊圖執(zhí)行“設(shè)計(jì) 根據(jù)圖紙符號(hào)建立子圖”Create Sheet From Sheet Symbol。AD 會(huì)彈一個(gè)確認(rèn)框問你是不是要?jiǎng)?chuàng)建子圖確認(rèn)后工程里就會(huì)多出一張名為 PWR.SchDoc 的子原理圖并且子圖里已經(jīng)帶好了腳標(biāo)腳標(biāo)名稱就是后續(xù)頂層方塊圖里要連線對(duì)應(yīng)的條目名稱。在子圖里把電路畫完回到頂層圖選中方塊圖執(zhí)行“設(shè)計(jì) 根據(jù)子圖建立圖紙符號(hào)條目”Add Sheet Entry或者直接放置菜單里的“添加圖紙符號(hào)條目”在方塊圖邊緣添加端口條目。條目名稱必須和子圖里的端口名稱完全一致I/O 方向也最好保持一致。逐一把所有子圖的端口條目都添加好然后用導(dǎo)線把各個(gè)方塊圖的端口條目連接起來頂層就完成了。這個(gè)過程中最容易遺漏的就是“落地不干凈”。很多時(shí)候方塊圖放好了子圖也生成了但子圖里某幾個(gè)對(duì)外信號(hào)沒有做成端口而是用網(wǎng)絡(luò)標(biāo)簽直接放著。頂層方塊圖這邊自然也就不會(huì)出現(xiàn)對(duì)應(yīng)的條目。編譯的時(shí)候 AD 會(huì)給你報(bào)未解析信號(hào)的警告這時(shí)候再回頭補(bǔ)端口就有點(diǎn)手忙腳亂。建議在開始畫子圖之前就先把所有對(duì)外信號(hào)的端口一次性建好。3.2 自下而上流程先畫子模塊再組裝自下而上與自上而下的操作路徑正好相反。我先畫好一個(gè)子功能原理圖比如 FAN_CTRL.SchDoc在整個(gè)原理圖里把對(duì)外的管腳都用端口畫出來命名規(guī)范I/O 類型明確。等到這塊子圖的基礎(chǔ)電路驗(yàn)證完成我再新建頂層圖然后執(zhí)行“設(shè)計(jì) 根據(jù)子圖建立圖紙符號(hào)”Create Sheet Symbol From Sheet or HDL在彈出的對(duì)話框里選擇 FAN_CTRL.SchDocAD 就會(huì)自動(dòng)在頂層生成一個(gè)方塊圖并與這個(gè)文件關(guān)聯(lián)好。這種情況下方塊圖的端口條目也會(huì)一并自動(dòng)生成不需要手動(dòng)添加非常省事。你要做的就是把各個(gè)方塊圖之間的條目連起來形成一個(gè)完整系統(tǒng)。自下而上最典型的應(yīng)用場景是模塊化產(chǎn)品線。比如你的公司做了好幾款設(shè)備都用到同一塊電源板電源板已經(jīng)在老項(xiàng)目里驗(yàn)證過無數(shù)次。新項(xiàng)目只要把這個(gè)原理圖文件納入工程在頂層圖里執(zhí)行“根據(jù)子圖建立圖紙符號(hào)”就能把這塊經(jīng)過驗(yàn)證的電路作為模塊引用進(jìn)來。它帶來的不只是省事更是可靠性——復(fù)用的模塊出過的問題已經(jīng)被修掉了你不需要重新?lián)乃?.3 實(shí)例拆解一個(gè)帶 MCU 和電源域的小系統(tǒng)把前面講的流程串起來我用一個(gè)簡單系統(tǒng)舉例一套物聯(lián)網(wǎng)節(jié)點(diǎn)板包含一個(gè) MCU 子系統(tǒng)、一個(gè)傳感器接口和一個(gè)電源管理模塊。頂層圖我放了三個(gè)方塊圖。MCU_SYS 對(duì)應(yīng) MCU_SYS.SchDocSENS_IF 對(duì)應(yīng) SENS_IF.SchDocPOWER 對(duì)應(yīng) POWER.SchDoc。在 POWER 子圖里我用 TPS62130 把輸入電壓轉(zhuǎn)成 3.3V輸出端口叫 VCC_3V3方向?yàn)檩敵?。SENS_IF 子圖里放置傳感器的電平轉(zhuǎn)換電路端口有 VDD 輸入、I2C_SCL 和 I2C_SDA 雙向端口。MCU_SYS 子圖里放主控芯片、晶振和啟動(dòng)配置端口有 3V3、GND、I2C_SCL、I2C_SDA。編譯后我在頂層圖把 POWER 的 VCC_3V3 連到 MCU_SYS 和 SENS_IF 的 3V3 或 VDD把 MCU_SYS 的 I2C_SCL 連到 SENS_IF 的 I2C_SCLI2C_SDA 同理。信號(hào)流從電源、到 MCU、再通過 I2C 總線與傳感器通信層次一目了然。調(diào)試時(shí)如果發(fā)現(xiàn) I2C 上拉電壓不對(duì)直接進(jìn) SENS_IF 子圖查上拉電路就行不用在整張圖上找。這個(gè)例子看著簡單但它完整覆蓋了層次化設(shè)計(jì)的閉環(huán)頂層定義架構(gòu)、子圖實(shí)現(xiàn)細(xì)節(jié)、端口完成接口。實(shí)物項(xiàng)目不管多復(fù)雜本質(zhì)都是這個(gè)套路在重復(fù)和疊加。3.4 層次化對(duì) PCB 布局的延伸價(jià)值Room 分區(qū)層次化原理圖的好處不只停留在原理圖階段到了 PCB 布局階段還會(huì)繼續(xù)發(fā)揮價(jià)值。原理圖編譯后AD 會(huì)根據(jù)層次結(jié)構(gòu)自動(dòng)生成 Room。簡單理解Room 就是 PCB 上一個(gè)可以命名的區(qū)域同一個(gè)子圖里的器件會(huì)被劃分到同一個(gè) Room 內(nèi)。在 PCB 里導(dǎo)入網(wǎng)絡(luò)表后分配 Room 的器件仍然保留著屬性。切換到 PCB 編輯器執(zhí)行“設(shè)計(jì) Room”或者在 PCB 面板里選中某個(gè) Room你可以執(zhí)行操作讓對(duì)應(yīng)的器件高亮甚至一鍵把這些器件挪到布局區(qū)域內(nèi)。這對(duì)復(fù)雜板卡的意義非常大先按功能模塊把板子分區(qū)再在每個(gè)區(qū)域內(nèi)做局部優(yōu)化比在整板上海底撈針式布局高效得多。多通道設(shè)計(jì)也用得到這個(gè)特性。比如一個(gè) 8 路電機(jī)驅(qū)動(dòng)板8 路驅(qū)動(dòng)電路的設(shè)計(jì)完全一樣。AD 支持在多通道設(shè)計(jì)中用 Repeat 語法把某個(gè)方塊圖重復(fù)實(shí)例化自動(dòng)生成 Room_MOTOR0、Room_MOTOR1 等多組區(qū)域。PCB 布局時(shí)每一路的器件會(huì)自動(dòng)落在對(duì)應(yīng)的通道區(qū)域里復(fù)制布局的工作量瞬間降下來。4. 常見問題與排查技巧實(shí)錄4.1 常見問題速查表實(shí)操中這些問題出現(xiàn)的頻率最高先列成表方便你對(duì)照排查。現(xiàn)象可能原因解決思路編譯提示 Not all nets were resolved網(wǎng)絡(luò)標(biāo)簽跨圖使用但 Net Identifier Scope 是 Hierarchical或子圖端口未連到方塊圖檢查端口和方塊圖條目命名確認(rèn) Net Identifier Scope 設(shè)置為 Automatic子圖里端口和頂層方塊條目對(duì)不上端口名稱大小寫不同或方向不一致統(tǒng)一命名規(guī)范核對(duì) I/O 類型是否匹配根據(jù)方塊圖生成子圖后沒有端口用錯(cuò)了菜單把方塊圖當(dāng)成普通元件放置應(yīng)在方塊圖選中狀態(tài)下執(zhí)行“設(shè)計(jì) 根據(jù)圖紙符號(hào)建立子圖”編譯報(bào)重復(fù)網(wǎng)絡(luò)名多個(gè)子圖里使用了同名網(wǎng)絡(luò)標(biāo)簽又設(shè)置了全局連通或端口被重復(fù)連接檢查沖突的信號(hào)把全局性的網(wǎng)絡(luò)標(biāo)簽改為通過端口連接方塊圖無法關(guān)聯(lián)到已有原理圖Filename 和實(shí)際文件不一致雙擊方塊圖核對(duì) Filename 屬性重新指定正確的原理圖文件名某個(gè)端口信號(hào)在 PCB 里丟失子圖端口沒有連接任何網(wǎng)絡(luò)或端口懸空回到原理圖確認(rèn)端口被導(dǎo)線有效連接編譯并查看未連接引腳報(bào)告4.2 踩坑實(shí)錄那些編譯后才發(fā)現(xiàn)的錯(cuò)誤第一個(gè)想重點(diǎn)說的問題是“端口懸空”。有一次我畫一個(gè)子圖端口放在了原理圖邊緣但我在子圖內(nèi)部漏畫了引線端口在網(wǎng)絡(luò)表里沒有連接到任何網(wǎng)絡(luò)。編譯時(shí) AD 會(huì)報(bào) warning可我當(dāng)時(shí)沒細(xì)看 Messages 面板直接導(dǎo)入了 PCB。直到生產(chǎn)回來后發(fā)現(xiàn)有一個(gè)引腳根本沒法控制才回頭把這個(gè)端口連接問題揪出來。從那以后我每次編譯后都會(huì)花一分鐘看一遍 Messages 面板里的 Warning 項(xiàng)特別是帶 Unconnected 字樣的絕不放過去。第二個(gè)是“在方塊圖里改了端口名子圖沒同步”。AD 的端口名和方塊圖條目名稱是分別存儲(chǔ)的不會(huì)自動(dòng)雙向同步。手動(dòng)改了方塊圖上的條目名稱子圖里的端口名不會(huì)跟著變編譯必然報(bào)錯(cuò)。正確做法是選中子圖的端口右鍵執(zhí)行“同步圖紙符號(hào)條目”或者統(tǒng)一從子圖端口側(cè)發(fā)起修改再回到頂層檢查。這個(gè)操作順序問題很多人踩過改名字一時(shí)爽編譯報(bào)錯(cuò)兩行淚。第三個(gè)比較隱蔽工程的 Net Identifier Scope 設(shè)置成了 Flat一切都正常連通但你把工程發(fā)給同事對(duì)方打開后他的 IDE 默認(rèn)設(shè)置是 Hierarchical結(jié)果報(bào)一堆未解析網(wǎng)絡(luò)。這個(gè)問題的根源不在畫圖而在工程文件里沒有固化這個(gè)選項(xiàng)。建議在工程參數(shù)里顯式設(shè)置好再去存放工程不要依賴默認(rèn)值。4.3 多通道設(shè)計(jì)用 Repeat 復(fù)用同一模塊多通道設(shè)計(jì)是層次化原理圖的進(jìn)階玩法核心思路是利用 Repeat 語法讓同一個(gè)子圖在編譯時(shí)被多次實(shí)例化。比如一個(gè) 8 通道的模擬采集板每個(gè)通道的電路完全一樣我沒有必要畫 8 張相同的子圖只需要畫一張 ADC_CH.SchDoc然后在頂層方塊圖里把 Designator 寫成類似 Repeat(ADC_CH, 1, 8) 的格式。編譯后 AD 會(huì)自動(dòng)生成 8 個(gè)實(shí)例。多通道的端口處理有點(diǎn)特殊。如果每個(gè)通道都有一路獨(dú)立的信號(hào)比如 CH1_IN、CH2_IN 到 CH8_IN可以在方塊圖的條目里使用 Repeat 注釋讓 AD 自動(dòng)展開成多路。如果所有通道共享一個(gè)信號(hào)比如時(shí)鐘 SCLK每個(gè)實(shí)例都會(huì)連接到這同一個(gè)網(wǎng)絡(luò)用普通條目即可。多通道設(shè)計(jì)一開始會(huì)覺得抽象操作起來也容易出錯(cuò)但它帶來的收益非常直接改一個(gè)通道的電路所有通道同步修改PCB 布局時(shí)自動(dòng)生成 8 組 Room每一路都能獨(dú)立放置和布線。如果你的產(chǎn)品天然具備這種重復(fù)性結(jié)構(gòu)這個(gè)技能值得花時(shí)間掌握。4.4 提升調(diào)試效率的兩個(gè)技巧最后分享兩個(gè)我用的順手的技巧。第一個(gè)是“列表式檢查所有跨圖信號(hào)”。工程編譯之后執(zhí)行“工程 工程選項(xiàng) 選項(xiàng)”里的“網(wǎng)絡(luò)表”或“比較”功能可以導(dǎo)出當(dāng)前項(xiàng)目的網(wǎng)絡(luò)連接清單。我會(huì)在導(dǎo)入 PCB 之前掃一眼這份清單重點(diǎn)檢查所有圖紙符號(hào)條目的網(wǎng)絡(luò)是不是都在預(yù)期范圍內(nèi)。這一步花不了兩分鐘但能省下后面排查 PCB 的半天時(shí)間。第二個(gè)是利用“導(dǎo)航”功能快速定位模塊。子圖和方塊圖關(guān)聯(lián)后在頂層方塊圖上右鍵選擇“進(jìn)入子圖”AD 會(huì)直接打開對(duì)應(yīng)的子原理圖并定位到和該方塊圖相關(guān)聯(lián)的位置。在主控芯片數(shù)據(jù)手冊和原理圖之間來回對(duì)照時(shí)這個(gè)功能比手動(dòng)翻文件樹效率高得多。前期多用幾次你就會(huì)養(yǎng)成在頂層圖里的“進(jìn)出習(xí)慣”看一個(gè)復(fù)雜項(xiàng)目的速度會(huì)明顯變快。我在實(shí)際項(xiàng)目中用層次化設(shè)計(jì)已經(jīng)三年多最大的體會(huì)是它改變的不僅是圖紙的呈現(xiàn)方式更是設(shè)計(jì)時(shí)候的思維方式。每一次新建工程我都不再急著打開原理圖擺元件而是先在腦子里或者紙面上把系統(tǒng)拆成功能塊畫清楚模塊邊界和信號(hào)接口。一開始這樣做會(huì)覺得多了一步流程但堅(jiān)持下來之后畫圖出錯(cuò)率明顯下降項(xiàng)目交接的時(shí)候給到別人的不只是一堆圖紙而是一套結(jié)構(gòu)清晰的完整設(shè)計(jì)。如果你是剛開始接觸層次化原理圖我的建議很簡單找一個(gè)小項(xiàng)目完整走一遍自上而下流程再走一遍自下而上流程把端口、方塊圖、編譯檢查這條鏈路徹底跑通。這個(gè)過程不會(huì)花你太多時(shí)間但價(jià)值是長期的——后續(xù)做的每一個(gè)復(fù)雜項(xiàng)目都會(huì)感謝你此刻的這一步投入。