Altium Designer中的电子产品开发概述

Old Content - visit altium.com/documentation

每个工程师都 知道,开发电子产品是一个多步骤和高度细节化的过程。从粗略的创意到工作板完成并将其放入外壳中,这个过程中有许多任务要完成,也会承受很大的时间和成本 压力。除此之外,工程师还必须与科技的发展保持同步。只有在设计中使用最合适的技术,才能保持竞争力并为公司的成功做出贡献。

Altium Designer为硬件工程师、嵌入式软件开发师和经验丰富的FPGA设计师提供了一个真正的机会,在FPGA中开发嵌入式系统设计。这篇文章讨论了如何 开展这一过程。

一站式电子产品设计环境

一 家医学研究公司最近聘请我去为血液处理机设计一个控制器模块。实现一个控制器模块的要求并不高——一个简单的键盘和一个液晶(LCD)触摸屏来实现输入输 出(I/O),一个合理的处理器来实现操作指令和机器响应处理,加上一个CAN通信接口,这就是所有的要求了。而我面临的挑战是,他们希望该控制器模块支 持现有的一系列血液处理机,而且这个设计也要够灵活,即只需要进行固件更新就能迎合他们研究中的新技术。

他们还有最后一个要求——像我多数的客户一样,他们昨天就需要这个处理器了!他们想要在两个月内就得到一个工作样机,以使血液处理机开 发团队走上正轨。然后,我再根据他们的进展,同步更新并完成控制器。

这 些要求,加上允许的产品成本,让我想到了使用基于FPGA的嵌入式系统来设计控制器。通过在一个FPGA内嵌入处理器、液晶(LCD)触摸屏控制器和 CAN通信系统,我能够将设计主体控制在一个可变范围内,最大限度地提高物理PCB板的弹性和使用寿命,同时仍保证在截止期限内完成。理论上这样听起来很 棒。唯一的障碍是,我没有在FPGA中设计嵌入式系统的经验。

因为我已经使用了Altium的板级系统来设计硬件,并且我听说在Altium Designer系统中,即使不是HDL编码和验证方面的专家,也可以在FPGA内设计嵌入式系统,我就访问了它们的网站来更好地研究一下这个选题。

随 着对Altium Designer FPGA功能的进一步探索,我发现Altium名为NanoBoard 2的FPGA开发板在板上包括了一个液晶触摸屏和一个CAN接口。这也就意味着,我可能能够在这个开发平台上实现大多数的控制器模块——在设计时间如此紧 张的情况下这绝对是一个巨大的优势。考虑到所有因素,这个解决方案的整体风险最低。我决定:采用它!

很幸运,当时刚好有一个公开的 Altium培训课程,可以快速提高在FPGA中设计嵌入式系统的能力,所以我将它算在了项目成本内并预定了一个席位。一通快速的电话加上信用卡扩展了我 的Altium Designer许可证,使它包含了嵌入式FPGA设计能力,我的新NanoBoard也在来的路上了。是时候将脑中的系统设计付诸实践,并在 Altium Designer环境中进行粗略加工了。

多项目

主要文章: 项目管理

我的控制器有三个不同的元素——电路板,包含处理器和多数硬件的FPGA设计,运行在该处理器上的嵌入式应用程序。外壳是项目规格指定 的,包括了外形尺寸和接口位置的详细信息。

在Altium Designer中创建的每个设计都有它自己的项目,项目种类取决于执行情况。所以我为布局约束(layout-bound)的原理图创造了一个PCB项 目,为芯片约束的原理图/HDL设计创造了一个FPGA项目,为应用软件创造了一个嵌入式项目。然后,我将它们都保存在一个设计工作区内,这样我就能看到 我所有的设计文档,并且在不同项目上同时工作。

我的重点是电路板,因为它要花最长的时间来准备。我知道我有足够的时间在FPGA内完成硬件,并且可以在向电路板制造厂发送CAM文件 后完成嵌入式代码的编写。如果一切都按计划进行,我将在电路板装配结束时完成FPGA设计的放置与布线。

所有包含在项目中的设计文档都必须通过公司的版本控制系统访问。Altium Designer使这变得十分简单。存储管理器面板不仅显示了每个文档,还显示了它们的状态。我还可以通过物理差异工具检入检出文档,甚至还能检查PCB 布局的改变。

