Vivadoでやらなければいけないのは
- LEDのIPを作る
- それをAXIバスと、外部端子に接続する
- ハードウェアデザインとbitstreamを作る
です。まずは今あるLEDのIPを消しちゃいましょう。
Diagramの中央右辺りにLEDs_4BitsというIPがあると思います。これを右クリックして「Delete」
消すと、配線が消えてLEDの外部端子だけが取り残されます。
また、ProjectSettingからIPのベンダー名を変更するようです。
IPのPackagerのVendorをDigilentにしてOKを押します
新しいIPを作る
ここで、新しいIPを作りましょう。Linuxからアドレスでアクセスできて、4つのLEDを操作するIPです。「Tools」->「Create and Package IP」を押します
Nextを押し、「Create a new AXI4 peripheral」を選びます。
名前などはチュートリアルに従ってmyLedとmyLed_v1.0にします。 次へ
AXIインターフェイスの設定画面になります。やることはNameをS_AXIにすることです。
これで完了です。Edit IPを選んでFinishしましょう。
すると、プロジェクトが開かれます。
この新品のプロジェクトはAXIバスに繋がるようになってはいますが、出力するようにはなっていません。なので、4bitの出力端子を作成します。
Verilogのファイルが2つあります。両方編集します。
myLed_v1_0_S_AXIの2箇所に以下のように
output wire [3:0] led,
と
assign led = slv_reg0[3:0];
を追加します
また、myLed_V1.0の方は
output [3:0]led,
と
.led(led),
を以下のように追加します。
編集はこれだけです。
これはつまり出力端子を4bit幅で用意してslv_reg0がそのまま出るようにしています。
あとはIPの作成です。
Package IPを押します。
「Customization Parameter」の「Merge Changes From,,,」を押します
そうすると「Ports and Interfaces」でledが見えてきます
「Customization GUI」でも問題なさそうです。変更しちゃダメですよ。
ここまできたら「Review and Package」 の下にある「Package」ボタンを押します。
2回目以降は「Re-Package IP」になりますけどね。
正常に終了したら「前のプロジェクトに戻りますか?」と聞かれるのでOKを押して戻りましょう。
追加する
作成したIPを追加してつなぎます。AddIPからmyLedを追加します。
きれいな場所に出ることもあれば変な場所に出ることもあります。今回はちょっと変。
正しい場所へ移動します。
そしたらS_AXI端子を右クリックしてMakeConnectionをおしましょう。するとAXIを自動的に配線してくれます。
どのAXIか聞かれます。まぁ1つなのでこれを選んでOK
s_axi_aclkとs_axi_aresetnは自分でマウスの左クリックで配線します。
今度はLEDです。今あるのは邪魔なので右クリックで削除
IPの出力端子を右クリックして「Create Port」から外部出力端子を作ります。
名前はledにします。あとはデフォルトのままで大丈夫です。
これでIPの出力がledという外部端子になりました。ただ、番号をまだ決めてないので(あとでやります)何番ピンかは不明です
ここで、http://marsee101.blog19.fc2.com/blog-entry-2915.htmlによるとAXIのslaveとしてアドレスが割り当てられていないとのこと(ほんとにこういうの助かります)
上の「Address Editor」を押します。
Unmapped SlavesにいるmyLed_0を右クリックし、「Auto Assign Address」を押します。
これでmyLed_0に0x43C30000からのアドレスが割り当てられました。
これはLinuxからアクセスするときのアドレスになります。
ピンアサイン
ledのピンをアサインします。base.xdcを開きましょう。
ここではダイアグラム上のピンが何番ピンなのかとか、ピンの制約は何かとかを設定します。
7~11にさっき消した古いledのアサイン情報が残ってます。名前だけ変えちゃいましょう
これが古いもので、これのleds_4bits_tri_oを
ledに変更します。
leds_4bits_tri_oを選択して右クリックから「Replace」を選びReplace: led とすると一気に変更してくれます。
この時にxdcファイルだけでなく他のファイルにも文字が見つかった場合はそれも変更します。
変更が終わったらGenerateBlockDiagramを押して再度確認してみましょう。
「Toolf」->「Find」からleds_4bits_tri_oで検索して本当に亡くなったか確認できれば完了です。
BitStream作成
Bitstreamを作成しましょう。
カスタムIPのプロジェクトを保存するか聞かれると思うので、保存します。
また、論理合成や実装もやるよねって聞いてくるのでYESで実行しましょう。
出力する
Bitsreamの作成が完了したら、出力しちゃいましょう。
「File」->「Export」->「Export Hardware」を押します
Include Bitstreamにチェックを入れてOKを押して出力します。
これでVivadoでやることは終了です。大変でしたね。
次はUbuntuにてU-Bootを作成します。
VivadoなしのUbuntuでGCCだけでU-Bootを作る
メモ カスタムIPを再編集する
今回LEDのIP作りましたが、後からでも再編集してIPを再度作ることが出来ます。
「Verilog間違えた!」ってときとかですね。
編集したいIPを右クリックして「Edit in IP Packager」を押すと、またIPの編集画面を開いてVerilogの変更などが出来ます。
変更したらRe-Packageを押してプロジェクトを閉じると新しいIPで自動的にリロードしてくれるので元のプロジェクトで変更がすぐに反映されます。
コメントを残す
コメントを投稿するにはログインしてください。