🙆

HW高位合成ツールを使ってnand2tetrisのCPUを動かしてみる 8

に公開

の続き

VitisでIP化する

C Simulationが終わった後はC SYNTHESISを行う。ここで性能などを確認して所望の性能が達成できるまでトライアンドエラーを繰り返すと思うのだが、ここでは動作優先で突き進む事にする。
その次のフローとしてはC/RTL COSIMULATIONの実施だが、非常に時間がかかることを見越してこれもSkip。PACKAGEを実行しIP化する。

Vivado を立ち上げる

VitisでさらにIMPLEMENTATIONまで実施ができるようだが、あまり参考例がなかったので、PACKAGE化以降はVivadoに移行する。
遠い昔にAltera社のQuartusはちょっと触ったことがあったものの、Vivadoについては初めて、しかもFPGAに触るのが久しぶりなので、まずは下記のブログ連載を読んでツールの使い方およびACRiルームに備え付けのFPGAボード (Arty A7-35) について学ぶ。

ブロック図を作成

VivadoでProjectを作成しブロック図を作成する。IP repositoryの追加でVitisでPackageを出力したフォルダを指定するとブロック図に自分のIPを置くことが出来た。また、UART通信を行うため、Xilinx社のUART lite IPも配置する。
Connection Automationを何回か実行するとクロック・リセット回路も自動的に配置。UART liteと接続するためのAXIのブリッジも自動的に挿入され、ほとんど最終形になった。クロック、リセット、さらにはUARTのピン接続まで自動的にやってくれている。素晴らしい。手動で直したのは以下の点。

  • クロック回路のリセット入力をLow activeにした。(余計なNot回路が気に食わなかったため)
  • IPへのクロック周波数を50MHzに変更する。(SYNTHESISの結果より)
  • 作成したIPのAP startにPeripheral reset信号を繋ぐ。この辺りはよくわかっていないがAP startをHにしないと回路が動かないようだ。
  • UART liteのBaudrateを38400bpsに下げる。115200bpsだと文字化けしてしまったため。
  • AXI のアドレスオフセットとして64bit の0定数を入力する。(これはVitisの時点で対策すれば省略できそう)

次回に続く

Discussion