原理图设计

主 要文章: 原理图编辑要点

在 记事本上,我已为我的板设计勾勒了框图。FPGA元件(FPGA和配置只读存储器(ROM))将会连接到定时器、键盘和液晶显示屏(LCD)。如果包含了 一个简单的JTAG接口,我将能够把产品板直接挂接到NanoBoard上,并继续在我的实时控制器上进行开发和测试——我认为这绝对值回了一个十针连接 器的成本,我也可以把这个接口用于产品编程。另一个图块用于表示支持其运行的电源。

这 个框图成为了顶层图表的分层设计

Altium Designer提供了程序框图和项目层次之间的直观联系。我的顶层原理图纸和我勾勒的草图看起来几乎一样,每个块都是一个“图表符”,指向一个单独的图 纸或一组图纸。信号通过电线或总线在图表符之间传递,然后通过图表符向下传递到子图纸的端口处。

随着设计的进行我可以在项目中创建更多的细节。同步功能让我能够更轻松地保持设计层次的完整和准确。

元器件库

主要文章: 元 器件、模型和元器件库概念从 公司数据库中直接使用元器件

接下来,我用自己准备的元器件库来创建每个子图纸。我花了职业生涯中相当大的部分来开发和维护元器件库,现在有了Altium Designer的集成元器件库,我能在一开始就将信号完整性、仿真和封装模型与元器件符号组合在一起。

Altium 的库开发中心给了我一个良好的开始,在安装时就提供了6万多个元器件(多数与模型集成)。然而,这只是开始而已。随着时间的推移,我已经开发了我自己的元 器件库,用于反映我的具体工作要求,每个元件符号匹配到合适的元件模型,这些元件都由我的供应商提供。

事 实上,我已经在Altium Designer之外开发了一个复杂的元器件控制系统。这已经成为了一个大型的元器件数据库,每个元器件系列都拥有一个独立的表格,每个表格中都有一组字 段。例如,陶瓷电容器(ceramic capacitors)的表格包括了元件号、制造商、电容值和公差值、额定电压、封装和价格。Altium Designer允许我将集成元器件库中的元器件直接链接到外部数据库表格,并且能够直接准确地监控元器件库或设计文件的更新。数据库信息能够传递到我电 路板原型的材料清单中。

我搜索了Altium Designer库来寻找设计中需要而我的数据库中没有的元器件,然后将找到的结果添加到元器件库面板中。少量的元器件必须从头开始创建,其中大部分都是 很基础的,在Altium Designer的元器件库编辑器中只需几分钟就能完成。

连通性

主 要文章: 连通性和多图表设计

在 这里,我不会花时间去描述引脚之间的连接细节,Altium Designer提供了网络标识符和控件,允许我用所能想到的所有方法来连接我的设计。我很喜欢层次设计方法,只需要在图表上使用合适的网络标识符并在项 目中设定网络范围即可。其他工具可以帮我安排和连接原理图,包括用于元件放置及连接的捕捉栅格。

在Altium Designer中编译项目时,设计连接才会变得活跃。图纸层次结构将会出现在导航器面板中,并显示出从设计中检测到的元器件和网络/总线,以及所有它们 相关的元素。所以,工程师无需再仔细检查网表来审查设计连通性。可以在原理图层级内直接跳过每个网络元素。但是,至此我还没有完全使用这些导航工具。稍 后,在我的电路板完成与原理图信息的同步时,我会继续回到这块,使用它们提供的交叉探测工具。

使用FPGA的另一个优势是我可以从电路板的角度进行引脚分配来简化布线。在Altium Designer的PCB编辑器中,能够手动或自动化引脚交换,然后将引脚分配传递回FPGA设计中,这意味着我能够从原有的电路板项目引脚分配开始,并 在之后解决这个问题。

验证设计

主要文章: 在Altium Designer中验证设计

在Altium Designer中编译项目的另一个结果是电气规则检查。这是高度可配置的,可以指定哪些情形需要标记,以及其重要程度。

即 使时间很紧迫,我仍坚持在向PCB发送信息前进行确保无错的ERC检查。我仔细地在每个未使用的引脚上都设置了“No-ERC”指令,因此在编译时可以检 查所有无意间未连接的输入引脚。在编译上出现的消息不仅仅是描述性的,它们还是交互式的。双击特定消息将会在一个浮动的面板上以链接形式列出相关的错误对 象,可以由此跳转到工作区,从而快速发现并解决每个错误。重新编译项目将显示之前的错误是否已改正,是否又出现了新的错误。

