几个有用的组件

Constant value/常量

该组件位于“Components/组件 ➤ Wire/导线 ➤ Constant value/常量”,用于提供一个常数。可以通过属性修改位宽和值。

Splitter/Merger(分解/组合)

组件位置:“Components/组件 ➤ Wire/导线 ➤ Splitter/Merger(分裂器/合并器)”。该组件用于将一根多位的导线分成几个部分,或者反之将几个部分合并为一个整体。图 1给出了一个示例,4位二进制数 1001 分解为 1001,然后重新组合为6位二进制数。分解、组合时各部分的顺序可以在属性中指定,例如图 1组合时将原4位的高2位与低2两位交换位置,并且高位用常数补充 11,结果为 110110

ds splitter
图 1. 导线分解/组合示例

该组件需要设置“Input Splitting/输入分割”和“Output splitting/输出分割”两个属性。图 1两个组件的属性设置见表 1。 属性值可以是位数,也可以用位号。以Splitter为例,输入分割属性值为“4”,表示输入导线没有分割,是4位的;输出分割属性值为“2,2”,表示输出导线分割为两部分,每部分2位,按顺序排列下来就是“0-1”位和“2-3”位。也可以直接用位号设置输出分割属性值为“0-1,2-3”。 分割属性值用位数表示,就只能是按顺序显示。如果需要指定显示顺序,必须用位号表示,如图 1的Merger组件,导线的显示顺序依次为2-3,0-1,4-5。

输入分割和输出分割的总位数可以不相等,也就是可以只抽取其中一部分导线。例如从4位导线中只抽取最高位,输出分割属性值可以设为“3-3”。

表 1. 属性设置举例
Splitter Merger

Input Splitting/输入分割

4

2-3,0-1,4-5

Output splitting/输出分割

2,2 或 0-1,2-3

6

更多用法可点击属性窗口内的“帮助”按钮。

Sign extender(符号扩展)

组件位置:“Components/组件 ➤ Arithmetic/运算器 ➤ Sign extender/符号扩展器”。 如果需要将位宽较小的导线扩展为更大的位宽,并且保持符号位不变,就需要“Sign extender/符号扩展器”组件。该组件需要设置“输入位宽”和“输出位宽”两个属性,且输入位宽必须小于输出位宽。

虽然“Splitter/Merger”组件也可以扩展导线的位宽(见图 1示例),但是只能扩展固定的常数。而符号扩展器则是根据电路工作时的实际数据进行扩展,如果输入数据的最高位为“0”,扩展0;为“1”则扩展1。在计算机中,最高位表示带符号数的符号,故称为符号扩展。

Probe(探测器)

组件位置:“Components/组件 ➤ IO/输入输出 ➤ Probe/探测器”。 该组件用于读取探测点的数值。图 1中有两个该组件的例子。 如果设置了“Label/标签”属性,那么仿真时其值可以显示在测量图表中。

即使“Probe/探测器”组件位于子电路中,测量图表中仍然可以显示其值,这对于观察子电路中的状态是非常有用的。

Tunnel(隧道)

组件位置:“Components/组件 ➤ Wire/导线 ➤ Tunnel/隧道”。

图 2中两个三角形的组件就是隧道组件,这两个组件之间并没有导线连接,但是由于它们的名称相同,则意味着它们之间是连通的,只是表面看不见,就像有一条隧道把他们连接起来。

ds tunnel
图 2. 隧道示例

隧道的名称通过“Net name/网络名称”属性设置。在一张图中可以有多个同名的隧道,它们之间都是导通的。

隧道可以减少复杂电路图的连线,使外观更整洁;但是也给读图和检查电路带来不便,不应过度使用。