• 検索結果がありません。

LabVIEW による論理回路テキスト

N/A
N/A
Protected

Academic year: 2024

シェア "LabVIEW による論理回路テキスト"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

LabVIEW による論理回路テキスト

(最終改訂 2016/01/22 )

実験の目的

LabVIEWは、データフロー型のプログラミングにより計測器のインタフェースをPC上で構成して計 測器の制御、データの採取、整約等を行う計測制御アプリケーション開発環境で、プログラミングのた めに数値やブール値の入力/出力/演算の部品がメニューパレットで用意されている。これにより、計測器 を接続しなくても単独で簡単な論理回路シミュレーション、音声・画像処理も可能で、本学では2005年 に旧情報工学科の実験拡充のためにキャンパスライセンスで導入した。既に情報学実験Ⅰの課題①③で ICトレーナーとブレッドボードにより組合せ回路の実験を行ったが、本課題ではシミュレーションによ り複数の論理関数の同時構成と簡単化の手法について学修する。後期の情報学実験Ⅱにおいても「セン サーと計測システム」、「画像情報処理」の課題で LabVIEW を使用することとしており、LabVIEW の 操作に慣れその機能について理解を深めることも本課題の目的とする。

注意

本テキストでは実験を行う上で必要な項目について記述しており、カルノー図、論理関数の簡単化の 詳細については論理回路の教科書に譲る。1年後期必修科目「論理回路」の単位を未修得の人は同科目の 内容を十分に復習しておくこと。

2016年度は情報科学研究教育センター第2演習室での作業となり、OSは、Virtual Desktopである。

本課題は課題の単語を受取る前に演習室、カフェテリアで実験手順3節の予習が可能であるが、Virtual DesktopとLocal PCとではOSのフォント設定(ユーザには設定できない)が異なるため、LabVIEW のソースプログラムVI(Virtual Instrument、拡張子.vi)を作成時のOSと実行時のOSとが異なる場 合、部品配置がずれる他、設定した枠から文字が溢れたり過剰な余白を生じたりする。第1、第4演習室 の自由利用時間に予習を行う場合は必ず Virtual Desktopでログインして作業をすること。本テキスト の図および説明文はVirtual Desktopでの実行に基づいており、例えばスタートメニューのリスト(p.12 図15左)もLocal PCの場合には異なることに注意する。

実験ノート以外に用意するもの

USBメモリ(キャプチャ画像、LabVIEWソースプログラム等の保存に使用)

事前準備

必ず、本テキストに最後まで目を通して、全体の作業の流れを把握しておく。LabVIEWについては、

本テキスト末尾の備考p.23 「LabVIEW2013サポートURL」からマニュアル類、情報学実験のページ からLV_sample.zipをダウンロードしてUSBメモリに保存しておくこと。

使用機器

情報科学研究教育センターPC 使用ソフトウェア

LabVIEW(現在の版は2013)

(2)

表紙交付基準

以下の事項について全てが完成したことを確認して表紙を交付する。レポート作成については、各節 の注意の他、本テキスト末尾の備考p.18「レポート作成について」を参照のこと。

単語中の各文字の、7個のセグメントによる表示パタン【実験ノートで確認する】

各セグメントに対応する7本の論理関数の真理値表(交番2進符号の順)【実験ノートで確認する】

7個のセグメントに対応する7本の論理関数のカルノー図および簡単化した論理関数の表現【実験ノ ートで確認する】

作成したLabVIEW VIによる単語文字の順次表示【PCで実際の動作を確認する】

LabVIEW 単独で何ができるか

本項で例に挙げた3本のプログラムのソース(拡張子.vi)はLV_sample.zipに含まれており、解凍し て実行することを推奨する。何れの例もWhileループ(p.17参照)を使用しており、フロントパネルの

「連続実行」ボタン( )ではなく「実行」ボタン( )をクリックすればよい。

本来の用途が制御用のアプリケーションであり、入力した値(当然、実行中に随時変更されるが、こ れには計測器から取得したもの以外に PC の画面上に作られたボタンやスライドで設定したものも含ま れる)に演算を施し、その結果をリアルタイムに表示することができる。

例えば、ブール値(真理値)の入力(押しボタンスイッチ)、出力(LED)、演算(論理ゲート)の部 品を互いに接続して視覚的な論理回路シミュレーションが行える。図1は1ビット2進全加算器(VIの ファイル名はbinary_FA.vi。これはコンピュータで設計したNandゲート8個による回路で、この様な ゲートの最適化を真理値表やカルノー図で行うことはできない)のブロックダイアグラム(左)と被加 数と加数を1(真)にしたときと全ての入力を1にしたときの実行中のフロントパネル(右)の例である。

LabVIEWのブロックダイアグラムの配線は出入りするデータによってブール値は緑、整数は青、浮動 小数点数は橙と色分けされ、入力、出力の部品にも同じ色を対応させることで、型の不一致による誤り がすぐに判る様になっている。LabVIEWで用意されている論理ゲートは2入力までなので、3入力以上 の論理ゲートは「複合演算」を元にして構成する(p.14実験手順4節参照)。

図1 1ビット2進全加算器のブロックダイアグラム(左)と実行中のフロントパネル(右)

(3)

全加算器の様な組合せ回路は、単純に各論理ゲートの出力を他のゲートの入力に配線することにより 論理関数として実現できる。これに対し、順序回路では出力が入力側にフィードバックしており、同じ 入力に対しても内部状態(過去の入力履歴による)により出力が異なる。LabVIEWでゲート図の通りに 出力を入力側に直接配線すると関数として値が一意に定まらないためにエラーとなるが、1クロック遅延 させる「フィードバックノード」(図2中の左向き矢印のユニット)を挿入することで順序回路のシミュ レーションが可能である。

図2はSet/Resetの同時ON/OFFのシミュレーションが可能なNandゲート、NorゲートによるRS 型(SR型)フリップフロップ(以下「FF」と略す。FF本体は図の網掛けの部分でブロックダイアグラ ムの殆どの部分が入力インタフェースである)の構成例(VIのファイル名はRS_FF.vi)である。LabVIEW の制御器であるフロントパネル上の押しボタン、トグルスイッチ、スライドは何れもマウスボタンによ り操作し、1操作で設定できる値は1個である。ここでは複数同時入力のため、キーボードのキーの押下

