使用信号线束
Contents
原 理图编辑器的增强功能包括信号线束的概念。信号线束可以对包括总线和导线在内的不同信号线进行逻辑分组,以满足设计灵活性和合理化的需要。
导 线用于表示各点之间的电气连接,而总线则用于表示一组相关的信号线,且这些信号线均已采用特定命名规则进行标识。
另 一方面,信号线束包括包含导线和总线等在内的多重信号线的逻辑分组。此多重信号线组可视为单一实体,其在整个项目中可用。 信号线束允许在PCB项目的子电路之间创建和处理更高级的抽象连接。
信 号线束允许在同一个原理图工作空间中采用更复杂的设计以增加设计的可读性,并为再次使用提供了可能性。
信号线束系统的对象
信 号线束系统包括四个关键要素,均可通过原理图编辑器进行轻松访问。
- 信 号线束
- 线 束连接器
- 线 束入口
- 线 束定义文件
信号线束
本 对象表示合并不同信号线的抽象连接。您在设计中可采用此对象连接不同子系统。
线束连接器
本 对象用于对不同信号线进行分组,使其形成一个信号线束。这既是对信号线束的图形定义,也是将实际网络、总线和其他线束纳入主信号线束的一种图形表示方法。
线束入口
线 束入口是对信号线束成员的图形定义。同时也是将实际网络、总线和信号线束合并,并使其形成更高级信号线束的连接点。
线束定义
线 束定义是对信号线束的正式文本定义。每个定义均包括线束类型(本例中为I2S)和线束入口(本例中为BCLK、DIN、DOUT、MCLK和WCLK)。 所有定义均存储在一个名为Harness Definition Files的文本文件里,并用扩展名* .Harness进行标识。线束定义文件位于项目面板的Settings\Harness Definition Files子文件夹下。Altium Designer自动管理线束定义文件。
主 设计窗口中有一个与已启用的原理图文档线束定义文件直接链接的图标。 在设计窗口的右下角点击按 钮,即可显示相关的线束定义文件。 注意,如果对信号线束进行了任何更改,此图标会变成红色,表示正在进行处理,线束定义文件正在更新。 同时,也可以通过右击项目文件(*.PrjPCB),并在弹出菜单中选择Regenerate Harness Definitions来刷新线束定义。
如何构建信号线束
信 号线束系统由信号线束、线束连接器和线束入口组成。可以通过为整个信号线束中的至少一个端口或图表入口指定线束类型,实现图表之间的连通性。
在 接下来的一节中,我们将对信号线束、线束连接器、线束入口、端口、图表入口和线束类型的使用进行解释,并在整个图表中通过使用信号线束对连通性进行详细说 明。下例对如何采用线束类型为I2S的信号线束建立图表之间的连通性进行了说明。
以 下是相关的详细步骤说明,有助于您了解如何构建一个完整的信号线束系统。
第1步——定义线束连接器,并向其连接信号线
第 一步指示了如何放置线束连接器和指定线束类型,增加线束入口,然后将信号线连接至相关线束入口。
- 通 过双击对象,并填写线束连接器对话框中的线束类型字段,放置线束连接器并指定线束类型。注意,本例中的线束类型为I2S。
- 在 项目中指定线束类型时,应参考本线束类型的相关线束定义。
- 放 置所需的线束入口数量,并对其进行命名。线束类型和线束入口共同构成线束定义。
- 现 在,可将信号线连接至线束入口。
注: 设计时,可隐藏或移动线束类型,以节约空间。
可 以通过以下方式隐藏线束类型:
- 双 击线束连接器,并选择线束连接器对话框中的隐藏线束类型选项。
- 选 择线束连接器,打开SCH List面板,并选择隐藏线束类型选项。
- 双 击线束类型,并启动隐藏选项。
- 通 过以下方式移动线束类型:点击线束类型,然后将其拖动至您希望的位置。可通过按空格键进行方向更改。同时,也可将线束类型放置在线束连接器内侧。
第2步——创建连通性
第2 步为在信号线束系统中创建连通性提供了相关指导。创建连通性时,首先应增加一个信号线束,然后再将其连接至一个端口或图表入口。接下来通过在已链接的图表 上创建互补信号线束来建立表间连通性。
- 将 信号线束连接至线束连接器。
- 将 信号线束连接至一个端口或一个图表入口。 将端口或图表入口连接至与线束连接器相连的信号线束时,将自动形成此线束连接器的线束类型,且在端口或图表入口属性中处于禁用状态。 I/O Type字段在此阶段也默认设置为Unspecified ,且处于禁用状态。
- 命 名端口或图表入口,比如Audio I2S。
将 端口连接至信号线束和线束连接器后,端口的线束类型就已自动填写为I2S,且处于禁用状态。这就是第1步中为线束连接器定义的线束类型。
将 端口或图表入口连接至信号线束后,您会注意到此端口或图表入口的颜色将发生变化,使其匹配信号线束的颜色。如果为信号线束指定的颜色为自定义颜色,端口或 图表入口也会自动变色,以匹配所选的自定义颜色。
如 果信号线束不再与端口或图表入口相连,端口或图表入口将恢复成原来的默认颜色,但线束类型在端口属性或图表入口对话框中另行指定时除外。
如 果您更希望端口和图表入口保持默认颜色,而非使用信号线束颜色,应在 Graphical Editing Preferences中进行设置。
- 选 择DXP » Preferences命 令,弹出Preferences对话框。
- 打 开Schematic - Graphical Editing选项卡。
- 禁 用Sheet Entries and Ports use Harness Color复选框,并点击确认。
通 过以下方式建立图表级连通性:
- 放 置图表符和图表入口,使用信号线束将图表入口连接到一起。
- 在 图表入口对话框中命名图表入口。
- 在 图表入口对话框的下拉列表中选择线束类型I2S。 至少为一个连接到信号线束的图表入口之定义线束类型。
线 束入口应添加指明线束类型为Audio I2S的标识,以便与相关图表上的端口名称相匹配。
或 者,您也可通过以下方式,在现有原理图文档中创建一个图表符:
- 在 文档中进行右击,选择Sheet Actions » Create Sheet Symbol From Sheet Or HDL中创建图表符,并选择需要放置的文档。
- 选 择在第1步和第2步中创建的存放信号线束的原理图文档。
- 所 创建图表符的端口名为Audio I2S,线束类型为I2S,且输入/输出类型应设置为Unspecified。
应 通过以下方式实现表间连通性:
- 将 端口放置在第二张图表上,并在端口属性对话框中选择名称Audio I2S。
- 放 置与PB01_ExtenderPlug.SchDoc中所创建线束条目相对应的线束连接器、信号线束和线束入口。或,您也可复制并粘贴现有信号线束。
- 在 线束连接器对话框的线束类型下拉列表中选择线束类型I2S。 在此阶段,端口的线束类型会自动填写为I2S,且处于禁用状态。
或 者,您也可使用智能粘贴功能创建具有信号线束(有无端口均可)的线束连接器,并规定线束类型和端口名称。
进阶专题
嵌套信号线束
信 号线束可包括嵌套信号线束,这就意味着线束入口可与另一个信号线束相连。这种灵活性将此功能增强至了一个新的水平,使设计得到了进一步的简化。
当 项目十分复杂,需要对大量信号线进行逻辑分组时,嵌套线束十分有用。可通过将信号线束结合在一起来创建一个更大、更复杂的信号线束,同时仍允许再次使用更 小的信号线束。
嵌套信号线束和线束入口
将 线束入口连接至信号线束时,此线束入口的线束类型将自动填写,并处于禁用状态。 该字段将填写为嵌套信号线束的线束类型。
嵌套信号线束和线束定义文件
嵌 套信号线束除了包含花括号外,表示方式与线束定义文件中的任何其他线束入口相同。本例中的线束类型为Audio_IO,线束入口包括{LINEIN: Stereo}、{LINEOUT:Stereo}和MICIN。花括号会在嵌套信号线束的线束定义文件中自动生成。
对具有相同线束类型的多个实例进行嵌套处理
设 计中可多次使用同一个线束类型。这在设计中将完全相同的信号群组用于不同用途时十分有用。
比 如,立体声信号线组由完全相同的信号线构成。其在一个实例中用于 LineIn,而在另一个实例中用于LineOut。无需创建两个完全不同的信号线束。我们可以只创建一个信号线束,然后对其进行重复利用,使用线束入口 名称来区分嵌套实例。
第1步——创建立体声信号线束的实例
- 创 建立体声信号线束,且线束入口为R和L,使用网络标识符LineOutR和LineOutL。
- 创 建立体声信号线束类型的另一个实例。您可以复制并粘贴现有信号线束,并重命名网络标识符。该例中信号线网络标识符为LineInR和LineInL。
注: 在具有同一线束类型的实例中,可在单独的走线或总线上使用不同的网络标签,因为它们并不会对线束定义造成任何影响。
第2步——嵌套立体声信号线束的多个实例
- 连 接立体声信号线束的实例与总线束连接器。线束入口的名称必须唯一,这样才能在同一线束的两个实例之间进行区别。
相同线束类型和线束定义文件的实例化
图13 线束定义文件显示的线束类型为Audio_IO,线束入口包括{LINEIN:Stereo}、{LINEOUT:Stereo}和MICIN。相同线束 的实例化命名规则为{HARNESSENTRYNAME:HarnessType},所以,本例中立体声线束类型有两个实例,即LINEIN和 LINEOUT。花括号会在嵌套信号线束的线束定义文件中自动生成。
标识信号线束实例
项 目中可创建任何级别的信号线束实例。在到目前为止所用的示例中,信号线束实例并未进行标识。这就意味着这些信号实例所包含的网络名称与信号线束实例的名称 无任何关系。
信 号线束实例可使用网络标签进行唯一标记,适用一般的网络命名规则。如果选择的是Project Options下的“Higher Level Names Take Priority”,应使用层次中较高级图表上所用的网络标签命名较低级图表上的网络。这种命名规则适用于信号线束。
实 例名称已用于将信号线束实例与其中所包含的网络联系在一起。这点可在在Altium Designer中使用交互式导航器时看出。本例中JTAG_CONFIG线束型CONFIG_A实例的网络应遵守以下命名规则:
- 实 例名.线束入口名,如:CONFIG_A.DETECT
或 如果是嵌套线束时为: - 实 例名.线束入口名.线束入口名,如:CONFIG_A.HARD.TDI
锁定线束定义
使 用线束入口构建线束连接器时,会自动生成线束定义。 修改线束连接器时,应更新相关线束定义,以反映所做的修改。
可 通过手动锁定线束定义对线束定义进行保护。这就意味着,更改线束连接器时,不会更新线束定义,且添加至原理图的新线束入口也不会添加至线束定义。
可 通过在各信号线束定义前输入Locked;对信号线束进行锁定。
在 线束定义被锁定时将新的线束入口添加至图形表示,与线束定义相矛盾的任何冲突都将在编译中显示中。请参见故问题解决方案章节,了解更多信息。
如何构建一个线束——高级方法
如何使用线束定义文件构建一个线束
一旦线束的图形表示在线束定义文件中得到定义,可通过使用Place » Harness » Predefined Harness Connecto命令创建信号线束系统。
采用线束条目构建线束连接器时,会自动生成线束定义。 修改线束连接器时,应更新相关线束定义,以反映所做的修改。 放置预定义线束连接器对话框中的预定义线束连接器清单包括项目中已放置的所有线束类型,所有开放项目中已定义的所有线束类型以及Device Sheet文件夹中定义的线束类型清单(如果您已在 您的原理图Preferences中设置了设备清单)。 默认情况下,打开放置预定义线束连接器对话框后,会扩展显示当前项目。
您 也可通过修改线束定义文件增加文本层次的预定义线束连接器。可通过以下方式实现上述操作:
- 在 项目中打开线束定义文件。
- 通 过以下语法访问线束连接器详情:
Locked;HarnessType=HarnessEntry1,HarnessEntry2,HarnessEntry3... - 也 可通过使用以下语法定义嵌套线束:
Locked;HarnessType={HARNESSENTRYNAME1:HarnessType},{HARNESSENTRYNAME2:HarnessType},HarnessEntry3...
您 需要通过手动输入花括号指明嵌套线束:
注: 以文本形式定义的线束连接器需要Locked;语法。如果这个定义未被锁定,Altium Designer在根据线束的图形实例对线束定义文件进行自动管理时,这些变化将不会被保存下来。
- 保 存线束定义文件。
- 使 用Place » Harness » Predefined Harness Connector命令,或通过双击原理图文档并在跳出的弹出菜单中选择Place » Harness » Predefined Harness Connector命令将预定义线束连接器放置在您的项目中。
- 放置预定义线束连接器对话框中列出了在当前项目和开放项目中以及已声明的Device Sheet文件夹中可用的线束连接器。默认情况下,当前项目被扩展,并显示可进一步扩展以显示线束入口的线束连接器。在此对话框中, 您可选择添加并命名具有指定宽度的端口,同时增加具有规指定宽度的信号线束。
- 选 择好需要放置的现有线束连接器后,端口名称就会自动填写线束类型。您还可通过直接输入字段自定义端口名称。
- 带 嵌套线束的预定义线束连接器的构建方式与其它预定义线束连接器的构建方式完全相同,但是线束类型根据线束定义填写的线束入口除外。
如何构建一个无线束连接器的线束
如 果项目中已对线束进行定义,无论是以图形方式定义还是以文本方式定义,均可构建一个无线束连接器的线束。
JTAG_CONFIG 线束类型中有3个线束入口,即HARD、SOFT(均为线束类型JTAG)和DETECT。此信号线束在前一个示例中表示如下:
通 过以下方式构建这种不带JTAG_CONFIG线束连接器的线束:
- 通 过将其手动输入线束定义文件或在项目中为其创建图表实例来定义JTAG_CONFIG线束类型。确保手动输入线束定义文件的线束定义被锁定,确保所做的变 更被保存。
- 放 置端口,并在端口属性对话框中选择名称JTAG_CONFIG,然后连接信号线束。
- 为 信号线束增加网络标签(比如示例A),确保与信号线束相连的端口在端口属性对话框中的线束类型为JTAG_CONFIG。
- 为JTAG_CONFIG 线束连接器放置定义的线束入口。本例中包括两个嵌套JTAG信号线束和一根JTAG_DETECT走线。线束入口需要采用以下语法添加网络标签: A.HARNESSENTRYNAME用于将线束入口与信号线束联系起来。此时,应将线束入口分别命名为A.HARD、A.SOFT和 A.JTAG_DETECT。
由 此生成的线束显示如下:
在 上述示例中,我们仍有两个嵌套JTAG线束连接器。此示例可通过移除JTAG线束连接器进行进一步定义。
根 据上述示例,移除JTAG线束连接器的步骤如下:
- 通 过将其手动输入线束定义文件或在项目中为其创建图表实例来定义JTAG线束类型。确保手动输入线束定义文件夹的线束定义被锁定,确保所做变更被保存。
- 移 除JTAG线束连接器。
- 将 所有信号重新命名为A.线束类型.线束入口名称,将其与嵌套JTAG信号线束以及JTAG_CONFIG信号线束联系起来。
由 此生成的线束显示如下:
如何构建一个无信号线束的线束
线 束连接器可与端口、图表入口或线束入口直接相连。这就意味着信号线束在设计中为可选项。将信号线束从设计中移除可节省空间,并允许对同一个工作空间进行更 复杂的设计。
已 移除信号线束的JTAG_CONFIG线束显示如下。
从信号线束中提取个体信号
项 目中可提取并单独参考信号线束中的个体信号。可通过以下方式参考信号线束中的个体信号:
- 为 想从中提取个体信号的信号线束增加网络标签,比如A。
- 放 置走线和网络标签,并将其连接至一个图表入口或端口。双击网络标签,并在网络标签对话框中输入A,然后线束中的所有信号均会显示。在下拉菜单中选择信号, 并点击确认。
- 交 互式导航面板中会显示,信号A.JTAG_DETECT与信号线束A相连。
问题解决方案
项目中存在许多与信号线束对象放置相关的冲突。以下介绍的是原理图文档中所示的冲突,及其发生原因和解决方案。要了解更多线束相关的冲 突详情,包括信息面板中所报告的冲突,请参见项目编译器错误参考。
线束定义编译器错误
冲 突:线束无线束类型
原 因:连接图表入口或连接图表入口与端口的信号线束无线束类型。
解 决方案:为整个信号线束中的至少一个对象指定线束类型。
冲 突:未知线束类型
原 因:线束定义文件中已发现线束类型,但是未发现与之相匹配的定义。这可能由以下两种原因之一引起:
- 信 号线束与具有未知线束类型的对象(图表入口、端口或线束条目)相连。
- 当 线束定义文件中的线束入口引用未知的线束类型时。
解 决方案:确保图表入口、端口和线束入口的线束类型已知,且线束定义准确。
冲 突:线束定义冲突
原 因:同一个线束类型在图表层次上或文本层次上存在相互冲突的线束入口。
解 决方案:更新线束定义文件夹,以反映所做的变更或移除与之相冲突的线束入口。
网络不匹配编译错误
冲 突:线束上具有总线对象
原 因:端口、图表入口或网络标签形式为[X..Y],表明是一个总线对象。
解 决方案:使用总线语法,以确保整个信号线束的对象均无网络标签。
冲 突:总线上具有线束对象
原 因:端口、图表入口或线束入口等对象均有相关的线束类型,且此线束类型放置在总线上时,表示与信号线束相连。
解 决方案:使用正确的命名规则命名走线、总线和信号线束。
冲 突:走线上具有线束对象
原 因:端口、图表入口或线束入口等对象均有相关的线束类型,且此线束类型放置在走线上时,表示与信号线束相连。
解 决方案:使用正确的命名规则命名走线、总线和信号线束。
冲 突:线束上具有多个线束类型
原 因:整个信号线束中有多个已定义的线束类型。
解 决方案:确保整个信号线束的对象(图表入口、端口、线束连接器或线束入口)的规定线束类型完全相同。
语法编译错误
冲 突:线束连接器类型语法错误
原 因:线束类型具有任何无效字符(如 [ ] { } . :)或线束类型为空白时均可能发生。
解 决方案:确保线束连接器类型不含任何特殊字符且不为空白。