在运行准确无误的ERC之后,我仿真了设计中的定时器部分。我通过瞬态分析运行了两个信号(触发输入和时钟输出)来确保所需的信号将会 如预期般生成。

仿 真结果将会独立显示或是在同一张图上叠加。

当然,仿真需要每个相关的元器件都有一个适当映射到符号引脚中的有效SPICE模型。这可以在元器件库或原理图中设计时实现。信号完整 性测试并不是那么严格(拥有一个形式确定的协议),并且允许在没有特定模型表示时用通用模型来替代。

PCB 准备

主 要文章: 为设计转移准备电路板

满意于设计图后,我就将重点转移到了电路板的布局上。然而,在退出原理图编辑之前,我必须确保原理图设计会把所有必要的信息发送给 PCB设计。

我 已经提到了,我为这个设计使用了一个集成库。这也就意味着,在添加到原理图设计之前,我使用的原理图部件已经与PCB封装链接在了一起。在编译包括了所有 源原理图库文件和PCB模型的Library Package时会获得一个集成元器件库。如果在引脚、焊盘和模型名中存在任何的不匹配,在编译时消息面板中将会有错误标记显示。

所以在我创建一个空白PCB文件之前,PCB和原理图之间大部分的关联都已经完成了。如果没有使用集成元器件库,我就必须特别注意每个 在原理图设计中涉及到的封装对同步器是否都是有效的。任何符号引脚及封装焊盘之间的不匹配都会在板更新时标记出来。

我利用模板向导生成了一个PCB文件,根据我的要求更新其轮廓,并设置了4个信号层和2个内电层。一旦裸板被保存并添加至PCB项目, 我就能利用原理图中的元器件、网络和指令对其进行更新。

板 层堆栈管理显示了电路板的截面,可以在此对话框内进行板层的添加或重定义。

将设计传递到PCB编辑器

我的板上还没有任何封装,所以从原理图编辑器转移到PCB编辑器是很简单的。我选择了“更新”指令来生成一系列的工程变更指令 (ECO),将所有封装、元件类、网络、网类和外壳定义添加到裸板中。

因为我的元器件库面板中包含了相同的集成元器件库,我能用其来填充原理图,又因为每个使用的原理图符号都有一个有效的封装来实现焊盘与 引脚的匹配,我相信没什么可担心的,肯定能够继续操作。尽管如此,我还是理所当然地在变更执行前进行了检查,以验证每个更改建议。

更 新电路板时,我保持了按照原理图对元件进行分组的默认设置,封装都沿着电路板排放在各自的“room”之内。虽然基于原理图的room不是在每个板上都有 意义,但是这种情况越来越少了,因为我开始在脑子里通过PCB来设计原理图,用与电路板上相同的排列方式来进行原理图元件分组。

每个设计中的电气焊盘都通过连接线连接到了至少一个网络。这种“From–Tos”飞线将会在之后的工作(元器件放置)中成为我最主要 的帮助。

设计规则

主要文章: 设计规则

一 般,在电路板外框内拖动电阻之前,我就建立了设计规则(至少是初步设置)。事实上,许多规则都来自于原理图本身。例如,在原理图中布线时,我想要为电源和 接地网络指定特定的宽度,所以我在每个网络上都放置了一个PCB指令,并在那里指定宽度规则。当我去设置剩下的PCB设计规则时,能够看见定义的原理图驱 动规则已经包括在内了。它们甚至包括了唯一的标识符,以便我在PCB中做出任何修改并将更改传递回原理图。

在起草一系列完整的设计规则上花 时间总是有意义的。当违反规则的错误出现时不仅在线DRC会立马出现提示,实际上Altium Designer还将在第一时间阻止这种违规的错误。所以特定的设计规则将会在布局和布线时作为提醒和指南。自动布线也将会遵照创建的设计规则,知道在哪 里和怎样进行布线。

