アフィリエイト広告
アフィリエイト広告

74HC161A / 同期 60進カウンタをつくる

4bit 同期バイナリカウンタ 74HC161A を使ってイネーブル付き 10進カウンタができましたので、今回は 60進カウンタをつくりましょう。これは、以前つくったデジタル時計の 60進カウンタ (過去記事) に置き換えることができます。

74HC161A / イネーブル付き 10進カウンタをつくる
4bit 同期バイナリカウンタ 74HC161A のカウンタ動作が確認できたので、今回は、イネーブル付きの 10進カウンタをつくってみようと思います。 イネーブル付き 10進カウンタを構成する 74HC161A で10進カウンタを構成する考...

同期 60進カウンタを構成する

前回もちょこっと書きましたが、10進カウンタのゲート入力を 0x9 から 0x5 に変更すれば 6進カウンタになります。そいつを 10進カウンタとつなげば 60進カウンタになる。それだけです。

同期 60進カウンタ回路図

図1. 同期 60進カウンタ 回路図

回路図です。(図1)

下部が 10進カウンタ。
デジタル時計の回路に合わせて、イネーブル入力は CE にしてあります。キャリーは、6進カウンタのイネーブルとしてわたします。

上部が 6進カウンタ。
組み合わせ回路に 0x5 を入力している以外は、10進カウンタと同じです。キャリー出力 CA は上位カウンタへの桁上がり信号で、59 で出力されます。

出力は、10進カウンタから 1の位の 0x0~0x9、6進カウンタから 10の位の 0x0~0x5 がでます。BCD なので、それぞれ 7セグメントLED デコーダなんぞにつなぐだけです。

動作シミュレーション

VerilogHDL で、60進カウンタの動作を確認しておきましょう。

前につくった 74HC161A を下位モジュールとし、6進カウンタと 10進カウンタを構成してつなげています。信号名とかが変わっていますが、基本的に 10進カウンタのときと同じです。

同期 60進カウンタ 回路記述
  1. module COUNTER_MOD60 (
  2.   input wire CK, RESET, CE,
  3.   output wire [3:0] Q1,
  4.   output wire [3:0] Q0,
  5.   output wire CA
  6. );
  7.   wire LD0, LD1, CA0;
  8.   assign CA0 = CE & Q0[3] & Q0[0];
  9.   assign LD0 = ~CA0;
  10.   assign CA = CA0 & Q1[2] & Q1[0];
  11.   assign LD1 = ~CA;
  12.   TC74HC161A U0(CK, RESET, LD0, CE, 1'b1, 4'h0, Q0, CO);
  13.   TC74HC161A U1(CK, RESET, LD1, CA0, 1'b1, 4'h0, Q1, C0);
  14. endmodule

シミュレーションの結果は、図2 のとおりです。

図2. 同期 60進カウンタ シミュレーション結果

イネーブル入力 CE が HIGH になるとカウントを開始し、出力が 59 のときにキャリー出力 CA が HIGH になっています。問題ないですね。

後記

さてと、60進カウンタができたってことは、次は 12進カウンタですなぁ (^_^;)
デジタル時計を、またつくっちゃいましょうか。

タイトルとURLをコピーしました