公開日:2023/08/05
26th Season
#26-8 まともなFPGAボードの回路設計
「#15-1 FPGAボードを買ってみた」より、使い続けてきたFPGAボード(Sipeed Lichee Tang Primer)ですが、FPGAチップAnlogic EG4S20の開発ツールであるTD IDEのライセンスが定期的に切れます。本来、Anlogic社ないしは、FPGAボード販売元のSipeed社が、ライセンスの切れる前に新しい更新ライセンスを発行すべきです。
ところが、そんな簡単なサポートですら、まともにできないのが中華企業なのです。こちらで再三報告している様に、ライセンスが切れる度に、こちらからサポートに連絡しないと、ライセンスが更新されません。
こんな低水準な中華サポートを続けるAnlogic社にも、Sipeed社にも、長い未来があるとは思えないし、先行きも不安です。いつ、会社が無くなってサポートが打ち切られるのやら……。
いい加減ウンザリしたので、まともな(非中華製)かつ、最新のXilinx Artix-7 FPGAボードに乗り換えるんだ〜、というテーマです。
前回、FPGAボード(Cmod A7)に搭載されたFPGAチップXilinx Artix-7用のVivado開発環境をインストールしましたので、今回はVivadoの使い方に慣れて行きます。
Lチカしてみなきゃ、だわ
Primerボードを購入した(「#15-1 FPGAボードを買ってみた」)時に作った、ハードウェアだけでLチカさせるRTL(blink.v)を使って、Cmod A7ボードでもオンボードのユーザLEDをチカチカさせてみることを最初のプロジェクトにしたいと思います。
まずは、Cmod A7ボードの回路図を確認しておきましょう。
PDFのドキュメントで参照できます。回路図から以下のことが判りました。Primerボードと比較して、修正すべき箇所も明確にしておきます。
- ユーザLED×2個
- オンボードLED×2個は、I/OポートのHIGH駆動で光る。
- Primerボードは、LOW駆動で光る回路だった。
- LED出力端子の極性を反転しないと、光り方が異なってしまう。
- ユーザRGB LED×1個
- オンボードRGB LEDは、I/OポートのLOW駆動で光る。
- なんで?普通のLEDはHIGHなのに、RGB LEDはLOWで光るって?
- まあ、どっちでも良いけど、PWMで光らせたりする時、TRUE/BARが反転するのだよな。
- 源発振クロック
- オンボードの源発振クロックは12MHz。
- Primerボードは、24MHzだった。
- 互いに12MHzの倍数/約数の関係にある。
- 回路図によると、どうやらUSBに起因する周波数らしい。
- タイマのカウント上限値を変更しないと、点滅周期が長く(遅く)なってしまう。
- ユーザスイッチ×2個
- オンボードのスイッチは、常時LOWで、スイッチを押した時HIGHになる回路。
- Primerボードは、常時HIGHで、スイッチを押した時LOWになる回路。
- リセット信号入力の極性を反転する必要がある。
と、ことごとく違うのね……。TRUE/BARが異なるだけ、と言う簡単な相違点もありますが、同じ回路は使えないので、Primerボードのblink.vにVivadoの「v」をつけてblinkv.vと改名し、上の修正を盛り込みます。
以下リンクより、必要ファイルがダウンロード可能です。
それぞれダウンロードして、デスクトップなどアクセスし易い所に置いておいてください。続く記事で、すぐに使います。
新規プロジェクトを作る
ここから、前回インストールしたXilinx Vivado開発ツールを使って、新規プロジェクトを作成して行きます。
- Vivadoを起動する
- スタートメニュー等に登録されたVivadoを起動してください。
- Create Projectをクリックして先へ進みます。
- プロジェクト名にBLINKV、プロジェクトを保存するディレクトリを指定して、Nextを押します。
- RTLで設計するので、「RTL Project」を選択します。
- RTLは後で追加すれば良いので、「Do not specify sources at this time」にチェックします。
- Vitisは使わないのでチェックを外します。
- Boardsを選択して、リストの中からCmod A7-35Tを選択、Nextボタンを押します。
- 前回、Vivadoインストール後の追加作業でダウンロードしたDigilentボード用制約ファイルが、所定のディレクトリにコピーされている前提です。
- さもないと、ここで「Cmod A7」のボードが見つかりません。
- 要約。Finishボタンを押して、新規プロジェクトを作成します。
デザインソースを登録する
以下図が、新規作成した空のプロジェクト🈳を開いた様子です。
いくつかサブウインドウが配置されています。
- Flow Navigator
- FPGAで電子回路を開発する開発フロウに従ったコマンドが並んでいます。
- SIMULATION: 論理シミュレーションを実行します。
- RTL ANALYSIS: RTLの文法チェックを実施します。
- SYNTHESIS: RTLから論理合成を実行します。
- IMPLEMENTATION: 合成した結果を使って、配置・配線を実行します。
- PROGRAM AND DEBUG: FPGAボードと接続して、デザインの書き込みなどを実行します。
- 各々に実行コマンド「Run xxxx」と、結果の確認コマンド「Open xxxx」があります。
- 「Run xxxx」がエラー無く終了しないと、「Open xxxx」を実行できません。
- また、上から下へと開発フロウになっているので、上側の実行コマンド「Run xxxx」がエラー無く終了しないと、それより下側のコマンドは実行できません。
- PROJECT MANAGER
- 現在のモードによって、タイトルが変わります。
- Flow Navigatorコマンドの実行結果を確認するため、「Open xxxx」を選択すると、SYNTHESISやIMPLEMENTATION等に変化します。
- 以下のサブウインドウも、モードによって変わります。
- Sourcesサブウインドウ:
- RTL、制約ファイル、シミュレーション用ファイルなど、プロジェクトに含まれるファイルを登録して、参照するためのサブウインドウです。
- Propertiesサブウインドウ:
- Sourcesウインドウで選択したアイテムのプロパティを設定するサブウインドウです。
- Project Summaryサブウインドウ:
- Tcl Console
- Tclコマンドを直接実行可能なコンソールです。
- 基本的にはGUIで事足りるので、あまり使う事はありません。
- エラーメッセージなどを確認する為に参照する事はあると思います。
- 他にも様々な結果の要約ウインドウが、この部分に追加されて開くので、良く確認する必要があります。
プロジェクトは、まだ空の状態なので、Sourcesサブウインドウの「+」アイコンを押して、RTLなどのファイルを追加して行きましょう。
- RTLは「design sources」なので、上のラジオボタンを選択します。
- Add Filesボタンを押すと、ファイル選択ウインドウが開くので、こちらでダウンロードしたファイルのRTLを選択した状態が上図です。
- 使い方次第ですが、このページでは、「Copy sources into project」にチェックしてください。
- ここにチェックすると、選択したファイルがプロジェクトディレクトリ内にコピーされ、コピーしたファイルを参照する様になります。
- 従って、ファイルをコピーした後は、ダウンロードした元ファイルは不要になるので、削除したり移動したりしすることができます。
- RTLを特定のディレクトリにまとめて管理しておき、Vivadoプロジェクトから参照したまま使う場合は、「Copy sources into project」のチェックを外してください。
- この調子で、以下のファイルを登録してください。
- 制約ファイル:blinkv.xdc
- 「Add Sources」の選択ウインドウで「Add or create constraints」を選択して追加します。
- 追加した後で、Sourcesサブウインドウのblinkv.xdcを左クリックで選択し、右クリックのメニューから「Set as target constraint file」を実行しておいてください。
- ファイル名(blinkv.xdc)に続いて「target」と言う文字が表示されます。
- テストベンチ:test.v
- 「Add Sources」の選択ウインドウで「Add or create simulation sources」を選択して追加します。
すべて追加すると、Sourcesサブウインドウは以下図の様になります。
登録したファイルは、各々、ダブルクリックすると、Vivadoの内蔵テキストエディタで編集できるようになっています。
RTLの動作内容等については、「#15-2 論理回路を設計する」にて解説済みですので、ご参照ください。
なお、ここまでの操作で、もし、「やりたい事」のやり方が判らなかった場合は、Xilinxのコミュニティページなどで検索して見てください。さすが、老舗のFPGAメーカです。世界中にユーザがいますので、大抵の答えは見つかる事でしょう。
しかも、日本語で答えが見つかることも少なくありません。この辺のサービスも万全です。イメージ的には、中華企業のサポートにありがちな「機械翻訳」ではない模様です。恐らく、日本語のできる(日本人の)スタッフが訳しているのでしょう。
※普通にインターネット検索しても、「https://xilinx.com/〜」や「https://japan.xilinx.com/〜」というページが見つかります。出所不明なサイトより、Xilinxのページを選んだ方が、信頼できるのでお勧めです。
次回、シミュレーションと、実際にFPGAボードに書き込んで、動作確認をしたいと思います。Cmod A7ボード開発環境立ち上げ記事の最終回となります。