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

問題点とその解決法

ドキュメント内 Microsoft Word - 卒業論文.doc (ページ 63-66)

5.1 ハードウェア 1. 設計段階の配線ミス

図3-17のテスト基板(裏側)では、回路図設計で接続すべきDIPスイッチとVCCの間の配線が抜け た状態のデータを元に基板加工機で基板を作成してしまったため、抵抗の足を利用して基板の裏側にパ イパス配線を作成した。

2. コネクタの不適合

使用したオス・メスのダブルヘッダピンはペアで購入したものではなかったため、図 5-1 の様に正 しくかみ合わず接触が悪かった。そこで、ハンダごてでメス側のコネクタの突起を熔かし正しく接触す るようにした。ハンダごてで熔かした際に、熔けたプラスチックが隣の穴を塞ぐことがあったが、その 部分をヤスリで削り穴を露出させた。

図 5-1 コネクタの加工 3. ハンダ不良

ハンダの不足による接触不良のため7segLED に点灯しないセグメントがあった。この問題は不足部 分にハンダを追加することで一部解決した。

4. 素子の不良

ハンダの修正によっても正しい動作が得られない部分があったため、外部から抵抗を通して電流を流 しても点灯しなかったため、この不具合は素子の不良によるものであることが分かった。部品を交換す ることでこの問題は解決した。使用する素子に不良品が混入していないかのチェックを事前に行うべき であるとの教訓が得られた。

5. 高電圧による CPLD 基板の焼損

CPLDに誤って9Vの電圧をかけてしまいQuartusⅡがCPLDを認識しなくなった。そのため新たに この付録を含むトランジスタ技術を購入しなければならなくなり、研究が遅れた。今回はそのまま CPLD基板を入れ替えて対応したが、対策としては確実に5Vの入力が保証されるACアダプタからの

フラットケーブル 40ピンコネクタ(オス)

40ピンコネクタ(メス) 基板

ピン

5.2 ソフトウェア

1. クロックイベントの利用

CPLD基板に搭載した水晶発信器からの信号をもう一つの入力として使用し、その立ち上がりのイベ ントでボタンの状態を調べ、変数にその値を格納して、それらを比較することでボタンが離された瞬間 に数値の交換を行う形にした。これは誤動作の問題は残るものの、一応は正しく動作した。

2. ロジックエレメントの不足

三目並べで勝敗が決定したことが確認できるように、拡張情報表示部に勝敗が決定したときは勝者側 の記号を、未定のときはと現在のターンのプレイヤーの記号を表示させるプログラムを作成した。文法 的なエラーなしに目的とした出力を出すはずのものが書けたが、回路を構成するロジックエレメント数 は340となり、使用したCPLDの使用可能なロジックエレメントの最大数である240を大きく超えて しまった。そこで拡張情報表示部の機能を現在のターンのプレイヤーの記号の表示のみに限定したとこ ろ、使用ロジックエレメント数は215となり、動作が確認できた。

3. 誤動作

8 パズルの動作で、ボタンを押した際に値が交換されずに同じ数が現れるという現象が起きた。表 5

-1の方法に加えてさらに2通りの方法を試したがいずれも解決には至らなかった。4.3で紹介したソ ースコードは方法4のものである。

表 5-1 試した方法 A B C D 方法1 方法3 方法5 E 方法2 方法4 方法6

A) クロックの立ち上がりが発生したときに、ボタンが押されている場合に値の交換を行う。

B) クロックの立ち上がりが発生したときにボタンが離されており、直前のクロックではボタンが押さ れていた場合に値の交換を行う。

C) ボタンを押したときに値の交換を行う。

D) LED の表示に相当する変数の値を調べ、空白にあたる数値のある位置の変数と隣接する数値を交 換する。

E) 空白の位置にあたる変数を用いて、その値の示す位置の変数と隣接する数値を交換する。

方法 1

使用ロジックエレメント数は230個だった。1秒間に100万回起こるクロックの入力があるたびに値 の交換がされるので四隅にしか空白が行かない動作になった。

図 5-2 方法 1 の動作

方法 2

使用ロジックエレメント数が284個だったため、CPLDに書き込むことができなかった。

方法 3

使用ロジックエレメント数は222個だった。空白の状態が二つになる、同じ数字が現れるなどの誤動 作がたびたび起こった。

方法 4

使用ロジックエレメント数は240個だった。方法3と同様の誤動作は起こるが、この方法の方が起こ る頻度が少なかった。

方法 5

使用ロジックエレメント数は238個だった。方向ボタンを押すと常に空白の状態が無くなり、数字が 重複して現れるという動作になった。

図 5-3 方法 5 の動作

方法 6

使用ロジックエレメント数が257個だったため、CPLDに書き込むことができなかった。

方法 7

クロックのカウント数にあたる変数 count を導入し、ボタン入力がある度に count を 0にし count が一定値(2.5秒)未満の時は他の入力を受け付けないようにしたが、すべてのボタンについての処理を実 装した場合はロジックエレメント不足で書き込みができなかった。また、一部だけの機能を実装した場 合もcountのループ値(5秒)を周期として、2.5秒毎に入力を連続的に受け付ける状態とまったく受け付 けない状態が繰り返された。

1 2 3 4 5 6 7 8

1 2 3 4 5 3 7 8 6

1 2 4 5 3 7 8 6 1 2

4 5 3 7 8 6 1 2 3

4 5 6 7 8

ボタンU ボタンL

方法 8

空白を置くべき位置に相当する変数 p を導入し、クロックの立ち上がりで方向のボタンが押されてい たら空白が移動するべき位置を p に格納し、そこの変数を空白のある位置の変数をコピーする。立ち上 がりですべてのボタンが離されていたら p の位置に相当する変数に空白の値を入れる。

図 5-4 方法 8 の動作 この方法でも一通りは動作したが、数発的に誤動作が見られた。

ドキュメント内 Microsoft Word - 卒業論文.doc (ページ 63-66)

関連したドキュメント