(註参照)およびマウスボタンのクリックを検出して、Nand型では左右のマウスボタン、Nor型ではキ ーボードのS(キーコード28)とR(キーコード27)を用いてそれぞれSetとResetを入力する。

図2 キーボード、マウスボタンによりSet/Resetの同時ON/OFFが可能なフリップフロップ

RS型FFは安定な状態が2つある対称な回路で、Set、Resetの何れか一方をON(論理値1)にして 設定した状態が、両方OFF(論理値0)で保持され1ビットの情報を記憶するもので、Set/Resetの同時 ONは使わない。実際の回路では完全に物理特性が同じであることはあり得ず、(素子の特性がごく近い 場合に、何れのゲートの出力が 1 となるかが確率的であるとしても)発振することはないが、理論的に は電源投入時に両方1両方0の間で振動(発振)し、シミュレーションでは開始時の発振と、同時 ON から同時OFFに移行した後に発振する様子を確認できる(p.4図3)。

(4)

左右両方のマウスボタンを押すとNand ゲートによるFFの出力は共に1となり、この状態でスクロ ールボタンを押し(ここで発振する)、押している間に左右のボタンを離す。キーボードのSRの両方を 押すとNorゲートによるFFの出力は共に0となり、この状態でSR以外のキーを2個(どのキーでも よいが例えばJK。1個目を押した時に発振する)押している間にSRの両方を離す(SR以外に押すキー が1個の場合には、SRの内、後で離した方の入力が生き残る)。

他の入力の補助無しに左右のマウスボタンまたはSR両キーを同時に無効にすることはできないが、ク ロック周期(図2のメトロノームアイコンへの入力で単位はms。ここでは下限をLocal PCでも安定に 動作する 10ms としている)を長くすれば同一クロックサイクル内に両方を離すことは容易である。ク ロック周期の設定にはマウス操作の必要な制御器を利用できないので Home(10ms に設定)、End(1 秒に設定)のプリセットの他、テンキー(Numpad)の数字キー(TTY の数字キーでは、0 キーのキー コードが0で無入力と区別できない)とDel(クリア)、Enter(確定。TTY、Numpadの何れでもよい)

のキーで値を直接設定する。クロック周期が長い場合、キーまたはマウスボタンの操作が出力に反映さ れる(FFではQ とnot Qが異なる値となる)まで押し続ける必要があるため、数値入力では入力前に Homeを押して10msに設定しておくのがよい。

註:LabVIEW のキーコードはキーボードにより異なる。情報科学研究教育センター第 2 演習室の KU-0325キーボードでは(第1演習室のKB-0325もキーコードは同じ)、TTY数字0~9【0~9】、A~

Z【10~35】、F1~F12【36~47】、テンキー数字 0~9【76~85】等で、PrtSc、Pause、^、¥、@、: 、 右側の Shift にはキーコードが無く、LabVIEW ではこれらのキーの押下を検出できない。詳しくは LV_sample.zip 内の Mouse_KB.exe(解凍後に他の場所に置いて実行する場合には lvinput.dll を含む dataフォルダも同時にコピーすること)を実行して確認のこと。検出できないキーでは、キーを押下し ても押下したキー名を黒で表示するkey label欄(既定はRIGHT)が灰色のままである。実行ファイル は、本テキスト末尾の備考p.23「LabVIEW2013サポートURL」からランタイムエンジンをダウンロー ドしてインストールすれば情報科学研究教育センター以外のPCでも実行できる。

図3 同時にON(左)の後、同時にOFFにした発振の様子(中⇔右)

以上は個々の機能をもった部品を配線して論理関数をゲート図に即して構成した例であるが、フォー ミュラノードと呼ばれる1個のブロックで入力と出力との複雑な関係をまとめて表現することもできる。

フォーミュラノードの枠には配線用に必要な入力と出力の端子を設け、ノードの中には C に類似した構 文で、その関係を記述する。p. 5図4は2個のフォーミュラノードを使用して複素変数の初等関数10種 類を変数値、関数値(ここでは主値)それぞれ実部、虚部に分けて電卓の様に表示する例(VIのファイ

(5)

ル名はcomplex.vi)で、押しボタンスイッチで入力されたブール値を”?1:0”で整数に変換して使用して いる。

図5はiπ/2の自然対数(e=0)と逆余弦(i=1, h=s=0)の主値を表示した例で、Im(z)欄にはπ/2の近 似値を直接入力したのではなく、初期値(z=0)に対する逆余弦のRe(w)の値を右クリック「データをコ ピー」でコピーして「データを貼り付け」で貼り付けている。フォーミュラノードの詳細については、

情報学実験Ⅱ課題⑦「画像情報処理」のテキストを参照のこと。

図4 複素変数の初等関数の主値を表示するブロックダイアグラム

図5 iπ/2の自然対数と逆余弦の主値を表示した例

(6)

7 セグメントディスプレイとデコーダドライバ

課題①③で使用したICトレーナーには、ボックス内右上に2個の7セグメントLEDが配置され2個 の10進数字を表示できた。7セグメントディスプレイ(LEDに限らない)は数字の「8」または漢字の

「日」の形に配置された7個のセグメント(図6)を選択点灯させることにより数字等を表示する素子で、

周辺部分のセグメントには上辺から時計回りにa~f、中央のセグメントにはgと記号が付いている。

ディスプレイに対して表示パタンを直接指定する場合には7個の論理値を必要とするが、LEDの場合、

予め16個のパタンを登録した7セグメントデコーダドライバ(点灯するセグメントを選択し必要な点灯 電力を供給する)を使用することで 4 個の論理値(データシートによって変数名が異なるが、数値を表 した時の上位桁から順にD,C,B,AまたはA3,A2,A1,A0と呼ぶ。)でパタンの指定ができる。表示パタン はデコーダドライバにより異なり、例えば数字の「6」はBCD符号を入力して0から9の10進数字を 表示するもの(例7447,14511)ではaセグメントは消灯している。このパタンは16進表示用(例9368、

54405)では 16 進数字の「B」として使用するため、「6」はaセグメントを点灯させて区別する。「6」

のaセグメントを点灯させる場合に「9」もdセグメントを点灯させて形状の均衡を図るもの(9374)も あり、「7」のfセグメントが点灯するもの(54405)もある。BCDでもHexでもないデコーダドライバ として空白、-、E、H、L、P(文字列HELP 以外に単独では負号、Error またはExponent、High、

Low、PassまたはPositive)を追加したもの(9374:図7、p.7図8に表示パタンと真理値表を示す)

