メディア

1チップで実現した疑似ランダム雑音発生源Design Ideas 信号源とパルス処理

米Microchip Technologyの1チップマイコン「12C508」を使って疑似ランダム雑音シーケンスを発生させる方法がある。今回の記事では、ループ当たりの必要マシンサイクルを最小限に抑えられるアプローチを説明する。

» 2017年04月06日 11時00分 公開
[Steve PlossEDN Japan]

1チップで雑音発生源を実現

 1チップの雑音発生源を探そうとすると、よくイライラする。以前は米National Semiconductorが、オーディオ機器向けに雑音発生源ICを製造していた。しかし今では、見つけることが難しい。このような状況にあるため、設計者はいくつかの選択肢の中から1つを選ばなければならない。しかし多くの手法は、複数のICが必要だ。例えば、ダイオードのアバランシェ雑音を大きな利得で増幅するアナログ方式や、多数のCMOS ICを使って線形帰還シフトレジスター方式の疑似ランダム雑音発生源を設計する方法などがある。

 米Microchip Technologyの1チップマイコン「12C508」を使っても、雑音発生源を実現できる。この古典的な手法では、線形帰還レジスターをソフトウェアでモデル化し、疑似ランダム雑音シーケンスを発生させる。すなわち、多数のビットをテストし、XORをとって、単一ビットだけをシフトレジスターにフィードバックする。この方法には、実現可能な最大のビットレートは得られないという問題がある。そこで今回は、ループ当たりの必要マシンサイクルを最小限に抑えられるアプローチを示す(図1)。

図1:シフトレジスターの構成
このシフトレジスターの実効的な長さは25ビットである

 今回の手法は、CRC(cyclic redundancycheck)のビットシフトアルゴリズムで用いているものと似ている。XOR演算は多数のビットについて並列に実行する。マイコンならば、並列演算は素早く行える。ビットテストとXOR演算は3命令サイクルで完了する。リスト1にアセンブラコードを示す。全てのループ処理で、わずか10命令サイクルしかかからない。

図2:1チップマイコンを使った雑音発生源
1チップマイコン「12C508」を使った。接続は極めて簡単である

 図2は、4MHzの発振器を内蔵した12C508で、100kHzの出力レートを得る回路である。シフトレジスターの実効的な長さは25ビットで、3バイトのデータと1つのキャリービットから構成されている。このような構成ならば、5分35秒までパターンの繰り返しは生じない。このほか出力レートを高める工夫として、8ビットの出力ポートを備えるマイコンを使い、そのポートをハイバイト(Hibyte)レジスターの代わりに用いる手法がある。この手法を採用した場合は、リスト1に出てくる命令である「movf Hibyte,W」ならびに「movwfGPIO」は不要になる。この結果、ループ処理は8命令サイクルで完了することになり、出力レートは25%増加する。なおI/O端子は、全て出力端子として設定する。

リスト1:疑似ランダム雑音発生源用のアセンブラコード(クリックで拡大)

Design Ideas〜回路設計アイデア集

【アナログ機能回路】:フィルター回路や発振回路、センサー回路など

【パワー関連と電源】:ノイズの低減手法、保護回路など

【ディスプレイとドライバー】:LEDの制御、活用法など

【計測とテスト】:簡易テスターの設計例、旧式の計測装置の有効な活用法など

【信号源とパルス処理】:その他のユニークな回路



※本記事は、2008年7月29日にEDN Japan臨時増刊として発刊した「珠玉の電気回路200選」に掲載されたものです。著者の所属や社名、部品の品番などは掲載当時の情報ですので、あらかじめご了承ください。
「珠玉の電気回路200選」:EDN Japanの回路アイデア寄稿コラム「Design Ideas」を1冊にまとめたもの。2001〜2008年に掲載された記事から200本を厳選し、5つのカテゴリーに分けて収録した。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.