読者です 読者をやめる 読者になる 読者になる

Macでの勉強記録

自分でハマったところは詳しく書くけど、ハマってないところはあっさり。気が向いたら追記するかも。

16.08.16 IPベースLED点灯回路①

いよいよPS+PLでのシステム開発の例題。Vivadoの特徴でもあるIP化も行うらしい。事実、後の例題でIPの流用を行うようだ。題材はシンプルなLED点灯回路。

 

IPインスタンス

いわゆるPL部。登録済みのライブラリからZYNQ7を選んでカスタマイズ。Hello worldでも使用したxmlを用いて、カスタマイズをする。はっきり言って何をしているのか不明だ。後で調べるにしても気持ちが悪いな。。見た目はZynqのブロック図に対して、ZYBOで使用可能なペリフェラルフラッシュメモリを設定している感じか?

続いてAXI GPIOのIPをインスタンス。AXIでアクセスして、GPIOを叩くようなIPなのだろう。後で関数と合わせて調査しよう。

さてzynqコアとAXIーGPIOをインスタンスしたら、なんとRun Connection Automationで自動接続してくれるらしい。案の定、リセットジェネレータっぽいものとAXI Interconnectもインスタンスされている。プロトコル変換するわけではなさそうだけど、これも何をしているのだろう。

 

Wrapper自動作成

IPとしてはここまで。続いてWrapperの作成。といってもこれも自動でやってくれる。video_sys_wrapperというモジュール下に、video_sysモジュールがインスタンスされている。video_sysは先ほどzynq、AXI-GPIOをインスタンスした階層。

自動生成されたvideo_sys_wrapper.vをコピーしてvideo_sys_top.vファイルを作成。どうやらデフォルトの名前だと、ブロック内部を編集すると、自動的にwrapperも更新されてしまい、ユーザーが手修正した記述が消えてしまうかららしい。この辺りから、説明がほとんどなくなってきた。

コピーして作ったあらたなWrapperもプロジェクトに追加。このあらたにつくったWrapperが最上位階層になるように、ソースコードを修正。

最上位モジュールはvideo_sys_top、GPIOからの32bit出力ポートを4bitのLEDポートに変更、これまでのTOP階層だったvideo_sys_wrapperをインスタンス、先ほど新設したLED[3:0]とgpio_rtl_tri_o[3:0]を接続する。

 

WrapperのWrapper作成

この状態で上書き保存するとツール側でRTLを解析して、video_sys_topが最上位階層であることを認識、デザインツリーが更新される。エラボレートするとGPIO_175ツリーの下にled端子が見えるので、ZYBOのLEDに合わせてピン配。

 

合成できることを確認して、今日はおしまい。