よくある質問とその答え(FAQ: Frequency Asked Question)


目次


CADの使用方法

* コンパイルしようとするとライセンスがないと言われて止まる

* Assignment→Pinsでピン指定に候補が出ない

* Assignment→Pinsで異なるピンが候補に出る

  1. FPGAのピンにアサインできるのは、Top-Level EntityのBlock Diagramの 入出力だけです。FPGAのピンにアサインしたい入出力は、 Top-Level EntityのBlock Diagramまで引っ張ってきましょう。
  2. 1つのプロジェクトの中で、複数のFPGA用データを 作ろうとしていませんか? 別のFPGA用データを作るのでしたら、新しいプロジェクトを立ち上げてください。

* コンパイル時に、コンパイルすべきファイルが ない旨を表示して停止する

トップのBlock Diagramのファイル名がプロジェクト作成時に していたTop-Level Entityと同じでないと、 コンパイルがうまくいきません。

解決方法(いずれかの方法を取ること)
  1. Block Diagramのファイル名をTop-Level Entitiyと同じに変更する
  2. Project NavigatorでProjectを右クリック→Setting→Generalで Top-Level Entityをトップつもりで編集していたBlock Diagramのファイル名に変更する

* バスの中の1本の線はどのように引き出すか (2008/4/11更新)

* バス間をつなぐ配線の名前のつけ方は?

シフタの製作時に、バスA[0..15]のA[0]とバスB[0..15]のB[1]を つなぎたいことがあるかもしれません。 この時、バス間の配線を直線で引いてしまうと、 その配線には1つのプロパティしかつけれないので、うまくつなげません。

この場合、配線の途中にバッファを置いて配線を分割し、 バスA[0..15]につながっている部分にA[0]、 バスB[0..15]につながっている部分にB[1]のプロパティを与えることで実現できます。

バッファには色々種類がありますが、 単純に配線を名前を変えたい場合は、"wire"のバッファを使えば良いでしょう。

* 主記憶(RAM)はどうやって作るのか

* CADから主記憶(RAM)はどうやって読み書きするか

* 主記憶(RAM)のデータ・ファイル(プログラムも含む)はどう作るか

* 波形シミュレーションでブロック図の途中の配線の値を見たい

Insert Node or Bus→Node Finder→Customizeで、"Filter:"を"Pins: all"以外にして "OK"を押し、さらに"List"を押すと、入出力ピン以外の波形を入力したり、 出力をチェックしたりできます。

* ファイルが開けません

  1. ファイルの読み出し権限がない
    エクスプローラ等でファイルを右クリックし→プロパティ→セキュリティで、 自分に読み出し権限があるかどうか調べる。 無ければ、必要に応じて変更する(他人のファイルなら「してもらう」)。
  2. ファイルが壊れている
    過去にCADが保存時にファイルを壊してしまったと思われるケースがありました。 この時は、メモ帳で対象ファイルと他の無事に開けるファイルを開いて見たところ、 開けないファイルは後ろの方の書式がおかしくなっていることが確認できました。 一般的なソフトウェア同様、CADにもバグはあります。 受講上の注意の最後にあるように、 ファイルは適時バックアップして、このような状況に備えて下さい。

* CADがちゃんと動作していないようなのですが

上記にあるように、CADもソフトウェアですのでバグはあります。 CADの動作が時々おかしくなるという報告もあがっています。 このような時には、一度CADを終了して、再度立ち上げなおして動かしてください。

変な動作らしきものの例

  1. FPGAボードへのダウンロード時に、再コンパイル前の.sofが送られているようで、 動作を変更した部分が反映されない。
  2. シミュレーションの入力ファイルを変更したのに、どうも変更前のファイルで シミュレーションを行っているようだ。

* 他のプロジェクトで作った回路をインクルードしたい

Assignment→Setting→User Libraryを選択後、インクルードしたい 回路があるディレクトリを選択し、Addボタンを押します。 そうすれば、ライブラリの呼び出し時の一覧に上記のディレクトリが追加されます。

* CADのエラー・メッセージが分からない

