Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
基本 CAMAC 的单机箱控制器模型适用于简单的数据采集,但在几个重要场景中存在局限性。在双端口内存应用中,一台控制器将数据写入内存模块,而第二台控制器读取数据以供传输,避免了单控制器的数据缓冲瓶颈。在在线/离线处理中,一台控制器以完整触发率处理实时数据采集,而第二台控制器执行较慢的分析、直方图绘制或数据压缩,不占用实时处理周期。在诊断和校准系统中,维护控制器可以在主数据采集控制器继续正常运行的同时,访问机箱中任何模块进行测试和校准。在多实验配置中,两个独立实验可以共享一个机箱模块,每个实验由其自己的机箱控制器控制,仅访问分配给它的一组模块。
IEC 61958 通过定义 CAMAC 数据路上冲突解决和控制器切换的标准协议,将这些用例正式化。没有这一标准化,多控制器实现将是专有的、在不同制造商之间不兼容的。该标准使得可以从不同供应商的组件组装多处理器 CAMAC 系统成为可能,大幅扩展了 CAMAC 的应用范围。
| 参数 | 单控制器(IEC 60516) | 多控制器(IEC 61958) |
|---|---|---|
| 最大控制器数 | 1 | 8 |
| 控制器优先级分配 | 不适用(仅一台控制器) | 硬件决定优先级(1 = 最高,8 = 最低) |
| 数据路主控权转移时间 | 不适用 | <1 µs(数据路周期之间) |
| 控制器寻址 | 站 25(固定) | 站 25 + 每台控制器的 N 开关设置 |
| 控制器间通信 | 不适用 | 通过机箱数据路或专用控制线 |
| LAM(中断)处理 | 单 LAM 分级器 | 共享 LAM 分级器,带控制器特定屏蔽 |
| 典型模块访问吞吐量 | 每个 CAMAC 周期约 1 µs | 每个 CAMAC 周期约 1 µs(无争用时无额外开销) |
IEC 61958 定义了两种基本类型的机箱控制器:主控制器(在某些文献中也称为”A”型控制器),具有最高优先级,通常是主数据采集控制器;以及辅助控制器(”B”型),具有较低优先级,承担诊断监测、校准或数据压缩等特定功能。主控制器可以在总线空闲时随时断言数据路的主控权。辅助控制器必须请求主控权并等待主控制器授予访问权限。优先级由机箱中的位置(站号)决定 — 在配置为控制器的站中,编号最低的站中的控制器具有最高优先级。这种硬件决定的优先级方案确保确定性行为,无需软件配置。
标准还定义了优先级中断(PI)机制,允许高优先级控制器通过断言数据路上的 BUSY 线在数据块传输过程中抢占低优先级控制器。低优先级控制器必须在检测到 PI 请求后的一个 CAMAC 周期内交出总线。这使时间关键型操作 — 例如在其内部采样保持电容开始衰减之前读取 ADC — 能够在优先级上优于不那么时间敏感的操作。
IEC 61958 定义的数据路仲裁协议采用分布式菊花链方式。每台控制器有一个专用的总线请求(BRQ)输出和一个总线授予(BGT)输入,通过机箱背板上的菊花链从最高优先级站连接到最低优先级站。当控制器需要访问数据路时,它断言其 BRQ 线。总线授予信号从最高优先级控制器开始向下传播。每台控制器如果有挂起的总线请求则阻止授予信号通过;否则,将授予信号传递给链中的下一台控制器。收到授予信号且有挂起请求的控制器成为总线主控,可以开始 CAMAC 周期。
IEC 61958 规定通过每台控制器的总线授予传播延迟不得超过 25 ns,确保完整的仲裁周期(授予链中最多 8 台控制器)在数据路周期间间隙内完成。标准还定义了公平机制 — 刚刚完成数据路周期的控制器必须等待至少一个空闲周期才能重新断言其总线请求,防止单个高优先级控制器无限期独占数据路。
在多控制器机箱中,控制器经常需要交换状态信息、同步信号和数据。IEC 61958 定义了多种控制器间通信机制。共享内存方法使用标准 CAMAC 内存模块(通常为 24 位宽 RAM 模块),任何获得总线主控权的控制器都可以访问该模块。邮箱寄存器方法使用专用的控制器寄存器,这些寄存器表现为 CAMAC 站,可被其他控制器读写。标准还定义了用于控制器间中断信令的LL(注意锁定)机制,一台控制器可通过写入特定控制寄存器向另一台控制器生成 LAM。
IEC 61958 所实现的最强大应用之一是使用双端口内存模块的流水线数据采集。在此配置中,控制器 A(主控制器,最高优先级)在束流门期间从 ADC 模块读取数据,并将其写入双端口 CAMAC 内存模块。控制器 B(辅助控制器)在束流间隔期间从内存模块的另一端口读取数据,进行处理(格式化、压缩、直方图绘制),并通过单独的链路发送到主机计算机。这种流水线架构使有效数据吞吐量翻倍,相比之下,单控制器系统中控制器必须在读取 ADC 和向主机传输数据之间交替进行。双端口内存模块本身是一块 CAMAC 模块,在数据路上表现为两个逻辑设备,每个有自己独立的 N、A 地址,由不同控制器在不同时间槽访问。
另一个重要应用是用于安全关键核仪器的冗余数据采集。在冗余配置中,两台相同的机箱控制器以”热备用”模式运行。主控制器处理所有正常数据采集。备用控制器通过控制器间通信寄存器和数据路活动线监测主控制器的活动。如果主控制器发生故障(通过看门狗定时器或心跳信号检测),备用控制器在一个周期间间隙内(小于 1 微秒)接管数据路主控权,确保故障切换期间不丢失数据。这种容错水平对于核反应堆安全监测系统和加速器束流损失监测系统至关重要,因为未检测到的控制器故障可能导致严重后果。
1. 根据 IEC 61958,单个 CAMAC 机箱中可以运行多少台控制器?
该标准支持单个 CAMAC 机箱中最多 8 台控制器。控制器占用数据路上的站号(主控制器通常占用站 25,辅助控制器占用相邻站)。每台控制器必须具有由其物理位置在菊花链授予线中的位置决定的唯一优先级分配,该授予线从最高优先级站到最低优先级贯穿背板。
2. 两台控制器能否同时访问同一 CAMAC 模块?
不能。CAMAC 数据路是单主控总线 — 在任何时刻只有一台控制器可以是数据路的主控,因此一次只有一台控制器可以访问任何模块。然而,通过 IEC 61958 中定义的双端口内存模块,两台控制器可以有效地访问同一数据集(但并非同时访问完全相同的内存位置),方法是使用具有两个独立数据路端口的内存模块。两个端口之间的仲裁在双端口内存模块内部处理。
3. 多台控制器同时请求总线时,优先级仲裁如何工作?
优先级仲裁使用硬件菊花链机制。总线授予信号从最高优先级位置开始,按顺序通过每台控制器传播。如果某台控制器有挂起的总线请求,它会阻止授予信号继续传播,从而声明主控权。如果两台控制器同时请求总线,则更靠近授予链起点(即编号较小的站)的控制器获胜。仲裁在 400 ns 内完成,适合数据路周期间间隙,确保不损失总线吞吐量。
4. CAMAC 多控制器系统的现状如何?是否仍在运行?
多控制器 CAMAC 系统在 1980 年代中期至 2000 年代期间被广泛应用于大型物理实验室(CERN、费米实验室、布鲁克海文、KEK)和核电站。虽然大多数新装系统已迁移到 VMEbus、CompactPCI 或 MTCA.4,但许多多控制器 CAMAC 系统仍在运行。IEC 61958 标准化的概念 — 特别是带菊花链优先级的多主控总线仲裁、双端口共享内存和分布式中断处理 — 直接影响了 VMEbus 多处理器系统(IEC 60821)的设计,并在现代总线标准中得到体现。CAMAC 实现在当时仍然是一个设计良好的实时数据采集多主控总线协议的参考范例。