使用码型发生器

数字电路设计团队在开发过程中，可以使用 Agilent Technologies 16720A 码型发生器来模拟电路中的数字信号。码型发生器可代替缺失的设备，或可作为信号激源对硬件样机进行功能测试。

  • 码型发生器概述
  • 将输出信号连接到被测设备
    • 选择正确的探头盒
    • 连接探头盒
  • 配置码型发生器
    • 选择输出模式（通道/速度权衡）
    • 选择时钟源
  • 为码型发生器探头分配总线/信号名称
  • 创建矢量序列
    • 创建初始化序列
    • 创建主序列
    • 插入矢量和指令
    • 使用自动生成的码型填充矢量
    • 编辑序列
    • 编辑宏
    • 设置矢量序列显示选项
  • 运行和停止码型发生器输出
  • 保存和载入码型发生器配置
  • 导出和导入矢量序列
  • 码型发生器参考
  • 码型发生器控制，COM 自动控制
  • 码型发生器设置，XML 格式

© Agilent Technologies, Inc. 2001-2005


码型发生器概述

Agilent Technologies 16720A 码型发生器是用于生成数字信号的工具。该工具用于以下应用：需要外部源来模拟数字电路、生成数字信号以进行硬件样机功能测试。

将该工具与逻辑分析系统的模拟与数字测量功能相结合，可为数字信号激发和响应测量需求提供紧密集成的解决方案。

使用码型发生器的步骤

确切的输出码型、时钟类型和速度以及所需信号的数目取决于您的具体应用。如何配置码型发生器，创建何种类型的信号生成序列，这些都会因应用而异。然而，从操作流程来看，每次进行设置、创建序列和开启码型发生器时，其步骤都是相同的。

  1. 选择探测探头，以便与您的测试设备兼容。

  2. 设置 Output Mode（输出模式）和 Clock Source（时钟源）参数。

  3. 连接探头到您的电路并在码型发生器用户接口中定义总线和信号。

  4. 创建测试矢量序列以生成所需的输出信号。

  5. 运行码型发生器并测量测试设备以获取所需结果。

重用码型发生器程序

设置码型发生器配置后，可能希望将其保存以便再次使用。您可能需要创建一组测试例程或电路模拟程序。可重用的配置有三种处理方法。

  • 可以重新载入以前保存的码型发生器配置。按初始定义的顺序从 ALA 格式配置文件中复原宏和循环。从 XML 格式配置文件中复原已编译的矢量序列（没有循环和宏）。

  • 您可以导入先前从逗号分隔值 (CSV) 格式文件中导出的数据。CSV 格式文件包含已编译的 数据版本；换句话说，宏已进行了扩展并且循环已处理为重复的矢量序列。

  • 您可以从 PattGen 二进制 (PGB) 格式文件中导入数据。

注意：

您可以转换 16522A 码型发生器 ASCII 格式文件，将其转换为分别包含矢量数据和设置信息的逗号分隔值 (CSV) 文件和 XML 格式文件。

注意：

如果 16700 系列逻辑分析系统配置文件包含要重用的码型发生器数据，可以（从 16700 系列逻辑分析系统内）将数据导出至 PattGen 二进制 (PGB) 格式文件，并将其转换为 16900 系列 PGB 格式。

另请参见

  • 关键特性


将输出信号连接到被测设备

  • 选择正确的探头盒
    • 数据盒描述
    • 时钟盒描述
    • 盒尺寸
    • 不带数据盒的数据电缆特性
    • 不带时钟盒的时钟电缆特性
  • 连接探头盒
    • 盒-板直接连接
    • 电缆-盒跳线连接
    • 探头引线集-板引脚连接


选择正确的探头盒

此处提供以下等效电路信息，以帮助您为您的应用选择合适的时钟盒和数据盒。

  • 数据盒描述
    • 10461A TTL 数据盒
    • 10462A 三态 TTL/CMOS 数据盒
    • 10464A ECL 数据盒（端接）
    • 10465A ECL 数据盒（非端接）
    • 10466A 三态 TTL/3.3 V 数据盒
    • 10469A PECL 数据盒
    • 10471A LVPECL 数据盒
    • 10473A 三态 2.5 V 数据盒
    • 10476A 三态 1.8 V 数据盒
    • 10483A 三态 3.3 V 数据盒
    • E8141A LVDS 数据盒
  • 时钟盒描述
    • 10460A TTL 时钟盒
    • 10463A ECL 时钟盒
    • 10468A PECL 时钟盒
    • 10470A LVPECL 时钟盒
    • 10472A 2.5 V 时钟盒
    • 10475A 1.8 V 时钟盒
    • 10477A 3.3 V 时钟盒
    • E8140A LVDS 时钟盒
  • 盒尺寸
  • 不带数据盒的数据电缆特性
  • 不带时钟盒的时钟电缆特性

另请参见

  • 连接探头盒


数据盒描述

  • 10461A TTL 数据盒
  • 10462A 三态 TTL/CMOS 数据盒
  • 10464A ECL 数据盒（端接）
  • 10465A ECL 数据盒（非端接）
  • 10466A 三态 TTL/3.3 V 数据盒
  • 10469A PECL 数据盒
  • 10471A LVPECL 数据盒
  • 10473A 三态 2.5 V 数据盒
  • 10476A 三态 1.8 V 数据盒
  • 10483A 三态 3.3 V 数据盒
  • E8141A LVDS 数据盒

另请参见

  • 时钟盒描述
  • 连接探头盒


10461A TTL 数据盒

输出类型： | 10H125（100 ohm 输入）系列
最大时钟： | 200 MHz
偏移 (Skew)： | 通常低于 2 ns；最差情况下为 4 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10462A 三态 TTL/CMOS 数据盒

输出类型： | 74ACT11244（100 ohm 输入）系列；在非三态通道 7 上为 10H125（请参见使用启用了“3-STATE IN”的输入）
三态启用： | 负真值，100K ohm 到 GND（接地），无连接时启用
最大时钟： | 100 MHz
偏移 (Skew)： | 通常低于 4 ns；最差情况下为 12 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10464A ECL 数据盒（端接）

输出类型： | 10H115（348 ohm pulldown、42 ohm 输入）系列
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1 ns；最差情况下为 2 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10465A ECL 数据盒（非端接）

输出类型： | 10H115（无端接）
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1 ns；最差情况下为 2 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10347A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10466A 三态 TTL/3.3 V 数据盒

输出类型： | 74LVT244（100 ohm 输入）系列；在非三态通道 7 上为 10H125（请参见使用启用了“3-STATE IN”的输入）
三态启用： | 负真值，100K ohm 到 GND（接地），无连接时启用
最大时钟： | 200 MHz
偏移 (Skew)： | 通常低于 3 ns；最差情况下为 7 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10469A PECL 数据盒

输出类型： | 100EL09 (5V)（348 ohm pulldown 到接地、42 ohm 输入）系列
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 500 ps；最差情况下为 1 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10471A LVPECL 数据盒

输出类型： | 100LVEL90 (3.3V)（215 ohm pulldown 到接地、42 ohm 输入）系列
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 500 ps；最差情况下为 1 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10473A 三态 2.5 V 数据盒

输出类型： | 74AVC16244
三态启用： | 负真值，38K ohm 到 GND（接地），无连接时启用（请参见使用启用了“3-STATE IN”的输入）
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1 ns；最差情况下为 2 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10476A 三态 1.8 V 数据盒

输出类型： | 74AVC16244
三态启用： | 负真值，38K ohm 到 GND（接地），无连接时启用（请参见使用启用了“3-STATE IN”的输入）
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1.5 ns；最差情况下为 2.5 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


10483A 三态 3.3 V 数据盒

输出类型： | 74AVC16244
三态启用： | 负真值，38K ohm 到 GND（接地），无连接时启用（请参见使用启用了“3-STATE IN”的输入）
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1 ns；最差情况下为 2 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


E8141A LVDS 数据盒

输出类型： | 65LVDS389（LVDS 数据行）；10H125（TTL 非三态通道 7，请参见使用启用了“3-STATE IN”的输入）
三态启用： | 正真值 TTL；无连接 = 已启用
最大时钟： | 300 MHz
偏移 (Skew)： | 通常低于 1 ns；最差情况下为 2 ns（请参见关于数据盒偏移特性）
建议使用的引线集： | E8142A

引脚输出

另请参见

  • 盒尺寸
  • 时钟盒描述
  • 连接探头盒


关于数据盒偏移特性

在盒连接器处以大约 10 pF/50K ohm 载荷到接地这一范围指标来测量典型偏移；最差情况偏移数是在整个电路范围计算的最差条件数目。两个数字都应用在单模块或多模块系统中的任何通道。


使用启用了“3-STATE IN”的输入

码型发生器停止时总是保留最后一组状态矢量。

当逻辑“1”电平应用到“3-STATE IN”输入时，将启用了三态的输出置于“高阻抗”状态中。当逻辑“0”电平应用到“3-STATE IN”输入，或者未连接输入时，启用了 三态的输出是有效的，且输出最后一个矢量的电平。

带有三态控制的数据盒提供了一个非三态启用的并行通道 7 输出。通过将此输出循环回“3-STATE IN”输入，码型发生器的通道 7 输出可作为三态控制信号来使用。


时钟盒描述

  • 10460A TTL 时钟盒
  • 10463A ECL 时钟盒
  • 10468A PECL 时钟盒
  • 10470A LVPECL 时钟盒
  • 10472A 2.5 V 时钟盒
  • 10475A 1.8 V 时钟盒
  • 10477A 3.3 V 时钟盒
  • E8140A LVDS 时钟盒

另请参见

  • 数据盒描述
  • 连接探头盒


10460A TTL 时钟盒

时钟输出类型： | 10H125 (42 ohm) 系列；真值且倒相
时钟输出频率： | 最高 100 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | TTL - 10H124
时钟输入频率： | 直流电到 100 MHz
码形输入类型： | TTL - 10H124（逻辑 1 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10463A ECL 时钟盒

时钟输出类型： | 10H116 差分非端接；差分系列（348 ohm 至 -5.2v、42 ohm）
时钟输出频率： | 最高 300 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | ECL - 10H116（50K ohm 至 -5.2v）
时钟输入频率： | 直流电到 300 MHz
码形输入类型： | ECL - 10H116 (50K ohm)（逻辑 0 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10474A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10468A PECL 时钟盒

时钟输出类型： | 100EL90 (5V)（348 ohm pulldown 到接地、42 ohm 输入）系列
时钟输出频率： | 最高 300 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 100EL91 PECL (5V)，无端接
时钟输入频率： | 直流电到 300 MHz
码形输入类型： | 100EL91 PECL (5V)，无端接（逻辑 0 表示没有连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10,498A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10470A LVPECL 时钟盒

时钟输出类型： | 100LVEL90 (3.3V)（215 ohm pulldown 到接地、42 ohm 输入）系列
时钟输出频率： | 最高 300 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 100LVEL91 PECL (3.3V)，无端接
时钟输入频率： | 直流电到 300 MHz
码形输入类型： | 100LVEL91 PECL (3.3V)，无端接（逻辑 0 表示没有连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10472A 2.5 V 时钟盒

时钟输出类型： | 74AVC16244
时钟输出频率： | 最高 200 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 74AVC16244（最高 3.6 V）
时钟输入频率： | 直流电到 200 MHz
码形输入类型： | 74AVC16244（最高 3.6 V；逻辑 0 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10475A 1.8 V 时钟盒

时钟输出类型： | 74AVC16244
时钟输出频率： | 最高 200 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 74AVC16244（最高 3.6 V）
时钟输入频率： | 直流电到 200 MHz
码形输入类型： | 74AVC16244（最高 3.6 V；逻辑 0 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


10477A 3.3 V 时钟盒

时钟输出类型： | 74AVC16244
时钟输出频率： | 最高 200 MHz
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 74AVC16244（最高 3.6 V）
时钟输入频率： | 直流电到 200 MHz
码形输入类型： | 74AVC16244（最高 3.6 V；逻辑 0 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | 10498A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


E8140A LVDS 时钟盒

时钟输出类型： | 65LVDS179 (LVDS) 和 10H125 (TTL)
时钟输出频率： | 最大 200 MHz（LVDS 和 TTL）
时钟输出延迟： | 14 个步长内总计约 8 ns
时钟输入类型： | 65LVDS179（LVDS，100 ohm）
时钟输入频率： | 直流电到 150 MHz (LVDS)
码形输入类型： | 10H124 (TTL)（逻辑 1 表示无连接）
时钟输入到时钟输出： | 约 30 ns
码形输入到码形识别： | 约 15 ns + 1 个时钟周期
建议使用的引线集： | E8142A

引脚输出

另请参见

  • 盒尺寸
  • 数据盒描述
  • 连接探头盒


盒尺寸（毫米）

另请参见

  • 数据盒描述
  • 时钟盒描述
  • 连接探头盒


不带数据盒的数据电缆特性

不带数据盒的数据电缆提供了 ECL 端接（470 ohm；至 -3.25V）差分信号。当通过差分信号接收器接收信号时这些信号才有用，最好是对于整个线路使用 100 ohm 端接。由于缓慢的下降时间和移相电压阈值，不应以单端方式使用这些信号；它们不兼容 ECL。


不带时钟盒的时钟电缆特性

不带时钟盒的时钟输出信号（CLKOUT 和非 CLKOUT）可提供 ECL 端接（215 ohm 至 -3.25V）差分信号。当通过差分信号接收器接收信号时这些信号才有用，最好是对于整个线路使用 100 ohm 端接。由于缓慢的下降时间和移相电压阈值，不应以单端方式使用这些信号；它们不兼容 ECL。


连接探头盒

注意：

若要正确连接信号接口，时钟盒和数据盒是必需的。探头盒有不同类型，它们应该与进行电路特性测试的设备匹配。另外，根据所选的输出模式，某些盒可能无法使用。
  • 盒-板直接连接
  • 电缆-盒跳线连接
  • 探头引线集-板引脚连接


盒-板直接连接

将盒直接插入 ©3M 2520 系列，或 PC 板上的类似备用接口中。


电缆-盒跳线连接

在 PC 板上遇到清除问题时使用此方法。制作一条扁平电缆并按以上所示连接。

注意：

可以从除 3M 系列以外的信号源获取对等接口。


探头引线集-板引脚连接