Help→MessagesでCADのメッセージの解説(英語)を見ることができます。 ここで調べて下さい。

* 正しくバス/配線/ファイル等に名前をつけているのにどうも認識されていないようだ (2008/4/11追加)

バス/配線/ファイル名等に記号が入っていませんか? 記号によってはCADが認識してくれないものがあります。 現状では、以下の記号が大丈夫/だめということが分かっています。

* 主記憶(RAM)の読み出しを含めたシミュレーションをしたい

主記憶(RAM)はどうやって作るのかの "MegaWizard Plug-In Manager - LPM_RAM_DQ (5/6)"の部分で メモリに書き込むデータ・ファイルを指定してあれば、 シミュレーション時にもそのデータ・ファイルの内容が メモリに書かれているものとしてシミュレーションできます。

なお、すでに配置したRAMに対してメモリのデータ・ファイルを 指定したい場合は、RAMのオブジェクトをダブルクリックすることで、 主記憶(RAM)はどうやって作るのかの 設定をやり直すことができます。

* タブ・バーを間違って消してしまい、戻し方がわからない

Tools->Options->Generalで、 "Display tabs for child windows"をチェックすると復活します。


実験の進め方

* 実験時間内だけで実験を終わらせる自信がないのですが

* 最終報告までに完成させてデモをできなかったのですが

最終報告以降も実装を続け、デモができる程度に完成させて、 デモを行ってください。 実験期間終了後でも、平日昼間は計算機室を使えます。 平日昼間以外に計算機室を使用するつもりならば、 「時間外実験演習申請書」を提出し、 教官の許可を受けて計算機室を使用してください。

* グループ内でのファイルの受渡しはどうやればいいか

* コンピュータの問題から、設計データが消えてしまいました

頑張って設計データを作り直して下さい。

コンピュータのディスクが壊れたり、ソフトが異常終了して重要なデータを壊したり、 はたまた、操作ミスから空データで重要なデータを上書きしてしまうことは、 この先、コンピュータを使用する上で多々経験することでしょう。 そういった時のために、ちゃんとバックアップを取っておきましょう。

講義担当者のお薦めのバックアップ・メディアは、USBメモリです。 今なら、2,3千円で実験で使うデータを納めるには十分過ぎる大きさのUSBメモリが買えます。 大容量のものを買えば、「4月第1週のバックアップ、 4月第2週のバックアップ、・・・」のように、 バックアップに履歴を持たせることもできます。 履歴を持つことで、「間違って重要なデータを上書きしてしまったが、 しばらくしてから気づいたため、 すでにバックアップも上書きされたデータになっていた」 という状況を減らすことができます。

* 途中からグループの相方が出てこなくなりました

組んだ相手(orグループor下請けor上司)が外れだったという不幸なことは、 長い人生の中では何回か経験することになるでしょう。 今回も、その中の1回が巡って来たとして、 あきらめて、自分で相手の担当部分も自分で行い、帳尻合わせをしましょう。

幸い、ここは大学ですので、企業のように、 「相方が出てこなくなろうが何だろうが、 ちゃんと期日までにきちんと仕事を終わらせて下さい。」 という厳しいことは言いません。 相方が出てこなくなったことを考慮して成績をつけます。 全ての命令を実装できなくてもかまいませんから、 何とか、プロセッサと言える最低レベルのもの(メモリ・アクセス、 演算、条件分岐による制御が可能なもの)を作り、デモを行ってください。


設計/デバッグ

* D-フリップフロップにあるPRN入力の意味が分かりません

PRN入力はプリセット入力です。動作は、クリア(CLR)入力の反対で、 信号が入力されるとD-フリップフロップの値が1になります。 ちなみに、このPRNとCLRは負論理ですので注意して下さい。

* 各論理素子の動作が分からない(真理値表が見たい)

Helpの中に各論理素子の説明があります。 例えば、Help->Index->キーワードでprimitivesの節を見ると、 primitiveの節を見ると、primitivesに含まれる論理素子の説明があります。 スクロール・バーをスクロールしてprimitivesの節まで行くのが面倒ならば、 検索欄にprimitivesと入れるとprimitivesの節に飛べます。

