メディア

PCのスピーカー回路でタイミングを制御Design Ideas 信号源とパルス処理

PCでタイミングを制御する最も容易な方法は、遅延ループを利用することだ。今回は、PCのスピーカー回路を利用して、安定した遅延ループを得る方法を紹介する。

» 2017年03月29日 13時00分 公開
[EDN Japan]

PCのスピーカー回路で、安定したループを取得 

 データの収集や分析処理、デジタル信号処理では、正確なタイミング制御が極めて大切である。PCでタイミングを制御する最も容易な方法は、遅延ループを利用することだ。

 遅延ループの問題点は、経過時間がシステムの動作周波数に依存することである。このため、PCの機種が変わるとプログラムを修正しなければならない。

 タイミング制御用の拡張ボードを追加することは可能である。しかし動作が単純にもかかわらず、価格が高いので通常は使わない。

 ここでは、別のタイミング制御方法を示す。PCのスピーカー回路を利用して安定した遅延ループを得る方法である。PC/ATアーキテクチャのPCは、動作周波数が1.1931817MHzの16ビット・タイマー/カウンターIC「8254」を使っている。この固定された周波数を利用して、遅延ループを実現する。

 PC/ATアーキテクチャでは、カウンター0がシステム・タイマーとして実際の時刻を管理する。カウンター1は、DRAMのリフレッシュ・レート発生器である。

 そしてカウンター2が、スピーカー出力へのサウンド発生器となる。このカウンター2だけが、遅延ループに利用できる。カウンター2をイネーブルにするか、あるいはディセーブルにするかは、「8254」のポートBのビット0を1あるいは0に設定することで選ぶ。ここでの目的はカウンター2を、モード2で動作するレート発生器として利用することである。

 このモード2では、カウンターはカウンター・クロック・パルス(周期は1/1.1931817MHz=0.838095マイクロ秒=counter_count_time)に従って自動的にカウント・ダウンを始める。このカウンターで測定できる期間は、約54.92ミリ秒(65536×0.838905マイクロ秒)である。リスト1には、遅延ループを生成するプログラムを示した。

 このプログラムは、制御レジスター・ポート(043h)に制御コード0b4hを書き込むことによってカウンター2をモード2で動作させる。delay_loop( )と呼ぶルーティンが、遅延ループとなる。最初に、制御コードを制御レジスターに書き込む。次に、2バイト・オペレーションでアドレス042hにスタート・データ(ffffh)を書き込み、カウンター2をロードする。そして「8254」のポートB(ポート61h)のビット0を1にセットし、カウンター2をイネーブルにする。カウンター2 がイネーブルになると、0.8380958マイクロ秒周期のカウント・ダウンが自動的に始まる。遅延ルーティンを呼び出す前に、目的の遅延時間(desired_delay_time)に必要な、カウンター2の全カウント数をプログラムが計算する。whileループでは、カウンター2のデータを入力ポート(042h)から2バイト・オペレーションで繰り返し読み出す。

 この2バイトは16ビット・データ(counter_data)に結合され、経過カウント(count_elapsed)の算出に用いられる。目的のカウント数に達し次第、プログラムは遅延ループから抜ける。呼び出し元のプログラムに戻る前に、「8254」のポートBのビット0を0にセットする。カウンター2はディセーブルとなる。こうして目的の遅延時間を得る。

 今回の方法は、どのPCでも正確で安定なタイミング・ループを実現できる。遅延時間は、20マイクロ秒〜54.9ミリ秒の範囲で選べる。

 このプログラムはターボC++とアセンブリ言語で記述した。動作周波数が450MHzのPentium2プロセッサ搭載PCを使ってMS-DOSモードでテストした。

遅延ループのルーティンを記述したプログラム

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

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

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

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

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

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



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

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.