カウンタとは
カウンタとは、合図が一つ届くたびに、覚えている値を一つ進める順序回路です。 数えるという働きは、覚える力と、値を一つ進める力の組み合わせでできています。だからカウンタは、レジスタと同じフリップフロップからつくられます。
電子情報通信学会の公開知識ベース『知識の森』1群8編3章は、いまの入力だけでなくそれまでの入力にも出力が左右される論理回路を順序回路とし、状態を覚えるために最も広く使われている素子をフリップフロップとしています。
同章は、フリップフロップの種類のうちT-FFを、入力T=1で状態が変化する機能を持つものとしています。1が届くたびに反転する素子がそろえば、数を数える回路の骨格がそろいます。
ルネサス エレクトロニクスの「順序回路、フリップフロップ」も、Dフリップフロップを多段に重ねるとシフトレジスタや分周回路になるとしています。値を覚える素子の並べ方を変えると、そのまま数える回路になります。
ソフトウェアで数えるか、回路で数えるか
Section titled “ソフトウェアで数えるか、回路で数えるか”カウンタの値打ちは、ソフトウェアで時間を計る場合と比べると分かりやすくなります。
ルネサスの「タイマ」は、周辺機能のタイマを使わずソフトウェアで時間を計ることも可能だとしたうえで、ループ部分に1マイクロ秒かかる場合、1000回の繰り返しで1ミリ秒、100万回で1秒を数えられるという例を挙げています(同社の解説が仮に与えた条件です)。
そのうえで同解説は、この数え方だとCPUが時間を数えることに集中してしまい、ほかの仕事へ回れなくなるとしています。刻み幅も一つしか作れず、現実のマイコンは0.1秒や1024分の1秒といったさまざまな刻み幅の時間に応じる必要がある、という指摘です。さらに、100MHz駆動のCPUを50MHz駆動へ変更すればループ1回分の所要時間が2倍になるため、時間を計るソフトウェアの修正が要るとしています。同解説は、こうした手間とミスの起きやすさから、ソフトウェアで時間を計ることは極力避けているとしています。
数える仕事をハードウェアへ移すと、CPUの手が空きます。
数え切ったら、割り込みで知らせます
Section titled “数え切ったら、割り込みで知らせます”同解説は、マイコンの周辺機能にあるさまざまなタイマが、指定時間の経過時や動作の完了時に割り込み信号をCPUへ送るとしています。CPUは割り込みが届くまで別の仕事へ回れるため、作業効率が高まる、という書き方です。
台所のタイマに時間をセットしてから他の家事へ移るのと同じ形です。カウンタが数える係を引き受けるので、CPUは待つ役から解放されます。
実機のカウンタが持つ数値
Section titled “実機のカウンタが持つ数値”ルネサスのアプリケーションノート「RL78/G23 32ビット・インターバル・タイマ(8ビット・カウンタ・モード)」は、カウンタの設定を具体的な数値で示しています。
同アプリケーションノートは、32ビット・インターバル・タイマを8ビット・カウンタ・モードへ設定し、チャネルごとのコンペア値をITLCMP000=3FH、ITLCMP001=7FH、ITLCMP012=BFH、ITLCMP013=FFHとしています。そして、タイマ割り込みの発生時にコンペア一致検出フラグを見て、割り込みが2000回起きるごとにLED表示を反転させます。
スイッチを押すと各チャネルの分周比が切り替わり、fITL0からfITL0を128で割った値まで、2倍刻みの8段階でLEDの点灯周期が変化します。これらは、RL78/G23と専用のプロトタイピングボードを用い、高速オンチップ・オシレータ・クロック32MHz、電源5.0Vで動作を確かめた同社サンプルコードの値です。
同じカウンタでも、コンペア値と分周比という二つのつまみで、刻む時間が広く変えられます。
減らす向きに数えるカウンタもあります
Section titled “減らす向きに数えるカウンタもあります”ルネサスの「タイマ」は、タイマの中でも異色のものとしてウォッチドッグタイマ(WDT)を挙げ、その役目をプログラムの暴走を見張る番犬にたとえています。
同解説によると、WDTに見張られるプログラムは、起動のときにあらかじめ決めた値をWDTへ書き込みます。WDTはその値を一定の間隔で減らし続け、プログラムが正常に進んでいれば、完了の直前にWDTがクリアされます。プログラムが暴走して値が0を下回るアンダーフローに至ると、割り込みでプログラムの異常がCPUへ伝わります。
数える向きが下りになると、カウンタは時計から見張り役へ変わります。
同じ名前が、CPUの中にもあります
Section titled “同じ名前が、CPUの中にもあります”ルネサスの「マイコンの基本構成、動作」は、プログラムカウンタ(PC)を、CPUが次にどこの命令を取りに行くかを示す番地が保存されているレジスタだとしています。0000番地の命令を実行すると値がひとりでに1つ増えて0001番地になる、というように、命令が一つ済むごとに番地が1つずつ繰り上がり、次の命令が入っている場所を指し直す、という動きです。
情報処理推進機構(IPA)の基本情報技術者試験シラバスも、プロセッサの構造の用語例として命令アドレスレジスタを挙げ、その別名に命令カウンター、プログラムカウンター、逐次制御カウンターを並記しています。
時間を数えるカウンタも、命令の場所を数えるカウンタも、値を一つ進めて覚え直す動きは共通しています。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”カウンタとは何ですか?
合図が一つ届くたびに、覚えている値を一つ進める順序回路です。電子情報通信学会の公開知識ベースは、順序回路を、いまの入力だけでなくそれまでの入力にも出力が左右される論理回路とし、状態を覚えるための素子として最も広く使われているものをフリップフロップとしています。
どんな部品でできていますか?
フリップフロップです。同知識ベースは、入力T=1で状態が変化する機能を持つ素子をT-FFとしています。ルネサス エレクトロニクスも、Dフリップフロップを多段に重ねるとシフトレジスタや分周回路になるとしています。
ソフトウェアのループで数えるのと、どちらがよいのですか?
ルネサス エレクトロニクスは、ソフトウェアで時間を計るとCPUが時間を数えることに掛かりきりになり、刻み幅も一つしか作れず、CPUのクロック周波数を100MHzから50MHzへ変更するとループ1回の所要時間が2倍になってソフトウェアの修正が要るとしています。そのため、同社は極力避けているとしています。
数え切ったことは、どう伝わりますか?
割り込みで伝わります。ルネサス エレクトロニクスは、マイコンの周辺機能にあるタイマが指定時間の経過時や完了時に割り込み信号をCPUへ送るとし、CPUは割り込みが届くまで別の仕事へ回れるため作業効率が高まるとしています。
実際の製品では、どんな設定になりますか?
ルネサス エレクトロニクスのRL78/G23向けアプリケーションノートは、32ビット・インターバル・タイマを8ビット・カウンタ・モードで使う例として、コンペア値をITLCMP000=3FH、ITLCMP001=7FH、ITLCMP012=BFH、ITLCMP013=FFHに設定し、タイマ割り込みが2000回起きるごとにLED表示を反転させています。同社がサンプルコードの動作を確かめた条件は、高速オンチップ・オシレータ32MHz、電源5.0Vです。
ウォッチドッグタイマもカウンタですか?
減らす向きに数えるカウンタです。ルネサス エレクトロニクスは、ウォッチドッグタイマがあらかじめ書き込まれた値を一定時間ごとに減らし、プログラムの暴走で値が0より小さくなるアンダーフローが起きると、割り込みで異常をCPUへ知らせるとしています。
プログラムカウンタとは何ですか?
次に取りに行く命令の番地を持つレジスタです。ルネサス エレクトロニクスは、0000番地の命令を実行すると値がひとりでに1つ増えて0001番地になる、というように、命令が一つ済むごとに番地が1つずつ繰り上がると述べています。情報処理推進機構(IPA)のシラバスも、命令アドレスレジスタの別名として命令カウンター、プログラムカウンター、逐次制御カウンターを挙げています。
比較・違いを学ぶ
Section titled “比較・違いを学ぶ”- レジスタとは ── 値を覚えて保つ側の回路
この記事の事実は、誰でも読める公開資料を根拠とし、各URLの到達可否をこちらで実測しています。したがって、リンク先が移動または消滅した場合は、その旨をこのページへ反映します。
- ルネサス エレクトロニクス Engineer School「タイマ」(2026年8月30日にリンク生存を実測、200)── 時間や時刻に関わる働きを担う周辺機能がタイマであること、ループ部分に1マイクロ秒かかる場合に1000回で1ミリ秒・100万回で1秒を数えられること、その間CPUが数えることに掛かりきりになること、刻み幅が一つしか作れず0.1秒や1024分の1秒に応じる必要があること、100MHz駆動を50MHz駆動へ変えるとループ1回が2倍になりソフトウェアの修正が要ること、タイマが指定時間の経過時や完了時に割り込み信号をCPUへ送ること、ウォッチドッグタイマが書き込まれた値を減らしアンダーフローで割り込みを発生させること
- ルネサス エレクトロニクス Engineer School「順序回路、フリップフロップ」(2026年8月30日にリンク生存を実測、200)── 順序回路が現在の入力に加えて過去の入力で出力を決定する論理回路であること、記憶の機能を担う素子がフリップフロップであること、Dフリップフロップを多段に重ねるとシフトレジスタや分周回路になること
- ルネサス エレクトロニクス Engineer School「マイコンの基本構成、動作」(2026年8月30日にリンク生存を実測、200)── プログラムカウンタがCPUの次の命令の番地を保存するレジスタであること、0000番地の命令を実行すると値がひとりでに1つ増えて0001番地になり、命令が一つ済むごとに番地が1つずつ繰り上がること
- ルネサス エレクトロニクス アプリケーションノート RL78/G23 32ビット・インターバル・タイマ(8ビット・カウンタ・モード)公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── 8ビット・カウンタ・モードのコンペア値をITLCMP000=3FH、ITLCMP001=7FH、ITLCMP012=BFH、ITLCMP013=FFHに設定すること、タイマ割り込みが2000回起きるごとにLED表示を反転すること、スイッチ押下でfITL0からfITL0を128で割った値まで8段階に分周比が切り替わること、動作を確かめた条件がRL78/G23と高速オンチップ・オシレータ・クロック32MHz、電源5.0Vであること
- 電子情報通信学会『知識の森』1群8編3章「有限状態機械と順序回路」公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── 順序回路がいまの入力だけでなくそれまでの入力にも出力が左右される論理回路であること、状態を覚えるための素子として最も広く使われているのがフリップフロップであること、T-FFが入力T=1で状態が変化する機能を持つこと
- 情報処理推進機構(IPA)基本情報技術者試験(レベル2)シラバス Ver.9.0公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── プロセッサの構造の用語例として命令アドレスレジスタ(命令カウンター、プログラムカウンター、逐次制御カウンター)が挙がっていること