3. 层级化设计原理:顶层原理图与子模块划分、多页原理图设计、Off-page连接器使用
各位工程师,咱们今天聊聊层级化设计。说实话,我刚入行那会儿,画原理图就是一张图从头画到尾。一个复杂的板子,几百个器件全挤在一张图上,找信号线找得眼睛都快瞎了。后来带我的老工程师跟我说了一句话,我到现在都记得——「你这不是在设计电路,你是在画蜘蛛网」。
层级化设计,说白了就是把复杂系统拆成小块。就像写代码要分函数一样,原理图也得分层。这样做的好处太多了:结构清晰、团队协作方便、复用性高。嗯,咱们一个一个来看。
3.1 顶层原理图与子模块划分
顶层原理图是什么?它就像一张地图的总览图。你不需要看到每条街道的细节,只需要知道各个区域之间怎么连接就行。
我个人习惯,拿到一个项目需求后,先不急着画具体电路。我会先画一个功能框图,把系统分成几个大块:电源模块、主控模块、接口模块、存储模块等等。每个模块就是一个子图。
子模块划分的原则:
- 功能独立:每个子模块完成一个明确的功能。比如电源模块只管供电,别把信号处理也塞进去。
- 接口清晰:模块之间的连接信号要定义清楚。我见过有人把几十根信号线随便拉出来,结果后面调试时根本分不清谁是谁。
- 复用性:如果某个电路在多个地方用到,比如一个标准的USB接口电路,那就做成子模块,下次直接调用。
我在项目中遇到过最典型的反面教材:一个同事把整个FPGA的配置电路、电源、IO口全画在一张子图里,结果那张图有200多个器件,打开文件都要卡半天。后来我帮他拆成了4个子模块,每个人负责一块,效率翻了一倍。
3.2 多页原理图设计
多页原理图,就是一张原理图拆成多页来画。你想想看,一本技术手册如果只有一页,那得多恐怖?原理图也是一样的道理。
在Siemens EDA工具里(比如Xpedition或PADS),多页设计有几个关键点:
- 页间连接:不同页之间的信号怎么连?靠的是Off-page连接器(后面细讲)。
- 页号管理:每页原理图都要有清晰的页号。我建议用「总页数-当前页」的格式,比如「Sheet 1 of 5」。这样别人拿到图纸,一眼就知道完整度。
- 信号命名规范:同一个信号在不同页里必须用完全相同的名字。大小写、下划线都不能错。我曾经因为一个信号名里多了个空格,查了整整半天才找到问题。
我的小技巧:在开始多页设计之前,先列一个信号清单。把所有的全局信号(时钟、复位、使能等)列出来,统一命名。这样后面画图时就不会乱。
多页设计还有一个好处——团队协作。你可以把不同页分配给不同工程师。比如小王画电源部分,小李画主控部分,最后在顶层图里把信号对接起来就行。前提是,接口定义必须提前商量好。
3.3 Off-page连接器使用
Off-page连接器,说白了就是「跨页信号线」。它告诉读图的人:这根信号线在这页断了,但它在另一页继续。
在Siemens EDA工具里,Off-page连接器通常是一个带箭头的符号,上面标着信号名和去向的页号。比如:
信号名:I2C_SCL
去向:Sheet 3, Sheet 5
使用Off-page连接器时,有几个坑一定要避开:
我曾经踩过的坑:
- 信号名不一致:同一根信号在不同页里用了不同名字。比如一页叫「CLK_50M」,另一页叫「CLK50M」。工具不会报错,但板子做出来肯定不工作。
- 漏标去向页号:只标了信号名,没标去哪一页。别人读图时得满世界找这根线。
- 方向箭头搞反:输入输出方向标反了。这在仿真时可能不报错,但实际调试时会让你怀疑人生。
我建议的做法是:
- 每个Off-page连接器都写上信号名 + 来源页 + 目标页。
- 使用统一的符号库。别自己画花里胡哨的符号,用工具自带的就行。
- 画完后做一次跨页连接检查。Siemens EDA工具里有个功能叫「Cross Reference」,可以自动检查所有Off-page连接是否匹配。
3.4 实际项目中的层级化设计流程
好了,理论说完了,咱们看看实际怎么做。我一般按这个流程来:
| 步骤 | 内容 | 注意事项 |
|---|---|---|
| 1 | 画系统功能框图 | 确定模块划分和接口信号 |
| 2 | 创建顶层原理图 | 放置模块符号,连接主要信号 |
| 3 | 创建子模块原理图 | 每个子模块单独一页或多页 |
| 4 | 添加Off-page连接器 | 确保信号名和页号正确 |
| 5 | 运行DRC检查 | 检查跨页连接、未连接信号等 |
| 6 | 生成PDF/打印 | 输出给团队评审 |
嗯,这里要特别强调一下第5步。DRC(Design Rule Check)不是摆设。我见过太多人画完图就急着投板,结果DRC报了几百个错误也不管。最后板子回来,不是短路就是开路,返工成本高得吓人。
层级化设计的核心思想:
顶层管连接,底层管实现。顶层只关心信号怎么走,底层才关心电路怎么搭。这样分工明确,效率最高。
最后说一句,层级化设计不是万能的。如果你的项目只有几十个器件,一张图就能画完,那没必要硬拆。但如果是几百上千个器件的复杂系统,层级化设计就是你的救命稻草。
好了,这一章就到这里。下一章咱们聊聊总线设计与信号分组,到时候我会分享一些在高速设计中的实战经验。