我已经开发了一系列的规则,并一直在类似的项目中使用,例如首选的信号和电源网络走线宽度,以及元件间的最小间距规则。 我能够导入在类似设计中创建的规则,而不是从头开始创建设计规则。我学到的另一个技巧是,在一个空白板内设置好所有的设计规则,并保存一个只读副本,然后 在模板项目中引用。通过这样的模板创建新的PCB项目不仅提供了所有定制的项目设置,还提供了包含预设设计规则的板文件。

我花了一些时间来审查设计规则,创建了一些类来简化操作,类似指定所有安装孔周围最小间距等。

设计过程在原理图设计和PCB之间是高度重复的,并且我的一系列设计规则总能在整个过程中继续开发。然而,我既利用了布局之前精心准备 一系列设计规则的优点,也受到了匆匆绕过这一步的影响。

布局

我把四个按钮(简单的键盘)和触摸屏面向电路板底部放置。FPGA到了板的底部后,几乎没有任何空间来放置剩下的70个元器件。这肯定 是具有挑战性的,但也没什么与众不同。想要布局,但没空间,是电路板设计中常见的问题。

我 选择不为这个电路板使用任何自动放置工具,只依靠最基本的:网格线、连接线和对齐工具。我拖着键盘按钮进行放置,将它们粗略放置在我希望的位置,再使用对 齐工具来均匀地放置它们。接着,我开始单独地排放元器件,使用飞线作为我的主要指导。在放置剩下的封装时,我像操纵木偶的人一般,仔细看着这些线,我知道 布局的质量将会决定布线的质量

配 合连接飞线将会实现更好的布局,从而使布线变得更简单。

这 个过程因我之前解释过的原因而简化了,即自动生成一个room来包含每个原理图图纸的元器件。我设计原理图时,脑海里就有板上空间,尝试着在同一图纸上将 元器件保持彼此紧靠。用这种方法开始板处理过程,一旦封装传递到了板上,我就不必如整理拼图一般了。相反地,我可以把我的大部分时间花在微调上。

预布线工作

因为这是一个中等成本的产品且可靠性至关重要,所以我决定使用两个内电层——一个用于电源,另一个用于接地。这是一个面向大量消费者的 产品,所以我不能为多层板增加额外的成本,这也将会影响我对于FPGA封装的选择。
没 有内电层,我将不得不做许多额外的预布线工作,在板周围铺设轨道来使拥挤区域内的节点更容易连接到电源和接地网络。事实证明,电路板布线之前,唯一的任务 就是放置“禁止布线”区域。具体来说,我不想有信号轨道或过孔在FPGA下运行。这需要在FPGA下方预留多边形区域,之后将缝合过孔网格至接地层。这为 FPGA提供了一个额外的接地电流返回路径,减少了RF辐射。

分割电源平面

主要文章: 内 部电源和分割平面

虽然我已为我的电源节点分配了一整个内电层,但不是所有的网络都是等电压的。PCB编辑器允许将内电层细分为不同的网络,来共享同一物 理层。

内 电层可为不同的电压网实现细分。

首先,我为内电层指定了一个默认的5V网络。接着,我运行了分割内电层选项,将所有3.3V节点周围的区域分成一块,再将所有2.5V 节点周围的区域分成一块。

优化FPGA引脚

主要文章: 已 连接的FPGA-PCB项目更改 - 在PCB文件内交换管脚

我想我现在已经大大超前了,不是吗?在我能够对电路板进行布线之前,我需要确保我的FPGA设计中所有I/O都已完成,然后才能优化 FPGA引脚分配来优化布线。 

在我浏览了各种内核软件内的资源使用情况文件后,我决定采用256引脚BGA封装的400K gate Xilinx Spartan-3。这是此系列封装可用的三个器件里中等大小的器件,给了我可根据需求缩小和扩大的空间。

您 将会在这篇文章的其他地方发现我关于此部分的想法,但毋庸置疑,我现在已适应了FPGA上的嵌入式系统设计——我的工程咨询的另一个外加部分!因为我是同 时在开发PCB和FPGA项目,并使用了内置的功能来实现同步,我不必担心“FPGA到PCB(FPGA-to-PCB)”设计接口中的无数细节。

FPGA 项目的完成已达到了基本满意的程度,所以在FPGA工作区映射(FPGA Workspace map)内做完最后的同步检查后,我运行了PCB编辑器中的自动引脚交换功能。通过手动交换工具实现一些润色后,我很开心,并准备开始对板进行布线。因为 我的FPGA内IO数目相对较低,我坚信我能利用这个引脚分配实现FPGA设计的布局与布线。

