Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
在标准 CAMAC 数据采集周期中,每次读或写操作需要以下序列:(1) 控制器将站号 N、子地址 A 和功能码 F 放置到数据路上;(2) 寻址模块解码命令并在 300 ns 内(数据路选通时间)将数据置于读线上;(3) 控制器接收数据并检查 X(命令接受)和 Q(特殊响应)线;(4) 控制器移除命令,周期完成。每次 CAMAC 操作的最小周期时间约为 1 微秒,原始最大吞吐量约为每秒 100 万次传输。然而,在计算机控制系统中,每次 CAMAC 操作通常需要程序干预 — 由主机 CPU 执行的 CAMAC I/O 指令 — 根据计算机架构和操作系统的不同,每次传输引入 5 至 50 微秒的开销。这一开销将实际吞吐量降低到每秒 2 万至 20 万次传输,远不足以在可能仅有 1-10 毫秒间隔的加速器束流脉冲之间读取出大型探测器阵列的数据。
数据块传输通过让机箱控制器在单次软件命令启动后自主执行一系列传输来消除每次传输的软件开销。控制器自动生成 N、A、F 地址序列,并使用直接内存访问(DMA)通道将数据字直接传输到计算机内存或从计算机内存读出。
| 传输模式 | 每字软件开销 | 典型吞吐量 | 最佳用途 |
|---|---|---|---|
| 单次 CAMAC 操作(程序 I/O) | 5-50 µs | 20,000-200,000 字/s | 配置、状态检查、单次测量 |
| Q-stop 数据块传输 | 无(仅 DMA) | 500,000-800,000 字/s | 从具有内置扫描终止功能的 ADC 读取变长数据 |
| LAM-stop 数据块传输 | 无(仅 DMA) | 500,000-800,000 字/s | 从每事件产生 LAM 中断的模块读取数据 |
| 地址扫描数据块传输 | 无(仅 DMA) | 800,000-1,000,000 字/s | 按顺序从所有模块读取固定长度数据 |
CAMAC 数据路包含一条称为Q的特殊响应线,在单周期和数据块传输操作中具有不同的含义。在单次传输中,被寻址模块的 Q 响应指示一种特殊条件(具体含义取决于模块)。在 IEC TS 61956 定义的数据块传输操作中,Q 承担了数据块传输控制信号的关键角色。当读周期后 Q = 1 时,它向机箱控制器指示已读取有效数据,应继续下一次读取。当 Q = 0 时,它指示数据块结束(”停止”条件),控制器终止数据块传输。这种机制称为Q-stop,允许模块自主控制数据流 — 例如,ADC 模块只要有已转换数据可供读取就维持 Q = 1,当其内部缓冲区空时降 Q 为 0。数据块传输控制器只需反复读取直到 Q 变为 0,无需任何软件参与。
在 Q-stop 数据块传输模式下,机箱控制器对同一站号和子地址(N, A)执行连续的 CAMAC 读周期,同时监测每次周期后的 Q 线。序列如下:(1) 软件从特定(N, A)启动 Q-stop 数据块读操作;(2) 控制器在(N, A)上执行 CAMAC 周期 F(0) 读操作;(3) 若 Q = 1,则读到了有效数据 — 控制器将数据字传送到 DMA 缓冲区并立即对相同(N, A)重复读周期;(4) 若 Q = 0,则到达数据块末尾 — 控制器终止序列并向主机生成数据块结束中断。此模式特别适用于包含 FIFO(先进先出)缓冲区、多事件存储器或可在连续读周期中呈现连续转换结果的扫描 ADC 的模块。
IEC TS 61956 中的时序规范要求,在 Q-stop 模式下,一个周期的 Q = 1 与下一个周期启动之间的时间不得超过 200 ns。这一严格时序确保被寻址模块的内部数据源保持稳定,且数据路不会处于不确定状态。在典型实现中,每个 Q-stop 周期的总时间约为 1-2 微秒,具体取决于机箱控制器的逻辑速度和模块的响应时间。
LAM-stop 数据块传输模式用于从机箱中多个模块读取数据,这些模块在数据就绪时各自生成 LAM(”注意信号”)中断。在此模式下,机箱控制器扫描各站(N = 1, 2, 3, …, 23),测试每个站是否有挂起的 LAM。当发现 LAM 时,控制器对该站执行读周期。读取后,控制器从断点继续扫描。当完成一轮完整扫描而未发现任何挂起 LAM 时,数据块传输终止。此模式对于事件驱动型数据采集系统至关重要 — 在这些系统中,拥有数据的模块数量和身份在每次事件之间不可预测地变化。
规范定义了最大扫描速率以及 LAM 信号断言与读周期之间的时序关系。它还定义了一种优先级编码方案,其中具有较高 N 编号的站在扫描顺序中具有更高优先级,确保当多个模块同时有数据时优先读取优先级较高的数据源。
CAMAC 数据块传输的实际实现需要一个 DMA(直接内存访问)控制器,该控制器能够接收来自机箱控制器的数据字并将其写入主机计算机内存而无需 CPU 干预。IEC TS 61956 定义了机箱控制器数据块传输逻辑与 DMA 通道之间的接口,规定了握手信号、数据字格式和数据块结束通知机制。在典型实现中,DMA 控制器集成在 CAMAC 分支驱动器或机箱控制器本身中,或作为独立的 CAMAC 模块提供。DMA 地址计数器必须在数据块传输开始之前初始化,包括起始内存地址和字计数(用于固定长度传输)或”传输直到 Q-stop”模式(用于可变长度传输)。
IEC TS 61956 定义的数据块传输操作是 1980 年代至 2000 年代初期众多大规模核物理实验中数据采集的支柱。在典型实验中,来自探测器(闪烁计数器、正比室、锗探测器)的信号由 CAMAC ADC 模块处理。当接收到触发信号时,ADC 被指令对其模拟输入进行数字化。在束流门间隔(通常为 1-10 ms)期间,机箱控制器执行数据块传输以读出所有 ADC。使用 Q-stop 模式:ADC 在有有效数据时断言 Q = 1,在所有通道读取完毕后降 Q = 0。这允许不同 ADC 可能具有不同数量活动通道的混合配置,而无需软件跟踪模块配置。
1. Q-stop 和 LAM-stop 数据块传输模式有什么区别?
在Q-stop模式中,数据块传输从同一站号和子地址(N, A)重复读取,直到模块断言 Q = 0 以表示”无更多数据”。在LAM-stop模式中,控制器扫描机箱中所有站,从任何有挂起 LAM(注意信号)中断的站读取数据,当完整扫描一轮后未发现任何挂起 LAM 时停止。Q-stop 用于从单个模块读取多字数据(例如多通道 ADC),而 LAM-stop 用于从多个同时有数据就绪的模块各读取一个字。
2. CAMAC 中的 Q 响应线有什么含义?
Q 线是由被寻址模块在每次 CAMAC 数据路周期后驱动的特殊响应信号。在单周期操作中,其含义取决于模块 — 可能表示溢出、欠流、数据就绪或特定模块状态。在数据块传输操作(IEC TS 61956)中,Q 承担标准化控制功能:Q = 1 表示”有效数据,继续数据块传输”,Q = 0 表示”数据块结束,停止传输”。这种双重角色使得在数据块传输规范之前设计的模块保持兼容 — 它们在读取时根本不断言 Q = 1,控制器将每次传输视为单周期操作。
3. 数据块传输能否用于 CAMAC 的写操作?
可以。IEC TS 61956 定义了读取和写入两种数据块传输操作。在 Q-stop 写入中,控制器将连续的数据字写入同一(N, A)地址,模块在其缓冲区满时断言 Q = 0(停止条件)。数据块写入传输用于向任意波形发生器下载波形数据、向逻辑单元加载模式数据或初始化多个 DAC 通道。其吞吐量优势与数据块读取相似 — 消除了每字软件开销。
4. 在现代总线标准下,CAMAC 数据块传输是否仍有意义?
虽然 CAMAC 在新装系统中已被 VMEbus、CompactPCI/PXI 和 MTCA.4 大幅取代,但许多 CAMAC 系统仍在核研究设施、核电站和工业环境中运行。IEC TS 61956 中定义的数据块传输概念 — Q-stop、LAM-stop 以及集成 DMA 的自主数据传输 — 已在现代标准中得到采纳和增强。例如,VMEbus 数据块传输(MBLT、2eVME、2eSST)和 PCI Express 分散-聚集 DMA 使用了类似的硬件控制多字传输原理,带有自动终止条件。消除每传输软件开销是高速数据采集关键这一工程见解,在今天与 1999 年一样重要。