コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

前記事「ノイズがほしい」からの乱数発生器作成の続き。
前記事で作ったノイズっぽい信号をマイコンに取り込もうというお話。

dsc_0088
PSoC4 の ADC で信号を読んでその値を UART に出力するプロトコードを作成。

2016-11-06_030054
PC側は TeraTerm で UART を受信、そのログを Excel で眺めていく。

2016-11-06_074304
ADC で読んだ値をそのままヒストグラムで見た図。
波形がばらついたりしているものの、その大きさで見た場合は綺麗な正規分布となっている。
まあそりゃそうだよねといった感じの結果ではある。

これをこのまま乱数値とする訳にはいかないわけなのだけれども、最初から使うつもりも無かったりする。
ADC で読んだ値はほって置いても値がぴるぴる振動するものなので、読んだ値の最下位 1bit を乱数値として使う手段がある。それを 8bit 束ねて 0~255 の乱数値とするのである。
じゃあ最初からノイズ発生器は要らないのでは無いかといった感じではあるけれども、常に値が変化するかどうかを保証しなくてはいけないので値は動いていた方が良いし周期的な振動で無いほうがより良い。

2016-11-06_074515
というわけで、ADC 値の最下位 1bit を拾う形にした結果。
大分平坦で良い感じの乱数値になってきている。

ADC が良い感じで取れていたので大層気を良くして「これならオペアンプに通す前の 160mV 位の値もとれるんじゃね?」とか思い始めた。Vref に 260mV ほどを与えて 0~260mV の値を直接 PSoC4 の ADC に与えてみた。
2016-11-06_074604
値自体はなんとなく取れて良さそうに見えたのだけれども、ヒストグラムで見てみたら櫛形になっているし正規分布も崩れている。
流石に電圧が小さすぎて ADC の結果がリニアにならず階段状になっているようだ。
そういや PSoC4 の ADC 性能って詳しく調べたこと無かったな。

2016-11-06_074655
なんのかんのいじり倒したけれども、間にオペアンプを挟んだ形で決定。
まあ期待通りの結果になったかな。

これくらいだとソフトウェアやカウンタによる擬似ランダム機構と大して変わらない感じもするけれども、ハードウェアと物理現象による乱数が欲しいというのが今回の意図なのでゴールとしてはまずまず。

Leave a Reply