层次化设计
概念
用Digital仿真软件的内置组件设计更复杂的电路,本质上是一种层次化的设计。 组件内部设计是底层,而使用组件的电路是上层。 如果内置组件不能满足要求,则需要自己设计一个电路。 那么自己设计的电路能不能作为组件用于构成更复杂的电路呢?答案是肯定的。 在Digital仿真软件中,将嵌入到其他电路中的电路模块称作子电路(subcircuit)。 一个项目中可以有多个层次,一个“上层”电路也可以作为另一个电路的子电路,项目最上层通常称作顶层(top level)。
层次化设计可以采用自底向上或自顶向下的方法。 自底向上即先设计下层的电路模块,而自顶向下则是先设计顶层模块。 本课程实验的安排是自底向上的,前面实验完成的电路模块将作为后面实验电路的子电路。 Digital仿真软件也支持自顶向下的设计方法。
层次化设计的方法
当一个电路设计保存到文件之后,便可以通过菜单“Components/组件 ➤ Custom/自定义 ➤ …”将其作为子电路嵌入到另一个电路中。 任何一个电路都可以作为子电路,并不需要额外的操作将电路封装为子电路,但是需要注意以下几点。
-
子电路文件必须位于上层电路所在的文件夹或者子文件夹中
如果一个电路作为子电路嵌入到另一个电路中,Digital仿真软件并不是将子电路保存在上层电路中,只是保存了子电路的文件名, 而且所保存的子电路文件名并不包含完整的文件路径。 Digital仿真软件在当前文件夹及子文件夹中搜索子电路文件名,仿真时如果找不到则会报错。
如果当前路径中没有搜索到其他电路文件,“Components/组件”菜单中不会出现“Custom/自定义”菜单项。 因此,在添加子电路之前,首先要将当前电路(上层电路)保存到子电路所在的文件夹或其上层文件夹。
如果采用自顶向下的设计方法,可在上层电路中通过点击菜单“File/文件 ➤ New embedded Circuit/新建子电路”打开一个新的电路设计窗口,在新窗口中设计子电路,并将其保存到上层电路所在的文件夹或其子文件夹中,然后才能嵌入到上层电路。
-
子电路的文件名必须唯一
如果在当前文件夹及子文件夹中找到了多个同名的电路文件,Digital仿真软件也会报错。
这并不意味着一个子电路只能被嵌入一次。相反,层次化设计的目的之一正是便于重复使用同一个子电路。 -
只有已命名的输入和输出组件可以作为子电路的端口
如果一个电路没有输入输出组件,尽管它可以仿真,但是无法作为子电路与其他电路连接。例如,可以利用开关和LED代替输入、输出组件,虽然可以通过操控开关、观察LED进行仿真,但是这些开关和LED不能作为子电路的端口。
此外,所有的输入、输出组件都必须命名,否则无法作为子电路添加到上层电路中。
综上所述,一个比较合适的层次化设计做法是:
-
为项目创建一个独立的文件夹存放顶层电路文件,所有的子电路文件必须位于该文件夹或者子文件夹中。
-
所有的电路不能重名,即使位于不同的子文件夹内。
-
除顶层外,所有的电路都必须包含输入、输出组件,且所有的输入、输出组件都必须命名。
|
子电路图形符号的外观
默认情况下,子电路的图形符号是一个浅黄色背景的矩形框,宽度为3个栅格,高度视输入输出端口数量而定,输入端口在左边,输出端口在右边。 下面说明几个改变子电路图形符号外观的方法。
- 调整输入输出端口的显示顺序
-
在子电路的设计窗口中,点击菜单“编辑 ➤ 排序输入信号”或者“编辑 ➤ 排序输出信号” ,在弹出的窗口中调整端口的位置。
- 调整子电路图形符号的宽度
-
在子电路的设计窗口中,点击菜单“编辑 ➤ 设置当前电路”,在弹出窗口的“基础设置”页中,可以修改宽度、背景色等属性。
- 改变子电路图形符号的形状
-
在子电路的设计窗口中,点击菜单“编辑 ➤ 设置当前电路”,在弹出窗口的“高级设置”页中,可以通过“形状”下拉列表选择不同的形状。 也可以自定义形状,如表示ALU时。创建自定义形状的方法,见帮助文档的“5. Custom Shapes/自定义外观”。
层次化设计的举例说明见帮助文档的“1.4 Hierarchical Design/层次设计”。 |