もある。

図6 7セグメントディスプレイのセグメントと表示例(7segment_editor_VDT.exeによる)

図7 デコーダドライバのパタン割付の例(National Semiconductor DM9374)

デコーダドライバの入出力信号には点灯セグメント選択入力(p. 7図8では水色)、セグメントドライ ブ出力(図 8 では黄色)以外に複数の素子を連結して使用する場合のゼロサプレス等の制御用信号が含 まれるが、ここでは割愛する。

(7)

図8 デコーダドライバの真理値表の例(National Semiconductor DM9374)

本課題では、8個のパタンを登録してこれを3個の論理値(2進数と見たときの上位桁から順にy2、

y1、y0とする)で選択するデコーダをLabVIEWで模倣し、空白と与えられた英単語(個人毎に異なる)

の各文字を、(y2,y1,y0)の値を変えて順次表示する。図9は“SECURITY”(8文字の単語であり、空白 のパタンは登録していない)を表示する LabVIEW プログラムを実行中のフロントパネルの例で、左は 自動実行(スライドで実行速度を1秒に1文字と指定している)で英字C、右は通常実行で(y2,y1,y0)=

(1,0,0)で英字yを表示している例である。p. 8 図10 はこのプログラムのブロックダイアグラムである。

図9左、10で黄色の枠内は自動実行に関係する部分で、表紙交付基準には含まれていないが、レポート では自動実行の機能についても考察すること。

図9“SECURITY”を表示するLabVIEWプログラムの実行例

(8)

図10 “SECURITY”を表示するLabVIEWプログラムのブロックダイアグラムの例

ここで、動作確認の便宜(1個の変数の値だけを反転することで単語中の次の文字を表示できる)とカ ルノー図(隣り合う四辺形に割当てられた変数のハミング距離が1)で簡単化を行える原理の理解のため 自然2進符号(通常の符号無整数)ではなく交番2進符号(グレイ符号:註参照)の順に単語の文字を 割り付けるので、この例では (y2,y1,y0) の値 (0,0,0)、(0,0,1)、(0,1,1)、(0,1,0)、(1,1,0)、(1,1,1)、(1,0,1)、

(1,0,0) のそれぞれがS、E、C、U、R、I、T、Yに対応する。

課題では、(y2,y1,y0)=(0,0,0) を空白、(0,0,1)、(0,1,1)、(0,1,0)、(1,1,0)、(1,1,1)、(1,0,1)、(1,0,0)を 単語の各文字に対応させる。本課題では、not と nandのみではなく、and、or、eor など他の論理を用 いて構わない。

註:負でない整数のnビット自然2進表現、交番2進表現をそれぞれ(bn1 bn2 bn3 … bk … b2 b1 b0) 2、 (gn1 gn2 gn3 … gk … g2 g1 g0) Gとするとき、両者の間にはgn1= bn1、gk = bk+1

bk(0≦kn-2)

の関係がある。

隣接する整数m(0≦m≦2-2)、m+1の自然2進表現で異なっている桁の最上位をbt(0≦t≦n-1)

とすると、mm+1の下位t+1桁の自然2進表現はそれぞれ011…11、100…00であり、上記の関係か らm、m+1の交番2進表現で異なる桁はgtのみとなる。すなわち、交番2進符号では隣接する整数の表 現は1つの桁のみが異なる。2-1と0もまた1つの桁gn1のみが異なり、隣接しているとみなされる。

表示する単語は1人ずつ異なるものを割当てるので論理関数の複雑さも異なるが、不公平の無い様に、

実験開始時に籤引きの要領で選んでいただく。

(9)

表1 各英字に対する点灯セグメントの表示例

a b c d e f g

1 1 1 1 1 1 A

1 1 1 1 1 1 1 B

1 1 1 1 C

1 1 1 1 1 d

1 1 1 1 1 E

1 1 1 1 F

1 1 1 1 1 1 G

1 1 1 1 1 H

1 1 I

1 1 1 J

1 1 1 L

1 1 1 n

1 1 1 1 1 1 O

1 1 1 1 1 P

1 1 1 1 1 q

1 1 r

1 1 1 1 1 S

1 1 1 1 t

1 1 1 1 1 U

1 1 1 1 y

1 1 1 1 1 Z

実験手順

0.相異なる7文字から成る単語が印刷された紙片を受取る。

受取った紙片に印刷された単語を実験ノートに書き写し、紙片(提出するレポートに貼付するので紛 失しない様に注意する)を大切に保管する。

(10)

1.aからgの7個のセグメントに対応する論理関数の真理値表を作成する。

単語中のi番目(1≦i≦7)の文字を (y2,y1,y0)G=iとなる (y2,y1,y0) に対応させ、(0,0,0) では全 セグメントを非点灯にする【但し、例では8文字単語の最初の文字Sを表示する】。文字を表示するセグ メントの対応は p.9 表1 を参考にして(この通りのパタンである必要はなく、独自に表示を決めてよい が、その場合には対応表をレポートに明記すること。表 1 の対応を使用する場合、レポートには「セグ メントの対応はテキスト表 1 の通り」と記述するのみでよいが、実験ノートには必ず各文字の表示パタ ンを記載すること)、7個のセグメント(aからg)について、それぞれを点灯させるときを1とする7 本の論理関数を求め、表2の例の様に変数値の順序を交番2進符号とした真理値表を作成する。

表2 SECURITYを表示する各セグメントに対する論理関数の真理値表

y2 y1 y0 a b c d e f g

0 0 0 1 1 1 1 1

0 0 1 1 1 1 1 1

0 1 1 1 1 1 1

0 1 0 1 1 1 1 1

1 1 0 1 1

1 1 1 1 1

1 0 1 1 1 1 1

1 0 0 1 1 1 1

2.7本の論理関数のそれぞれについて、カルノー図を作成し論理関数の簡単化を行う。

注意

LV_sample.zipに含まれるセグメントエディタ(Virtual Desktop用は7segment_editor_VDT.exe)

では表示パタンの編集、デコーダへの登録からカルノー図の作成、簡単化までの作業を効率的に行うこ とができるが、これを用いた場合にもカルノー図と論理関数の簡単化の結果を必ず実験ノートに記録す ること。

