標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第120回]

●「TK80」の回路です

「つくるCPU」の試作2号基板に追加することになった(まだ予定ですけれど)、「TK80」の7segLED回路とキーマトリクス回路です。

このほかにメモリの回路(RAMおよびROM)がありますが、それはまたこの次に説明することにします。

「つくるCPU」の回路の続きのように、説明をしてしまいますが、もちろんこの回路はCPUの回路ではありません。
CPUの外に置く回路です。
その意味では「番外編」として、別稿で説明するべきものかもしれません。

まあしかし、なんといっても余りに有名な「TK80」の回路ですし、CPUの外であろうとなかろうと、とにかくは「試作2号」基板の上にのってしまう(予定)の回路なのですから、この機会に説明をしてしまうことにいたします。

とは言っても、この回路は「TK80」そのままではありません。
ずっと以前には、TK80のマニュアルも持っていたはずなのですが、なにしろかすんでしまうほどのはるか昔のことですから、どこかへいってしまって、今手元には残っていません。
ですからTK80の回路と、この回路のどこが違うのか、違わないのかも正確には言うことができません。

でも、細部には相違があったとしても、それほど大きな違いはないはずです。

●まずは7segLEDの説明から

さて、回路図の説明です。
7segLEDは8桁あります。

たいていの方は、よくご存知とは思いますが、なかには、7segLEDって何?って聞かれる方もみえるかも知れません。
そこで、7segLEDの説明です。

7segment(セグメント)LEDはその名の通り、文字(数字の0〜9)を表示するために、8の字型にタテヨコに細長いLEDを7個配置した構造になっています。
各要素(セグメント)にはa〜gの名前がつけられています。



小数点(dp)は8番目の要素ですが、もともと数字を構成するセグメントではありませんから、7segLEDを表示ドライブするためのTTLICには、dpの表示機能はありません。通常、dpの表示は7セグメントとは別の回路を使います。

下図は7segLEDの構造です。


dpを含めて8個のLEDが図のように接続されています。
その接続の仕方によって、2通りのタイプに分かれます。
図の上側のLEDはカソードが共通になっていますから、「カソードコモン」といいます。
下側のLEDはアノードが共通になっていますから、アノードコモンです。

●TTLロジックではLEDドライブには74LS47を使います

数字はTTLの世界では普通はBCDで扱います。
BCD数については[第10回]で説明しました。
ですけれど、もう一度簡単に説明をします。
BCD数は2進数と同じように0と1だけを使って10進数を表記する方法です。
0〜9の数字1桁を0と1の4桁(4ビット)で表します。

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

上の表を見る限りでは、BCD数は2進数と全く同じです。
しかしBCD数と2進数は、10(十進数の10です)以上の数を表記するところから違ってきます。

参考までに、十進数の10〜20をBCD数と2進数で表記してみます。
4桁ごとに区切って示します。

10進数 BCD数 2進数
10 0001 0000 0000 1010
11 0001 0001 0000 1011
12 0001 0010 0000 1100
13 0001 0011 0000 1101
14 0001 0100 0000 1110
15 0001 0101 0000 1111
16 0001 0110 0001 0000
17 0001 0111 0001 0001
18 0001 1000 0001 0010
19 0001 1001 0001 0011
20 0010 0000 0001 0100

BCD数は4桁ごとに区切った表記が十進数の各桁にそれぞれ一致しています。
つまりBCD数は十進数の各桁の0〜9を桁ごとに、単純に2進数の0000〜1001に置き換えただけです。
これに対して2進数は、十進数の桁ごとの数値とは無関係に、その数の値をそのまま0と1だけで表記しています。

以上でBCD数の説明は終わりです。7segLEDのお話に戻ります。

74LS47はBCD数1桁4ビットを、7segLEDのセグメクトを表示ドライブするデータに変換して出力するICです。
10進カウンタICなどからの出力データを7segLEDに表示するときなどに使います。
BCD数を7seg表示用の信号データに変換してくれるのは、なかなかに便利なICなのですが、しかし74LS47にはデータをラッチする機能はありませんし、また0〜9は表示できますが、A〜Fを表示させることはできません(BCD数ですからA〜Fは表示する必要はありません)。

TK80の回路ではアドレス4桁、データ他で4桁、合計8桁の7segLED表示が必要です。しかも16進数表示なので、0〜9だけではなく、A〜Fも表示しなければいけません。

●7segLEDの表示を8ビットデータでおこなう

TK80は74LS47を使って7segLEDを表示するのではなくて、16進数から7segLEDの表示データへの変換をソフトウェアで行っています。


1バイト8ビットの各ビットに7segLEDの各セグメントを割り当てています。
これなら74LS47では表現できなかった、A〜Fの表示も可能です(かなり苦しい形になりますが)。

上で説明したように、TK80の7segLEDは8桁表示です。
すると、各桁にそれぞれ1バイト(8ビット)必要ですから、表示用の8ビットデータラッチも8個必要になります。
しかし最初にお見せした7seg表示回路には1個のデータラッチ(74HC374)しかありません。
なお、74HC244は7segLEDをドライブするためのバッファとして使っています。

本日は時間が無くなってしまいました。この続きは次回にいたします。
2008.12.1upload
2008.12.2追記

前へ
次へ
ホームページトップへ戻る