布线

主要文章: PCB布线拓扑自动布线要点

我 没有选择对整个板进行自动布线,而采用了两个步骤。首先,我在只启动扇出通道的情况下运行了布线器。这延长了我FPGA活动焊盘上的导线。一旦扇出结果看 起来不错,我就锁定了所有的预布线与过孔,然后再次运行了布线器,这一回所有的通道都开启了。在运行自动布线器后仍需做一些清理的工作,虽然功能强大的重 布线工具通过删除循环、拉直连接和清理焊盘入口已提供了很多的帮助。幸运的是,Altium Designer的推挤布线功能帮助我对纠结的区域实现了重新布线,同时防止了违反设计规则。

设计规则检查

主要文章: 设计规则检查

启 用在线设计规则检查后,我从一开始就监控着违反设计规则的错误。另外,所有的设计规则都在自动布线器范围内,所以此时我预料到不会出现很多错误。然而,我 已做了一些手动放置和布线后的清理工作,所以我知道可能会有一些错误产生。在任何情况下,我早已学会了在生成最终工艺图之前不跳过任何检查设计错误的步 骤。

PCB编辑器的面板按类别列出了设计规则和错误,例如,未布线的网络将被列为断路,而网络之间的连接将被列为短路。通过浏览违反设计规 则的错误列表,我能够放大每一个错误,发现是什么原因导致了错误,并决定怎样解决错误。任何错误一旦解决就会从列表中消失。

CAM 输出

主要文章: 设计到制造

一 旦我的布局通过了设计规则检查,我就能够为制造和装配生成工艺图了。我为4个信号层和内电层,以及3个机械层都设置输出了CAM文件。第4个机械层包括了 基本电路板尺寸,以及我公司的品牌标识,所以我想与所有其他的CAM文件合并。我也需要设置一个物料清单(BOM)报告,一个装配图以及一个用于电路板装 配的Pick-and-Place文件。

我并没有单独地配置每个输出,而是将一个输出作业文件(Output Job)添加到了我的设计中,此文件分析了我的设计并提供了下拉列表来显示项目中的PCB和原理图。我需要的每个输出作业都可以在这里根据特定的设置和精 度进行定义和配置。输出作业文件的最大优点是它提供了整体(类似打印文件和CAM文件)的一键式生成。另一方面,仍可以选择创建单独的或选定的输出作业。

所 有的CAM输出都保存在我的硬盘驱动器中,在那里我可以制作副本并将其通过邮件发送给电路板加工厂。然而,在这样做之前,处于职业习惯我又亲自检查了一 遍。Altium Designer包括了一个完整的CAM编辑器来查看和操作CAM数据,有了它,我仔细审查了电路板加工厂所能看到的每一层信息。

一旦所有文件检查完成,我就将它们通过电子邮件发送到电路板加工厂。

制造

我已经和同一个电路板加工厂合作五年了,我清楚地知道他们要求的四点:周围标有电路板尺寸的每个信号层的ODB++文件集;钻孔图与符 号图例;NC Drill钻孔文件和一通电话。

然 而,在这种情况下,电路板加工厂的联系人给我打了电话,发现我的设计中存在未覆盖的过孔。我设计的是将所有过孔都覆盖。电路板加工厂使用了一种液体光成象 阻焊剂,这实际上会产生半通孔,意味着铜线虽然被覆盖但过孔仍然开放。实际上,这正是我的首选解决方案,因为这样既保护了过孔免于焊桥短路,还避免了在全 覆盖孔下形成溃烂的酸坑。我惊讶地发现我在一组过孔上未检查覆盖选项。联系人征得我的同意后做出了修改,我也更新了我的设计以使其和产品同步。

FPGA设计

主 要文章:软设计基于处理器的FPGA设计

在 板制作的过程中,我完成了FPGA设计。将此拖延至现在是有点棘手,因为封装贴花已在镇上进行着蚀刻——有点像在设计房子顶部之前浇筑基础。然而,我选择 的Xilinx系列提供了一系列适用于同一封装的FPGA,知道了此次评估需要的门的大致数量,我预先选择了一个焊盘图形,可容纳包含高达 1,000,000个门的部件,远远超过了我的需要。