真理値表の情報を図形で表わすカルノー図は、隣接する四辺形で 1 個の変数の値だけが異なる(ハミ ング距離が1)様に割付けられており、隣接する(ここでは左端と右端も隣接していると考え、4変数の カルノー図では上端と下端も隣接しているとする)「1」をまとめることによりブール代数の公理である 相補律と分配律に基づく論理関数の簡単化(ここでは加法標準形による簡単化)を直感的に行える。

カルノー図でどの変数を縦横どの順に割付けるかについては自由度があるが、ここでは縦にy2の値を 0、1、横に(y1,y0)の値を(0,0)、(0,1)、(1,1)、(1,0)の順に割付けている。(0,0)、(0,1)、(1,0)、

(1,1)ではないことに注意する。

前節で真理値表を交番2進符号の順に作成したので、真理値を(0は飛ばして1の箇所だけ)順に記入 すればそのままカルノー図となる。p.11図11はeセグメントの例で、表2のeセグメントの部分(図左)

の論理値を左から順に記入して右端で折返したカルノー図(図中、四辺形右下の数字は (y2,y1,y0)2の値)、

(11)

セグメントエディタで作成したカルノー図(図右)である。

図11 eセグメントに対する論理関数(左)、カルノー図(中)、7segment_editor_VDT.exeの画面(右)

eセグメントに対する論理関数のカルノー図(以下、簡単のため「eセグメントのカルノー図」とい う。)で(y2,y1,y0)2の値が5、6の四辺形はそれぞれ隣接する(y2,y1,y0)2の値が1、2の四辺形とまとめる 以外に簡単化できない(図12左でそれぞれ水色、黄色の長方形。孤立してまとめることのできない「1」

を含め、この様にして得られるものを必須項という)。これに対して、(y2,y1,y0)2の値が 3 の四辺形は、

隣接してまとめることのできる「1」の四辺形に(y2,y1,y0)2の値が1と2の2通りある(図12左の赤枠 と青枠)。eセグメントのカルノー図単独では何れにも決められないが、同時に構成する他の論理関数の カルノー図を見ると、aセグメントのカルノー図(図12右)の必須項にeセグメントのカルノー図の赤 枠の長方形が含まれており、これを選べばよいと分る。

図12 左 eセグメントのカルノー図 右 aセグメントのカルノー図

図13に7segment_editor_VDT.exeによる7セグメントのカルノー図を一覧で示す。“SECURITY”の 例では、eセグメント以外の論理関数は全て必須項のみで構成されているが、複数の論理関数を同時に 構成する回路では必須項を全て生成することが最良とは限らない。

図13 各セグメントのカルノー図(7segment_editor_VDT.exeの画面)

前節の表2(p.10)に見る通り、bセグメントとcセグメントで論理関数の値が異なるのは(y2,y1,y0)2

の値が0の部分のみである。cセグメントのカルノー図(図14右)で(y2,y1,y0)2の値が0の部分を含む 2 個の色枠の部分は共に必須項であるが、何れの項も他のセグメントでは使用していない。したがって、

何れか一方のみを生成してcセグメントの論理関数はbセグメントの論理関数(p.12図14左、全て孤立 した「1」で隣接する「1」とまとめることができない)との論理和で構成すれば(実際の回路ではゲー

(12)

トの段数が増える遅延のデメリットもあるが)ゲートを1個減らすことができる。

図14 左 bセグメントのカルノー図 右 cセグメントのカルノー図

3.LabVIEW2013 を起動し、必要な制御器をフロントパネルウィンドウでパレットから選んで配置す る。

本節と次節の作業では作成中のVIを随時、ファイルメニューの「保存(S)」または「別名で保存(A)」

で保存しておくこと。

PCのスタートメニューから「すべてのプログラム」→「NI LabVIEW 2013(32 ビット)」をクリックし てLabVIEW2013(以下、単に「LabVIEW」という)を起動する(図15左)。LabVIEWウィンドウで Ctrl+Nまたは、「ファイル」メニューの「新規VI Ctrl+N」をクリックする(図15中)と未入力状態 の「名称未設定1」のフロントパネルとブロックダイアグラムのウィンドウが表示され、フロントパネル ウィンドウを手前に表示したときには「制御器」、またブロックダイアグラムウィンドウを手前に表示し たときには「関数」のパレットが開く(図15右)。図15右はログイン後の最初のLabVIEW起動で新規 VIを開いた場合の画面で、「制御器」では「モダン」、「関数」では「プログラミング」が表示されるが、

両パレットの表示内容は LabVIEW の作業履歴により異なる。作業中にパレットを一度閉じて、ウィン ドウを手前に表示しても当該パレットが表示されない場合にはそれぞれのウィンドウで右クリックする。

図15 LabVIEWを起動し新規VIを作成する。

はじめに、y2、y1、y0 を設定する押しボタンスイッチとa~gセグメントを表示するLEDをフロン

(13)

トパネルに配置する。LabVIEWのフロントパネルウィンドウが手前に表示された状態で、入力用に、「制 御器」→「モダン」→「ブール」パレットから「押しボタン」、「垂直トグルスイ…」等から好きな形状 のものを(3個必要である)、また出力用に同じ「ブール」パレットから「四角LED」(最終的に7個必 要であるが編集で縦型と横型各1個を作成してそれぞれを複製すればよい)をそれぞれドラグして選ぶ。

図16は四角LEDを選んでフロントパネルにドラグした例で、ブロックダイアグラムにも自動的に反映 される。

図16 「詳細Helpを表示」を指定し、四角LEDをフロントパネルに配置した例

四角LED(初期状態では高さ8横24)をセグメントの形状に編集する。直接マウス操作で伸縮変形し てもよいが、四角LEDを右クリックしてプロパティを開いて設定するのが容易である。図17は縦長の bセグメント用にサイズを高さ72横12、ラベルをb、ON時の色を赤に変更した例である。

図17 四角LEDのプロパティを開いてサイズ、ラベル、ON表示色を変更する。

編集した四角LEDの複製手順は、①範囲指定(四辺形の頂点の一つを左クリックし、対角線をドラグ する)で囲み、②「編集」メニューの「コピー(C)」をクリック、③複製を配置する場所をクリック、④

