2

我有一个 1KHZ 三角波发生器,我正在使用模拟输入从 PIC 微控制器进行测量。三角波和模拟捕获的频率源是独立的频率源。ADC 以 100ksps 的速度捕获 12 [edit:10] 可用精度位。

为了生成真正的随机数,我想估计模拟样本中包含的熵。我已经确定的两个熵源是开尔文噪声和频率源偏移。

从捕获的波形中,我可以连续区分每秒大约两个频率,并且我将平均每秒捕获一个开尔文输入阈值翻转事件。所以我的估计是每秒大约两位熵。

谁能想出一种方法来证明更大的熵估计是正确的?

根据已经在 SO 上发布的类似问题的答案,我将添加以下说明:

我对熵源的其他想法并不特别感兴趣,因为对于那些替代源,我仍然需要回答同样的问题。

分析数据本身的自相关或其他随机性度量并不是正确的答案,因为它们会非常乐观。

4

3 回答 3

1

我取得了一些可能对其他人有所帮助的进展。

主要资源 http://en.wikipedia.org/wiki/Johnson%E2%80%93Nyquist_noise

引脚电容会将可测量的热噪声量限制在 ADC 带宽内的 20uV 以内。对于各种各样的控制器,这应该或多或少相同。在信号和引脚之间使用~10K 电阻。较小的值会降低噪声,但会增加可能的采样率。

信号不需要是随机的。它只需要在至少几个离散输入步骤的范围内均匀分布。请注意,在与输入相同的时钟域上输出到 GPIO 可能不满足此要求。

对于动态范围为 3.3V 的 10b ADC,每个离散步长为 3mV。每个样本的熵约为 20uV / 3mV = 每个样本 0.006 位。

另请注意,这不需要模拟输入。您可以使用数字输入来做到这一点,但 bin 大小会大得多(1V?),答案更像是每个样本 0.000018 位。因此,每毫秒获取一个输入样本,生成一个 64 位随机种子大约需要一个小时。

于 2012-03-13T17:54:42.567 回答
0

NIST 出版物 SP800-90B 建议使用最小熵作为熵度量。然而,测试熵源的最小熵并非易事。请参阅 NIST SP800-90B 了解进行此类测试的一种方法。

于 2012-10-20T07:26:01.037 回答
-1

如果我们谈论的是“物理学”熵,那么您的问题就离题了。但是我们可以很容易地对您的模拟信号进行采样,将其转换为数字波形,然后在信息论的背景下讨论入门。

测量数字信号中的熵的一种简单且令人惊讶的准确方法是尝试使用可用的最佳方法对其进行压缩。压缩比越高,信息量越小。

如果您的目标是生成随机位以产生种子(如其他答案之一所述),那么一种有用的方法是使用常见的压缩从环境(键盘敲击、鼠标移动、您的模拟系统)中采样的随机性进行压缩算法,然后丢弃字典。剩下的将有重要的信息内容。

于 2012-03-14T00:39:10.280 回答