コンテンツにスキップ

カウンタとは

カウンタとは、合図が一つ届くたびに、覚えている値を一つ進める順序回路です。 数えるという働きは、覚える力と、値を一つ進める力の組み合わせでできています。だからカウンタは、レジスタと同じフリップフロップからつくられます。

電子情報通信学会の公開知識ベース『知識の森』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の手が空きます。

同じ1秒でも、誰が数えるかで結果が違います
数える係を替えると、CPUの空きが変化しますソフトウェアのループで数えますCPU数えるだけで手一杯1周が1マイクロ秒なら、1000回で1ミリ秒を数えます100万回まで回して、ようやく1秒になりますその間、CPUは時間を数えることに集中したままです周辺機能のタイマが数えますカウンタ合図を数えます割り込みCPU別の仕事へ回れます数え切ると、割り込み信号がCPUへ届きますCPUは、届くまで別の仕事へ回れます刻み幅は、分周比の設定で選べます
ルネサスのタイマ解説にある、ループ1周が1マイクロ秒という仮の条件で比べています。数える仕事を周辺機能へ移すと、CPUは割り込みが届くまで別の仕事へ回れます。

数え切ったら、割り込みで知らせます

Section titled “数え切ったら、割り込みで知らせます”

同解説は、マイコンの周辺機能にあるさまざまなタイマが、指定時間の経過時や動作の完了時に割り込み信号をCPUへ送るとしています。CPUは割り込みが届くまで別の仕事へ回れるため、作業効率が高まる、という書き方です。

台所のタイマに時間をセットしてから他の家事へ移るのと同じ形です。カウンタが数える係を引き受けるので、CPUは待つ役から解放されます。

ルネサスのアプリケーションノート「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)の基本情報技術者試験シラバスも、プロセッサの構造の用語例として命令アドレスレジスタを挙げ、その別名に命令カウンター、プログラムカウンター、逐次制御カウンターを並記しています。

時間を数えるカウンタも、命令の場所を数えるカウンタも、値を一つ進めて覚え直す動きは共通しています。

同じ「数える」が、二つの仕事をしています
数える対象は違っても、動きは同じです時間を数えるカウンタコンペア値(設定例 3FH)一致したら割り込み合図が1つ届くたびに、値が1つ進みます命令の場所を数えるカウンタ0000番地の命令0001番地の命令0002番地の命令1つの命令が済むと番地が1つ繰り上がりますプログラムカウンタもレジスタの一つですこちらは、次に取りに行く場所を数えます
左は、設定したコンペア値に届いた時点で割り込みを送るタイマのカウンタです。右は、命令が一つ済むごとに番地を一つ繰り上げるプログラムカウンタです。数える対象が違っても、値を一つ進めて覚え直す動きは共通しています。
カウンタとは何ですか?

合図が一つ届くたびに、覚えている値を一つ進める順序回路です。電子情報通信学会の公開知識ベースは、順序回路を、いまの入力だけでなくそれまでの入力にも出力が左右される論理回路とし、状態を覚えるための素子として最も広く使われているものをフリップフロップとしています。

どんな部品でできていますか?

フリップフロップです。同知識ベースは、入力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)のシラバスも、命令アドレスレジスタの別名として命令カウンター、プログラムカウンター、逐次制御カウンターを挙げています。

この記事の事実は、誰でも読める公開資料を根拠とし、各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)── プロセッサの構造の用語例として命令アドレスレジスタ(命令カウンター、プログラムカウンター、逐次制御カウンター)が挙がっていること
回答待ち 更新中 公開Q&A

このページの質問窓口

AIに疑問を送る

「匿名で送信する」を押して内容を送ると、受付ID付きの回答URLを発行します。URLでは進捗を追うことができ、通常は1日以内に回答します。個人情報を取り除いて編集した質問と回答だけを、承認済み資料の出典リンクとともに公開Q&A一覧へ掲載します。

通常、1日以内に回答します 回答待ち 更新中

  1. 匿名で送る 分かりにくい箇所、指摘、追加してほしい内容を書きます。
  2. 受付IDと回答URLを保存する 送信後に発行されるURLへ、進捗が順次反映されます。
  3. 進捗と回答を追う URLには、受付済み、回答作成中、解決済みの状態と回答が載ります。
公開Q&A一覧へ 5〜4,000文字。氏名・連絡先などの個人情報、秘密情報は入力禁止です。

このフォームは匿名です。氏名・連絡先・応募情報などの個人情報、秘密情報、社外秘情報、契約情報、非公開資料の入力は禁止です。投稿原文は運営用DBに保存し、公開面には、個人情報・秘密情報・危険な命令を除く安全審査と読みやすい文章への編集を経た質問文と回答だけを載せます。状態は「受付済み」「回答作成中」「解決済み」の3段階です。安全審査の結果によっては公開を保留します。サイト側の機械検査を通った内容だけを運営側のAI回答作成環境へ送り、回答案の作成と、それとは独立したAI審査に使います。機械検査には見落としの可能性があり、回答作成と審査の履歴は利用中の環境に保持されます。IPアドレスや端末情報は送信対象外です。回答URLは公開Q&A用で、共有先からも開けます。送信により、この利用条件と審査後のQ&A公開に同意したものとします。