「編集」メニューの「貼り付け(P)」をクリック(③④は必要個数の 3 回繰返す)である(p.14図 18)。

配置の調整は、四角LEDの頂点にマウスを位置付け(クリックはしない)マウスポインタが矢印の形( ) に変ったらクリック・ドラグで移動する。横型のセグメント、押しボタンスイッチの複製、配置調整に ついても同様である。

(14)

図18 縦セグメント用に編集の終った四角LEDを複製・配置する。

4.必要な関数をブロックダイアグラムウィンドウでメニューから選んで配置して配線する。

LabVIEWのブロックダイアグラムウィンドウを手前に表示し、a~gの各論理関数に必要な演算を、

「関数」→「プログラミング」→「ブール」パレットから選ぶ。パレットにゲート記号で用意されてい るand、or(論理和、論理積は、ブール代数では2項演算であり、3入力以上のand、orは、交換律、

結合律が成り立つことを利用して、論理回路で拡張されたものである)は 2 入力に固定されており、3 入力以上の論理を実現するためには、「複合演算」(註参照)を編集して用いる。

註:2012年まで使用したver.8.5.1ではブール代数の原則に忠実に「ブール関数」からは追放され「数値」

の中に掲載されていたが、ver.2013 では既定の演算を加算(+)から論理和(∨)に変更の上で、旧版

(ver.7.1)と同じくブール関数のパレットに含められている。

図19 ブール関数パレットと複合演算の編集による4入力Nandゲートの構成

例として 4入力の nand を構成するには、複合演算をブロックダイアグラムにドラグし(この状態で は既定で2入力、操作は論理和で、パレットに表示された形状とは異なる。以下の3種類の操作の順序

(15)

は任意である)入力側(マウスポインタが糸巻の形になる)を右クリックし「入力を追加」を選び、こ れを2回行って 4入力とする。操作部分(マウスポインタが手の形になる)を右クリックして(左クリ ックでもよい)「モードを変更」で「AND」を選び(操作部分の記号が∧に変る)、最後に出力側(マウ スポインタが糸巻の形になる)を右クリックし「反転」(操作部分を左クリックしてもよい)を選べば(右 側に極性反転の「」が付く)完成である(p.14図19)。

配線は、出力端子(スイッチ、ブール関数の右側の三角形: )にマウスポインタを移動して(糸巻 の形になる)左クリックし、入力端子(LED、ブール関数の左側の三角形: )までドラグして両者を つなぐ。ドラグ中の配線は黒の点線で表示され1回だけ直角に曲げられる。2回以上曲げたい場合には、

一度マウスボタンを離し(破線表示となる)クリックして続行する。接続が完了するとピッチの細かい 緑の点線(これはブール型データの場合で、整数、浮動小数点数の場合はそれぞれ青、橙の実線)の表 示となる。同じ出力端子から複数の入力端子に接続するには、配線の途中で右クリックして「ワイヤの 分岐を作成」を選び、ドラグして配線する。図20はスイッチと円LEDと直接つないだ後、分岐して四 角LEDにつないだ例である。

図20 スイッチの出力を円LEDと四角LEDに分岐して接続する配線の例

5.実行して動作を確認する。

(y2,y1,y0) の値を変えて、実行中のフロントパネルウィンドウの8通りの表示について全てPrtScで キャプチャすること。

フロントパネルウィンドウの「連続実行」ボタン( )をクリックし、3個のスイッチの状態を交番2 進符号の順に従い、(0, 0, 0) から (1, 0, 0) まで切替え、課題の単語の文字が正しい順序で正しい形状に 表示されることを確認する。停止は「実行を中断」( )をクリックする。ブロックダイアグラムで、

全体をWhileループ(Whileループについてはp.17を参照)で囲み条件端子(「実行を中断」ボタンと 同じ形の部品)にFALSE定数を入力(例えばp.2図1のブロックダイアグラムの左下)しているときは

「連続実行」ではなく「実行」ボタン( )でよい。正しく動作することを確認したらブロックダイア グラムウィンドウをPrtScでキャプチャする。

p.16図21は“SECURITY”を表示するLabVIEW プログラムの例(自動実行のユニットを含むpp.7

8、図9、10のVIとは異なり、全ての配線が緑色、すなわち部品に出入りする信号は全てブール値)

である。

(16)

図21 “SECURITY”を表示する自動実行部分を含まないLabVIEWプログラムの例

正しく動作しない場合には実験ノートで真理値表、カルノー図、簡単化された論理関数の項を十分に 確認の上、配線をチェックする。配線の重なりが見辛い場合には、配線上で右クリックして「ワイヤを 調整」を選ぶ(調整して却って見辛くなったときはCtrl+Zまたは編集メニューの「配線を取り消し」で 元に戻す)。VIが正しく構成されていない場合、制御器、表示器についてはフロントパネル、ゲート選択、

配線についてはブロックダイアグラムで必要な編集を行う。

例えば、不要な部品の削除はクリック・ドラグで範囲を指定して、Ctrl+Xまたは編集メニューの「切 り取り(T)」の後、Ctrl+Bまたは編集メニューの「不良ワイヤを削除(B)」を(不良ワイヤを1回では取 り除けない場合は2回以上)行う(何れもCtrl+Zで復活する)。編集操作はフロントパネルウィンドウ、

ブロックダイアグラムウィンドウの両方で可能であるが、ゲート、配線の削除はフロントパネルでは行 えず、部品をフロントパネルから削除した場合も結果はブロックダイアグラムに表示する必要があり、

削除はできるだけブロックダイアグラムで行うのが適当である。

6.空白と単語の文字を自動的に順次表示する機能を追加する。

本節の作業は表紙交付基準には含まれないが、レポートでは考察に含めること。

時間に余裕があれば、カウンタおよび自然 2進から交番 2進への変換を追加して(y2,y1,y0)の値を 自動的に変更して空白および単語の各文字を順次表示させる。図 9(p.7)の例ではフロントパネルに自 動と手動の動作を切替えるトグルスイッチ(ラベルAUTO)、自動実行の速度を調節する水平スライド(ラ ベルclock (Hz))、カウンタの零復帰ボタン(ラベルRESET)を設けているが、ここでは零復帰のみを 必須とし、自動実行の速度は(例えば)1秒に1ステップと固定してよい。

