3. 熵源原始信号采集
熵源建模的第一步不是“算熵”,而是把物理随机过程尽可能不失真地变成可处理的数字序列。量子熵源常见的物理量包括单光子到达时刻、光子数、探测器雪崩脉冲间隔、激光相位干涉后的强度起伏等。这些连续或离散的物理事件,必须经过探测器、模拟前端、模数转换器(ADC)或时间数字转换器(TDC)等环节,才能成为计算机可读的原始比特流。采集链路本身会引入偏置、抖动、死时间、量化误差和相关噪声,因此“原始序列”并不等于“理想随机序列”,它只是后续建模与评估的输入素材。
采集链路中的关键器件与信号形态
以单光子到达时间熵源为例,典型链路为:单光子探测器(SPAD)→ 前置放大器/比较器 → TDC → 时间戳序列。SPAD 在光子到达时输出一个雪崩脉冲,其上升沿到达时刻被 TDC 以皮秒级分辨率量化。若采用光子数或模拟强度熵源,则链路为:光电探测器 → 跨阻放大器(TIA)→ 低通抗混叠滤波 → ADC → 采样序列。两种链路的共同点是:物理随机性被“时间”或“幅度”承载,再被量化成整数。
探测器的影响主要体现在三方面。第一是探测效率,它决定单位时间内有效事件数,效率低会使序列稀疏,增加后处理负担。第二是死时间,SPAD 在每次雪崩后需要淬灭和恢复,期间无法响应新光子,这会造成事件间隔被人为拉长,形成死时间偏置。第三是后脉冲与串扰,可能让一个光子事件衍生出多个相关脉冲,破坏独立性。ADC 链路则受量化位数、采样时钟抖动、非线性与输入噪声影响;TDC 链路受时钟抖动、抽头延迟线非线性、bin 宽度不均匀影响。这些效应都会在原始序列中留下可检测的统计痕迹。
原始序列的典型缺陷与判断依据
拿到一段原始序列后,不能直接送入熵评估,而应先做“体检”。常用的观察手段包括:事件间隔直方图、自相关函数、游程分布、频谱以及多通道互相关。若事件间隔在极短时间处出现明显空缺,通常说明死时间在起作用;若自相关在非零延迟处仍有显著峰值,说明存在后脉冲或时钟串扰;若 ADC 采样序列的低位比特“0”和“1”比例明显偏离 0.5,说明量化偏置或比较器阈值偏移。这些判断不需要复杂设备,用直方图和自相关即可快速定位。
以 TDC 时间戳为例,设第 i 个光子到达时间为 ti,通常不直接使用绝对时间,而是使用相邻差分 di = ti+1 − ti。若光源为稳定泊松过程,理论上 di 服从指数分布。实际采集到的 di 若在小于死时间 τd 的区间内计数为零,就应把 di < τd 的样本标记为不可信并剔除,或采用死时间补偿模型重新估计。对于 ADC 链路,若采样值为 xi,可先减去滑动均值 mi,得到 yi = xi − mi,再取最低有效位或与阈值比较生成比特。
数据预处理方法:从原始码到候选随机比特
预处理的目标不是“制造随机性”,而是去除采集链路引入的确定性成分,使剩余序列更接近独立同分布。常用方法有以下几类,实际使用时通常组合进行。
第一,异常剔除与死时间处理。对时间戳序列,先根据探测器手册设定死时间窗口 τd,将间隔小于 τd 的记录视为无效并删除。若删除比例过高,应降低光强或调整淬灭电路,而不是强行保留。对 ADC 序列,可剔除饱和码值和明显超范围的尖峰。
第二,去偏置与去趋势。ADC 序列常存在缓慢基线漂移,可用一阶差分或高通滤波去除。例如对采样序列做 yi = xi − xi−1,可有效抑制直流偏置和低频漂移,但会引入相邻样本的相关性,因此差分后不宜直接取相邻比特,而应间隔抽取。时间戳序列则通常先做差分,再对差分值做归一化或取对数,以压缩动态范围。
第三,去相关与白化。若自相关显示延迟 k 处仍有相关,可采用间隔抽取,即每隔 k 个样本取一个,破坏短程相关。更彻底的方法是异或折叠:将序列按固定长度分组,组内逐位异或,输出一位。异或折叠能有效压缩偏置和相关,但会降低吞吐率,需要根据原始序列质量权衡。
第四,量化映射与冯·诺依曼校正。将模拟量或时间差映射为比特时,最简单的是取最低有效位,但低位往往偏置严重。更稳健的是比较相邻两个样本:若 xi > xi+1 输出 1,若 xi < xi+1 输出 0,相等则丢弃。这就是冯·诺依曼校正,它不要求样本独立,只要求比较结果无偏,能有效消除固定偏置。代价是输出速率不固定,约保留一半样本。
一个可复现的预处理示例
假设某 SPAD 熵源在 1 MHz 光强下采集到 106 个时间戳,TDC 分辨率为 10 ps,探测器死时间标称 50 ns。原始差分序列中,小于 50 ns 的间隔占比约 4.8%,自相关在延迟 1 处约 0.12,说明存在后脉冲和死时间双重影响。处理流程如下:
步骤1:读取时间戳 t[0..N-1],计算差分 d[i] = t[i+1] - t[i]
步骤2:剔除 d[i] < 50 ns 的样本,剩余约 95.2%
步骤3:对剩余 d[i] 做间隔抽取,每隔 2 个取 1 个,降低短程相关
步骤4:对抽取后的序列做相邻比较:
若 d[i] > d[i+1] 输出 1,若 d[i] < d[i+1] 输出 0,相等丢弃
步骤5:统计输出比特的 0/1 比例与游程分布
步骤6:若 0/1 比例偏离 0.5 超过 1%,再执行一轮异或折叠
该示例中,经过步骤 2 至 4 后,自相关在延迟 1 处可降至 0.02 以下,0/1 比例接近 0.5,游程分布与几何分布吻合较好。此时得到的比特序列才适合送入后续的熵评估环节。需要强调的是,上述数值为教学示例中的合理假设,实际系统应以实测直方图和自相关为准。
采集链路设计中的工程取舍
采集链路的设计直接影响后续预处理的难度。若探测器死时间过大,有效事件率低,预处理后剩余比特更少;若 TDC 分辨率不足,时间差量化过粗,低位熵密度下降;若 ADC 位数过高但前端噪声过大,低位实际是噪声主导,反而需要丢弃。因此,工程上常采用“中等分辨率 + 良好前端 + 适度预处理”的组合,而不是一味追求高位数或高采样率。
此外,采集时还应记录环境参数,如温度、偏压、光强和时钟源状态。这些参数虽不直接进入随机序列,但会影响探测器效率和 TDC 抖动,是后续复现和排障的重要依据。对于多通道系统,应分别采集并检查通道间互相关,避免共用时钟或电源引入共模干扰。
总之,原始随机序列的质量取决于探测器、模拟前端、量化器和时钟的协同表现。预处理的任务是识别并削弱这些环节引入的偏置、死时间、相关性和量化误差,使输出比特更接近独立无偏。只有经过这一步骤,后续的熵源建模与熵评估才有可靠的数据基础。