7セグメントLED用デコーダを作成します.作成する基板の条件は以下のとおりです.
- 0から7までの値を表示する
- ブレッドボードに部品を配置し,回路を作成する
- 真理値表を作成する
- 論理式を立てる
- 簡単化をして,より少ない汎用ロジックICで回路を構成する
- 入力は3ビットの信号と,7セグメントLEDの消灯/点灯する1ビットの信号の合計4本である
- 7セグメントLEDはアノードコモンである
以上の条件であることから,はじめにセグメントごとに論理式を作成し,簡単化をします.その後,セグメント間で共通する回路をまとめて全体の回路図を作成します.そして,回路図とは別に実体配線図を作成してはんだ付けに備えます.最後にワイヤを使い,汎用ロジックIC間を繋いでいきます.
真理値表
真理値表には入力として3ビットの信号と,点灯(1)と消灯(0)を表す1ビットの合計4ビット,出力としてA~Gセグメントの7ビットとなります.使用する7セグメントLEDはアノードコモンですので,各セグメントを点灯させるにはカソード側をLow(=0),High(=1)とすればよいです.下図は7セグメントLEDにある各セグメントの配置を表したものです.AからGのセグメントに加え,小数点を表すためのDP(デシマルポイント)があります.
上記の7セグメントLEDを使い,0から7までの数字を表現するには下表のようにすればよいです.ここで0はLow,1はHigh,*はDon't careを表します.また,1~7についてはあえて空白にしてあります.自分で考えてください.
表示内容 | EN | IN2 | IN1 | IN0 | A | B | C | D | E | F | G |
(非表示) | 0 | * | * | * | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 | 1 | ||||||
2 | 1 | 0 | 1 | 0 | 0 | ||||||
3 | 1 | 0 | 1 | 1 | 0 | ||||||
4 | 1 | 1 | 0 | 0 | 1 | ||||||
5 | 1 | 1 | 0 | 1 | 0 | ||||||
6 | 1 | 1 | 1 | 0 | 0 | ||||||
7 | 1 | 1 | 1 | 1 | 0 |
論理式
真理値表にもとづき論理式を立てます.それには,セグメントごと,つまり真理値表を縦に参照し,Highである行の入力の論理積をすべて論理和にします.
例えばセグメントAの場合,Highであるのは{jmimetex}\overline{IN_2}\cdot\overline{IN_1} \cdot IN_0 \cdot EN{/jmimetex},{jmimetex}IN_2 \cdot \overline{IN_1} \cdot \overline{IN_0} \cdot EN{/jmimetex},{jmimetex}\overline{EN}{/jmimetex}の3行です.従って,セグメントAはそれらの論理和とする下の式のようになります.
{jmimetex}A=\overline{IN_2}\cdot\overline{IN_1} \cdot IN_0 \cdot EN + IN_2 \cdot \overline{IN_1} \cdot \overline{IN_0} \cdot EN + \overline{EN}{/jmimetex}
同様に残りのセグメントについても論理式を立てます.
演習
セグメントBからGまでの論理式を立てて下さい.
簡単化
立てた論理式をそれぞれ簡単化し,無駄なANDやORゲートを減らします.手作業での簡単化するには,カルノー図を用いるとよいでしょう.セグメントAの場合,下記のようにカルノー図はなります.先ほど作成した論理式を参照しながら図を見てください.まず第1項です.IN2が0,IN1が0,IN0が1,ENが1であるのは,下図の中の青色で囲まれたセルです.同様に第2項はIN2が1,IN1が0,IN0が0,ENが1であるのは,下図の中の赤色で囲まれたセルです.第3項はENが0であるのは下図の中の緑色で囲まれたセル群です.このように,論理式の各項をまずは表に書き入れます.
次に簡略化していきます.まずはIN2が1,IN1が0,IN0が0,ENが1である箇所(上の図では赤い矩形で囲ってある)について注目してください.このセルの右側も1になっていると思います.下図は注目すべき2個のセルをまとめています.この2個のセルに共通するのは,ともにIN2が1,IN1が0,IN0が0ですので,ENを取り除くことができます.従って,{jmimetex}IN_2 \cdot \overline{IN_1} \cdot \overline{IN_0} \cdot EN{/jmimetex}が{jmimetex}IN_2 \cdot \overline{IN_1} \cdot \overline{IN_0}{/jmimetex}になります.
次にIN2が0,IN1が0,IN0が1,ENが1(上の図では青色の矩形で囲った箇所)に注目してください.少しわかりにくいのですが下の図のように左側のセルとまとめることができます.この場合,ともにIN2が0,IN1が0,IN0が1ですのでENを取り除くことができます.従って{jmimetex}\overline{IN_2}\cdot\overline{IN_1} \cdot IN_0 \cdot EN{/jmimetex}が{jmimetex}\overline{IN_2}\cdot\overline{IN_1} \cdot IN_0{/jmimetex}になります.
まとめますと,最初に示した論理式は次のようになります.
{jmimetex}A=\overline{IN_2}\cdot\overline{IN_1} \cdot IN_0 + IN_2 \cdot \overline{IN_1} \cdot \overline{IN_0} + \overline{EN}{/jmimetex}
作成する回路がAND,ORおよびNOTのみであれば,上記の論理式で簡単化は完了です.しかし今回はXORも使えるため,実はさらなる簡単化が行えます.まずは{jmimetex}\overline{IN_1}{/jmimetex}をくくり,次のように論理式を変形します.
{jmimetex}A=\overline{IN_1} \cdot (\overline{IN_2} \cdot IN_0 + IN_2 \cdot \overline{IN_0}) + \overline{EN}{/jmimetex}
くくられた項に注目すと,{jmimetex}IN_2{/jmimetex}と{jmimetex}IN_0{/jmimetex}のXORになっていることに気が付いてほしいところです.従って,次のように簡単化されます.
{jmimetex}A=\overline{IN_1} \cdot (IN_2 \oplus IN_0) + \overline{EN}{/jmimetex}
以上でセグメントAの簡単化は終了です.
演習
セグメントAからGまでの論理式をカルノー図を用いて簡単化してください.このとき,下図のカルノー図を必ず使って下さい.
こちらにExcelファイルとTeXファイルがありますのでダウンロードしてレポートで利用してください.
回路のまとめ
各セグメントについて簡単化された論理式のなかには同じ項が存在し得ます. これら同じ項をまとめることで,ANDやORゲートをより削減できます.今回作成する回路では,下記の汎用ロジックICのみ使えますので,それらにあるゲート以下にしなければなりません.
- 74LS04 (NOT) : 1個 → ゲート数 6個
- 74LS08 (AND) : 3個 → ゲート数 12個
- 74LS32 (OR) : 3個 → ゲート数 12個
- 74LS86 (XOR) : 1個 → ゲート数 4個
演習
上記のゲート内になるよう,回路をまとめて下さい.
実体配線図
まとめた回路をブレッドボードに作成する前に実体配線図を作成しましょう.実体配線図とは,電子部品と配線の物理的配置を描いた図です.これを作成しておき,配線が終えたらそこを塗り潰しておくことで,きれいでかつ間違いの少ない回路ができあがります.
さて,実体配線図を作成するには汎用ロジックICの他に,7セグメントLED,抵抗器そしてピンヘッダについて物理的性質を知る必要があります.ここではそれら部品のピンアサインや使用方法について説明します.
7セグメントLED
まずは7セグメントLEDのピンアサインを下図に示します.破線の丸で囲んだ数字がピンで,全部で10本あることがわかります.この図では表示面をおもてにしてみた時のものですのでトップビューです.従って
今回用いているLN516RAはアノードコモンであるため,各セグメントに対応するカソード側端子をLowにするとそのセグメントが点灯します.各セグメントと,LN516RAの端子番号との対応を下図で示します.
各セグメントを点灯させるにはアノードをプラス,カソードをマイナスにすればよいのです.
7セグメントLEDに取り付ける抵抗器
7セグメントLEDには適切に光らせるための電流量が決まっており,それ以上流すと壊れます.このような電流を順方向電流(IF)といいます.IFは必ずデータシートに載っていますので確認してください.下に示したものは今回用いる7セグメントLEDであるLN516RAのデータシートです.注目点はIFが20[mA]のとき,VFがTyp(=Typical,通常)が2.2[V],Max(最大)が2.8[V]となっていることです.つまり,7セグメントLEDを適切につけるにはアノードを2.2[V],カソードを0[V]にしてあげればよいわけです.
※上記の表はPanasonicにあるデータシートより抜粋
下の回路図で説明します.カソードとGNDの間に抵抗器を入れて,アノード-カソード間の電圧を2.2[V]にするようにします.つまり,電源電圧が5[V]ですから,抵抗器で2.8[V]となるような抵抗値にすればいいということです.LEDと抵抗器は直列接続のためともに20[mA]流れますので,抵抗値はオームの法則(V=IR)より,R=V/I=2.8/0.02=140[Ω]となります.ただし,この抵抗値は別の理由で後ほど変わってきますので注意してください.なお,考え方としてはあってます.
汎用ロジックIC
今回使用するICの多くは74シリーズと呼ばれるTTL(Transistor-Transistor Logic)です.バイポーラトランジスタで構成されており,電流を多く流さなければならないのが難点がありますが高速(遅延が少ない)に動作させることができます.このため最近ではCMOS(Complementary Metal Oxide Semiconductor)が主流になってきています.
次に,使用するICのピンアサインについて説明します.AND,OR,NOT,XORすべてにおいて共通しているのは7番ピンがGND,14番ピンがVCC(電源)であるということです.ではどのピンが7,14版ピンなのかということですが,DIP(=Dual Inline Package)の表面片方には,へこみが付いています.このへこみを左側してみたとき,左下が1,そこから右に行くと2,3,…,7と番号が振られています.下側で一番右側のピンになりましたら次はそのうえ,つまり右上のピンが8,そこから左に行くと9,10,…14となります.まとめますと,右下がGND,左上がVCCとなります.下の図はDIPのICをトップビューした時の様子を表しています.
さて,次に汎用ロジックICの出力端子に流すことのできる電流について説明します.汎用ロジックICの中には多くのトランジスタが含まれており,出力端子にもトランジスタが接続されています.下の図はNOTの中身を模式的に表したものです.なお,実際の汎用ロジックICはもっと複雑です.図の中央付近に縦の線があり,この線より左側がIC内部,右側がIC外部です.まず,ベースを0[V]にすると,ゲートが閉じます(トランジスタが動作していない状態のことを指します)ので,オレンジ色で書かれたようにコレクタから流れ出します.反対に,ベースを5[v]にすると,ゲートが開きますので,青色のようにコレクタから外部の電流が引き込まれます.ここで,流れ出すことをソース,引き込まれることをシンクとも言います.まとめますと,オレンジのときには出力端子は5[V],青色の時には0[V]となるのです.これが出力端子の振る舞いです.
汎用ロジックICの最後に,ソースとシンクの電流について説明します.上記のように汎用ロジックICの出力端子にはソースとシンクの二つがあることを理解してもらえたと思います.ここで電流について考えてみましょう.ソースの場合,プルアップしている抵抗により決まってくることが分かりますね.一方,シンクの場合トランジスタのCE間電流に依存します.このため,ソース電流とシンク電流は異なることがあります.下の図は今回使用している汎用ロジックICのデータシートを抜粋したものです.オレンジ色で囲まれたのがソース電流(IOH),青色で囲まれたのがシンク電流(IOL)です.ご覧のとおり,シンク電流の方が圧倒的に多いことが分かります.これは一般的なICでよく見られ,ソース電流はあまりない場合が多いです.もし,ソース電流でLEDをつけようとしても,たった0.4[mA]しかないため,おそらくLEDはほとんど光りません.このような理由から,今回の回路構成ではLEDのカソードをICの出力端子に接続し,LEDに流れた電流をシンクさせてLEDを点灯させています.
※上記の表はTexas Instrumentのサイトにあるデータシートより抜粋
さて,ここでお気づきでしょうか,先ほどのLEDへの電流制限抵抗について.7セグメントLEDの説明では,IFを20[mA]として見積もっていましたが,汎用ロジックICのIOLが16[mA]のため,先ほどの抵抗値では電流が流しきれません.今回,LEDをもう少し暗くても良しとして8[mA]ほど流すことにします.下の図は7セグメントLEDのデータシートに掲載されているIFとVFの関係を表したグラフです.ご覧のとおりIFが8[mA]のとき,VFはおよそ1.98[V]です.これをもとに抵抗値を決めます.
演習
VCC=5[V],IF=8[mA],VF=1.98[V]とするとき,抵抗値はいくつになるか計算してください.
ピンヘッダ
デコーダ回路とセレクタ回路をつなぐためのピンヘッダについて説明します.下の図はトップビューになっています.2×7のピンヘッダを基板のふちに配置します.この後に使うセレクタとの関係で下図のようにピンを使うようにしてください.
以上で部品の説明を終わりにします.
演習
実体配線図を作成してください.このとき,ブレッドボードが描かれたこちらを印刷してください.
回路を作成し終えましたら動作確認をしましょう.下にあるデコーダ動作確認用回路が各班に1個ずつ貸与されていますので,この基板と作成したデコーダ回路基板をフラットケーブルで接続してください.このとき,ピンヘッダの向きが重要になります.デコーダ回路のピンヘッダが下側になるようにおき,その下側に確認用回路をおき,フラットケーブルで接続するとよいでしょう.確認用基板にはEnable確認用とグルスイッチがあり,レバーを上に倒すとHigh,下に倒すとLowとなります.また,中央にはロータリースイッチがついており,0~9までの信号を出力できます.ただし,8,9は4ビットとなってしまうため,上位1ビットは無視され,結果として0と1と同様な動きをするはずです.
報告事項
次に挙げる3項目をレポートにして提出してください.いずれも前述の「演習」で行ったことをまとめればよいです.
- B~Gセグメントに対して下記のことを報告してください.これらはセグメントごとにまとめてください.
- 簡単化前の論理式
- カルノー図(こちらにあるエクセルファイルもしくはTeXソースを利用してください.TeXソースを使った場合には,TeXソースの最初にある\documentclassの次の行へ,以下に示すようにしてパッケージを追記してください.
\usepackage{multirow}
\usepackage{bigstrut}
\usepackage{slashbox} - 簡単化後の論理式
- 回路図
- 1で報告した回路図(セグメントAを含む)をすべてまとめた全体の回路図を作成してください.
- 課題として下記のことを報告してください.
- IF=8[mA],VF=1.98[V]とするとき,抵抗値はいくつになるか計算してください.
注意点
回路図を描くときには,左側が入力,右側が出力となるように努めてください.また,CADソフトを使ってもよいですが,自分で調べてください.CADソフトとしてフリー版があるeagleをお勧めします.こちらのリンクからダウンロードできます.また,この実験で使用する部品を集めたライブラリをこちらに(XML形式で書かれているため,リンクを右クリックして「リンク先を名前を付けて保存」を選択)置いておきますので,よかったら使ってください.