针对软核微处理器,我选择了Altium Designer中包含的TSK52。我的8051编码技巧也能够在此实现应用,并且通过选择横臂Wishbone变体,之后如果需要进行一些重要的处 理,我能够轻松地将硬件和软件升级到32位TSK3000。同时,Wishbone互连结构使得对处理器及其外围设备实现接口连接变得十分简单。您将会爱 上这些为您服务的标准,不是吗!

为了完成FPGA设计,我差点自己陷入困境。我十分希望能在看起来超棒的NanoBoard上开始对其进行 测试。这个NanoBoard是一个FPGA开发板。显而易见,它的名称叫做NanoBoard就是因为这是一个效率很高的小型虚拟实验板。它安置了 FPGA(在一个可移动的子板上,使其独立于供应商),同时也包括了一大堆的可用I/O。它基本上包括了所有我需要的东西——一个触摸屏,一些按钮和一个 CAN接口。

所有我需要的核心风格元件都位于提供的元器件库中,所以我只需要提供设计思路并录入设计。最好的一点是——无需验证。在我之前少数的 FPGA设计中,我已经了解到基于HDL的FPGA设计需要花时间来掌握;而我现在没有时间了。
一旦设计完成,我就必须投入约束文件设计中,将我的网络映射至FPGA引脚,并且修改一下简单的测试代码来使其在微处理器上运行。

开发嵌入式软件

主 要文章: 教 程 – 软件平台搭建器入门软 件平台介绍

在浏览了软件内包含的一些设计实例之后,我基本上没花什么时间就创建了一个嵌入式系统外壳。这个提醒没什么新意,不过初学者可以尝试在 LCD上显示“Hello World”。我回到FPGA设计并且将一个逻辑分析仪挂接到了数据总线上,以防我打开开关时什么事都不发生。

谁会想到——动态设计

主 要文章: 测试与调试

在NanoBoard 中下载了几个实例设计之后,我开始有所理解,并开始欣赏Altium提出的“动态设计(LiveDesign)”概念。在这里,我的桌面上是一个“活动” 的手动设计开发环境,我可以在真正的硬件上实时运行真正的软件。唷,这比我使用大学教材的日子可好多了——我不仅可以在调试模式中单步执行代码,还可以修 改实际的硬件,重建设计并在几分钟内将其下载到空间里。人们并不总是欣赏它,但是产品开发周期中最大的部分并不是设计和编码,而是测试和调试,在这里,我 的面前有实现这些所需要的一切——用于连接的元器件,用于测试硬件的虚拟仪器,用于消除代码错误的调试器。

设 备视图将FPGA硬件和嵌入式应用程序一起带到了目标设备内。

我 浏览了一遍设计的搭建过程。当然,它仍缺少一些诸如CAN通信接口这样的模块,但是现在这并没有关系。解决了我的网络和约束文件命名小错误后,我就进入到 了FPGA部分和布线过程。我已安装了Xilinx ISE工具,当我意识到Altium Designer完全抽象化了Xilinx的映射、放置、布线和位文件生成阶段时,我十分开心。我只是单击了大的“搭建(Build)”按钮并在“输出 (Outputs)”面板中观察了过程。

一旦软件在NanoBoard上完成了对FPGA的编程,我就点击“重置”按钮——好了,液晶显示屏上已经出现了“Hello World”。不愧是硬件的快速开发!唯一遗憾的是周围没有人能够分享我的喜悦,所以我赏给了自己一块巧克力饼干。

将思绪切换回嵌入式代码,是时候构建原型了,使其能够满足血液处理机开发团队的需要。我也需要找出CAN系列通信标准并好好复习,这样 就能够用最简单的方法将提供的CAN核接通到硬件设计中。我发现之后还有漫长一周的工作,使我得在设计上花一个月的时间。

我拿起电话,并拨通了项目经理的号码,因为我有一个主意可以让他非常开心。他们可以买一个NanoBoard,我将会把位文件通过邮件 发送给他,来对FPGA进行编程,并且Xilinx软件将会帮助他们编程。他们将比原计划提前一个月就拿到工作硬件。

预装测试

当我的原型板到达后,我必须使自己从NanoBoard中脱身出来。我的家人们都抱怨很久看不到我,但是我向孩子们保证做出一个能让他 们在NanoBoard上玩的很酷的设计,这让孩子们很开心。

