本书带领读者从原理图设计、布局布线一直到元件库的设计,全面贯通。从Arduino到BB-Black,从简单的原理图设计到复杂的核心板设计,循序渐进。
让没有任何基础的读者,基于开源硬件平台快速掌握PCB设计。
带领读者从原理图设计、布局布线一直到元件库的设计,全面贯通。
从Arduino到BB-Black,从简单的原理图设计到复杂的核心板设计,循序渐进。
前 言本书写作于2013年,那时制造者运动已经从修补匠的小圈子发展成充满激情的百万人社区。业余爱好者已经变成创业者,而创业者变成了大规模制造商。3D打印机价格下降到普通消费者可以接受的范围,而打印机的性能已经提升到能够制造高精度飞机部件和医疗设备的程度。因此,许多经济学家和新闻记者将制造者运动的兴起视为新工业革命的开端。
Arduino(开放硬件)平台是这场运动的最佳代表。2005年发布了第一个Arduino电路板设计——Arduino USB,这样学生和爱好者们就获得了Atmel微控制器的低成本编程工具。从那以后,市场上销售出数十万块Arduino电路板,而Arduino系列已经扩展为拥有数量庞大的电路板、软件包、开发套件和附件的大家族。Arduino电路板已经用于开发机器人、乐器、游戏平台甚至是无人飞机。这种电路板变得如此流行,以至于很多由业余爱好者转型的创业者使用它来构建新发明的原型机。
但是制造者们还需要更多的东西:更高的性能、更好的经济性和更灵活的可定制性。形势的发展意味着需要设计新的电路,这是一种需要专门知识和软件的任务。更专业的设计工具超出了普通制造者可承受的价格范围,但是EAGLE除外。从1988年发布以来,EAGLE在性能变得更加稳定和可靠的同时,价格仍然维持在缺乏现金的学生也能承受的范围内。每一次新版本的发布,EAGLE都会赢得大量的追随者。EAGLE之于软件就如同Arduino之于硬件,这是个再合适不过的类比。也难怪所有的开源Arduino设计都是用EAGLE的格式发布的。
在写作本书的时候,我的目标是让硬件方面的学习者了解如何充分发挥EAGLE的功能。这需要对电路理论有基本理解,包括欧姆定律和基尔霍夫定律,除此以外就没什么了。这里不会出现晶体管分析或微分方程。相反,我的目标是使读者动手探索EAGLE,为设计实用电路打下基础,能够为市场注入新的活力,延续制造者运动的非凡势头。
本书结构本书通过一系列电路设计项目来介绍EAGLE,从反相放大器开始,直至一个六层板的计算机主板。随着电路的逐渐复杂,本书会介绍越来越多的EAGLE高级功能,并把如何自动进行重复性工作介绍给大家。本书也包括帮助读者理解电路板基本原理的大量内容,以及实例电路背后的理论知识。
本书第1~3章介绍EAGLE和电路板设计。这部分的作用是使读者熟悉EAGLE的基本功能和全书使用的术语。第3章带领读者轻松地完成一个很简单的完整电路设计。
第4~7章的内容是设计一个实用的电路板:开放硬件(Arduino)Femtoduino。这些章用手把手的方式讲授电路板设计的四个基本步骤:绘制电路原理图、电路元件布局、电路布线以及生成Gerber/Excellon文件。
第8~13章讨论与EAGLE电路板设计有关的混合主题。包括电路仿真、创建定制元件的过程和设计自动化中的某些首要课题。设计自动化是EAGLE的最强大功能之一,也是最容易忽略的方面之一。因此,我建议读者熟练掌握编辑器命令和用户语言编程。
第14章和第15章介绍本书的高级设计实例:BeagleBone Black。这个名字听上去有点呆,但是这个电路可是一点都不呆,该电路板具有六层板、数以百计的元件和上千根走线。介绍这一实例时,也会讨论EAGLE的高级功能和利用设计自动化的方法。
获取示例文件为了对文字内容进行补充,本书提供所有的电路设计、程序和支持文件的压缩包,并命名为eagle-book.zip。这个文件可以免费下载。如果读者希望继续这方面讨论,建议读者对现实中EAGLE设计的理论探讨进行对比。此外,读者可以访问本书的彩图。
致 谢首先,我想感谢北美Pearson的Bernard Goodwin在本书写作期间对我的支持。感谢他的睿智和灵活处理,使本书写作过程如期进展顺利。
我想对Apostrophe 编辑服务公司的San Dee Phillips表达我的诚挚谢意,他为我指出这么多的格式、拼写和语法错误。我还想为Betsy Gratner的开朗以及为本书所做的策划、Gloria Schurick在编辑合成中付出的艰苦努力、Kathy Ruiz目光锐利的校对和Laura Robbins对本书图片的管理表示感谢。
最后,我想向《Nuts & Volts Magazine》的Bryan Bergeron、《Sams Teach Yourself Arduino Programming in 24 Hours》的作者Richard Blum以及《Arduino for Beginners》的作者John Baichtal表达我的敬意。在本书尚未完工之时,他们认真地阅读了本书内容,并提出很多有益的见解。他们的评论拉近了本书与读者的距离,并拓展了很多话题。
Matt Scarpino ,具有电子工程硕士学位(MSEE),是高级认证互联设计师(CID+)。他有12年软件和硬件设计经验,包括信号处理和智能手机通信方面的电路设计。现在从事高性能嵌入式系统的软件开发工作。他的著作有《OpenCL in Action》、《Automatic Sketchup》、《Programming the Cell Processor》和《SWT/JFace in Action》。
译者序
前言
致谢
第一部分 基本介绍
第1章 EAGLE概述 2
1.1 快速漫游EAGLE 3
1.1.1 元件库 3
1.1.2 原理图编辑器 3
1.1.3 电路板编辑器 4
1.1.4 电路元件编辑器 5
1.1.5 自动布线器 5
1.1.6 CAM处理器 6
1.2 获取EAGLE 6
1.3 使用许可 7
1.4 本书的组织 8
1.5 更多信息 9
1.5.1 element14——www.element14.com 9
1.5.2 SparkFun——www.sparkfun.com 9
1.5.3 YouTube——www.youtube.
com 10
1.5.4 CadSoft——www.cadsoftusa.com/www.cadsoft.de 10
1.6 本章小结 10
第2章 电路板和EAGLE设计概要 11
2.1 印制电路板剖析 11
2.1.1 电子元件 12
2.1.2 单面板 13
2.1.3 双面板 15
2.1.4 多层板 15
2.1.5 Gerb和Excellon文件 17
2.2 EAGLE电路设计概述 17
2.2.1 创建工程 17
2.2.2 创建原理图设计 18
2.2.3 设计电路板 20
2.2.4 布线 21
2.2.5 生成设计文件 21
2.3 本章小结 23
第3章 简单电路设计 24
3.1 反相放大器 24
3.2 初始步骤 25
3.2.1 安装本书的EAGLE元件库 25
3.2.2 创建新工程和原理图 26
3.3 反相放大器原理图 27
3.3.1 垂直工具栏里的工具 28
3.3.2 为设计添加元件 29
3.3.3 EAGLE术语 30
3.3.4 对符号进行连接 31
3.4 电路板布局 33
3.4.1 创建电路板设计 33
3.4.2 栅格 34
3.4.3 电路板的尺寸和原点 35
3.4.4 电路板布局 35
3.5 布线 36
3.5.1 自动布线器 36
3.5.2 手动布线 37
3.6 CAM处理器 38
3.7 本章小结 40
第二部分 设计开源硬件平台Femtoduino
第4章 Femtoduino原理图设计 44
4.1 初始步骤 45
4.1.1 创建新工程和原理图 45
4.1.2 配置栅格 46
4.2 复位开关 47
4.3 电压调整 49
4.4 ATmega328P 微处理器 50
4.4.1 ATmega328P的引脚 51
4.4.2 绘制电路原理图——ATmega328p 52
4.5 连接插座 54
4.5.1 面包板插座 54
4.5.2 AVR在线串行编程插座 55
4.6 导线类 55
4.7 电气规则检查 56
4.7.1 ERC警告 56
4.7.2 ERC错误 57
4.8 生成电路板设计 57
4.9 原理图框架 57
4.10 属性和变量集合 58
4.10.1 全局变量 58
4.10.2 特殊元件属性 59
4.10.3 变量集合 59
4.11 本章小结 60
第5章 布局和设计规则 61
5.1 层 61
5.1.1 显示命令 61
5.1.2 镜像命令 63
5.2 电路板布局 64
5.2.1 准备电路板 64
5.2.2 地平面和多边形 65
5.2.3 在电路板设计图中放置器件 66
5.3 设计规则检查 68
5.3.1 File表单 69
5.3.2 Layers表单 70
5.3.3 Clearance表单 70
5.3.4 Distance表单 71
5.3.5 Sizes表单 71
5.3.6 Restring表单 72
5.3.7 Shapes表单 73
5.3.8 Supply表单 73
5.3.9 Masks表单 74
5.3.10 Misc表单 75
5.4 本章小结 75
第6章 布线 77
6.1 布线设计概述 77
6.2 手动布线 78
6.2.1 一个简单实例 79
6.2.2 连接微控制器到插座 80
6.2.3 创建过孔 80
6.3 跟随布线 81
6.4 自动布线器 82
6.4.1 常规配置 83
6.4.2 高级设置选项 83
6.4.3 自动布线器的操作 85
6.5 家庭PCB制造 85
6.5.1 概述 86
6.5.2 碳粉热转印方法 87
6.6 本章小结 89
第7章 生成和提交输出文件 90
7.1 工作和CAM处理器 90
7.1.1 CAM处理器 90
7.1.2 femtoduino.cam工作文件 91
7.1.3 载入工作文件 92
7.1.4 执行工作 93
7.1.5 创建新工作——焊膏模板 93
7.2 查看Gerber文件 94
7.3 钻孔文件 95
7.3.1 Excellon文件 96
7.3.2 EAGLE工具信息文件 97
7.3.3 钻头架 98
7.4 提交设计文件 98
7.4.1 OSH Park 99
7.4.2 Advanced Circuits 100
7.4.3 Sunstone 102
7.4.4 Eurocircuits 104
7.4.5 Seeed Studio 105
7.5 本章小结 107
第三部分 高级功能
第8章 创建元件库和新元件 110
8.1 创建元件库 110
8.1.1 EAGLE术语 110
8.1.2 创建元件库 111
8.2 创建SIMPLE-TQFP 111
8.2.1 创建SIMPLE符号 111
8.2.2 创建TQFP 16封装 114
8.2.3 创建SIMPLE-TQFP器件 115
8.3 创建VACUUM-TH 116
8.3.1 创建VACUUM符号 117
8.3.2 创建TH9封装 118
8.3.3 创建VACUUM-TH器件 118
8.4 创建TW9920 119
8.4.1 设计TW9920符号 120
8.4.2 创建VFBGA100L-8×8封装 121
8.4.3 创建TW9920器件 124
8.5 本章小结 124
第9章 LTspice电路仿真 126
9.1 LTspice介绍 126
9.1.1 SPICE和LTspice 126
9.1.2 LTspice的获取 127
9.1.3 仿真示例——反相放大器 127
9.2 原理图设计 128
9.2.1 添加元件 128
9.2.2 移动元件 130
9.2.3 创建连线 130
9.2.4 元件名称和数值 131
9.2.5 信号名称 132
9.3 电路仿真过程 133
9.3.1 设置仿真参数 133
9.3.2 执行仿真过程 134
9.3.3 配置仿真结果显示参数 135
9.4 与EAGLE交换设计 136
9.4.1 向EAGLE导入LTspice电路原理图 136
9.4.2 导出EAGLE电路原理图到LTspice 136
9.5 本章小结 137
第四部分 EAGLE设计自动化
第10章 编辑器命令 140
10.1 编辑器命令介绍 140
10.1.1 EAGLE命令的语法 140
10.1.2 命令的执行 141
10.1.3 通配符和简略形式 141
10.1.4 定义点 142
10.2 原理图编辑命令 142
10.2.1 use命令 143
10.2.2 add命令 143
10.2.3 name命令 144
10.2.4 value命令 144
10.2.5 attribute命令 145
10.2.6 smash命令 145
10.2.7 move命令 145
10.2.8 rotate命令 146
10.2.9 net命令 146
10.2.10 bus命令 147
10.2.11 label命令 148
10.2.12 frame命令 148
10.3 电路板设计命令 148
10.3.1 grid命令 149
10.3.2 layer命令 149
10.3.3 display命令 150
10.3.4 mirror命令 150
10.3.5 signal命令 150
10.3.6 ratsnest命令 151
10.3.7 route命令 151
10.3.8 ripup命令 152
10.3.9 via命令 152
10.3.10 auto命令 153
10.4 元件库接口命令 153
10.4.1 open命令 153
10.4.2 edit命令 154
10.4.3 write命令 154
10.4.4 wire命令 154
10.4.5 arc命令 155
10.4.6 rect命令 155
10.4.7 circle命令 156
10.4.8 pin命令 156
10.4.9 pad命令 157
10.4.10 smd命令 158
10.4.11 prefix命令 159
10.4.12 package命令 159
10.4.13 technology命令 159
10.4.14 connect命令 160
10.5 assign、change和set命令 161
10.5.1 assign命令 161
10.5.2 change命令 162
10.5.3 set命令 163
10.6 配置脚本 164
10.7 本章小结 165
第11章 用户语言介绍 167
11.1 UL概述 167
11.1.1 ULP的执行 168
11.1.2 用户语言程序和C语言程序 168
11.2 简单数据类型和函数 169
11.2.1 数组 169
11.2.2 字符串 170
11.3 内建属性 171
11.3.1 内建常量 171
11.3.2 内建变量 172
11.3.3 内建函数 173
11.4 控制结构 174
11.4.1 if else语句 174
11.4.2 switch case语句 175
11.4.3 while和do while循环 175
11.4.4 for循环语句 176
11.5 exit语句 176
11.6 本章小结 177
第12章 用户语言检查设计 178
12.1 UL专用数据类型 178
12.1.1 成员 178
12.1.2 循环成员 179
12.1.3 顶层结构及其执行语句 179
12.2 原理图设计 180
12.2.1 UL_SCHEMATIC的数据成员 181
12.2.2 生成元件清单:元件和属性 182
12.2.3 导线和导线类 187
12.2.4 页面和框架 191
12.2.5 变量 192
12.3 电路板设计 193
12.3.1 电路板设计元件 194
12.3.2 层和多边形 196
12.3.3 信号和接触点 197
12.3.4 过孔和通孔 201
12.4 本章小结 203
第13章 创建对话框和菜单项 204
13.1 预定义对话框 204
13.1.1 消息框 204
13.1.2 目录对话框 207
13.1.3 打开文件和保存文件对话框 208
13.2 定制对话框和窗体部件 209
13.2.1 创建新的对话框 209
13.2.2 标签和文本视图部件 210
13.2.3 按钮 212
13.2.4 编辑部件 213
13.2.5 列表部件 215
13.2.6 勾选框和数字设定框 216
13.3 对话框布局 217
13.3.1 水平/垂直排列 218
13.3.2 栅格布局和表格 219
13.4 menu命令 220
13.5 本章小结 221
第五部分 BeagleBone Black迷你主板
第14章 BeagleBone Black原理图设计 224
14.1 BeagleBone Black概述 225
14.2 高级EAGLE原理图设计 226
14.2.1 页面 226
14.2.2 门电路和调用工具 227
14.2.3 总线 228
14.3 AM3359存储器/JTAG连接 228
14.4 AM3359 I/O连接 231
14.4.1 模数转换 232
14.4.2 I2C通信 233
14.4.3 SPI通信 233
14.5 系统存储器 234
14.6 电源管理 234
14.7 以太网和通用串行总线 237
14.7.1 以太网 237
14.7.2 USB 237
14.8 图形显示 239
14.8.1 HDCP加密 239
14.8.2 转换最小化差分信号 240
14.9 本章小结 240
第15章 BeagleBone Black电路板设计 241
15.1 配置叠层 241
15.1.1 地平面和电源平面 242
15.1.2 四层叠层 242
15.1.3 BBB的叠层 242
15.1.4 在EAGLE中配置BBB的叠层 243
15.2 球栅阵列的创建和布线 244
15.2.1 生成BGA封装 245
15.2.2 为BGA焊盘布设信号线 246
15.3 走线长度和蜿蜒布线 248
15.3.1 走线长度的获取 248
15.3.2 延展走线的长度 249
15.3.3 差分对布线 249
15.4 BBB电路板设计 250
15.4.1 设计规则 251
15.4.2 AM3359的信号布线 251
15.5 本章小结 253
附录A EAGLE元件库文件 255
附录B Gerber文件格式 274