以下探头引线装配件可用于连接 PC 板引脚。

  • E8142A 8 通道 LVDS 探头引线集（6 英寸引线长度）。
  • 10498A 8 通道探头引线集（6 英寸引线长度）。
  • 10,474A 8 通道探头引线集（12 英寸引线长度）。
  • 10347A 8 通道探头引线集，用于非端接信号的 50 ohm 同轴电缆。

两个引线集的探头前端直接插入到任意 0.1 英寸网格状接口（直径为 0.026 至 0.033 英寸的圆引脚或 0.025 英寸方头引脚。这些探头前端可与 5090-4356 表面固定强制器和 5959-0288 通孔强制器配合使用。

注意：

将 LVDS 数据盒连接到引线时，切记要使电缆带条纹的一面向上。


配置码型发生器

  • 选择输出模式（通道/速度权衡）
  • 选择时钟源


选择输出模式（通道/速度权衡）

输出模式确定通道宽度、可用盒以及内部时钟和外部时钟的频率范围。进行选择时需要在时钟速度和通道宽度之间进行权衡。

输出模式会影响时钟频率范围、可用盒和通道宽度，因此在设计电路硬件接口以及映射测试电路与码型发生器的标签之间的探头连接时要注意所选模式。

此表显示了 Full（全）通道 180 Mb/s 模式和 Half（半）通道 300 Mb/s 模式之间的差异。

 | 全通道 180 Mb/s | 半通道 300 Mb/s
可用盒 | 盒 1、2、3、4、5、6 | 盒 1、3、5
最大通道数 | 48；8/盒 | 24；8/盒
最大外部时钟频率 | 180 MHz | 300 MHz
最大内部时钟频率 | 180 MHz | 300 MHz
最小外部时钟频率 | DC | DC
最小内部时钟频率 | 1 MHz | 1 MHz
最大矢量数 | 8,388,608 | 16,777,216


选择时钟源

通过设置 Clock Source（时钟源）字段可以在内部时钟和外部时钟之间切换。内部时钟源由码型发生器提供，它控制向测试系统输出矢量所使用的频率。外部时钟源由用户或测试系统提供，通过时钟盒的 CLK IN 探头输入码型发生器。

使用外部时钟源的好处是可以将码型发生器的矢量输出与测试系统同步。无论使用何种时钟源，矢量始终在时钟上升沿时刻输出。

内部时钟源

当希望控制输出矢量的频率并且输出矢量是否与测试系统同步并不重要时，可以使用内部时钟源。

选择时钟频率时，其增量为 1 MHz。如果使用键盘选择步长间隔值，则该值会舍入至最近的间隔值。

 | 全通道 180 Mb/s | 半通道 300 Mb/s
最大内部时钟频率 | 180 MHz | 300 MHz
最小内部时钟频率 | 1 MHz | 1 MHz

外部时钟源

如果希望将输出矢量的频率与测试系统同步，则使用外部时钟源。选择此模式后，您不能直接控制输出矢量的频率。输出矢量频率将与外部时钟相同。

 | 全通道 180 Mb/s | 半通道 300 Mb/s
最大外部时钟频率 | 180 MHz | 300 MHz
最小外部时钟频率 | DC | DC

小心：

如果外部时钟快于最大周期，Agilent 16720A 码型发生器将产生错误的输出矢量。

时钟输出延迟

使用时钟输出延迟设置可以定位与数据有关的输出时钟。零设置是未校准设置，应当对其进行测量以确定与数据相关的初始位置。您可以按 500 ps 增量延迟时钟。


为码型发生器探头分配总线/信号名称

在设置码型发生器矢量序列前，必须为输出数据所使用的通道定义总线/信号名称。

通过菜单栏的 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...命令访问 Buses/Signals（总线/信号）选项卡。Buses/Signals（总线/信号）选项卡用于对探头的盒连接和通道连接映射（分配）总线和信号名称。通过 Display（显示）按钮可以选择显示哪些总线/信号信息。

在 Buses/Signals（总线/信号）选项卡中可以执行以下任务：

  • 添加新的总线或信号
  • 删除总线或信号
  • 重命名总线或信号
  • 以默认位顺序分配通道
  • 通过选择位顺序来分配通道
  • 编辑 Channels Assigned（已分配通道）字符串来重新排列位顺序
  • 设置默认数基
  • 设置极性
  • 添加用户注释
  • 添加文件夹
  • 对总线/信号名称排序

通过 Display（显示）按钮，您可以选择显示哪些总线/信号设置信息（channels assigned（已分配通道）、width（宽度）、polarity（极性）、default base（默认数基）、comment（注释）或 channel numbers（通道编号））。


添加新的总线或信号

在向码型发生器探头通道分配总线/信号名称之前，必须首先创建总线/信号名称。

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，选择 Add Bus/Signal（添加总线/信号）...。

  3. 在 Add Bus/Signal（添加总线/信号）对话框中，输入新的总线/信号的名称。

  4. 单击 OK（确定）。

另请参见

  • 删除总线或信号
  • 重命名总线或信号
  • 以默认位顺序分配通道
  • 通过选择位顺序来分配通道


删除总线或信号

删除总线或信号功能允许逐个移除总线和信号或一次全部移除。

  • 删除单个总线或信号
  • 删除所有总线和信号

删除单个总线或信号

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，突出显示要删除的总线或信号。

  3. 单击 Delete（删除）。

删除所有总线和信号

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，单击 Delete All（全部删除）。


重命名总线或信号

使用重命名总线/信号功能可以更改总线和信号名称。为重命名的总线/信号分配的所有盒通道都保持不变。

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，右键单击总线或信号名称，然后选择 Rename（重命名）...。

  3. 输入新的总线或信号名称。

  4. 单击 OK（确定）。

另请参见

  • 添加新的总线或信号
  • 删除总线或信号


以默认位顺序分配通道

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，选择网格中的方格，将通道分配给总线和信号名称。

    对于每个码型发生器信号，应有一个黑色的选中符号，这样即将特定盒通道映射到总线/信号名称。未分配的通道是非活动的通道。

    示例：在下图中：

    • 盒 F1 上的通道 0-7 映射到 My Bus 1
    • 盒 F2 上的通道 0-7 映射到 My Bus 2
    • 盒 F3 上的通道 0 映射到 My Signal 1
    • 盒 F3 上的通道 1 映射到 My Signal 2

注意：

可将任意单个输出通道分配给多个总线/信号。

另请参见

  • 编辑 Channels Assigned（已分配通道）字符串来重新排列位顺序
  • 通过选择位顺序来分配通道


通过选择位顺序来分配通道

如果在设计时已将码型发生器连接器嵌入到了测试设备中，且这些连接器上的总线未连接到连续的码型发生器通道，则可按所选的位序列将通道分配给总线名称。

  1. 从菜单栏选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signal（总线/信号）...。

  2. 在 Buses/Signals（总线/信号）选项卡中，右键单击总线名称，选中 Enable Channel Order Selection（启用通道顺序选择）。

  3. 开始选择网格中的方格，从总线的低位序列到高位序列分配通道。

    选择方格时，将显示位编号。

重置默认位顺序

在 Bus/Signal Setup（总线/信号）对话框，已分配通道的默认位顺序为左侧具有较高的位，右侧具有较低的位。

重置默认位顺序：

  • 右键单击总线名称，然后取消选中 Enable Channel Order Selection（启用通道顺序选择）。

另请参见

  • 编辑 Channels Assigned（已分配通道）字符串来重新排列位顺序
  • 以默认位顺序分配通道


编辑 Channels Assigned（已分配通道）字符串来重新排列位顺序

通过编辑 Channels Assigned（已分配通道）文本字符串，可以更改总线名称中的位顺序（在默认顺序或选定顺序中指定的顺序）。

  1. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，单击总线名称旁边的 Channels Assigned（已分配通道）。

  2. 在 Assign Channels（分配通道）对话框中，输入总线中的位顺序。

    示例 | 说明
    Pod F1[0] | 信号包含第一个盒中的第一个通道。
    Pod F1[7:0] | 总线包含 Pod F1 中的所有 8 个通道（默认顺序）。
    Pod F1[3:0]、Pod F2[7:4] | 总线包含第一个盒中的 4 个通道，后跟第二个盒中的 4 个通道。
    Pod F1[7:0]、Pod F2[7:0] | 16 位总线的大尾小尾转换。
    Pod F1[0,1,2,3] | 总线的位为倒序。

  3. 单击 OK（确定）。

    Buses/Signals（总线/信号）选项卡中将显示重排序位的通道编号。

重置默认位顺序

执行任一操作：

  • 右键单击总线名称，然后取消选中 Enable Channel Order Selection（启用通道顺序选择）。

或者：

  1. 单击总线名称旁边的 Channels Assigned（已分配通道）。

  2. 在 Assign Channels（分配通道）对话框中，单击 Default Channel Order（默认通道顺序）。

  3. 单击 OK（确定）。

另请参见

  • 分配通道


设置默认数基

可以在创建总线时为其设置默认的数基。在插入列时，Sequence（序列）和 Macros（宏）选项卡中使用默认数基。如果更改某个现有总线或信号的默认数基，则默认数基只影响新的总线/信号列，Sequence（序列）和 Macros（宏）选项卡中不会显示数基更改。

  1. 从主菜单选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signals（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，单击 Display（显示），然后选择 Default Base（默认数基）。

  3. 要更改总线或信号的默认数基，请单击默认数基值，然后选择新的默认数基。


设置极性

可以使用负极性和正极性定义总线和信号。此设置仅影响码型发生器显示的值；使用它可以按不同的极性查看或输入矢量。

默认极性为正极性（1 = 高）。

  1. 从主菜单选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signals（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，单击 Display（显示），然后选择 Polarity（极性）。

  3. 在显示的 Polarity（极性）列中，在 +（正）和 －（负）之间切换选择。


添加用户注释

可以为总线和信号添加注释。注释显示在 XML 格式配置文件中。

  1. 从主菜单选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signals（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，单击 Display（显示），然后选择 Comment（注释）。

    将显示 Comment（注释）列。

  3. 在 Comment（注释）列中，为总线或信号输入注释。

注意：

注释是用于描述总线/信号名称细节的描述符，而不是记事本。注释最长为 256 个字符。


添加文件夹

使用 Add Folder（添加文件夹）... 功能可将 Windows 样式的文件夹添加到总线/信号列表。在使用多个总线/信号名称时，可使用文件夹来帮助组织总线和信号名称。

  1. 从主菜单选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signals（总线/信号）...。

  2. 右键单击总线/信号名称；然后选择 Add Folder（添加文件夹）...。

  3. 在 Add Folder（添加文件夹）对话框中，输入文件夹名称，然后单击 OK（确定）。

    新文件夹将出现在突出显示的总线/信号名称的正下方。可以像重命名总线/信号名称一样重命名文件夹。


对总线/信号名称排序

您可以对总线/信号名称和文件夹名称进行排序，以便更好地组织它们。

  1. 从主菜单选择 Setup（设置）> (Pattern Generator Module)（码型发生器模块）> Bus/Signals（总线/信号）...。

  2. 在 Pattern Generator Setup（码型发生器设置）对话框的 Buses/Signals（总线/信号）选项卡中，右键单击要排序的某个总线/信号或文件夹名称；然后选择 Sort（排序）> Ascending（升序）或 Sort（排序）> Descending（降序）。

另请参见

  • 添加文件夹


创建矢量序列

测试矢量确定每个时钟周期的码型输出。测试矢量位于称为序列的列表中。序列运行时，将以从第一个矢量到最后一个矢量的顺序执行矢量列表。矢量总是在时钟上升沿输出。

在每个码型发生器应用程序中，都可以拥有两个序列。INIT SEQUENCE（初始化序列）用于将您的电路或子系统置于一个已知状态中。初始化序列后便是 MAIN SEQUENCE（主序列）。主序列用于生成模拟电路测试的实际码型。INIT 序列（初始化序列）仅执行一次，对于 MAIN 序列（主序列），在开始重复执行后会循环执行。

使用硬件和软件指令

除测试矢量之外，INIT（初始化序列）和 MAIN （主序列）序列都可以包括预定义的指令元素。指令可以创建 Breaks、Loops、Wait for External Events or Arm，或者对另一个仪器 Send an Arm（发送臂板）信号。最有用的指令是 User-Defined Macro（用户定义的宏），利用此指令可以创建接受参数的可重用序列。在样机信号和环境测试中此灵活性非常有用。

有关 INIT（初始化序列）和 MAIN（主序列）以及如何创建这两个序列的详细信息，请参见以下主题。

  • 创建初始化序列
  • 创建主序列
  • 插入矢量和指令
    • 插入矢量
    • 插入 Break 指令
    • 插入 Wait External Event 指令
    • 插入 Send Arm 指令
    • 插入 Wait for Arm 指令
    • 插入 Start/End Loop 指令
    • 插入用户定义的宏指令
  • 使用自动生成的码型填充矢量
    • 使用固定码型填充
    • 使用计数码型填充
    • 使用交替码型填充
    • 使用切换码型填充
    • 使用伪随机码型填充
  • 编辑序列
    • 删除行
    • 剪切、复制和粘贴行
    • 剪切、复制和粘贴单元格文本
    • 剪切、复制和粘贴列
    • 转到行号
    • 选择行
    • 在矢量序列中导航
  • 编辑宏
    • 添加宏
    • 删除宏
    • 重命名宏
    • 复制宏
    • 定义宏参数
    • 在宏序列中使用参数
  • 设置矢量序列显示选项
    • 调整列宽度
    • 设置数基


创建初始化序列

初始化 (INIT) 序列是“Sequence”（序列）中显示的两个矢量序列中的第一个序列。使用 INIT 序列将电路或子系统放入一个已知的开始条件中。也可以使用 Send Arm 指令为逻辑分析仪或示波器提供 INIT 序列，以便在 MAIN 序列开始前开始进行测量。如果保留 INIT 序列为空，将忽略此序列。

创建 INIT 序列

INIT 序列可以包含硬件和软件指令以及矢量数据。不过，矢量的前两行不允许包含指令。

  1. 选择 Sequence（序列） 选项卡，然后选择 Init Start （初始化序列开始）。

  2. 选择 Insert Line After（在其后插入行）。

  3. 对每个要插入的新矢量行重复此操作。

  4. 要指定矢量数据，请在新的矢量行中选择最左侧的字符。

  5. 输入所需的矢量数据。输入数据时，默认光标换行设置将驱动光标从左向右移动。

  6. 可选 － 如果适用，请插入一个指令来代替输入矢量数据。

另请参见

  • 定义总线和信号
  • 编辑序列
  • 插入矢量和指令
  • 编辑宏
  • 运行和停止码型发生器输出


创建主序列

主序列是 Sequence（序列）中显示的两个矢量序列中的第二个序列。使用主序列作为主信号生成序列。主序列必须至少包含两个矢量用于输出。

主序列可以包含硬件和软件指令以及矢量数据。不过，矢量前两行或最后一行不允许包含指令。

  1. 选择 Sequence（序列）选项卡，然后选择 Main Start（主序列开始）。

  2. 选择 Insert Line After（在其后插入行）。

  3. 对每个要插入的新矢量行重复此操作。

  4. 要指定矢量数据，请在新的矢量行中选择最左侧的字符。

  5. 输入所需的矢量数据。输入数据时，默认光标换行设置将驱动光标从左向右移动。

  6. 可选 － 如果适用，请插入一个指令来代替输入矢量数据。

另请参见

  • 定义总线和信号
  • 编辑序列
  • 插入矢量和指令
  • 编辑宏
  • 运行和停止码型发生器输出


插入矢量和指令

矢量指定码型发生器输出的值。指令类似程序命令；它们控制矢量输出的流程。有两种类型的指令：硬件指令和软件指令。

插入某一行时，该行为具有 ditto 数据值的矢量（即，与前一矢量相同的值）。可以编辑数据值或将矢量更改为其他某个指令。

插入矢量

  • 插入矢量

插入硬件指令

硬件指令会影响码型发生器或外部硬件。

  • 插入 Break 指令
  • 插入 Wait External Event 指令
  • 插入 Send Arm 指令
  • 插入 Wait for Arm 指令

插入软件指令

软件指令仅影响当前运行的序列的执行流程（不过，“用户定义的宏”可能会包括硬件指令）。

  • 插入 Start/End Loop 指令
  • 插入用户定义的宏指令

指令规则

Sequence（序列）选项卡和 Macro（宏）选项卡的有效指令不尽相同：

有效指令
Sequence（序列）选项卡 | Macro（宏）选项卡
Start Loop/Stop Loop | Start Loop/Stop Loop
Break | Break
Macro | Macro
Wait for External Event | Wait for External Event
Send Arm |
Wait for Arm |

每种类型的指令何时可以使用也有相应的规则：

  • 指令不能位于 Init Start 或 Main Start 后面的下两行内，也不能在 Macro Start 后面的下一行内。

  • 指令不能位于 Main End 的上一行内。

  • Wait for External Events、Wait for Arm、Send Arm 和 Break 指令必须位于行首，后跟一行矢量。

  • Sequence（序列）选项卡中最多可有一条 Wait for Arm 指令和一条 Send Arm 指令。Macro（宏）选项卡不允许包含 Wait for Arm 指令或 Send Arm 指令。

另请参见

  • 创建初始化序列
  • 创建主序列
  • 使用自动生成的码型填充矢量
  • 编辑序列
  • 编辑宏


插入矢量

矢量指示码型发生器创建指定的码型。矢量行中的单元格是可编辑的。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其前或其后插入新矢量的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 如果矢量总线/信号数据值与上一个矢量相同，请保留 ditto 值；否则，请输入所需的总线/信号码型。

    通过剪切数据值单元格的内容，可将已编辑的数据值返回为 ditto 值。

另请参见

  • 使用自动生成的码型填充矢量


插入 Break 指令

遇到 Break 指令时，码型发生器将停止序列，并保留前一个矢量的输出，直到您选择继续或停止。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 Break（中断）。

使用限制

Break 指令必须跟在数据矢量之后。此外，序列的下列矢量行中不允许使用 Break 指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。
  • Macro 序列的第一个矢量。


插入 Wait External Event 指令

Wait External Event 指令暂停执行程序序列，直到码型发生器收到指定的 4 个事件 (A-D) 之一。

遇到此指令时，码型发生器将停止，直到发生指定的外部事件。外部事件都与时钟盒上的 Wait 2、Wait 1 和 Wait 0 输入通道相关。这些通道上的码型是从外部源（例如测试中的设备）接收的。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 Wait for External Event。

  4. 在 External Event 对话框中，选择 External Event (A-D)。

  5. 要定义外部事件，请选中可以发出该事件信号的 Wait 输入码型所对应的复选框。

    如果不选中任何复选框，则表示 None 或 Always Wait 事件，在这种情况下码型发生器一直等待，不会继续执行。

    小心：

    不能在“Always Wait”事件之后继续码型发生器输出。可以不使用 Always Wait 事件，而使用 Break 指令，这样可以在中断之后继续码型发生器输出。

    如果选中所有复选框，则表示 Any 或 Never Wait 事件，在这种情况下码型发生器不会等待。

  6. 单击 OK（确定）。

使用限制

和所有硬件指令一样，Wait External Event 必须跟在数据矢量之后。序列的下列矢量行中不允许使用 Wait External Event 指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。
  • Macro 序列的第一个矢量。


插入 Send Arm 指令

Send Arm 指令在执行该指令时创建 arming 信号。框架中的其他模块或外部仪器可以使用此 arming 信号。

  1. 在 Sequence（序列）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 Send Arm out to。

    以下对话框告诉您必须设置模块或外部触发器，以分别接收臂板信号。

  4. 单击 OK（确定），关闭此信息对话框。

  5. 设置臂板信号接收方（请参见使用一个模块的触发器触发另一个模块或触发其他仪器 － 向外触发）。

例如，可以设置当码型发生器到达特定行时触发逻辑分析仪。在此情况下，可以使用 Send Arm 指令设置该行，并设置逻辑分析仪在从码形发生器接收臂板信号时触发。

使用限制

和所有硬件指令一样，Send Arm 必须跟在数据矢量之后。此外，在一个序列中只能使用一次 Send Arm 指令，因此不允许在用户宏或重复循环中使用该指令。序列的下列矢量行中不允许使用 Send Arm 指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。

另请参见

  • 从其他模块/仪器触发和将触发器发送到其他模块/仪器


插入 Wait for Arm 指令

此指令暂停码型发生器，直到从指定模块收到臂板信号。

  1. 在 Sequence（序列）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 Wait for Arm in from。

  4. 在“Wait for Arm in from”对话框中，选择应收到其臂板信号的模块。

  5. 单击 OK（确定）。

使用限制

和所有硬件指令一样，Wait for Arm 必须跟在数据矢量之后。此外，在一个序列中只能使用一次 Wait for Arm 指令，因此不允许在用户宏或重复循环中使用该指令。序列的下列矢量行中不允许使用 Wait for Arm 指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。


插入 Start/End Loop 指令

Start Loop（开始循环）指令插入重复循环的开始矢量和结束矢量，以及一个空白数据矢量行。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 Start Loop（开始循环）。

  4. 在 Loop Count（循环次数）对话框中，输入循环重复的次数。

    在运行时，循环次数确定将循环体扩展为单个矢量的次数。

  5. 单击 OK（确定）。

  6. 编辑空白的数据矢量行。

  7. 将矢量和指令插入或复制到循环中。

如果从序列中将重复循环的开始矢量和结束矢量中的任一个移除，则将从序列中同时移除二者。

Start/End Loop 嵌套指令

此示例显示了嵌套循环。循环 [1] 是 walking ones 码型，重复 5 次。循环 [2] 是 all ones 的位模式，直接在循环 [1] 的 walking ones 码型中间重复两次。

使用限制

重复循环中不能使用下列指令：

  • Send Arm 指令。
  • Wait for Arm 指令。

另外，序列的下列矢量行中不允许使用 Start/End Loop 指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。
  • Macro 序列的第一个矢量。


插入用户定义的宏指令

宏与编程语言中的子例程相似。使用宏可以按名称定义一组矢量，从而在序列的不同点引用它们。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其前或其后插入指令的矢量。

  2. 单击 Edit（编辑），选择 Insert Line Before（在其前插入行）或 Insert Line After（在其后插入行）。

    按下键盘上的 Insert 键与选择 Insert Line Before（在其前插入行）的作用相同。

  3. 选择 Vector（矢量），然后选择 User-Defined Macro（用户定义的宏）。

  4. 在 Select User-Defined Macro（选择用户定义的宏）对话框中，选择要调用的宏，然后输入参数值。

    注意：

    必须将参数添加到宏才能在调用时为参数赋值。

    在输入参数值时，数字位数没有限制。例如，如果为某个参数输入 24 位数据，该参数用在 8 位总线上，则将忽略最高的 16 位。

  5. 单击 OK（确定）。

在运行时，用户定义的宏将扩展到其对应的矢量中。

使用限制

序列的下列矢量行中不允许使用用户定义的宏指令：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。
  • Macro 序列的第一个矢量。

另请参见

  • 编辑宏


使用自动生成的码型填充矢量

可以使用五个码型自动填充实用工具快速生成信号码形并将其插入到序列和用户定义的宏中。通过使用码型填充，不仅可以节约生成一般码型的时间，还可以保证序列的精确度。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，单击 Edit（编辑），然后选择 Fill（填充）...。

  2. 在 Fill（填充）对话框中，选择 Type of Fill（填充类型）和该类型的码型生成选项。请参见：

    • 使用固定码型填充
    • 使用计数码型填充
    • 使用交替码型填充
    • 使用切换码型填充
    • 使用伪随机码型填充

  3. 选择要在其中填充码形的 Bus/Signal（总线/信号）。

  4. 输入 Starting Line（起始行）。

  5. 输入 Vectors to Generate（要生成的矢量）数目。

  6. 选择 Edit Mode（编辑模式）：

    • Insert（插入） － 在所选序列行位置或之前插入。
    • Overwrite（覆盖） － 覆盖从所选序列行处开始的现有矢量。

  7. 单击 Fill（填充）。


使用固定码型填充

“固定”填充只使用给定码型，并按由矢量数指定的次数将其放置在序列电子表格中。

  1. 在 Fill（填充）对话框中，选择 Fixed（固定）填充类型。

  2. 在 Fixed Fill（固定填充）框中，选择数基，并输入要生成的码型。

  3. 指定其他填充选项（请参见使用自动生成的码型填充矢量）。


使用计数码型填充

“计数”填充用于创建递增或递减的矢量。

  1. 在 Fill（填充）对话框中，选择 Count（计数）填充类型。

  2. 在 Count Fill（计数填充）框中：

    1. 输入开始计数的 Starting Pattern（起始码型）。

    2. 输入 Count Frequency（计数频率），指定应用步长的频率。

      例如，如果频率为 4，则将有连续 4 个矢量具有相同码型，之后的 4 个矢量按步长值会有不同的码形。

    3. 输入 Count Step（计数步长），它指定每个矢量增加或减少的量。

  3. 指定其他填充选项（请参见使用自动生成的码型填充矢量）。


使用交替码型填充

可将“交替”填充理解为更改二进制值。例如，如果起始值为二进制值 0000 0001，且步长为 1，则下一个值为 0000 0010，再下一个值为 0000 0100。如果起始值为 0000 0001 且步长为 2，则下一个值为 0000 0100。

如果起始码型全部为 1 或全部为 0，则“交替”无效，“交替”填充和“固定”填充等同。

  1. 在 Fill（填充）对话框中，选择 Rotate（交替）填充类型。

  2. 在 Rotate Fill（交替填充）框中：

    1. 输入开始交替的 Starting Pattern（起始码型）。

    2. 输入 Rotate Frequency（交替频率），它指定交替发生的频率，也就是说，在交替导致更改值之前，保持不变的值的数量。

      例如，如果频率为 4，则将有连续 4 个矢量具有相同码型，其后的 4 个矢量将按步长值交替变化。

    3. 输入 Rotate Step（交替步长），它指定要交替的位数。

    4. 选择 Rotate Direction（交替方向）－ 左或右。

  3. 指定其他填充选项（请参见使用自动生成的码型填充矢量）。


使用切换码型填充

可将“切换”填充理解为更改二进制值。如果起始值为 0101 0101，步长为 1，则下一个值为 1010 1010。也就是说，所有 1 都转换为 0，反之亦然。

  1. 在 Fill（填充）对话框中，选择 Toggle（切换）填充类型。

  2. 在 Toggle Fill（切换填充）框中：

    1. 输入开始切换的 Starting Pattern（起始码型）。

    2. 输入 Toggle Frequency（切换频率），它指定切换发生的频率，也就是说，在切换导致更改值之前，保持不变的值的数量。

      例如，如果频率为 4，则将有连续 4 个矢量具有相同码型，将切换之后的 4 个矢量。

  3. 指定其他填充选项（请参见使用自动生成的码型填充矢量）。


使用伪随机码型填充

“伪随机”填充只生成伪随机码，并将其插入序列电子表格。

频率指定新的随机码的生成频率。

  1. 在 Fill（填充）对话框中，选择 Pseudo-Random（伪随机）填充类型。

  2. 在 Random Fill（随机填充）框中，输入 Random Frequency（随机频率），它指定新随机码的生成频率。

    例如，如果频率为 4，则将有连续 4 个矢量具有相同码型，之后的 4 个矢量为下一个随机数字。

  3. 指定其他填充选项（请参见使用自动生成的码型填充矢量）。


编辑序列
  • 删除行
  • 剪切、复制和粘贴行
  • 剪切、复制和粘贴单元格文本
  • 剪切、复制和粘贴列
  • 转到行号
  • 选择行
  • 在矢量序列中导航


删除行

小心：

在删除序列行时，会将其永久移除。如果要将其放在临时存储缓冲区，可对其执行剪切操作。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要删除的矢量序列行（请参见选择行）。

  2. 执行任一操作：按下键盘上的 Delete 键，单击右键并选择 Delete Line(s)（删除行），或者单击 Edit（编辑）并选择 Delete Line(s)（删除行）。

使用限制

不允许删除以下序列行：

  • Init Start（初始化序列开始）行。
  • Init End（初始化序列结束）行。
  • Main Start（主序列开始）行。
  • Main End（主序列结束）行。
  • Macro Start（宏开始）行。
  • Macro End（宏结束）行。

如果删除的结果是将非矢量指令放在下列行之一，则不会执行删除操作：

  • INIT 序列的第一个或第二个矢量。
  • MAIN 序列的第一个或第二个矢量。
  • MAIN 序列的最后一个矢量。
  • Macro 序列的第一个矢量。

如果删除会导致下列任一结果，则不会执行删除操作：

  • 使硬件指令紧跟在另一个非矢量指令之后。
  • 使主序列包含的数据矢量少于两个。

另请参见

  • 选择行


剪切、复制和粘贴行

注意：

执行 Cut（剪切）和 Copy（复制）操作时，实际上是将序列行放在临时存储缓冲区中。所有后续的 Paste（粘贴）操作都将从该存储缓冲区插入序列行，直到剪切或复制新行。执行 Delete（删除）操作时，不会将序列行放在临时缓冲区中；而只是将其删除。

剪切行

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要剪切的矢量序列行（请参见选择行）。

  2. 执行任一操作：按 Ctrl+x，单击右键并选择 Cut（剪切）> Line(s)（行），或者单击 Edit（编辑）并选择 Cut（剪切）> Line(s)（行）。

注意：

剪切（或删除）所有序列行会将序列重置为开机时的状态。

复制行

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要复制的矢量序列行（请参见选择行）。

  2. 执行任一操作：按 Ctrl+c，单击右键并选择 Copy（复制）> Line(s)（行），或者单击 Edit（编辑）并选择 Copy（复制）> Line(s)（行）。

粘贴行

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，将光标置于要粘贴到的行。（如果选择了多行，则将光标置于最后一行）。

  2. 执行任一操作：按 Ctrl+v，单击右键并选择 Paste（粘贴）> Line(s)（行），或者单击 Edit（编辑）并选择 Paste（粘贴）> Line(s)（行）。

使用限制

摘要规则如下：

  • 不能剪切、复制、粘贴或删除 Main Start（主序列开始）、Main End（主序列结束）、Init Start（初始化序列开始）、Init End（初始化序列结束）、Macro Start（宏开始）和 Macro End（宏结束）行。这些行是完全不可编辑的行。

另请参见

  • 选择行
  • 删除行
  • 剪切、复制和粘贴单元格文本
  • 剪切、复制和粘贴列


剪切、复制和粘贴单元格文本

剪切单元格文本

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过拖动、单击、按住 Shift 键或 Ctrl 键的同时单击单元格来突出显示要剪切的单元格。

  2. 执行任一操作：按 Ctrl+x，单击右键并选择 Cut（剪切）> Cell Text（单元格文本），或者单击 Edit（编辑）并选择 Cut（剪切）> Cell Text（单元格文本）。

复制单元格文本

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过拖动、单击、按住 Shift 键或 Ctrl 键的同时单击单元格来突出显示要复制的单元格。

  2. 执行任一操作：按 Ctrl+c，单击右键并选择 Copy（复制）> Cell Text（单元格文本），或者单击 Edit（编辑）并选择 Copy（复制）> Cell Text（单元格文本）。

粘贴单元格文本

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，选择要在其中粘贴单元格文本的单元格。（如果选择了多个单元格，则将在左上角的单元格中粘贴单元格文本。）

  2. 执行任一操作：按 Ctrl+v，单击右键并选择 Paste（粘贴）> Cell Text（单元格文本），或者单击 Edit（编辑）并选择 Paste（粘贴）> Cell Text（单元格文本）。

使用限制

摘要规则如下：

  • 在粘贴时，从非矢量行复制的单元格将变为“同上”字符。

  • 不能剪切、复制、粘贴或删除 Main Start（主序列开始）、Main End（主序列结束）、Init Start（初始化序列开始）、Init End（初始化序列结束）、Macro Start（宏开始）和 Macro End（宏结束）行中的单元格。这些行是完全不可编辑的行。

  • 如果剪切单元格的内容，其值将全部恢复为引号（“同上”字符）。

  • 在将值从一列复制到另一列时，该值将按所粘贴到的列的格式显示，即使这样会使所显示的数字不同也是如此。例如，如果从二进制列复制值“1111”，并将其粘贴到十六进制列，则该值显示为“F”。

  • 在将值从一列复制到另一列，但该值超出所粘贴到的列的范围，则会将粘贴缓冲区中最高的前几位截除。例如，如果从八位长的二进制列复制值“1234 5678”，并将其粘贴到四位长的二进制列，则粘贴的值为“5678”。

另请参见

  • 剪切、复制和粘贴行
  • 剪切、复制和粘贴列


剪切、复制和粘贴列

注意：

执行 Cut（剪切）和 Copy（复制）操作时，实际上是将列放在临时存储缓冲区中。所有后续的 Paste（粘贴）操作都将从该存储缓冲区插入列，直到剪切或复制新列。使用 Delete（删除）操作时，不会将列放在临时缓冲区中；而只是将其删除。

剪切列

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过单击、按住 Shift 键或 Ctrl 键的同时单击列顶部的总线/信号名称，选择要剪切的列。

  2. 执行任一操作：按 Ctrl+x，单击右键并选择 Cut（剪切），或者单击 Edit（编辑）并选择 Cut（剪切）。

复制列

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过单击、按住 Shift 键或 Ctrl 键的同时单击列顶部的总线/信号名称，选择要复制的列。

  2. 执行任一操作：按 Ctrl+c，单击右键并选择 Copy（复制），或者单击 Edit（编辑）并选择 Copy（复制）。

粘贴列

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过单击列顶部的总线/信号名称选择要粘贴的列。（如果选择了多列，则将在所选的最右侧一列处粘贴。）

  2. 执行任一操作：按 Ctrl+v，单击右键并选择 Paste（粘贴），或者单击 Edit（编辑）并选择 Paste（粘贴）。

删除列

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，通过单击、按住 Shift 键或 Ctrl 键的同时单击列顶部的总线/信号名称，选择要删除的列。

  2. 执行任一操作：按下键盘上的 Delete 键，单击右键并选择 Delete（删除）> Columns（列），或者单击 Edit（编辑）并选择 Delete（删除）> Columns（列）。


转到行号

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，执行任一操作：右键单击行中的任一部分并选择 Go To Line（转到行）...，或者单击 Edit（编辑）并选择 Go To Line（转到行）...。

  2. 在显示的 Goto Line（转到行）对话框中，输入所需的行号。

  3. 单击 OK（确定）。

另请参见

  • 在矢量序列中导航


选择行

可以选择矢量序列行，以对其执行编辑操作（例如删除、剪切、复制或粘贴）。

选择多行

  1. 在 Line #（行号）列中，通过单击、按住 Shift 键或 Ctrl 键的同时单击行号突出显示要选择的行。

选择所有行

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，单击 Edit（编辑），然后选择 Select All Lines（选择所有行）。

选择行范围

  1. 可使用 Select Lines（选择行）功能一次选择多行：

    1. 在 Sequence（序列）或 Macros（宏）选项卡中，单击 Edit（编辑），然后选择 Select Lines（选择行）。

    2. 在 Select Lines（选择行）对话框中，为要选择的行的范围输入起始行和结束行。

    3. 单击 OK（确定）。

另请参见

  • 删除行
  • 剪切、复制和粘贴行
  • 在矢量序列中导航


在矢量序列中导航

  • 在 Sequence（序列）或 Macros（宏）选项卡中，在键盘上按下下列某个键：

    按下的键 | 执行的操作
    Enter 键 | 移到当前所选单元格下方紧邻的单元格。如果当前单元格在序列的底部，则自动插入新行。
    Tab 键 | 移到当前所选单元格右侧紧邻的单元格。如果此单元格在最右侧，则移到下一行的最左侧单元格。
    Shift+Tab 键 | 移到当前所选单元格左侧紧邻的单元格。如果此单元格在最左侧，则移到上一行的最右侧单元格。
    箭头键 | 按箭头方向移动。
    Home | 移到序列的第一行。
    End | 移到序列的最后一行。
    Page Up | 向上滚动一屏数据。
    Page Down | 向下滚动一屏数据。
    Insert | 执行与选择 Insert Line Before（在其前插入行）时相同的操作。
    Delete | 执行与选择 Delete Line(s)（删除行）时相同的操作。

另请参见

  • 转到行号


编辑宏

宏 与编程语言中的子例程相似。如果希望在序列中的多个位置使用同一组矢量，则可将其定义为一个宏。

可以将参数值传递给宏。这可使宏在序列的不同位置点输出不同的矢量（取决于在调用中传递的参数值）。参数类似于可用于在宏序列中代替矢量值的变量。

注意：

宏参数中的位数不受限制。如果使用参数的总线/信号具有较少的位数，则将截断参数的最重要位。

宏通过用户定义的宏指令来调用。可将宏插入 Sequence（序列）选项卡中矢量的 INIT 或 MAIN 序列中，或是插入其他宏中（换句话说，嵌套）。

注意：

注意避免无限循环（宏 0 调用宏 1，宏 1 调用宏 0）。

在 Macros（宏）选项卡中插入指令、填充矢量以及编辑序列与在 Sequence（序列）选项卡中的操作基本一样，不同的是：

  • 可以在矢量数据字段中设置和清除参数。
  • 不能使用 Send Arm 和 Wait for Arm 指令。（这些指令在序列中仅可使用一次，宏在序列中可以调用多次。）

宏序列可以包含硬件和软件指令以及矢量数据。不过，第一个矢量行不允许包含指令。

码型发生器编译测试矢量时，宏和参数将扩展为一列展开的测试矢量。

  • 添加宏
  • 删除宏
  • 重命名宏
  • 复制宏
  • 定义宏参数
  • 在宏序列中使用参数

使用宏

  1. 创建宏，定义其参数（如果有的话）。

  2. 编辑宏序列。如果存在参数，请在所需矢量数据字段中设置这些参数。

  3. 向（主序列或其他宏序列中的）宏插入调用，请使用用户定义的宏指令。

另请参见

  • 插入矢量和指令
  • 使用自动生成的码型填充矢量
  • 编辑序列


添加宏

  1. 在 Macro（宏）选项卡中，单击 Add（添加）...。

  2. 在 Add Macro（添加宏）对话框中，输入新宏的名称。

  3. 单击 OK（确定）。

另请参见

  • 重命名宏
  • 删除宏
  • 复制宏
  • 定义宏参数
  • 在宏序列中使用参数


删除宏

  1. 在 Macro（宏）选项卡中，选择要删除的 Macro Name（宏名称）。

  2. 单击 Delete（删除）。


重命名宏

  1. 在 Macro（宏）选项卡中，选择要重命名的 Macro Name（宏名称）。

  2. 单击 Rename（重命名）...。

  3. 在 Rename Macro（重命名宏）对话框中，输入宏的新名称。

  4. 单击 OK（确定）。

另请参见

  • 添加宏
  • 删除宏
  • 复制宏
  • 定义宏参数
  • 在宏序列中使用参数


复制宏

可以使用一个宏的序列和参数覆盖另一个宏。使用此功能可创建与原始宏略微不同的新宏。

  1. 在 Macro（宏）选项卡中，单击 Copy（复制）...。

  2. 在 Copy Macro（复制宏）对话框中，选择 From macro（源宏）和 To macro（目标宏）的名称。

  3. 单击 OK（确定）。

另请参见

  • 添加宏
  • 删除宏
  • 重命名宏
  • 定义宏参数
  • 在宏序列中使用参数


定义宏参数

  1. 在 Macro（宏）选项卡中，选择要定义其参数的 Macro Name（宏名称）。

  2. 单击 Parameters（参数）...。

  3. 在 Parameters（参数）对话框中：

    • 单击 Add（添加）... 可添加参数并指定其名称。
    • 单击 Delete（删除）... 可删除参数。

  4. 定义完参数后，单击 OK（确定）。

另请参见

  • 添加宏
  • 删除宏
  • 重命名宏
  • 复制宏
  • 在宏序列中使用参数


在宏序列中使用参数

注意：

参数会替换数据矢量内部的数据字段，所以只能对现有数据矢量设置参数。不能对指令矢量设置参数。

设置参数

  1. 在 Macro（宏）选项卡中，选择要使用参数的数据字段。（将光标置于该位置。）

  2. 单击 Edit（编辑），然后选择 Set Parameter（设置参数）。

  3. 在 Select Parameter（选择参数）对话框中，选择要在数据字段中使用的参数。

  4. 单击 OK（确定）。

设置参数后，它将显示在相应的单元格中。请注意，参数以星号 * 开始，这与非参数值相区别。

清除参数

  1. 在 Macro（宏）选项卡中，选择包含要移除的参数的数据字段。

  2. 单击 Edit（编辑），然后选择 Clear Parameter（清除参数）。

清除参数后，当前所选单元格从参数恢复为值。（默认情况下，新值全由引号组成）。

另请参见

  • 插入用户定义的宏指令


设置矢量序列显示选项

Sequence（序列）和 Macros（宏）选项卡中均提供下列显示选项。

  • 调整列宽度
  • 设置数基
  • 更改列颜色
  • 更改列数据对齐方式


调整列宽度

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，将列分隔线拖到所需的列宽度。


设置数基

在 Sequence（序列）和 Macros（宏）选项卡中，总线/信号的数基显示在列标题中。

更改数基设置：

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，在要更改的列中单击数基按钮，然后选择新编号卡。


更改列颜色

在 Sequence（序列）和 Macros（宏）选项卡中，可以更改用于“矢量序列”列的前景色和背景色。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，右键单击总线/信号列标题，然后选择 Properties（属性）...。

  2. 在 Pattern Generator Properties（码型发生器属性）对话框的 Column Properties（列属性）选项卡中：

    1. 选择要对其应用更改的 Bus/Signal（总线/信号）列。

    2. 选择所需的 Foreground（前景色）和 Background（背景色）。

    3. 单击 OK（确定）。


更改列数据对齐方式

在 Sequence（序列）和 Macros（宏）选项卡中，可以更改“矢量序列”列中的数据对齐方式。

  1. 在 Sequence（序列）或 Macros（宏）选项卡中，右键单击总线/信号列标题，然后选择 Properties（属性）...。

  2. 在 Pattern Generator Properties（码型发生器属性）对话框的 Column Properties（列属性）选项卡中：

    1. 选择要对其应用更改的 Bus/Signal（总线/信号）列。

    2. 选择该列中数据的 Alignment（对齐方式）。

    3. 单击 OK（确定）。


运行和停止码型发生器输出

在控制码型发生器矢量输出时，可以执行以下操作：

  • Run（运行） － 使码型发生器输出矢量，输出时从“初始化序列”的第一行开始。“Run（运行）”仅执行一次“初始化序列”和“主序列”即停止。码型发生器输出保持在最后一个矢量，直到重置或重新运行。

  • Run Rep（重复运行） － 使码型发生器输出矢量，输出时从“初始化序列”的第一行开始。输出“主序列”中的所有矢量后，将继续从 Main Start（主序列开始）执行，而不是从 Init Start（初始化序列开始）执行。“初始化序列”只输出一次，“主序列”将重复输出，一直继续，直到将其停止。

  • Stop（停止） － 使当前的执行在当前矢量位置处停止。码型发生器输出保持在当前矢量，直到您继续执行、单步执行、重置或重新运行为止。

  • Step（单步执行）... － 打开 Single Step（单步执行）对话框。

    在 Single Step（单步执行）对话框中，您可以执行以下操作：

    • Step（单步执行） － 使码型发生器输出指定数量的矢量。

    • Reset（重置） － 使码型发生器重置到“初始化序列”的第一行。此操作只影响“Step（单步执行）”和“Resume（继续执行）”，因为“Run（运行）”始终从“初始化序列”的第一行开始。

    • Resume（继续执行） － 使码型发生器在最后输出的矢量之后继续输出矢量。如果系统在第一个矢量停止，则“Run（运行）”和“Resume（继续执行）”执行同一功能；否则执行会有所不同。

可以使用下列几种方法控制码型发生器矢量输出：

要执行的操作： | 在工具栏中单击： | 在 Setup（设置）对话框中单击： | 从 Run/Stop（运行/停止）> (PattGen Module)（PattGen 模块）菜单选择：
运行一次 |  | Run（运行） | Run（运行）
重复运行 |  | Run Rep（重复运行） | Run Repetitive（重复运行）
停止 |  | Stop（停止） | Stop（停止）
单步执行 |  | Step（单步执行）（在 Single Step（单步执行）对话框中） | Step（单步执行）
继续执行 |  | Resume（继续执行）（在 Single Step（单步执行）对话框中） | Resume（继续执行）
重置 |  | Reset（重置）（在 Single Step（单步执行）对话框中） | Reset（重置）


保存和载入码型发生器配置

可以将码型发生器设置（包括矢量）保存为 ALA 格式或 XML 格式配置文件。稍后，可以通过打开该配置文件来恢复设置。

  • 打开配置文件
  • 保存配置文件

ALA 格式配置文件

将配置保存为 ALA 格式文件时，所有设置信息都将保存到扩展名为 .ala 的文件中。保存内容有：总线/信号、时钟计时选项、矢量序列以及宏。

XML 格式配置文件

也可以将配置保存为 XML 格式文件。保存内容有：总线/信号、时钟计时选项和已编译的矢量序列。矢量序列中的循环、宏和“同上”字符不进行保存。（已编译的矢量序列实际上保存为 XML 格式配置文件引用的 PattGen 二进制 (PGB) 文件。）

从 XML 格式文件中载入码型发生器配置时，其过程类似于打开配置并导入 PGB 文件；即，如果要编辑矢量序列，必须单击 Pattern Generator Setup（码型发生器设置）对话框 Clocking（时钟计时）选项卡中的 Enable Sequence Editing（启用序列编辑）。


导出和导入矢量序列

  • 将矢量序列导出为 CSV 格式文件
  • 从 CSV 格式文件导入矢量序列
  • 导入 PattGen 二进制 (PGB) 格式文件
  • 转换 Agilent 16522A ASCII 文件
  • 转换 16700 系列 PGB 文件


将矢量序列导出为 CSV 格式文件

将码型发生器矢量序列导出为 CSV 格式文件，其过程与从任何逻辑分析仪显示窗口（Listing、Waveform 等）中导出数据是一样。实际上使用的是同一个 Export（导出）对话框；只不过所选择的导出源是码型发生器。

然而，需注意以下事项：

  • 码型发生器 CSV 文件仅描述了已编译的 数据；不包括 Loop（循环）、用户定义的宏或“同上”字符。

  • 所导出的第一行包含总线/信号名称。第二行包含盒索引和通道编号。然后导出的是初始化序列行，随后是主序列行。

  • 分隔符和指令行以星号 (*) 开头。

  • 所有矢量数据都以十六进制格式导出。

例如：

"MY BUS 1","MY BUS 2","MY SIGNAL 1","MY SIGNAL 2"
"Pod 1[7:0]","Pod 3[7:0], Pod 2[7:0]","Pod 4[0]","Pod 4[1]"
*Init Start,,,
FF,FFFF,1,1
EE,EEEE,0,0
*Wait for Arm in from "External Trigger",,,
DD,DDDD,1,1
CC,CCCC,0,0
*Init End,,,
*Main Start,,,
BB,BBBB,1,1
AA,AAAA,0,0
*Break,,,
99,9999,1,1
88,8888,0,0
*Wait for External Event A = (000 + 010 + 100 + 110),,,
77,7777,1,1
66,6666,0,0
*Send Arm out to "My 16910A-1" , "External Trigger",,,
55,5555,1,1
44,4444,0,0
*Main End,,,

另请参见

  • 码型发生器 CSV 文件格式


码型发生器 CSV 文件格式

码型发生器支持载入逗号分隔值 (CSV) 格式的文件。CSV 文件格式与其它应用程序（如类似 Microsoft Excel 之类的电子表格）兼容，并与类似 Listing 显示屏之类的其它 Agilent Logic Analyzer 应用程序窗口兼容。例如，您可以将 Listing 窗口中显示的数据以 CSV 文件形式导出，然后进行少许修改，将捕获的数据导入码型发生器中。

码型发生器 CSV 文件仅描述了码型发生器已编译的 数据。因此，CSV 文件不包括 Loop（循环）或“用户宏”指令，这些是软件 指令而不属于已编译的矢量数据。通过向 CSV 文件内直接插入相应矢量的方式展开或解开“用户宏”和 Loop（循环）。对“同上”字符来说则是个例外。导出 CSV 文件时，“同上”字符将替换为实际对应值。然而，导入 CSV 文件时，允许同上符号以“x”或“X”的形式表示单个“同上”字符。

码型发生器 CSV 的语法或文件格式相对简单。CSV 文件是一个 ASCII 文件，文件的每一行都是一列以逗号分隔的值。单个行之间由换行符分隔。逗号分开的值之间可以存在零个或多个空格字符。行也可以为空或仅包含空格。CSV 文件与使用 Microsoft Excel 导出的 CSV 格式文件在格式方面基本相同。使用 Agilent Logic Analyzer 应用程序导出的 CSV 格式文件也使用同一格式。CSV 语法的所有具体细节说明如下。

文件命名规定

码型发生器 CSV 文件以扩展名 *.csv 结尾。这一点与 Agilent Logic Analyzer 应用程序和 Microsoft Excel 一致。

CSV 示例文件

以下是一个码型发生器 CSV 示例文件：

"My Bus 1","My Bus 2","My Bus 3"
"Pod 1 [7:0]","Pod 2 [7:0]","Pod 3 [7:0]"
*Init Start
64,64,64
65,64,65
*Send Arm out to "External Trigger"
66,64,66
67,64,67
*Init End
*Main Start
68,64,68
69,64,69
6A,64,6A
*Wait for External Event A = (001 + 101 + 000)
6B,64,6B
6C,64,6C
*Wait for External Event A
6D,64,6D
6E,64,6E
*Wait for External Event B = (None)
6F,64,6F
70,64,70
*Wait for External Event C = (Any)
71,64,71
72,64,72
*Wait for Arm in from "My 1674x/5x-1"
73,64,73
74,64,74
75,64,75
76,64,76
*Break
77,64,77
78,64,78
*Main End

以上文件示例显示了码型发生器 CSV 文件的三个主要部分：“标签标题”、“初始化序列”和“主序列”。这些部分说明如下。

语法说明

  • 令牌（终端）带有下划线，例如：FOO
  • 非终端带有尖括号：<foo>
  • 强制选项加圆括号，每个选项以“|”分隔：(A | B | C)
  • 其后有“?”标记的为可选符号：<foo>?
  • 以“*”表示重复零次或多次（可选标记，可重复一次或多次）：(<foo>)*
  • 以“+”表示重复一次或多次：(<foo>)+
  • 字符串文字以单引号或双引号标注：“字符串文字”或‘字符串文字’

标签标题

文件顶端是标签标题部分（可选）。标签标题部分以一列使用逗号分隔的标签名称开头。标签名称必须唯一，否则将出错。如果标签名称内部包含空格，则名称必须包括在双引号内。否则，引号可有可无。如果标签标题部分丢失，则序列数据将应用到码型发生器中的现有标签。

标签名称下是标签定义。标签定义顺序与其上的标签名称顺序对应。因此，第一个标签定义应用到第一个标签名称，依次类推。标签定义的语法与标签的 XML 语法一致：

<label_definition> = <pod_assignment> (, <pod_assignment>)*
<pod_assignment>   = Pod <integer> [ <channels> (, <channels>)* ]
<channels>         = (<integer> | <integer> :<integer>)

其中：<integer> = 整数值

Pod 关键字后面的第一个整数是盒编号。在此语法内，盒编号为 1..N，其中 N 是模块中的最大盒数量。在 5 卡 16720A 码型发生器设置中，全通道模式下编号为从 1 至 30，半通道模式下编号为从 1 至 15。在 Bus/Signal Setup（总线/信号设置）对话框中，盒的编号规则是从底部到顶部、从右侧到左侧。通过使用基本索引编号而非框架中所包含的名称，命令的执行与如何配置框架无关。

以下是三个标签的一些示例：

示例 1："Pod 1 [7:0], Pod 2 [0:7]", "Pod 3 [1,2,3,4:6], Pod 4 [0:5,7:6]", "Pod 5 [0]"
示例 2：Pod1[0], Pod1[1], Pod2[7:0]
示例 3："Pod 1 [3,4,2:0]", "Pod 2 [0:2]", "Pod 3 [6:4], Pod 4 [1:2]"

请注意，每个标签的盒定义都指定了位置和顺序。因此，可以指定重新排序通道。指定的顺序始终是从最重要的位到最不重要的位。上面的示例 3 指定了按从 MSB（最重要的位）到 LSB（最不重要的位）的顺序为前三个标签分配位：

  • 第一个标签（共 5 个位）：Pod 1 的 5 个位的顺序为： 3,4,2,1,0
  • 第二个标签（共 3 个位）：Pod 2 的 3 个位的顺序为： 0,1,2
  • 第三个标签（共 5 个位）：Pod 3 的 3 个位的顺序为：6,5,4；Pod 4 的 2 个位的顺序为： 1,2

载入时会重新排列位顺序。即，数据在导入时重新排序。因此，如果重新排序标签，则载入后将重新排序模块中显示的数据，但标签不按重新排序后的顺序显示。标签重新排序仅是一种显示概念，导入重新排序将影响数据载入的顺序。

初始化序列

“标签标题”之后为“初始化序列”。“初始化序列”是必要的部分 － 即使没有“初始化序列”矢量也是如此。“初始化序列”以 *Init Start 指令开头，以 *Init End 指令结尾。“初始化序列”可以在其序列中包含 0 个或多个矢量或指令。所定义的每个标签的矢量之间由逗号和零个或多个空格分开。允许存在开头空格和结尾空格。多余结尾逗号作为空格对待。对于指令行来说这很重要，因为 Microsoft Excel 将生成一个类似以下内容的包含指令行的 CSV 文件：

*Init Start,,
64,64,64
65,64,65
66,64,66
67,64,67
*Init End,,

*Main Start,,
68,64,68
69,64,69

Microsoft Excel 尝试确保始终基于应用程序中的列数显示正确的逗号数目。因为以上示例包括三个列、每行包括 2 个逗号符号。因此，分析程序将忽略指令行的结尾逗号。

最后，如果指定的值大于对应标签的宽度，则仅对标签应用该值的最不重要的位。因此，如果值 FE 应用到仅有 4 个位宽度的标签，则对于该矢量标签将获得值 E。

主序列

“初始化序列”之后为“主序列”。“主序列”以 *Main Start 指令开头，以 *Main End 指令结尾。“主序列”可以在其序列中包含 2 个或多个矢量或指令。类似于“初始化序列”，所定义的每个标签的矢量之间由逗号和零个或多个空格分开。还允许存在开头空格和结尾空格以及结尾逗号，这一点也与“初始化序列”类似。

指令

所有码型发生器指令都以星号 (*) 符号开头。这表示一条指令。指令必须位于行的第一列内。因此，指令前面不能有任何逗号。以下是码型发生器 CSV 文件中支持的和不支持的指令列表：

支持的指令

*Init Start
*Init End
*Main Start
*Main End
*Break

*Wait for External Event (A | B | C | D) (= <event_desc>)?

   <event_desc> = ( (None | Any | <3dbn_list>) )
   <3dbn_list> = <wait_pattern> (+ <wait_pattern>)*

*Wait for Arm in from <module_list>?

   <module_list> = (<module_name> | 'External Trigger') (, <module_name> | 'External Trigger')*

*Send Arm out to <module_list>?

   (<module_name> | 'External Trigger') (, <module_name> | 'External Trigger')*

其中：

<wait_pattern> = 3 位二进制数（例如 001）
<ModuleName>   = 本地框架中的模块名称。
                 如果模块名称内部包含空格，
                 则名称必须包含在单引号或
                 双引号中。否则，引号可
                 有可无。

*Init Start、*Init End、*Main Start 和 *Main End 实际上不属于码型发生器指令。它们是用于划定码型发生器序列各部分界限的特殊指令。不过，CSV 分析程序将它们作为特殊指令对待。*Init Start、*Init End、*Main Start 和 *Main End 等所有这些指令在码型发生器内只能出现一次。另外，*Main Start 指令必须紧跟在 *Init End 指令之后。

  • Init Start 指令。Init Start 指令表示初始化序列开始。

  • Init End 指令。Init End 指令表示初始化序列结束。

  • Main Start 指令。Main Start 指令表示主序列开始。

  • Main End 指令。Main End 指令表示主序列结束。