我的电路板加工厂有对产品进行检测的通用政策——无论是采用需要装配架的针床测试,还是采用速度较慢但是更经济的飞针测试。通过飞针测 试其短路和开路的情况,意味着我只需从视觉上对其进行检查,寻找有关外观的问题,如定位不美观的元器件标号。

装配

我把裸板带到我的实验室,在那里我有一些装配设备,并不完美但已足够将两个原型装配在一起。如果装配的是大批量的电路板,我会把它们发 送到拥有专门的装配厂。然而,我的两块板是使用老式方法装配的,一手拿烙铁,一手拿焊料线圈,外加一副10倍放大镜。

有些人可能认为我选择手工装配第一块板很奇怪,但这是我开发周期中的产品设计阶段。这样做使我能够决定任何元器件的加载顺序要求,检测 任何潜在装配问题,并且考虑我对产品测试的想法。

一旦FPGA和所有其他的表贴元件在板上装配好,我就去完成经常涉及到装配图的通孔元器件。如果表贴元件的密度较小,每个通孔元器件不 使用放大镜就可以进行焊接。

即 使在这个时候,我发现我并没有完成设计。在装配过程中,我注意到许多要在PCB项目中更新的更改和说明。例如,一个元器件标号因为重叠的线而模糊了,所以 我在丝印层上做出了一些小的设计修改。我还写了一个自述文件(readme file),描述了这个原型遵循的装配步骤。

此外, Altium Designer最新的3D可视化功能使我能为已完成的板创建逼真的全3D装配模型。这个功能为设计者画龙点睛,可以查看最终装配产品的几乎所有细节。在 PCB编辑器中从2D切换到3D简直是小菜一碟——只需使用3和2这两个快捷键就能够在模型之间切换。另外,需要在元器件封装中包含元件体才能查看它们。 关于3D体创建和STEP模型导入的快速教程,请参阅Altium 相关的文档

基础硬件测试

板装配完成后,我就运行了一些基础的电气测试。通过使用示波器(CRO),我测试了每个轨道的电压是否正确,每个振荡器的频率是否适 当,每个键盘上开关的信号是否正确。我也检查了我的工作电源来确保电路板会在合适的电压时关闭。

将设计移动到生产板

此时,我有一个非智能的板。它包括了一个液晶显示屏(LCD)、一些按钮、一个振荡器、电源、一对连接器和一个空白的FPGA。是时候 载入设计核心了,即FPGA设计中的嵌入式系统。

我 将要遇到另一个惊喜了——将设计从开发板移动到原型生产板的简易性。我从一个参考设计中复制并粘贴了标准JTAG接口至我的设计板,所以根据Altium Designer的文件,我只需使用提供的10路带状电缆从NanoBoard连接到我的设计。伴着一些不安,我在板间连接了带状电缆,并按下了F5来刷新Altium Designer的设备视图(硬件设计工作,嵌入式项目和目标设备的命令中心)

现 在,NanoBoard的FPGA旁边就是我的设计板的FPGA和配置设备。因为感觉很有信心,所以我决定从NanoBoard上拔下FPGA,这样我就 只在我的目标FPGA上工作了。重新配置我的设计,使用简单的测试代码“Hello World”,我在设备视图中单击了编程(Program)按钮并查看了设计为生产板进行重新处理的过程。唯一的改变是,从网络到FPGA引脚的内部映 射。看见“放置和布线(Place and Route)”指示灯变绿了,我就知道一切进行顺利。“Hello World”出现了,我即将完成我的设计,早于原计划且没有超过预算。

总结

虽然为血液处理机设计的控制器模块是一个虚拟的设计,但是工程师如何在Altium Designer中开发这样的设计描述却不是虚幻的。

迄 今为止,在FPGA内的嵌入式系统开发对于大多数工程师来说还是无法实现的,对于已实现过的工程师来说这也是一个极其复杂的任务。Altium Designer做了很多来改变这个现状。它为所有的工程师开启了一扇大门,使其能够将他们现有的技能应用到基于FPGA的嵌入式系统开发中。它不仅仅提 供了一个录入环境,还提供了一个FPGA开发板,这是一个完整的开发环境,在其中可以实现设计的录入和执行,然后进行测试和调试。

另请参阅

 

You are reporting an issue with the following selected text and/or image within the active document: