2012-03-12 68 views
2

我有一個1KHZ三角波發生器,我使用模擬輸入從PIC微控制器測量。三角波和模擬捕捉的頻率源是獨立的頻率源。 ADC以100ksps捕獲12個可用位精度。如何估算此輸入的熵含量?

我想估計包含在模擬樣本中的熵,以產生真隨機數。我確定的兩個熵源是開爾文噪聲和頻率源偏移。

從捕獲的波形我可以不斷地區分每秒約兩個頻率,我會平均每秒捕獲一個開爾文輸入閾值翻轉事件。所以我的估計大約是每秒兩位熵。

任何人都可以想出一種方法來證明更大的熵估計嗎?

基於答案已經公佈在這樣類似的問題,我會添加以下澄清:

我沒有其他的想法,熵源特別感興趣,因爲我仍然要回答同樣的問題那些替代來源。

對於自相關或其他隨機度量的數據本身的分析不是正確的答案,因爲它們會非常樂觀。

+0

抱歉,沒有幫助,但我很好奇術語「開爾文輸入閾值翻倒事件」。我沒有谷歌,但沒有找到太多。你有什麼參考嗎?謝謝。 – 2012-03-12 23:36:11

+0

我不知道,但生成真正的隨機數字?啊,你是小丑。並且您將永遠無法獲得PIC ADC的12個可用精度位,請檢查數據表。 – 2012-03-13 00:09:57

+0

要回答這個問題需要大量的關於你的源物理的知識,因此是非題。 – 2012-03-13 00:15:58

回答

0

您是否考慮過「最小熵」算法?我瞭解它在NIST出版物SP800-90中提到,並且包含在draft revision B部分中,其中包含有關熵質量測試熵源(第61頁包含「最小熵」算法)的大量信息。

1

我取得了一些進展,可以幫助他人。

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

銷電容將可測量的熱噪聲的量限制到20uV ADC的帶寬內。對於各種各樣的控制器來說,這應該差不多一樣。在信號和引腳之間使用〜10K電阻。較小的值將降低噪聲,但會增加可能的採樣率。

該信號不需要是隨機的。它只需要在至少幾個離散輸入步驟的範圍內均勻分佈。請注意,在與輸入相同的時鐘域上輸出到GPIO可能不符合此要求。

對於動態範圍爲3.3V的10b ADC,每個離散步驟爲3mV。每個樣本的熵約爲20uV/3mV =每個樣本0.006個比特。

另請注意,這不需要模擬輸入。你可以用數字輸入來實現,但是bin的大小會更大(1V?),答案會更像每個樣本0.000018位。因此,每毫秒輸入一個樣本,生成一個64位隨機種子需要大約一個小時。

-1

如果我們正在談論「物理」熵,那麼你的問題就是題外話題。但是,我們可以輕鬆地對您的模擬信號進行採樣,將其轉化爲數字波形,然後在信息理論背景下討論entryopy。

用於測量數字信號中熵的一種簡單而令人驚訝的精確方法是嘗試使用可用的最佳方法對其進行壓縮。壓縮比越高,信息量越小。

如果您的目標是生成隨機位來產生種子(如其他答案中所暗示的那樣),一種有用的方法是壓縮從環境中採樣的隨機性(鍵盤筆畫,鼠標移動,您的模擬系統)使用通用的壓縮算法,然後丟棄字典。剩下的將會有重要的信息內容。

+0

關於熱噪聲的問題不在話下,我同意。關於將測量不確定度轉換爲熵位測量的部分是關於話題的,因爲系統實施者必須從他們可用的任何來源(如您所建議的鼠標移動)那樣做。壓縮對此估計不合適的原因是沒有壓縮算法可以利用所有可能的冗餘來源。 – user1265195 2012-04-02 22:22:50