其它指令 *Break、*Wait for External Event、*Wait for Arm in from 和 *Send Arm out to 均为可选指令。*Break 和 *Wait for External Event 指令的插入次数不限。*Wait for Arm in from 和 *Send Arm out to 指令最多只能插入一次。

  • Break 指令。Break 指令表示插入一条硬件 Break 指令。

  • Wait for External Event 指令。Wait for External Event 指令（可选）在结尾处使用 {} 语法（可选）定义所等待的事件。如果 Wait for External Event 指令没有定义事件，则将默认使用先前定义的事件值。至少应有一条 Wait for External Event 指令要定义等待事件。否则，事件将默认为码型发生器模型内存储的当前值。如果有多条 Wait for External Event 指令定义了同一事件（例如，出现两条“*Wait for External Event A = ...”），则文件中的最后一条定义有效，因此将会覆盖任何先前的定义。

  • Wait for Arm in from 指令。Wait for Arm in from 指令表示插入一条硬件 Wait for Arm in from 指令，用于等待码型发生器从（一个或多个）指定的模块中接收模块间信号，然后再继续。

  • Send Arm out to 指令。Send Arm out to 指令表示插入一条硬件 Send Arm out to 指令，用于指示对（一个或多个）指定的模块生成模块间信号，然后再继续。

不支持的指令

  • Loop
  • 宏
  • If

另请参见

  • 将矢量序列导出为 CSV 格式文件
  • 从 CSV 格式文件导入矢量序列


从 CSV 格式文件导入矢量序列

码型发生器 CSV 格式文件包含已编译的 数据（即，无循环、宏或“同上”字符）和总线/信号设置信息。（它们不包含时钟源或输出模式/频率设置信息。）

因为 CSV 格式在码型发生器和显示窗口（Waveform、Listing 等）中都是一样的，您可以将捕获的数据转换为码型发生器的矢量，方法是从显示窗口中将数据导出至一个 CSV 格式文件，然后将数据作为矢量导回码型发生器模块。

也可以将旧的 16522A 码型发生器 ASCII 格式文件转换为 CSV 格式文件（和 XML 格式设置文件），然后导入这些 CSV 格式矢量序列。

从逗号分隔值 (CSV) 格式文件中导入矢量序列：

  1. 从 Agilent Logic Analyzer 应用程序主菜单中，选择 File（文件）> Import（导入）...。

  2. 在 Import（导入）对话框中，选择 CSV Data For Pattern Generator（码型发生器的 CSV 数据），然后单击 OK（确定）。

  3. 在下一个 Import（导入）对话框中，选择或输入要导入的 CSV 文件的 File name（文件名）。

  4. 选择 Destination（目标）码型发生器模块。

  5. 单击 Open（打开）。

另请参见

  • 将矢量序列导出为 CSV 格式文件
  • 转换 Agilent 16522A ASCII 文件
  • 码型发生器 CSV 文件格式


导入 PattGen 二进制 (PGB) 格式文件

如果有 16700 系列逻辑分析系统的 PattGen 二进制 (PGB) 文件（并且已将其转换为 16900 系列格式），如果已创建了 16900 系列格式的 PGB 文件，或者如果在将码型发生器设置保存为 XML 格式配置文件时创建了 PGB 文件，则可以导入该文件以设置 16720A 码型发生器。

通常 PattGen 二进制文件由一组 ASCII 设置命令后跟二进制形式的输出矢量组成。PGB 文件不包含循环或宏。在全通道模式下，PGB 文件最多可以包含 8,388,608 个矢量，在半通道模式下，最多可以包含 16,777,216 个矢量。

小心：

导入 PattGen 二进制 (PGB) 文件会导致覆盖所有当前设置和序列信息。在开始导入前，请确保保存码型发生器配置。

从 PattGen 二进制 (PGB) 格式文件中导入矢量序列：

  1. 从 Agilent Logic Analyzer 应用程序主菜单中，选择 File（文件）> Import（导入）...。

  2. 在 Import（导入）对话框中，选择 Pattern Generator Binary（码型发生器二进制），然后单击 OK（确定）。

  3. 在下一个 Import（导入）对话框中，选择或输入要导入的 CSV 文件的 File name（文件名）。

  4. 选择 Destination（目标）码型发生器模块。

  5. 单击 Open（打开）。

  6. 如果要编辑导入的矢量序列，请单击 Pattern Generator Setup（码型发生器设置）对话框 Clocking（时钟计时）选项卡中的 Enable Sequence Editing（启用序列编辑）。

从 PGB 格式文件中导入数据后，即可将其保存至 ALA 格式配置文件或将其导出到逗号分隔值 (CSV) 格式数据文件中。


创建 PattGen 二进制文件

PattGen 二进制格式主要用于深度 (depth) 较大的 (>1048576) 矢量集合；CSV 格式（可通过转换 16522A ASCII 文件创建）可用于深度较小的集合。

可按以下方式创建 PattGen 二进制 (PGB) 格式文件：

  • 通过从 16700 系列逻辑分析系统转换 PGB 文件。

  • 通过将码型发生器设置保存至 XML 格式配置文件（将编译过的矢量序列保存至 XML 格式文件引用的 PGB 文件中）。

  • 通过使用程序来生成 PGB 格式的文件。

    可以通过某些工具（诸如 Verilog 模拟器）生成深度矢量集，并通过第三方工具或自行开发的转换实用工具将其转换为 PattGen 二进制文件。对于矢量、总线/信号名称等的更改应在原来生成矢量的工具（例如，Verilog）中进行。

生成 PattGen 二进制文件的示例代码

用于生成 PattGen 二进制文件的 Visual C++ 代码随 Agilent Logic Analyzer 应用程序一起安装，其目录如下：

C:\<安装路径>\Pattern Generator\Visual C++ Examples\

例如：

C:\Program Files\Agilent Technologies\Logic Analyzer\Pattern Generator\Visual C++ Examples\

其下有两个子目录，每个子目录都包含有自述文件、程序源代码、编译的可执行文件以及由程序生成的 PattGen 二进制文件：

  • SimplePGB － 有关如何生成 PattGen 二进制文件的简单示例。

  • CommandLinePGB － 更具通用性的示例（带有命令行选项）。

PattGen 二进制文件的要求和预先的注意事项

  • 文件必须仅包含指定的码型发生器命令，并以下列示例所示的顺序和格式显示。
  • 文件必须以二进制字节流格式创建。
  • 矢量数据必须完全为二进制数据。
  • 数据中不允许存在码型发生器指令。
  • 数据中不允许定义或调用码型发生器宏。
  • 总线/信号名称（标签）可以包含相邻的位或任意顺序的位。
  • 每个 ASCII 命令必须以行结束符（换行符 <LF> 或回车换行符 <CR><LF>）结束。
  • 第一个命令 (PGBINARY) 之后可以包括注释。
  • 注释以斜杠“/”开头并在行末尾结束。

PattGen 二进制示例

注意：

在此示例中，仅显示 ASCII 码型发生器命令。不显示二进制矢量数据。

PGBINARY
MODE FULL
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

注意：

在第 5 行到第 10 行中指定的 LABEL 顺序会产生特定的位分配结果。这些 LABEL 命令中的不同 POD 分配将对位的排列给出不同的顺序。


二进制文件命令

在 PattGen 二进制 (PGB) 格式文件中使用以下 ASCII 命令为文件末尾的二进制矢量数据设置码型发生器。不能以缩写的形式使用这些命令，也不能只输入命令的一部分字符。

命令

  • PattGen 二进制文件标识符
  • CLOCK
  • DELAY
  • MODE
  • LABEL
  • ORDER
  • WIDTH
  • DEPTH
  • BREAK
  • EVENT
  • WAITARM
  • WAITEXT
  • SENDARM
  • MAIN
  • DESTINATION
  • BEGIN
  • 二进制数据


PattGen 二进制文件标识符

PattGen 二进制文件的第一行必须包含文本字符串“PGBINARY”。此字符串用于将文件唯一标识为 PattGen 二进制文件。

示例

PGBINARY
MODE FULL
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


CLOCK 命令

CLOCK 命令为可选命令。如果未使用该命令指定时钟，则使用现有时钟方案。CLOCK 命令为码型发生器指定时钟源。

命令语法

CLOCK [ EXTERNAL | INTERNAL <floating_point_number> ]

EXTERNAL = 将时钟模式设置为外部计时。

INTERNAL = 将时钟模式设置为内部计时。

<floating_point_number> = 指定内部时钟频率。如果该数字 >= 1.0，则假定其表示频率（Hz）。如果该数字 < 1.0，则假定其表示一个时钟周期。

注意：

通道模式对最大时钟频率进行了限制。请参见 MODE 命令。

示例

PGBINARY
MODE FULL
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


DELAY 命令

DELAY 命令为可选命令。如果未使用该命令指定延迟则使用现有延迟方案。DELAY 命令指定时钟输出延迟。时钟输出延迟设置允许确定与数据有关的时钟位置。延迟设置范围为 0～14，每个增量在每个步长约使时钟延迟 500 ps。

注意：

零所对应的延迟设置为未校准设置。您必须测量该设置以确定基本时钟/数据时序。

命令语法

DELAY <delay_arg>

<delay_arg> = 整数（0 至 14），每个增量大约延迟时钟 500 ps。

示例

PGBINARY
MODE FULL
CLOCK INTERNAL 5e7   / 50 MHz.
DELAY 6
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


MODE 命令

MODE 命令为可选命令。如果未指定该命令则使用现有模式方案。全通道输出模式将数据频率限制为最大 180 MHz，但每张卡允许有 48 个通道。半通道输出模式所允许的最大输出频率为 300 MHz，但每张卡的通道数限制为 24。

命令语法

MODE [ FULL | HALF ]

示例

PGBINARY
MODE FULL
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


LABEL 命令

LABEL 命令用于设置 PattGen 二进制文件所使用的总线/信号名称。

POD 关键字后面的第一个 <integer> 是盒编号。盒编号为 1...N，其中 N 是卡集合中包含的盒数量。例如，在一个 5 卡码型发生器模块中，Full 通道模式下将有 30 个盒，而在 Half 通道模式下有 15 个盒。盒按照卡的顺序（从下到上）以及盒的顺序（从右到左）进行编号。

LABEL 命令使用盒索引编号而不是插槽与盒名称，因此不用考虑码型发生器模块的卡所在的插槽位置。

位按其重要性的递减顺序进行分配。

命令语法

LABEL <name_str> POD <integer> '[' <integer> | <integer> :<integer> {, ...}']' {, POD ...}

<name_str> = 总线/信号名称字符串（不超过 20 个字符）。名称字符串以字母 (A-Z, a-z) 或下划线 (_) 开头，后跟字母、下划线或数字 (0-9)。总线/信号名称不能是关键字。如果要使用关键字作为总线/信号名称，必须用引号将其括起来。

<integer> = 盒索引编号或位编号。

盒顺序和位顺序会影响数据的载入顺序。盒/通道的分配按 MSB（最重要的位） 到 LSB（最不重要的位） 的顺序指定，并影响数据载入 的方式。这一分配不会 导致重新排序 label（标签）。

示例

下图是如何将二进制文件导入码型发生器的示例。

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL Select0 POD 6 [7]
LABEL Select1 POD 6 [6]
LABEL IN_Bus0 POD 6 [5:2]
LABEL IN_Bus1 POD 6 [1,0], POD 5 [7:6]
LABEL IN_Bus2 POD 5 [5:2]
LABEL IN_Bus3 POD 5 [1,0], POD 4 [7:6]
LABEL OUT_Bus POD 4 [5:2]
WIDTH 7
DEPTH 4096
BEGIN
(二进制数据 ...)


关键字

以下是 PattGen 二进制文件中的关键字，不能将这些关键字用作标签。

  • A
  • B
  • BEGIN
  • BREAK
  • C
  • CLOCK
  • D
  • DELAY
  • DEPTH
  • EVENT
  • EXTERNAL
  • FULL
  • HALF
  • INTERNAL
  • LABEL
  • MAIN
  • MODE
  • NONE
  • ORDER
  • PGBINARY
  • POD
  • REPETITIVE
  • RMODE
  • SENDARM
  • SINGLE
  • WAITARM
  • WAITEXT
  • WIDTH


ORDER 命令

Order 命令为指定 label（标签）数据的显示顺序提供了一种可选的方法。如果未指定顺序，则假定为标签的定义顺序。如果 ORDER 命令仅包含所定义标签的子集（一部分），则随后的 BEGIN 命令仅引用 ORDER 命令中指定的标签。

命令语法

ORDER { <name_str> ... }

<name_str> = 标签字符串（最多 20 个字符）。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   // 50 MHz
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
ORDER "My Bus 6" "My Bus 5" "My Bus 4" "My Bus 3" "My Bus 2" "My Bus 1"
WIDTH 6
DEPTH 4096
BEGIN


WIDTH 命令

WIDTH 命令定义二进制数据的宽度（以字节为单位）。宽度由所定义的（或在 ORDER 命令中指定的）每个标签的总计大小（舍入到完整字节）来确定。文件中的数据字节总数必须为 (DEPTH * WIDTH)。必须在二进制数据部分开始之前定义 WIDTH。二进制数据部分也包含 width（宽度）值。这个额外包含的信息用作二进制数据的一种验证方式。

命令语法

WIDTH <integer>

<integer> = 二进制数据的宽度（字节数）。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


DEPTH 命令

DEPTH 命令定义了二进制数据中将包含的矢量数目。文件的二进制数据部分的字节总数必须为 (DEPTH * WIDTH)。必须在二进制数据部分开始之前定义 DEPTH。二进制数据部分也包含 depth（深度）值。这个额外包含的信息用作二进制数据的一种验证方式。

根据仪器可能所处的模式（FULL 或 HALF），DEPTH 具有以下限制。仅当 DESTINATION 为 HARDWARE_ONLY 或 HARDWARE_AND_SETUP 时才应用这些限制；否则会应用来自用户接口的常规序列规则。

FULL 通道模式

  • INIT 部分的矢量数目必须为偶数。
  • MAIN 部分的矢量数目必须为偶数。
  • 总深度最大为 8,388,608。
  • 总深度最小为 4, 096。

HALF 通道模式

  • INIT 部分的矢量数目必须为 4 的倍数。
  • MAIN 部分的矢量数目必须为 4 的倍数。
  • 总深度最大为 16,777,216。
  • 总深度最小为 4,096。