(x2,x1,x0)2をi((0≦i≦7)の自然 2進表現、(y2,y1,y0)Gを同じiの交番 2 進表現とするとき、両

(17)

者の関係は.p.8註の通り、y2=x2,y1=x2

x1,y0=x1

x0となる。図22は、(x2,x1,x0) を垂直トグル スイッチ、(y2,y1,y0) を円LEDで表示する独立したVIとして構成した例である。

図22 自然2進から交番2進への変換VIの例:フロントパネル、実行画面、ブロックダイアグラム

(x2,x1,x0)2が表す値iが1秒に1だけ増える(但し、7の次は0に戻る)様にx2,x1,x0の値を設定す るには1秒に1増加する整数を生成し、これを自然2進表現を求める手順に従い2で割った余りを求め て最下位桁のx0から順次求めればよい。フィードバックノード(p.3図2等参照)を用いるので最初に ブロックダイアグラムに「関数」→「プログラミング」→「ストラクチャ」パレットから「While ルー プ」を選んで配置する(図23)。マウスポインタを、Whileループを配置したい箇所の左上に移動して左 クリックし、そのまま配置したい箇所の右下までドラグしてマウスボタンを離す。一度配置した後でも 辺の中心のクリック・ドラグで幅と高さの変更、四隅のクリック・ドラグで同時変更が可能で、四隅と 中点以外の箇所の左クリック・ドラグで位置を自由に移動できる。While ループを配置したら、ヘルプ メニューの「詳細ヘルプを表示(H)」をクリックして「オンラインヘルプ」を開く。Whileループの初期 状態で右下隅にある条件端子にはFALSE定数(「関数」→「プログラミング」→「ブール」)を入力する。

図23 Whileループを配置して、「詳細ヘルプ」の「オンラインヘルプ」を開く。

図10(p.8)では自動実行の速度を可変とするため浮動小数点数を使用しているが、単純な整数のイン

(18)

クリメントには、「インクリメント」(図24で「+1」と書かれた右向き三角形)にフィードバックノード を介した現在値を入力すればよい。零復帰には、「選択」を使用し、「インクリメント」の結果と定数 0 とを零復帰入力のブール値RESETで選択する。

必要な演算部品は、「次のミリ秒倍数まで待機」(「関数」→「プログラミング」→「タイミング」)「イ ンクリメント」、「商&余り」、「数値定数」(共に「関数」→「プログラミング」→「数値」)、「選択」、「0 に等しくない?」(共に「関数」→「プログラミング」→「比較」)、図24は、押しボタンスイッチによる RESETと円LEDによる(x2,x1,x0) を配置し独立したVIとして構成した例である。数値定数は0、2、

1000 にそれぞれ設定して使用する。「フィードバックノード」は「関数」→「プログラミング」→「ス トラクチャ」にあるが、これを使わず直接配線して(当然「ワイヤサイクルを形成しています」のエラ ーになる)配線を右クリックしてメニューから「フィードバックノードを挿入」を選んでもよい。

図24 カウンタVIの例:フロントパネル、実行画面、ブロックダイアグラム

自動実行機能の実装では、単純実行のVI(例は図21)のフロントパネル、ブロックダイアグラムを編 集して自動実行の部品(例は図22、24)を追加するのが容易であるが、実行時に垂直トグルスイッチが 動いて切替ることはない(例は図9左)。単純実行のVIをサブVIとして登録し、自動カウント機能をも つメインVIから呼出した場合にはスイッチが自動的に切替る様子を見ることができる。興味のある人は pp.2426 サブVIによる自動実行を試みて頂きたい。

備考

レポート作成について

レポートには以下のものを必ず含めること。

課題の単語が印刷された紙片(出席確認時に受取ったものをレポート表紙に貼付する)

各文字の表示パタン(p.9表1とは異なるパタンを採用した場合)

(19)

各セグメントに対する真理値表、カルノー図、簡単化した論理関数の表現

空白および単語の各文字が表示された実行中のフロントパネルのキャプチャ(計8枚)

ブロックダイアグラムのキャプチャ

自動実行機能の実装についての考察 セグメントエディタについて

このプログラムは、本課題の作業を効率的に行うための支援ツールであり、単に結果を機械的に実験 ノートに転記するのではなく、カルノー図の意味と簡単化の原理について理解して利用すること。

LV_sample.zip中のプログラムはVirtual Desktopに合せているが、本プログラムのみは本テキスト末 尾記載のランタイムエンジンを個人所有のPC(Local PCと同じ設定であることも多い)にインストー ルして自習する場合の便宜を図るため、Virtual Desktop、Local PCのそれぞれのフォント設定に合せた 7segment_editor_VDT.exe、7segment_editor_LPC.exe の2種類の実行ファイル(Mouse_KB.exeとは 異なり、dataフォルダ中のlvinput.dllは参照しない)を含めており、ログインOSに応じて選ぶこと。

機能としては、①標準的な3種類のセグメントデコーダの表示を確認できる。②4ビット入力(上位か ら順にA3, A2, A1, A0)に対する7個のセグメントの表示を、表示される形で編集でき、結果を一度に8 文字表示できる。③作成した表示に対応する各セグメント(a~g)の論理関数がカルノー図の形でLED 表示され、簡単化された加法標準形の論理項が表示される。④デコーダ設定内容のテキストファイルか らの読込み・書出しができる。本実験課題に即した利用法は以下の通りである。

1.セグメントエディタを起動し、セグメント配列のトグルスイッチを設定する。

最初にデコーダ設定ファイル読み込みのウィンドウが開くので(この機能は作成済の設定ファイルを 修正してデコーダ設定を完成するためのものである)キャンセルをクリックする。スクロールして画面 右の8組のセグメント配列を表示し、対応するトグルスイッチを、左から順に4ビット交番2進表現で の0~7(自然2進数として、それぞれ0、1、3、2、6、7、5、4:これはp.11図11に示す通り3変数 のカルノー図を左上から右に行って折返す一筆書の順序で、盤面上でも確認できる。)を設定する(図25 下枠内)。このとき、「decoder」の「select」で0(7447BCD)~2(9374HELP)の何れかを指定し(図 上枠内)、「0 1 3 2 6 7 5 4」と表示されることを確かめる。6の字体がデコーダにより異なるが、図25は aセグメントが点灯する9368HEXのものである。

図25 交番2進符号の順に8組のスイッチを設定したところ(「0 1 3 2 6 7 5 4」と表示)

(20)

2.各文字のパタンを編集する。

「decoder」を3(CUSTOM)に切替え、画面左のセグメント(中にaからgの文字が表示され、クリ ックするとON/OFFが切替り、表示も赤、灰と切替る)をクリックして所定の文字の形に設定する。デ コーダ入力(課題での変数y2,y1,y0はここではA2,A1,A0に対応し、最上位のA3は0に固定)を「(A3 A2 A1 A0)2」のボックスで選択し、SETを押す。図26は、SECURITYのR((A3 A2 A1 A0)2を6に 指定してSETをクリック)まで作成が終ったところである。

図26 「decoder」を3(CUSTOM)に切替え、rの編集まで終ったところ

空白と、単語の7文字の形を各(A3 A2 A1 A0)2に割付けそれぞれSETで設定したら、画面右の8組の セグメント配列が、空白と与えられた単語の7文字をこの順に表示していることを確認する(図27)。こ の例では8文字の単語であり、(A3 A2 A1 A0)2が0のとき空白ではなくSを表示している。

図27 SECURITYの表示設定が終了したところ(この例は8文字単語なので空白は無い)

3.カルノー図を読取り、実験ノートに転記する。

いきなり簡単化された結果(編集用7 セグメントの左側)を見るのではなく、カルノー図を実験ノー トに転記して、自分で簡単化を試みること。

(21)

すべての文字表示の設定が終ったら、「function」の「select」でセグメントを指定して各セグメントの 論理関数を示すカルノー図を読取り、これを用いて簡単化を行う(左方に簡単化された論理項が表示さ れるが最初に答を見ないこと)。4ビット入力のうち、使用しているのは下位3ビット(A2,A1,A0)なの で、カルノー図の上2行だけに着目する(一覧はp.11図13参照)。図28はfセグメントの例でnot A1 or not A2すなわちnand(A1, A2)となることが読み取れる。

図28 fセグメントのカルノー図と簡単化された論理項

4.簡単化された結果を確認する。

編集用7セグメントの左側に必須項の個数(表示器ラベル「number of essential terms」)と簡単化さ れた論理項の集合(必須項、それ以外の主項の順)が表示される。ここではA3を使用していないので、

「logical term」ではnot A3 and、その右の「A3A2A1A0」では最上位桁の0を無視する。図29はeセ グメントの例(“SECURITY”の表示では、e以外のセグメントの論理関数で簡単化された加法標準形は 全て必須項のみで構成されている)で、必須項ではない 3 行目の論理項は探索(註参照)の初期条件に より異なる。図左ではnot A2 and A1(01)であるが、水平スライド「iteration count」を動かして初 期条件を変更した図右ではnot A2 and A0(01)が表示されている。

図29 eセグメントの論理関数には必須項ではない主項がある。

註:本プログラムの簡単化のアルゴリズムは LabVIEW のフォーミュラノードを用いて記述しており、

(22)

加法標準形による最小集合を(フォーミュラノードの構文上の制限から必須項以外の主項については)

探索的に構成している。4変数で真理値表に「1」が8個で必須項が無い最悪の場合、最小集合を得られ ない確率を104とする「iteration count」は171である。

必須項ではない主項の選択は当該セグメントのカルノー図単独では決められないが、同時に構成する 他の論理関数のカルノー図を見ると、aセグメントのカルノー図の必須項にnot A2 and A0(01)が含 まれており、これを選べばよいと分る(図30:p.11図12参照)。

図30 他の論理関数を見ると、aセグメントの必須項にnot A2 and A0(01)が含まれる

簡単化の番外であるが、各セグメントのカルノー図を対比すると(p.11図13参照)、dセグメントの カルノー図(図31左)は(0100)の箇所が0である以外はfセグメントのカルノー図と同じである。変 数値(0100)はyを表示する設定であるが、この場合、dセグメントを点灯してもyと読めることから パタンを修正(図31右)すればfセグメントの出力をそのままdセグメントで流用することができる。

図31 dセグメントのカルノー図でyの表示を変更するとfセグメントの出力を流用できる

(23)

5.セグメントエディタを閉じる。

設定内容を保存するには、編集用セグメント下のSAVEボタンをクリックして(図32)ファイル名を 指定して保存の後アプリケーションを閉じる。保存されるファイルは16通りのパタン(本課題では8通 りのみ使用)に対する各セグメントの点灯状態を示す7ビット整数(aセグメントがMSB、gセグメン トがLSBに対応)から成るテキストファイルで本課題では最初の行(8文字単語のSECURITYでは0 ではない)と後半の8行は0である。

図32 編集パネル下のSAVEボタンをクリックして設定結果をテキストファイルに保存する。

LabVIEW2013サポートURL

マニュアル類はファイル名に「_0112」の付いたものが日本語版。

LabVIEWスタートアップガイド

http://www.ni.com/pdf/manuals/373427j_0112.pdf http://www.ni.com/pdf/manuals/373427j.pdf

LabVIEW2013ヘルプ(lvhelp.chmを開いて利用する)

http://www.ni.com/pdf/manuals/371361k_0112.zip http://www.ni.com/pdf/manuals/371361k.zip

LabVIEWクイックリファレンスガイド(1枚シート)

http://www.ni.com/pdf/manuals/376039a_0112.pdf http://www.ni.com/pdf/manuals/376039a.pdf

ランタイムエンジン(LabVIEW2013 の本体が無くても情報科学研究教育センターPC にインストー ルされた32b版で作成されたexeファイルを実行できる)

http://ftp.ni.com/support/softlib/labview/labview_runtime/2013/Windows/LVRTE2013std.exe

(24)

サブVIによる自動実行

LabVIEWでは、VIのフロントパネルの制御器入出力を端子に割付けたものをサブVIと呼び、VIの ブロックダイアグラムに通常の部品同様に配置・配線して参照し、ダブルクリックしてサブVIのフロン トパネルを表示して実行中の値を確認することもできる(LabVIEW 2009以降は再帰呼出しも可。註参 照)。以下に、カウンタVI(p.18図24の例でcounter.vi)から自然2進交番2進変換VI(p.17図22の 例でb_to_g.vi)、文字表示VI(p.16図21の例でSecurity.vi)を呼出して実行する手順について示す。

註:既定の設定では再帰呼出しは不可で、また同じサブVIが複数の箇所から呼ばれる場合、サブVIを 参照しているブロックダイアグラム上でサブVIを個々にクリックしても表示されるフロントパネルは1 個のみである。各箇所での入出力をサブVIのフロントパネルの表示で同時に確認するには、「ファイル」

(または VI アイコンを右クリック)→「VI プロパティ」→「実行」カテゴリで「クローンの事前割り 当てによる再入実行」をチェックしておく必要がある。本課題の用例では既定の設定で構わない。

1.サブVIとして登録するVIのフロントパネルで制御器入出力を端子に割付ける。

b_to_g.vi とSecurity.viについて、それぞれのフロントパネルVIアイコンの左のコネクタペーンを右 クリックし(図33左)、「パターン」から(サブVIの参照関係で必要な)入出力の個数に合うものを選 ぶ(図33右は入出力が各3個のb_to_g.viの例で を選んでいる。Security.viにはセグメント表示の7 個の出力があるが、本課題ではこの出力を参照するサブVIが無いのでパターンは入力3個用に を選べ ばよい)。

図33 参照する入出力の個数に合うコネクタペーンのパターンを選ぶ。

コネクタペーンの端子にフロントパネルの制御器の入出力(両方ある場合、コネクタペーンの左側の 端子を入力、右側の端子を出力に用いる)を 1 個ずつ、①コネクタペーンの端子(クリックすると黒に 変る)、②フロントパネルの制御器(クリックすると端子がブール値を示す緑に変る)の順にクリックし

(25)

て対応付ける(図34はb_to_g.viの例で、端子の左上からx2、x1、x0、右上からy2、y1、y0にそれぞ れ割付けている)。割付が完了したら制御器以外の部分をクリックする。正しく対応付けが行われたかは、

コネクタペーンの端子をクリックして割付けられた制御器が破線で囲まれることで確認できる(図34右 端は y0 に割付けられたコネクタペーン右下の端子をクリックした状態)。出力端子はコネクタペーンで 太い黒枠で囲まれ、入出力の違いが分る様になっている。

図34 コネクタペーンの端子、フロントパネルの制御器の順にクリックして対応付ける。

2.メインVIのブロックダイアグラムにサブVIを配置し配線する。

サブVIのフロントパネルのアイコンをクリックすると破線表示に変り(図35左端。例はb_to_g.vi)、

これをメインVIであるcounter.viのブロックダイアグラム上にドラグ&ドロップし、右クリックして「表 示項目」の「ラベル」にチェックを入れて VIのファイル名を表示する(図 35 左から 3個目。サブ VI のアイコンを個別に編集してブロックダイアグラム上で識別を容易にすることもできるがここでは割愛 する)。必要なサブ VI を順次ブロックダイアグラムに配置してデータの依存関係の通りに配線する。マ ウスポインタをサブVIの端子に合せると割付けられている制御器のラベル(図35左から4個目の例で はb_to_g.viのy0)が表示されるので配線は容易である。ここでは円LEDの(x2,x1, x0)を、実行時に b_to_g.viのトグルスイッチ(x2,x1,x0)の動作と比較するため「切り取り(T)」で削除せずにそのまま残 し、円LEDへの配線を分岐してb_to_g.viの入力端子に接続している。

図35 メインVIのブロックダイアグラムにサブVI を配置し配線する。

3.メインVI、サブVIのフロントパネルを表示してメインVIを実行する。

メインVIと参照しているサブVIのフロントパネルを全て表示する(前節の作業後に閉じた場合は、

(26)

メインVIのブロックダイアグラムでサブVIをダブルクリックして開く)。図36はメインVIのcounter.vi の「実行」ボタン( )をクリックして実行中の例で、b_to_g.viの垂直トグルスイッチ(x2,x1,x0)が counter.vi の円 LED(x2,x1,x0)に、Security.vi の垂直トグルスイッチ(y2,y1,y0)が b_to_g.vi の円 LED(y2,y1,y0)に、それぞれの値に対応して自動的に切替る様子を見ることができる。

図36 サブVIのフロントパネルのトグルスイッチが自動的に切替る

図 37、38 は、counter.vi で零復帰の RESET ボタンをクリックした様子で、クリック直後ではなく counter.vi のWhileループの待機時間(この例では1秒)のサイクルの区切りでリセットされる。

図37 メインVIでRESETボタンをクリックしても直ちには零復帰しない。

図38 待機時間のサイクル終了で零復帰する。

図 2 は Set/Reset の同時 ON/OFF のシミュレーションが可能な Nand ゲート、Nor ゲートによる RS 型(SR 型)フリップフロップ(以下「FF」と略す。FF 本体は図の網掛けの部分でブロックダイアグラ ムの殆どの部分が入力インタフェースである) の構成例(VI のファイル名は RS_FF.vi)である。 LabVIEW の制御器であるフロントパネル上の押しボタン、トグルスイッチ、スライドは何れもマウスボタンによ り操作し、 1 操作で設定できる値は 1 個である。ここでは複数同時
図 5  iπ/2 の自然対数と逆余弦の主値を表示した例
図 6  7 セグメントディスプレイのセグメントと表示例(7segment_editor_VDT.exe による)
図 8  デコーダドライバの真理値表の例(National Semiconductor DM9374)
+7

参照

関連したドキュメント

受信部で発生させた PRBS と比較される。同期要求パルス を受信した場合は、送信側から伝送されてきた PRBS の n 段分の値を、同期引き込み回路のシフトレジスタで

「 Laboratory Virtual Instrument Engineering Workbench」の略にその名の由来を持つ, National.

プログラム 工場で行う ユーザが行う 配線の制限 自由に指定可能 制限がある ゲート使用効率 高い 低い. 使えるまで

このシステムの振動制御方法 にアクティブ制御および ハイブ リッ ド制御 を適用する.次に,それぞれに対 し て,全状態量 をフィー下バ ック した琴合 と車両以外の 状態量をフィー

表2:乾燥頭蓋骨上での実測値とパノラマエックス線写真上での計測値との比較結果(下顎) 計測法

出力系としての検討  リアルタイム音楽音響信号処理システムとし

論理回路 2018-12 電源,クロックについて 74シリーズの TTL

  GP-IB 豆知識  GP-IB でパソコンと計測器を接続する。