Artix-7評価ボード>MicroblazeでLinux>EDKでハードウェア作成

EDKでハードウェア作成

MicroBlazeを埋め込んだFPGAデザインを作るには、XILINX ISEとEDKを使います。EDKの使ったMicroBlazeの作成方法はかなり複雑なので、詳しくは下記のページご覧ください。

  • MicroBlazeの使い方

http://www.tokudenkairo.co.jp/art7/microblaze.html

ISE&EDKプロジェクトのダウンロード

本文書では、特電Artix-7ボード用にビルドされたISE&EDKのデザインをダウンロードするところからスタートします。まずは、下記のリンクをクリックして、Artix-7ボード用のMicroBlazeデザインをダウンロードしてください。

このアーカイブを解凍すると、a7mb_linux_iseというフォルダにISEのプロジェクト一式が入っています。この中のfpga_withmmu.xiseがISEのプロジェクトファイルです。

プロジェクトを開く

まずは、ISEでこのfpga_withmmu.xiseを開いてください。

 

すると、下の図のようにISEのプロジェクトが開きます。

 

プロジェクトの構成

このプロジェクトは、CPUという名前にMicroBlazeをインプリメントしただけのもので、FPGAのロジック部分には特に何も入れていません。

main.vhdがメインのVHDLファイルです。このmain.vhdの中に、CPUという名のモジュールとして提供させるMicroBlazeをインスタンシエートしています。MicroBlazeにインプリメントされたSPIモジュールのうちの1つはボード上のFPGAのコンフィグ用SPI ROMと兼用しているので、そのままではSCK信号を動かせません。

そこで、

 STARTUPE2_inst : STARTUPE2
 port map (CFGCLK => open,  CFGMCLK => open,  EOS => open,  PREQ => open,  CLK => '0',  GSR => '0',  GTS => '0',  KEYCLEARB => '0',  PACK => '0',  USRCCLKO => SCK,  USRCCLKTS => '0',  USRDONEO => '0',   USRDONETS => '0' );

と、STARTUPE2をインスタンシエートすることでコンフィグ用のCCLKピンをFPGA内のロジックから動かせるようにしています。

EDKプロジェクトの中身

プロジェクトにあるCPUというアイコンをクリックすると、EDKが起動します。

どのようなIPモジュールが使用されているかが表示されます。

 

MicroBlazeのローカルメモリバス(LMB)に、d_bramとi_bramという2つのBlockRAMがつながっています。これはキャッシュメモリとして動作します。

AXIバスにはaxi4_0とaxi4lite_0の2種類があります。axi4_0はフル規格のAXIバスで、DDR3メモリに接続されています。axi4liteはLite版で、デバッグモジュールや割り込みコントローラ、LEDなどのGPIO、SPI、RS232Cなどペリフェラルが接続されています。

より詳細なバスの構成について

バスの構成をさらに詳しく見ると、次の図のようになっています。

プロセッサの2つのAXIマスタポート(M_AXI_DCとM_AXI_IC)から出たAXIバスはインタコネクトを介してDDR3メモリコントローラへ接続されています。DDR3メモリコントローラは400MHzクロックで動作(データレートは800MB/s)で動作するようになっています。

また、LMBマスタポート(DLMBとILMB)からデータバスはBRAMコントローラを介して、BLAM BlockのPORTAとPORTBに接続されています。

 

プロセッサの構成について

プロセッサの構成で重要な部分を以下に示します。

  • バレルシフタ(Barrel Shifter)・・・使用
  • 浮動小数点ユニット(Floating Point Unit)・・・EXTENDED
  • 整数乗算器(Integer Multiplier)・・・MUL64
  • 整数除算器(Intefger Divider)・・・使用

 

  • MMUの有無・・・有

 

  • キャッシュの設定・・・各16kB

 

MMUを使うという選択を採る段階で、かなり高機能なMicroBlazeになります。(その分、使用リソースも増えます)

ビルドを行う

EDKの入ったプロジェクトですが、Generate Programing Filesを行えば、普通にプロジェクトが生成されます。最初の1回目は少し長い時間がかかります。

 

参考までに生成されたレポートのうち、重要な部分を抜粋したものを示します。このレポートによると、使用スライス数は36%で、使用メモリ量は15%程度です。

Device Utilization Summary  
Slice Logic Utilization Used Available Utilization Note(s)
Number of Slice Registers 11,101 126,800 8%  
Number of Slice LUTs 12,576 63,400 19%  
Number of occupied Slices 5,768 15,850 36%  
Number of LUT Flip Flop pairs used 15,906      
    Number with an unused Flip Flop 5,623 15,906 35%  
    Number with an unused LUT 3,330 15,906 20%  
    Number of fully used LUT-FF pairs 6,953 15,906 43%  
    Number of unique control sets 661      
    Number of slice register sites lost
        to control set restrictions
2,624 126,800 2%  
Number of bonded IOBs 68 210 32%  
Number of RAMB36E1/FIFO36E1s 21 135 15%  

 

MMU入りで、FPUや乗算器などがフルに入ったMicroBlazeですがXC7A100Tの36%でできました。残り7割近くをユーザロジックに割り当てることができます。

逆に考えれば、より小さな規模のArtix-7、XC7A50TではLinuxを動作させることは相当に苦しいことが予想されます。


© 2015 TokushuDenshiKairo Inc. All rights reserved