命令语法

DEPTH <integer>

<integer> = 二进制数据中的矢量数目。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


BREAK 命令

BREAK 命令用于在矢量编号 <整数> 上设置硬件 BREAK 指令。矢量编号从 0 到 DEPTH-1。

命令语法

BREAK <integer>

<integer> = 在其位置设置硬件 BREAK 指令的矢量。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
BREAK 100
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

注意：

BREAK 指令可放置在除第一个矢量或最后一个矢量之外的任何矢量位置。最后一个矢量指令用于实施单一重复的运行模式，其他指令不可在此处使用。尝试在最后一个矢量上或其后设置指令是错误的操作。


EVENT 命令

EVENT 命令在四个外部事件寄存器中的一个内设置码型。这些事件寄存器可在 WAITEXT 指令中指定。如果码型为 NONE，则等待此事件的操作将始终等待。如果码型为整数，则根据下表解释其值。

                      外部事件
整数               输入值
（十六进制）      WAITEXT_2    WAITEXT_1    WAITEXT_0

#H01          0            0            0
#H02          0            0            1
#H04          0            1            0
#H08          0            1            1
#H10          1            0            0
#H20          1            0            1
#H40          1            1            0
#H80          1            1            1

这些值可以通过 OR 合并在一起；例如，#H22 的值表示码型 ( 101 + 001 )。

命令语法

EVENT [ A | B | C | D ] [ NONE | <integer> ]

A, B, C, D = 四个外部等待事件寄存器。

NONE - 表示“始终等待”的值。

<integer> = 上表中的事件码型。

示例

PGBINARY
MODE FULL
RMODE SINGLE
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
EVENT A #H01
WAITEXT A 100
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


WAITARM 命令

WAITARM 命令用于在矢量编号 <整数> 上设置硬件指令。矢量编号从 0 到 DEPTH-1。一个配置中只能有一个 WAITARM 指令。

命令语法

WAITARM { [ <module_name> | "External Trigger" ] {, ...} } <integer>

<integer> = 在该矢量位置放置硬件 WAITARM 指令。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WAITARM "EXTERNAL TRIGGER" 200
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

注意：

WAITARM 指令可放置在除第一个矢量或最后一个矢量之外的任何矢量位置。最后一个矢量指令用于实施单一重复的运行模式，其他指令不可在此处使用。尝试在最后一个矢量上或其后设置指令是错误的操作。


WAITEXT 命令

WAITEXT 命令用于在矢量编号 <整数> 上设置硬件指令。矢量编号从 0 到 DEPTH-1。

命令语法

WAITEXT [ A | B | C | D ] <integer>

A, B, C, D = 外部等待事件。

<integer> = 在该矢量位置放置硬件 WAITEXT 指令。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
EVENT A #H01
WAITEXT A 100
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

注意：

WAITEXT 指令可放置在除第一个矢量或最后一个矢量之外的任何矢量位置。最后一个矢量指令用于实施单一重复的运行模式，其他指令不可在此处使用。尝试在最后一个矢量上或其后设置指令是错误的操作。


SENDARM 命令

SENDARM 命令用于在矢量编号 <整数> 上设置硬件 SENDARM 指令。矢量编号从 0 到 DEPTH-1。一个配置中只能有一个 SENDARM 指令。

命令语法

SENDARM <integer>

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
SENDARM 100
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)

注意：

SENDARM 指令可放置在除第一个矢量或最后一个矢量之外的任何矢量位置。最后一个矢量指令用于实施单一重复的运行模式，其他指令不可在此处使用。尝试在最后一个矢量上或其后设置指令是错误的操作。


MAIN 命令

MAIN 命令指定一个矢量编号，矢量集合的 MAIN 部分从该编号处开始。MAIN 矢量之前的矢量包含 INIT 部分。该部分默认为零（无 INIT 部分）。矢量编号从 0 到 DEPTH-1。

命令语法

MAIN <integer>

<integer> = 矢量集合的 MAIN 部分的起始编号。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


DESTINATION 命令

DESTINATION 命令指定 PGB 导入过程的目标。

命令语法

DESTINATION [ HARDWARE_ONLY | HARDWARE_AND_SETUP | SETUP_ONLY ]

HARDWARE_ONLY = 将 PGB 文件载入硬件。在此情况下，将把码型发生器设置为在运行前不执行编译和加载。

HARDWARE_AND_SETUP = 将 PGB 文件同时载入硬件和 Pattern Generator Setup（码型发生器设置）对话框的 Sequence（序列）选项卡中。

SETUP_ONLY = 将 PGB 文件仅载入 Pattern Generator Setup（码型发生器设置）对话框的 Sequence（序列）选项卡中。

默认值为 HARDWARE_ONLY。

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
EVENT A #H01
WAITEXT A 100
WIDTH 6
DEPTH 4096
DESTINATION HARDWARE_AND_SETUP
BEGIN
(二进制数据 ...)


BEGIN 命令

BEGIN 命令是文件中 ASCII 部分的最后一条命令。像其他命令一样，该命令以新行或注释结束。二进制数据紧跟在新行后面。

命令语法

BEGIN <新行> <二进制数据>

示例

PGBINARY
MODE FULL
RMODE SINGLE
CLOCK INTERNAL 5e7   / 50 MHz.
MAIN 0
LABEL "My Bus 1" POD 1 [7:0]
LABEL "My Bus 2" POD 2 [7:0]
LABEL "My Bus 3" POD 3 [7:0]
LABEL "My Bus 4" POD 4 [7:0]
LABEL "My Bus 5" POD 5 [7:0]
LABEL "My Bus 6" POD 6 [7:0]
WIDTH 6
DEPTH 4096
BEGIN
(二进制数据 ...)


二进制数据

“二进制数据”以一个八字节的值作为标题开头，该标题指示二进制数据中的 DEPTH 和 WIDTH。这些值必须与文件前面使用 ASCII 命令指定的 DEPTH 和 WIDTH 相匹配。这些值必须以大尾顺序的 32 位整数编写，换句话说，第一个字节是最重要的字节。其后是具体的二进制数据。

  • 4 字节 = depth（矢量数目）。
  • 4 字节 = width（每个矢量的字节数）。
  • (WIDTH * DEPTH) 字节 = 二进制数据。

每个矢量包含一个值，对应于在 ORDER 命令中定义或指定的每个 LABEL。每个 label（标签）所需的字节数为满足给定标签位宽度的最低字节整数。例如，一个 17 位宽度标签需要 3 个字节（24 位），一个 16 位宽度的标签需要 2 个字节（16 位）。

这些字节以大尾顺序排列。如果标签所包含的位数比对应于该标签写入的位数少（例如，使用 17 位标签接收 24 位数据），则将使用最不重要的位数并丢弃超出位宽度的那些最重要的位数。此数字必须符合已定义的或在 ORDER 命令中指定的标签所需的字节数。

在紧跟“BEGIN”的新行后面的文件保留长度必须为 (8 + DEPTH * WIDTH)。

如果为当前硬件中不存在的盒定义了 LABEL（例如，对于 1-卡型模块定义 POD 7），配置将被截断至适合长度并发出警告。


转换 Agilent 16522A ASCII 文件

如果有旧的 16522A 码型发生器 ASCII 格式文件（或如果已经以该格式创建 ASCII 文件），则可将其转换为用于 16720A 码型发生器的两个文件：

  • CSV 格式文件，包含矢量序列数据。
  • XML 格式文件，包含码型发生器时钟源及输出模式/频率设置信息。

可以创建 ASCII 文本文件并将其作为完整的码型发生器程序导入。通常，ASCII 文件包含一组设置信息、一组标签和通道信息以及一组码型发生器矢量数据。该文件必须以 ASCII 格式保存，且必须按下列过程的步骤 1 所示进行组织。

  1. 从 Windows Start（开始）菜单，选择 Start（开始）> All Programs（所有程序）> Agilent Logic Analyzer > Utilities（实用工具）> Pattern Generator（码型发生器）> 167xx Pattern Generator Ascii Translator（167xx 码型发生器 ASCII 转换器）。

  2. 在 Ascii File Translator（ASCII 文件转换器）对话框中，输入要转换的 16522A ASCII 文件的名称。

  3. 为转换输出的 169xx CSV 文件输入名称。

  4. 为转换输出的 169xx XML 文件输入名称。

  5. 单击 Convert（转换）。

  6. 转换执行完毕后，单击 Exit（退出）关闭 Ascii File Translator（ASCII 文件转换器）对话框。

  7. 按打开配置文件中的描述打开 XML 格式的配置文件。

  8. 按从 CSV 格式文件导入矢量序列中的描述导入 CSV 格式的矢量序列文件。


创建 ASCII 文件

可以使用任何 Windows、MS-DOS 或 UNIX 文本编辑器创建 ASCII 文件。ASCII 文件由文件标识符和三组信息组成。每组信息必须遵循指定的顺序。

  • ASCII 000000 － 必要的文件标识符（“ASCII”后接 5 个空格和 6 个零）。
    ASCDown － 可选。保留用于向后兼容。
  • 第 1 组（可选）
    • FORMat － 时钟、通道模式和延迟信息。
  • 第 2 组
    • LABel － 通道名称及数目。
  • 第 3 组
    • VECTor － 矢量数据及“重复”指示标记。

文件要求和预先注意事项

  • 文件必须仅包含指定的码型发生器命令，并以下列示例所示的顺序和格式显示。
  • 文件必须以 ASCII 或纯文本格式存储。
  • 矢量数据完全以十六进制形式表示。
  • 数据中不允许存在码型发生器指令。
  • 数据中不允许定义或调用码型发生器宏。
  • 所有标签都由相邻位组成。
  • 文件必须以行结束符（换行符 <lf> 或回车符加换行符 <CR><lf>）结束。
  • 第一行 (ASCII 000000) 之后可以包括注释。注释以斜杠“/”开头并在行末尾结束。

ASCII 文件示例

注意：

在此示例中，所添加的带有下划线的链接仅是为了便于访问相关文档，不能看作是实际磁盘文件中的文本（实际文本中没有下划线）。换行符“<lf>”在此仅作为显示之用，根据所用的计算机和文本编辑器，实际的形式可能是回车符后跟换行符“<CR><lf>”。

ASCII     000000 <lf>
/
/ This is a test of the ascii file
/
ASCDown<lf>
FORMat:MODE FULL<lf>
FORMat:CLOCk INTernal, 10E-9<lf>
LABel LAB1,8<lf>
LABel DATA,8<lf>
LABel TEST,9<lf>
LABel CLK,3<lf>
LABel BIG,12<lf>
/*
/* This is the beginning of the vector part
/*
VECTor<lf>
12 34 056 7 89A<lf>         / Some vectors
0 22 007 0 FFF<lf>
A0 33 000 1 111<lf>         /* Some more vectors */
*M<lf>
92 6F 000 1 FF0<lf>
CA CA 000 1 00F<lf>         // Even more vectors
*R 3<lf>
00 10 011 0 ABC<lf>

注意：

第 8 行到第 12 行中指定的 LABel 序列会产生特定的位分配。不同顺序的 LABel 命令将对位的排列给出不同的顺序。


ASCII 文件命令

在 16522A ASCII 格式文件中，使用以下命令设置码型发生器并定义矢量序列数据。命令不区分大小写。所列出的命令中使用小写字母仅是为了显示同一命令长短格式的区别。

命令的大写字母部分显示了使用每条命令时必须输入的部分。

命令

  • ASCII 磁盘文件标识符
  • ASCDown 命令
  • FORMat 命令
    • MODe
    • CLOCk
    • DELay
  • LABel 命令
  • VECTor 命令


ASCII 磁盘文件标识符

磁盘文件第一行必须包含文本字符串“ASCII      000000”。该字符串由文本“ASCII”后跟 5 个空格再加上 6 个零组成。此字符串用于将文件唯一标识为 ASCII 磁盘文件。

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


ASCDown 命令

ASCDown 命令以前用作载入 ASCII 文件的开始信号。执行此命令将导致清除当前码型发生器标签和序列结构并将其重置为默认状态。Agilent 16720A 码型发生器现在可自动完成这一过程。

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


FORMat:MODe 命令

FORMat:MODe 命令为可选命令。如果未指定该命令则使用现有模式方案。全通道输出模式将数据频率限制为最大 180 MHz，但每张卡允许有 48 个通道。半通道输出模式允许 180 MHz 以上的输出频率，但每张卡的通道数限制为 24。

命令语法

FORMat:MODe [FULL|HALF]

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


FORMat:CLOCk 命令

FORMat:CLOCk 命令为可选命令。如果未使用该命令指定时钟，则使用现有时钟方案。CLOCk 命令为码型发生器指定时钟源。

命令语法

FORMat:CLOCk INTernal, <clk_period>

<clk_period> = 实数值，对应着可选接口时钟周期值（例如 = 5E-9）。

FORMat:CLOCk EXTernal, [LEFifty|GTFifty|GTONe]

[LEFifty] = 小于等于 50 MHz。

[GTFifty] = 大于 50 MHz 且小于等于 180 MHz。

[GTONe] = 大于 180 MHz。

注意：

通道模式对最大时钟频率进行了限制。请参见 FORMat:MODe 命令。

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
FORMAT:CLOCK INTERNAL, 10E-9
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


FORMat:DELay 命令

FORMat:DELay 命令为可选命令。如果未使用该命令指定延迟则使用现有延迟方案。DELay 命令指定时钟输出延迟。时钟输出延迟设置允许确定与数据有关的时钟位置。延迟设置范围为 0～14，每个增量在每个步长约使时钟延迟 500 ps。

注意：

零所对应的延迟设置为未校准设置。您必须测量该设置以确定基本时钟/数据时序。

命令语法

FORMat:DELay <delay_arg>

<delay_arg> = 整数（0 至 14），每个增量大约延迟时钟 500 ps。

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
FORMAT:CLOCK INTERNAL, 10E-9
FORMAT:DELAY 2
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


LABel 命令

LABel 命令是指定 ASCII 文件所用标签的一种特殊手段。标签位在输出盒中按从最重要的位到最不重要的位的顺序进行分配。必须指定标签字符串（可在字符串上添加括号）和字段宽度。标签库默认为十六进制。最多有 126 标签。标签不能超过 32 位宽度。如果相对于余下未使用的码形发生器位数，标签过宽（位数过多），则将丢弃该标签。