* アドレス・バスやデータ・バスで複数のレジスタからの値が混ざる

3状態バッファ(Tri-state buffer)なる素子があります。 これは、状態切替え用の入力により、以下の2つの状態を切替えることできる素子です。

信号が出力されると困る場合、この素子を使って信号を遮断して下さい。 余談ですが、「3状態」の由来は、出力の状態が「0/1/ハイ・インピーダンス」の3つを 取れることから名付けられています。

* RAMからデータが出てこない

RAMの作り方の最後に書いたように、 Megafunctionで作ったRAMはアドレスを入力した後に クロックを入れないとデータが出てきません。 どのようにしてクロックを入力するかは、 マルチサイクルの読み出しを行うとか、 逆位相のクロックを有効利用するとか考えて下さい。


PowerMedusaボード

* USBでボードを接続するとドライバをインストールしろと言われる

すでにドライバをインストール済なのに、 再度ドライバのインストールを要求されることがしばしばあるようです。 その場合は、TAを捕まえて、Administrator権限でドライバを入れてもらって下さい。

* 設計した回路をFPGAにダウンロードしようとすると "Can't recognize sillicon ID for device 1"と出てダウンロードできない

* FPGAへのダウンロード時のファイルで.pofファイルや.sofファイルを指定できない

FPGAへのダウンロード時のファイル指定をする時、 "Error: Can't locate programming file hogehoge.sof (;) in Chain Description File" というエラーが出て.pofファイルや.sofファイルを指定できないことがあります。 これは、対応する.cdfファイルの中で.pofファイルや.sofファイルへの 正しくパスが書かれていないのが原因です。 他のマシン等で作成したプロジェクトを持ってきた時に発生します。

解決方法(いずれかの方法を取ること)
  1. 対応する.cdfをメモ帳等のテキスト・エディタで開き、 "Device Part Name..."で始まる行のPathの項目を正しいパスに直す
  2. 新しいプロジェクトを作成し、そこに前のプロジェクトのファイルを持ってきてやり直す

* In-System Memory Content EditorでRAMが出てこない

  1. RAM作成時の設定で"Allow In-System Memory Content Editor..."を指定していない
  2. USB-Blasterとの接続悪くてボードと通信できていない

* 機能シミュレーションではちゃんと動くのに、ボード上では動かない

実際の論理回路では、信号が論理ゲートを通過するに一定の時間がかかりますが、 機能シミュレーションではこの遅延時間を考慮せず、単純に論理の正しさのみを評価します。 このため、実際にはレジスタ(レジスタ・ファイルのみならず、一時的に値を保持するレジスタも含む)の 書き込み時にセットアップ時間やホールド時間を満たせない回路でも、 機能シミュレーションの上では動いてしまいます。

そこで、以下のように、コンパイル時のタイミング解析の結果を元に、 あやしい信号パスを見つけ、問題が発生しないように修正します。

* ボードで発生させたクロック信号は何番ピンに入ってくるのでしょうか

PowerMedusa EC6Sのマニュアルの15ページにボード上で発生させることができる クロック信号とリセット信号について説明がありますが、なぜか、 クロック信号の方は入力ピンについて明記されていません。 マニュアルの最後の方にあるピン一覧をみてもらえば分かりますが、 このクロック信号は28番ピンに入ってきます。

* ボード上のLED(7SEG LED)が光りません/ブザーが鳴りません

* MU200-7SEGボード上のLED(7SEG LED)が光りません

MU200-EC6SボードとMU200-7SEGボードの間の配線は、 MU200-7SEGボードのすべてのLEDと7SEG LEDを操作できるだけの数がありません。 よって、MU200-7SEGボードを9つの区画に分け、各区画を示す配線(9本)を準備し、 その区画に対応した配線に1を流しながら、 その区画のLED(7SEG LED)を変更させる構成になっています。 なお、その区画が選択されていない場合は、 最後に入力されていた値を表示し続けます。


質問の宛先は shimada@kuis.kyoto-u.ac.jp.
Last modified: 2008/4/11 15:30