PCB设计基础:面向嵌入式工程师的系统性指南
嵌入式系统的性能、稳定性和可靠性,很大程度上依赖于电路硬件的设计质量。在硬件设计中,PCB(Printed Circuit Board)设计是连接系统功能与实际运行的关键一环。本文将从嵌入式工程师的视角,系统性地介绍PCB设计的关键基础,包括设计流程、布局布线、电气完整性、电源完整性、EMC/EMI控制等方面。
一、PCB设计流程概述
嵌入式工程开发中的PCB设计流程通常包括以下步骤:
- 原理图设计(Schematic Design)
- 器件封装库创建与管理
- PCB结构规划(Stack-up Design)
- 元器件布局(Component Placement)
- 信号布线(Routing)
- 电源与地平面设计
- 电气规则检查(ERC)、设计规则检查(DRC)
- Gerber文件输出与制造准备
二、原理图设计与封装管理
1. 原理图设计要点:
- 确保逻辑正确、接口清晰、模块划分合理。
- 使用层次化设计,提升可读性与可维护性。
- 标准化信号命名,便于后续布线与调试。
2. 封装库管理:
- 保证封装尺寸与实际器件匹配(参考Datasheet)。
- 引脚编号必须准确,防止焊接错误。
- 建议采用集中化的封装库管理系统,避免重复定义。
三、PCB层叠结构设计(Stack-up)
层叠结构影响信号完整性、电源完整性和EMC性能。常见结构:
- 2层板:成本低,适用于简单系统。
- 4层板:信号层 + 电源层 + 地层,适合中等复杂度系统。
- 6层以上:多用于高速信号、高密度布线或复杂嵌入式平台。
设计建议:
- 地层应尽量完整,作为参考层。
- 信号层应靠近地层,形成稳定的回流路径。
- 电源层与地层之间的距离应控制在合理范围内,以形成良好去耦结构。
四、元器件布局原则
布局合理性直接影响EMC、散热、信号完整性等性能:
- 按功能模块划分区域,如电源模块、MCU模块、通信模块等。
- 高频器件靠近接口或匹配器件,减少布线长度。
- 模拟与数字模块分区布局,避免互相干扰。
- 考虑散热路径与风道方向,必要时增加散热铜皮或过孔。
五、信号布线策略
1. 一般布线规则:
- 优先走关键信号(如时钟线、差分线)。
- 避免直角走线,以减少信号反射。
- 使用等长布线技术匹配高速信号延时。
- 控制走线宽度与间距,保障阻抗连续性。
2. 差分信号布线(如USB、LVDS):
- 保持差分对的间距一致。
- 保持长度匹配,差值控制在规定范围内(如<50mil)。
- 避免穿过不同参考平面,必要时加上桥接电容或回流路径。
六、电源完整性(PI)设计
电源完整性设计的目标是提供稳定、低噪声、低阻抗的电源网络。
关键技术点:
- 合理布局去耦电容(靠近IC电源引脚放置)。
- 多点接地,形成低阻抗回路。
- 电源层尽量连续完整,避免分割。
- 对于高频器件,设计电源滤波网络(LC或π型滤波)。
七、EMC/EMI控制设计
电磁兼容设计是嵌入式PCB非常重要的环节:
常见措施:
- 信号线尽量靠地走,形成闭合回路。
- 高速信号避免长线、打孔、跨层。
- 使用TVS管、电磁屏蔽、共模滤波器等保护元件。
- 地平面完整性优先,避免“断地”与“地环路”。
八、设计验证与输出
1. DRC/ERC检查
- 检查信号连线、过孔间距、走线宽度是否符合规则。
- 检查电源、GND是否连接完整。
2. 仿真验证(可选)
- 高频设计建议使用SI/PI仿真(如HyperLynx、Allegro Sigrity)。
3. 制板文件输出
- 包括Gerber文件、钻孔文件、装配图纸、BOM等。
- 与PCB厂商确认板层顺序、工艺要求、表面处理等细节。
九、典型失效案例分析(简略)
- 时钟信号不稳定 → 原因:布线过长、回流路径不连续。
- MCU复位异常 → 原因:电源上电顺序不对、去耦不充分。
- USB通信不稳定 → 原因:差分对阻抗不一致、布线不对称。
十、结语
一个优秀的PCB设计不仅仅是器件的连线,更是对电气性能、机械结构、热设计、制造工艺的综合考量。嵌入式工程师在掌握系统设计的同时,深入理解PCB设计原理将极大提升系统的可靠性与可维护性。
建议:在项目开发过程中,始终保持与硬件工程师、PCB制造工程师的紧密沟通,确保设计从理论到实践的一致性。
相关文章:
PCB设计基础:面向嵌入式工程师的系统性指南
嵌入式系统的性能、稳定性和可靠性,很大程度上依赖于电路硬件的设计质量。在硬件设计中,PCB(Printed Circuit Board)设计是连接系统功能与实际运行的关键一环。本文将从嵌入式工程师的视角,系统性地介绍PCB设计的关键基…...
aspark 配置2
编写Hadoop集群启停脚本 1.建立新文件,编写脚本程序 在hadoop101中操作,在/root/bin下新建文件:myhadoop,输入如下内容: 2.分发执行权限 保存后退出,然后赋予脚本执行权限 [roothadoop101 ~]$ chmod x /r…...
【统计方法】LASSO筛变量
启 比较原始做LASSO包是library(glmnet) 若目标是纯 LASSO 分析,alpha 必须设为 1 标准化数据:LASSO 对特征的尺度敏感,需对数据进行标准化(均值为0,方差为1)。 cv.glmnet获得的lambda.m…...
拥抱健康生活,书写养生新篇
在快节奏的现代生活中,健康愈发成为人们关注的焦点。践行健康养生,并非是一种选择,而是我们对自己和家人应尽的责任。掌握正确的养生之道,不仅能提升生活品质,更能让生命焕发出新的活力。 合理饮食是健康的基石。一…...
Shiro学习(五):Shiro对权限的缓存
一、问题描述 由前边的学习中了解,用户的角色权限一般存储在数据库中,每次进行权限校验时都要从 数据库查询用户的角色权限信息;对数据库来说这样频繁的查询压力太大了,也影响程序的 性能。 Shiro 中执行权限角色校验时࿰…...
QGIS实战系列(六):进阶应用篇——Python 脚本自动化与三维可视化
欢迎来到“QGIS实战系列”的第六期!在前几期中,我们从基础操作到插件应用逐步提升了 QGIS 技能。这一篇,我们将迈入进阶领域,探索如何用 Python 脚本实现自动化,以及如何创建三维可视化效果,让你的 GIS 项目更高效、更立体。 第一步:Python 脚本自动化 QGIS 内置了 Py…...
redis-cpp-cpp如何使用lua脚本
1.前言 我今天要在项目中使用lua脚本,结果搞半天都没有弄明白这个函数怎么调用,而且也似乎很少有redis相关的博客介绍,ai也回答的不准确! 2.正文 今天用一个例子演示一下 下面是lua脚本 const std::string LuaScript R"…...
C# Winform 入门(6)之不同类之间的值传递
承接上一个教程,利用委托事件来进行值传递 声明变量 public static double plx, ply,plxx,plyy;声明委托、事件 //声明委托 //事件 public delegate void transferDistance(double dis); public static transferDistance doTransfer; 直接读取form1中的变量 publ…...
JWT 秘钥的作用机制
JWT 秘钥的作用并不是给前端使用的,而是用于后端服务器内部的一个重要安全机制。 JWT 秘钥的作用 签名与验证: 秘钥主要用于对 JWT(JSON Web Token)进行签名和验证后端使用这个秘钥对令牌进行签名,确保令牌的完整性…...
sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder包
1. 在将别人的项目导入eclipse之后,出现了"sun.misc.BASE64Encoder找不到jar"的错误,我解决的办法是:右键项目》属性》Java Build Path》jre System Library 》access rules 》resolution选择accessible,下面填上**点击确定即可࿰…...
Java面试黄金宝典34
1. 主键索引底层的实现原理 定义 主键索引是数据库中用于唯一标识表中每一行记录的索引,常见的底层实现是 B 树结构。B 树是一种平衡的多路搜索树,由内部节点和叶子节点组成。内部节点只存储索引键和指向下一层节点的指针,不存储实际数据&am…...
计算机系统---CPU
定义与功能 中央处理器(Central Processing Unit,CPU),是电子计算机的主要设备之一,是计算机的核心部件。CPU是计算机的运算核心和控制核心,负责执行计算机程序中的指令,进行算术运算、逻辑运算…...
AWS云安全基线:构建企业级安全防护体系的完整指南
1. 引言 随着越来越多的企业将其业务和数据迁移到云端,云安全已成为一个不容忽视的关键议题。AWS作为全球领先的云服务提供商,提供了丰富的安全工具和最佳实践。本文将深入探讨如何构建一个全面的AWS云安全基线,以确保您的企业在云环境中的安全性。 2. AWS共享责任模型 在深…...
(三十三)Dart 中使用 Pub 包管理系统与 HTTP 请求教程
Dart 中使用 Pub 包管理系统与 HTTP 请求教程 Pub 包管理系统简介 Pub 是 Dart 和 Flutter 的包管理系统,用于管理项目的依赖。通过 Pub,开发者可以轻松地添加、更新和管理第三方库。 使用 Pub 包管理系统 1. 找到需要的库 访问以下网址,…...
如何实现单例模式?
一、模式定义与核心价值 单例模式(Singleton Pattern)是一种创建型设计模式,保证一个类仅有一个实例,并提供全局访问点。其核心价值在于: 资源控制:避免重复创建消耗性资源(如数据库连…...
【51单片机】2-4【I/O口】震动传感器控制继电器
1.硬件 51最小系统继电器模块震动传感器模块 2.软件 #include "reg52.h"sbit vibrate P3^3;//震动传感器DO接到P3.3口 sbit switcher P1^1;//继电器控制端IN接到P1.1void Delay2000ms() //11.0592MHz {unsigned char i, j, k;// _nop_();i 15;j 2;k 235;do{…...
正点原子 迷你 miniSTM32用ST link烧录后程序不运行(已解决)
情况,在程序和配置都没有问题时检查 烧录使用ST linkv2 烧录后有时程序可行,有时不可行 解决方法 加USB供电配合SW烧录 建议直接用USB转串口烧录 不推荐JLINK供电,也不推荐ST linkv2供电...
如何确保MQ消息队列不丢失:Java实现与流程分析
前言 在分布式系统中,消息队列(Message Queue, MQ)是核心组件之一,用于解耦系统、异步处理和削峰填谷。然而,消息的可靠性传递是使用MQ时需要重点考虑的问题。如果消息在传输过程中丢失,可能会导致数据不一…...
Pascal语言的系统监控
Pascal语言的系统监控 引言 在现代计算机系统中,系统监控是确保计算机平稳运行的重要组成部分。无论是个人计算机还是大型服务器,监控系统的性能、资源使用及状态,都是提高系统效率、及时发现问题的关键。Pascal语言作为一种结构化编程语言…...
6.0 使用Qt+ OpenCV+Python加载图片
本例作为python图像处理的入门课程1,使用Qt+ OpenCV+Python加载图片。 主要有如下几个地方需要注意: 1. OpenCV 默认使用 BGR 格式,而 Qt 使用 RGB。显示前需要转换:cv2.cvtColor(img, cv2.COLOR_BGR2RGB),一般使用某个QLabel控件进行显示。 pic = cv2.cvtColor(pic, cv2.C…...
低成本训练垂直领域文娱大模型的技术路径
标题:低成本训练垂直领域文娱大模型的技术路径 内容:1.摘要 在文娱产业快速发展且对智能化需求日益增长的背景下,为降低垂直领域文娱大模型的训练成本,本研究旨在探索低成本训练的有效技术路径。采用对现有开源模型进行微调、利用轻量化模型架构以及优化…...
音视频入门基础:RTP专题(21)——使用Wireshark分析海康网络摄像机RTSP的RTP流
一、引言 使用vlc等播放器可以播放海康网络摄像机的RTSP流: 网络摄像机的RTSP流中,RTSP主要用于控制媒体流的传输,如播放、暂停、停止等操作。RTSP本身并不用于转送媒体流数据,而是会通过PLAY方法使用RTP来传输实际的音视频数据。…...
【Java网络编程详解】
文章目录 前言一、网络编程基础知识1. 什么是网络编程? 二、Java网络编程核心类三、TCP编程实现1. TCP通信原理2. TCP服务器端示例3. TCP客户端示例 四、UDP编程实现1. UDP通信原理2. UDP服务器端示例3. UDP客户端示例 五、使用HttpURLConnection发送HTTP请求1. GET…...
DuckDB系列教程:如何分析Parquet文件
Parquet 是一种强大的、基于列的存储格式,适用于实现更快捷和更高效的数据分析。您可以使用 DuckDB 这种内存型分析数据库来处理 Parquet 文件并运行查询以对其进行分析。 在这篇文章中,我们将逐步介绍如何使用 DuckDB 对存储在 Parquet 文件中的餐厅订单…...
uniapp的v-for不显示或者swiper-item的不显示
今天开发的时候碰见一个问题,在布局的时候发现v-for遍历的时候不显示内容 H5是正常的 但是在小程序就是不显示 最后排查的原因是同一个组件 swiper-item的 v-for不能用相同的名称 比如 <swiper-item v-for"i in 3" :key"i"><image …...
解决LeetCode“使括号有效的最少添加”问题
目录 问题描述 解题思路 复杂度分析 示例分析 暴力替换“不讲码德” 总结 问题描述 给定一个仅由 ( 和 ) 组成的字符串 s,我们需要通过添加最少数量的括号(( 或 ))使得字符串有效。有效字符串需满足: 空字符串是有效的。 …...
黑马点评_知识点
将手机验证码保存到HttpSession中进行验证(感觉已经过时) Controller中的参数有HttpSession,存验证码session.setAttribute(SystemConstants.VERIFY_CODE, code); 其他的都是逻辑代码 Cookie的缺点 什么是Session集群共享问题? …...
2025年渗透测试面试题总结-某腾讯-玄武实验室扩展(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 某腾讯-玄武实验室扩展 一、Web安全基础原理与关联漏洞 1.1 CSRF攻击原理深度解析 1.2 反序列化漏洞…...
管理系统 UI 设计:提升企业办公效率的关键
一、管理系统UI设计的基本原则 管理系统UI设计应遵循一系列基本原则,以确保界面友好、操作便捷、信息直观。这些原则包括: 简洁性:界面应去除冗余元素,保持简洁明了,避免用户迷失在复杂界面中。一致性:界…...
Apache Commons Lang3 中的 `isNotEmpty` 与 `isNotBlank`的区别
前言 在 Java 开发中,字符串的空值(null)、空字符串(“”)和空白字符串(如 " ")的判断是高频需求。Apache Commons Lang3 的 StringUtils 类提供了两个核心方法:isNotEmp…...
WPF 登录页面
效果 项目结构 LoginWindow.xaml <Window x:Class"PrismWpfApp.Views.LoginWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.…...
CExercise_05_1函数_2海伦公式求三角形面积
题目: 键盘录入三个边长(带小数),然后用海伦公式计算三角形的面积(如果它确实是一个三角形的话) 海伦公式求三角形面积: 要求基于下列两个函数完成这个编程题: // 判断abc是否可以组…...
Muduo网络库实现 [十五] - HttpContext模块
目录 设计思路 类的设计 解码过程 模块的实现 私有接口 请求函数 解析函数 公有接口 疑惑点 设计思路 记录每一次请求处理的进度,便于下一次处理。 上下文模块是Http协议模块中最重要的一个模块,他需要记录每一次请求处理的进度,需…...
构建自己的私有 Git 服务器:基于 Gitea 的轻量化部署实战指南
对于个人开发者、小型团队乃至企业来说,将项目代码托管在 GitHub、Gitee 等公共平台虽然方便,但也存在一定的隐私与可控性问题。 搭建一套私有 Git 代码仓库系统,可以实现对源码的完全控制,同时不依赖任何第三方平台,…...
【计科】计算机科学与技术,从离散数学到软件工程,从理学/抽象/科学到工学/具体/技术
【计科】计算机科学与技术,从离散数学到软件工程,从理学/抽象/科学到工学/具体/技术 文章目录 1、发展史与桥梁(离散数学 -> 算法/数据结构 -> 软件工程)2、离散数学(数理逻辑-命题/谓词/集合/函数/关系 -> 代…...
架构与大数据-RabbitMQ和Kafka的技术实现异同及落地场景上的异同
RabbitMQ与Kafka技术实现及场景对比 一、技术实现异同 对比维度RabbitMQKafka核心协议/模型基于 AMQP 协议,支持点对点、发布/订阅、Topic Exchange 等多种消息模式,支持灵活的路由规则基于 发布-订阅模型,…...
工程画图-UML类图 组合和聚合
组合VS聚合 组合&聚合浅层理解 组合似组装,电脑组装,少装一个CPU行不?不行,没CPU哪还是电脑啊。用实心菱形表示。 而聚合似起义,聚是一团火,散是满天星。就像公司和员工,少你一个照常运转…...
Go语言-初学者日记(七):用 Go 写一个 RESTful API 服务!
👷 实践是最好的学习方式!这一篇我们将用 Go Gin 框架从零开始开发一个用户管理 API 服务。你将学到: 如何初始化项目并引入依赖如何组织目录结构如何用 Gin 实现 RESTful 接口如何通过 curl 测试 API进阶功能拓展建议 🧰 一、项…...
数据结构:手工创建表达式树的方法
1. 表达式树 表达式树(Binary Expression Tree)是一类特殊的二叉树,用以表示表达式,如图 7.6.1 所示,是一棵表示了 a b * c d * (e f) 的表达式树。 图 7.6.1 表达式树示例 表达式树有如下特点: 操作数…...
自定义类型:联合和枚举
文章目录 前言一、联合体类型的声明1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体的一个练习 二、枚举类型的声明2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用1. 用于 switch 语句2. 作为函数参数 总结 前…...
注意力机制
实现了Bahdanau式加法注意力的核心计算逻辑。以下是三个线性层设计的完整技术解析: 一、数学公式推导 注意力分数计算流程: s c o r e ( h d e c , h e n c ) v T ⋅ tanh ( W 1 ⋅ h e n c W 2 ⋅ h d e c ) score(h_{dec}, h_{enc}) v^T \cdot …...
OrangePi5Plus开发板不能正确识别USB 3.0 设备 (绿联HUB和Camera)
1、先插好上电(可正确识别) 2、上电开机后插,报错如下,只能检测到USB2.0--480M,识别不到USB3.0-5Gbps,重新插拔也不行 Apr 4 21:30:00 orangepi5plus kernel: [ 423.575966] usb 5-1: reset high-speed…...
KubeVirt虚拟化管理架构
目录 一. KubeVirt简介 1.1 KubeVirt的价值 1.2 KubeVirt架构 1.3 KubeVirt组件 1.4 KubeVirt流程管理 KubeVirt实战 2.1 Kubevirt安装 2.1.1节点规划 2.1.2 环境准备 2.1.3 安装KubeVirt 2.1.4 安装CDI 2.1.5 安装virtctl命令工具 2.1.6 生成官方虚拟机 2.1.7 进…...
游戏引擎学习第202天
调试器:启用“跳转到定义/声明”功能 开始了一个完整游戏的开发过程,并分享了一些实用技巧。首先,讨论了如何在 Visual Studio 中使用“跳转到定义”和“跳转到声明”功能,但当前的项目并未启用这些功能,因为缺少浏览…...
sqlalchemy查询json
第一种:字段op是json格式: {"uid": "cxb123456789","role": 2,"op_start_time": 1743513707504,"op_end_time": 1743513707504,"op_start_id": "op_001","op_end_id"…...
2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、握手问题-(解析)-简单组合问题(别人叫她 鸽巢定理)😇,感觉叫高级了…...
Linux系统之wc命令的基本使用
Linux系统之wc命令的基本使用 一、命令简介二、基本语法格式三、核心功能选项四、典型使用案例4.1 创建示例文件4.2 基础统计操作4.3 组合选项使用4.4 管道流处理 五、高级应用技巧4.1 递归统计代码行数4.2 统计CSV文件数据量4.3 监控日志增长速率4.4 字符与字节差异说明 七、命…...
SQL Server 2022 脏读问题排查与思考
总结sqlserver的使用,总是会回想起很多开发过程当中加班努(拼)力(命)的场景,今天,就把之前一个由于数据库脏读到这的OA系统员工请假流程状态不一致问题和解决思路分享一下。 业务场景描述 由于…...
Linux系统时间
1. Linux系统时间 jiffies是linux内核中的一个全局变量,用来记录以内核的节拍时间为单位时间长度的一个数值。 jiffies变量开机时有一个基准值,然后内核每过一个节拍时间jiffies就会加1。 一个时间节拍的时间取决于操作系统的配置,Linux系统一…...