命令语法

LABel <name_str>,<width>

<name_str> = 标签字符串（最多 20 个字符）。

<width> = 以整数表示的标签位数（1 至 32）。

示例

ASCII     000000
ASCDOWN
FORMAT:MODE FULL
LABEL LAB,8
LABEL DATA,8
LABEL "TEST",9
LABEL CLK,3
LABEL BIG,12
VECTOR
12 34 56 7 89A
0 22 7 0 FFF
A0 33 00 1 111
*M
92 6F 00 1 FF0
CA CA 00 1 00F
00 10 11 0 ABC


VECTor 命令

VECTor 命令用在 header/setup 命令的末尾，表示 ASCII 文件中实际的码型发生器数据的开始。VECTor 命令所在的行不允许包含任何数据。

示例

矢量数据

ASCII 文件的数据部分包含一组十六进制数据字段。该组的每一行对应主程序中的一行。组中的每一列对应码型发生器 Buses/Signals（总线/信号）选项卡中定义的单个标签。

数据字段以一个或多个空格字符分隔。行结束符（换行符或回车换行符 + 换行符）表示行的结束和新行的开始。如果数据字段包含的数据超出标签宽度指定的数据，将只使用最低位的数据字段。如果行中的数据字段超出标签数，将忽略多余的数据字段（行末尾的数据字段）。如果行中的数据字段少于标签数，则（最右侧的）多余标签的数据为零。

主序列必须包含至少两个数据行。在 ASCII 数据文件中，仅包含“*M”信号的一行表示主序列的开始。如果 INIT 序列不包含任何数据，则文件中 VECTor 命令之后的第一行必须为“*M”。请注意，文件中并非真的包含“*M”中的引号。

小心：

将忽略不是有效的十六进制数字（即 0 至 9，或大写/小写的 A 至 F）的任何字符，并将其视为字段分隔符。如果数据值中出现误键入的字符，可能会导致问题。例如，“12R4”将被分为“12”和“4”，分别分配到两个标签。

INIT 序列或 MAIN 序列都可以包含由“*R <count>”指定的多个“重复”指示符。请注意，“重复”指示符旁边的引号并非该指示器符的一部分，和“*M”一样，“*R <count>”必须位于单独的行中。

“重复”指示符指定将前面的数据矢量重复 <count> 次，其中，<count> 为正整数。“重复”指示符必须跟在包含数据矢量或另一个“重复”指示符的序列行之后。如果将“重复”指示符放在 VECTor 命令或“*M”之后，将会显示错误消息。

文件的最后一行数据必须以行结束符结束。行结束符是将数据行载入数据结构的标志。如果不这样做，将会导致无法加载最后一行数据。

ASCII 文件导入机制假定数据文件和所有 header 命令都是正确的。错误处理属于基本处理，在分析文件时，将未知字符视为字段分隔符可能会产生奇怪的结果。错误消息指向分析程序找到错误的行号。

严重错误将导致加载默认主程序，以尽量避免锁定逻辑分析系统。


转换 16700 系列 PGB 文件

如果有 16700 系列逻辑分析系统的 PattGen 二进制 (PGB) 文件，则可以将其转换为可在 16900 系列逻辑分析系统中使用的 PGB 文件。

  1. 从 Windows Start（开始）菜单，选择 Start（开始）> All Programs（所有程序）> Agilent Logic Analyzer > Utilities（实用工具）> Pattern Generator（码型发生器）> 167xx Pattern Generator PGB Translator（167xx 码型发生器 PGB 转换器）。

  2. 在 PGB File Translator（PGB 文件转换器）对话框中，输入要转换的 167xx PGB 文件的名称。

  3. 为转换输出的 169xx PGB 文件输入名称。

  4. 选择所需的 Destination（目标）选项。所输出的 169xx PGB 文件中将插入一条 DESTINATION 命令，指定导入 PGB 文件时矢量的放置位置：

    • Hardware Only（仅硬件）— 将矢量导入码型发生器模块的硬件（内存）中。在此情况下，将把码型发生器设置为在运行前不执行编译和加载。

    • Setup Only（仅设置）— 将矢量导入 Pattern Generator Setup（码型发生器设置）对话框的 Sequence（序列）选项卡中。

    • Hardware and Setup（硬件和设置）— 将矢量同时导入码型发生器模块的硬件（内存）和 Pattern Generator Setup（码型发生器设置）对话框的 Sequence（序列）选项卡中。

  5. 单击 Convert（转换）。

  6. 转换执行完毕后，单击 Exit（退出）关闭 PGB File Translator（PGB 文件转换器）对话框。

  7. 按照导入 PattGen 二进制 (PGB) 格式文件中的描述导入 PGB 文件。

16700 系列与 16900 系列在 PGB 格式方面的差异

16700 系列 PGB | 16900 系列 PGB
盒编号顺序为从顶部板卡到底部板卡，从左侧盒到右侧盒。 | 盒编号顺序为从底部板卡到顶部板卡，从右侧盒到左侧盒。
盒编号从 0 开始。 | 盒编号从 1 开始。
在半通道模式下，探头盒从 0 开始顺序编号（即，0、1、2、...）。 | 在半通道模式下，盒编号不会改变（即 5、3、1）。
WAIT [A|B|C|D] <integer> | WAITEXT [A|B|C|D] <integer>
WAIT IMB <integer> | WAITARM "EXTERNAL TRIGGER" <integer>
SIGNAL <integer> | SENDARM <integer>


码型发生器参考

  • 关键特性


关键特性

特性 | 16720A 码型发生器
输出通道： | 300 MHz 时钟频率，每张卡 24 个通道（半通道模式）； 180 MHz 时钟频率，每张卡 48 个通道（全通道模式）。
内存深度： | 半通道模式下为 16,777,216 个矢量； 全通道模式下为 8,388,608 个矢量。
逻辑电平（数据盒）： | TTL、三态 TTL/3.3v、三态 TTL/CMOS、ECL/PECL/LVPECL 端接、ECL 非端接以及差分 ECL（不带盒）。
数据输入： | 3 位码型电平传感（时钟盒）。
时钟输出： | 与输出数据同步，在 14 个步长内延迟 7 ns（时钟盒）。
时钟输入： | 直流电 至 300 MHz（时钟盒）。
内部时钟周期： | 可在 1 MHz 至 300 MHz 范围内编程设定（以 1 MHz 为步长）。
外部时钟周期： | 直流电到 300 MHz
外部时钟占空比： | 最低高电平时间 1.3 ns。
“Wait”事件码型最大数： | 4


码型发生器控制，COM 自动控制

Agilent Logic Analyzer 应用程序中包含 COM Automation Server。可以使用该软件编写通过局域网 (LAN) 内的远程计算机来控制 Agilent Logic Analyzer 应用程序的程序。

在 COM 自动控制程序中，可以通过以下方式配置码型发生器模块：

  • 载入配置文件（该文件包含逻辑分析仪的完整设置配置）。

  • 使用模块对象的 DoCommands 方法并指定 XML 格式字符串参数（请参见码型发生器设置，XML 格式）。

有关模块配置的信息，可以通过 Module 对象的 QueryCommand 方法获得。下面的表格中列出了码型发生器模块所支持的查询。

有关逻辑分析仪 COM 自动控制和工具对象的全面信息，请参见 COM 自动控制。

支持的基于 XML 的查询

码型发生器模块支持下列基于 XML 的查询（通过模块对象的 QueryCommand 方法来执行）。

查询 | 说明
GetAllSetup | 使用完整的标签集返回当前设置，用于编写一般配置文件（请参见 XML 格式 <Module> 元素）。
GetBusSignalSetup | 仅返回 BusSignalSetup 设置（请参见 XML 格式 <BusSignalSetup> 元素）。
GetClockingSetup | 仅返回 ClockingSetup 设置（请参见 XML 格式 <ClockingSetup> 元素）。
GetModule | 使用完整标签集返回当前设置，等同于 GetAllSetup（请参见 XML 格式 <Module> 元素）。

另请参见

  • COM 自动控制
  • 码型发生器设置，XML 格式


码型发生器设置，XML 格式

在将逻辑分析仪配置保存为 XML 格式文件时，其中包括了码型发生器模块的设置信息。

当编写可通过远程计算机控制码型发生器的 COM 自动控制程序时，也需使用此 XML 格式的设置信息。

码型发生器模块的 XML 元素的层级结构如下：

<Module>
   <BusSignalSetup>
      <BusSignals>
         <BusSignal>
            <Channels>
   <ClockingSetup>
      <Clocking>
   <SequenceSetup>
      <Sequence>

另请参见

  • XML 格式
  • 码型发生器控制，COM 自动控制


<BusSignal> 元素

<BusSignal> 元素包含码型发生器总线/信号定义。

属性

名称 | 说明
Comment | '字符串'
DefaultBase | 'Binary'、'Hex'、'Octal'、'Decimal' 或 'Signed Decimal'
Name | '字符串'
Polarity | 'Positive' 或 'Negative'

子元素

此元素可有下列子元素：<Channels>。

父元素

此元素可有下列父元素：<BusSignals>。

示例

<BusSignals>
   <Clear />
   <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
      <Channels>Pod 1[7:0]</Channels>
   </BusSignal>
</BusSignals>


<BusSignals> 元素

<BusSignals> 元素包含码型发生器总线/信号定义。

子元素

此元素可有下列子元素：<Clear/>、<BusSignal>。

父元素

此元素可有下列父元素：<BusSignalSetup>。

示例

<BusSignalSetup>
   <BusSignals>
      <Clear />
      <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
         <Channels>Pod 1[7:0]</Channels>
      </BusSignal>
   </BusSignals>
</BusSignalSetup>


<BusSignalSetup> 元素

<BusSignalSetup> 元素包含 <BusSignals> 元素。

子元素

此元素可有下列子元素：<BusSignals>。

父元素

此元素可有下列父元素：<Module>。

示例

<Module Name='My 16720A-1'>
   <BusSignalSetup>
      <BusSignals>
         <Clear />
         <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
            <Channels>Pod 1[7:0]</Channels>
         </BusSignal>
      </BusSignals>
   </BusSignalSetup>
   <ClockingSetup>
      <Clocking OutputMode='Full' ClockSource='Internal' ClockFrequency='180' ClockOutDelay='0 s' />
   </ClockingSetup>
   <SequenceSetup>
      <Sequence FileName='s2p01of01.pgb' />
   </SequenceSetup>
</Module>


<Channels> 元素

<Channels> 元素指定分配到总线/信号的码型发生器通道。

数据

该元素的数据为代表总线/信号的所选通道的字符串（如用户接口中所示 － 请参见在已分配的通道中重新排列位）。

父元素

此元素可有下列父元素：<BusSignal>。

示例

<BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
   <Channels>Pod 1[7:0]</Channels>
</BusSignal>


<Clocking> 元素

<Clocking> 元素描述码型发生器时钟计时设置配置选项。

属性

名称 | 说明
ClockFrequency | '整数'（单位为 MHz，表示当前所选模式下的矢量输出频率，仅当 ClockSource='Internal' 时有效）
ClockOutDelay | '数字 时间单位'
ClockSource | 'External' 或 'Internal'
OutputMode | 'Full' 或 'Half'

父元素

此元素可有下列父元素：<ClockingSetup>。

示例

<ClockingSetup>
   <Clocking OutputMode='Full' ClockSource='Internal' ClockFrequency='180' ClockOutDelay='0 s' />
</ClockingSetup>


<ClockingSetup> 元素

<ClockingSetup> 元素包含描述码型发生器时钟计时设置配置选项的元素。

子元素

此元素可有下列子元素：<Clocking>。

父元素

此元素可有下列父元素：<Module>。

示例

<Module Name='My 16720A-1'>
   <BusSignalSetup>
      <BusSignals>
         <Clear />
         <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
            <Channels>Pod 1[7:0]</Channels>
         </BusSignal>
      </BusSignals>
   </BusSignalSetup>
   <ClockingSetup>
      <Clocking OutputMode='Full' ClockSource='Internal' ClockFrequency='180' ClockOutDelay='0 s' />
   </ClockingSetup>
   <SequenceSetup>
      <Sequence FileName='s2p01of01.pgb' />
   </SequenceSetup>
</Module>


<Module> 元素

<Module> 元素描述码型发生器配置选项。

属性

名称 | 说明
Name | '字符串'

子元素

此元素可有下列子元素：<BusSignalSetup>、<ClockingSetup>。

父元素

此元素可有下列父元素：<Setup>（在 Configuration 下）。

示例

<Module Name='My 16720A-1'>
   <BusSignalSetup>
      <BusSignals>
         <Clear />
         <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
            <Channels>Pod 1[7:0]</Channels>
         </BusSignal>
      </BusSignals>
   </BusSignalSetup>
   <ClockingSetup>
      <Clocking OutputMode='Full' ClockSource='Internal' ClockFrequency='180' ClockOutDelay='0 s' />
   </ClockingSetup>
   <SequenceSetup>
      <Sequence FileName='s2p01of01.pgb' />
   </SequenceSetup>
</Module>


<Sequence> 元素

<Sequence> 元素引用已编译的矢量序列 PattGen 二进制 (PGB) 文件。

属性

名称 | 说明
FileName | '字符串'（PGB 文件名称）

父元素

此元素可有下列父元素：<SequenceSetup>。

示例

<SequenceSetup>
   <Sequence FileName='s2p01of01.pgb' />
</SequenceSetup>


<SequenceSetup> 元素

<SequenceSetup> 元素包含引用已编译的矢量序列 PattGen 二进制 (PGB) 文件的元素。

子元素

此元素可有下列子元素：<Sequence>。

父元素

此元素可有下列父元素：<Module>。

示例

<Module Name='My 16720A-1'>
   <BusSignalSetup>
      <BusSignals>
         <Clear />
         <BusSignal Name='My Bus 1' Polarity='Positive' DefaultBase='Hex' Comment=''>
            <Channels>Pod 1[7:0]</Channels>
         </BusSignal>
      </BusSignals>
   </BusSignalSetup>
   <ClockingSetup>
      <Clocking OutputMode='Full' ClockSource='Internal' ClockFrequency='180' ClockOutDelay='0 s' />
   </ClockingSetup>
   <SequenceSetup>
      <Sequence FileName='s2p01of01.pgb' />
   </SequenceSetup>
</Module>