ZYNQ-7010 評価ボード

Zynq-7010 は Xilinx社 (いまはAMD社) が出している デュアルコアARM Cortex-A9とFPGAを統合したSoC です。簡単にいえば CPU と FPGA が同居しているので、それぞれの強みを生かした処理分担することができます。

今回の遊び道具は、DIGILENT社が出している Zynq-7010 評価ボードです。秋月で買えます。ZYBO Zynq-7010評価ボード Z7-10: 開発ツール・ボード 秋月電子通商-電子部品・ネット通販

私は3年ほど前に 2.5万円ほどで購入しました。


DIGILENT社のホームページからスペックを見ます。Zybo Z7 – Digilent Reference

以下HPからの引用になります。

CalloutDescriptionCalloutDescriptionCalloutDescription
1Power Switch12High-speed Pmod ports *23Ethernet port
2Power select jumper13User buttons24External power supply connector
3USB JTAG/UART port14User RGB LEDs *25Fan connector (5V, three-wire) *
4MIO User LED15XADC Pmod port26Programming mode select jumper
5MIO Pmod port16Audio codec ports27Power supply good LED
6USB 2.0 Host/OTG port17Unique MAC address label28FPGA programming done LED
7USB Host power enable jumper18External JTAG port29Processor reset button
8Standard Pmod port19HDMI input port30FPGA clear configuration button
9User switches20Pcam MIPI CSI-2 port31Zynq-7000
10User LEDs21microSD connector (other side)32DDR3L Memory
11MIO User buttons22HDMI output port* denotes difference between Z7-10 and Z7-20

インターフェースまわり、

  • 6個のpushボタン (内、2個はCPU接続): #13のボタン4つがFPGAでは利用
  • 4個のスライドスイッチ: #9
  • 5個のLED (内、1個はCPU接続): #10の4個をFPGAでは使用

あたりを使って、FPGA界の"Hello World" 、LEDチカチカをやってみます。


まず Zynq-7010 評価ボードに入力する電源について、こちらも メーカーホームページの reference-manual に記載がありました。

図解で分かりやすく説明されています。さらにその下の部分に、

2.1 mm のジャック (4.5V – 5.5V 2.5A以上) からの電源供給がおすすめとありますので、それも準備しました。中国 Merryking社製の電源で約1000円ほどでした。

電源を入れる前に、JP6のジャンパーピンがUSB側になっていましたので、ジャック側にさしなおします。

説明図にあるように、本体電源スイッチをONにすると、ADP5052 (ステップダウンレギュレータ) を通って降圧・分配された電気が各チップに行くようです。ユーザーからわかる目線でいえば、LD13が点灯するということになります。実際に確認してみましょう。

右側の赤いLEDがLD13ですので問題なさそうです。LD6がカラフルでビカビカひかっていますが不明です。左下でLD0~LD3が順番に点灯していますが、動作確認用で書き込まれたFPGA初期ファームによるものでしょう。


電源の確認はすみましたので、実際にファームを書いて “Hello World!" してみようと思います。

Vivadoの起動とプロジェクトの作成をします。

  • Vivadoを起動して、Quick Sart の Create Project をおします。
  • 適当にプロジェクト名と保存先を指定します。
  • RTL Project にチェックが入っていることを確認して Next を押します。
  • Create File を押してソースコードを新規に追加します。ファイル名を適当に決めます。
  • 制約ファイルも同様に新規作成します。
  • FPGAを指定します。”Zynq XC7Z010-1CLG400C” っぽいものを探して選びます。

これでプロジェクトの初期設定は完了ですので Finish で閉じます。


次にソースコードの作成をしていきます。先のウィザードで指定したようにVerilogで書いていきます。

  • 2個のスイッチと2個のLEDを使って遊びたいと思います。ポート名として、"SW0_IN", “SW1_IN", “LED0_OUT", “LED1_OUT" を登録します。1ビットだけなのでバスにチェックは不要です。
  • プロジェクトウィンドウが表示されました。ISE以来なので懐かしい。
  • HelloWorld.v をダブルクリックで開いて中身を編集していきます。
  • 今回のソースコードは以下です。LED0_OUT は単に SW0_IN とSW1_IN の AND演算に応じて、LED1_OUTは SW0_IN と SW1_IN の OR演算に応じて、点灯するように記載したいと思います。
module HelloWorld(
    input wire SW0_IN,
    input wire SW1_IN,
    output wire LED0_OUT,
    output wire LED1_OUT
    );
    
    assign LED0_OUT = SW0_IN & SW1_IN;
    assign LED1_OUT = SW0_IN | SW1_IN;
endmodule
  • (必要ならば) RTL analysisを実行し、Schematic を確認することもできます。Run Linter を押します。期待通りにAND と OR になっていますね。
  • 論理合成を行います。Run Synthesis を押します。計算が終わると完了表示が出ます。
  • Run Implementation を押しましょう。これも完了するとウィンドウがでます。Open Implemented Designを選択してプロジェクト画面に戻ります。
  • 小さいのでよくわからないと思いますので拡大してみます。図でいう右下の部分を使って実装されたことがわかります。また、実装の観点での Schematic も表示することができます。
  • メニュー > Layout > I/O Planning を選びます。reference manual より、スライドスイッチ SW0 とつなぐには “G15" ピン、スライドスイッチSW1 とつなぐには"P15″、LED0 は “M14″、LED1は “M15" と接続する必要があります。信号種類は LVCMOS18 でよいと思います。
  • もういちど Run Synthesis, Run implementation をやりなおします。エラーがないことを確認します。
  • ここまで来たら、FPGAに流すためのビットストリームファイルを生成します。Generate Bitstreamを押します。Open Hardware Manager を押して FPGAに流してみましょう。

パソコンと MicroUSB で接続して、FPGAの電源をいれます。そしてパソコン側では Open Target > Auto Connect を押して認識できるようにします。接続できると Program Device が選択できるようになるので、対象のFPGAを選びます。

そして “Program" ボタンで書き込みを開始しましょう。


無事に期待通りの動作 (LD0 はスイッチのAND, LD1はスイッチのOR) が確認できました!

電子回路FPGA,Zynq-7010

Posted by kamioka