第17回LSIデザインコンテスト・イン沖縄  設計仕様書 - 3-1

3-1. ハードウェア設計手順

ここから開発手順について説明を行うが,これ以外の手法も多数あるので,これ以外の手法については各自調べてください.

3-1-1. Hardware Logicの設計

今回はSimulinkを用いてハードウェアのRTL設計をモデルベースで行う.設計後,edfファイルにラッピングする.

Figure 21

図21

  • SimulinkでModel-Base RTL設計を行う
  • 1. MATLABを起動し,Simulinkを立ち上げる.Simulinkライブラリブラウザーが立ち上がったら,画面上部のメ
          ニューからファイル→新規作成→新規モデルを選択し,設計画面を開く.

    Figure 22

    図22

    2. ライブラリの中から使用したいブロックを選択し,ドラッグ&ドロップで設計画面に設置することで設計を行え
          る.今回はSynplifyを用いて論理合成を行うので,Synphony HLS Blocksetの中からブロックを選び回路設
          計を行う.

    Figure 23

    図23

    3. 回路設計後,HDLファイル(.v,.vhd)を生成するためにHLS Blocksetの中からSHLSToolブロックを使用する.
          SHLSToolをダブルクリックし,合成画面を開き,New implementationを選択すると,Implementation Options
          画面が開く.ここで,使用するデバイスの選択をする.

    Text 1
    Figure 24

    図24

    4. Clock Reset OptionsのタブのGenerate Clock-Reset Circuitのチェックを外す.

    Figure 25

    図25

    5. Design Optionsタブ内のFlip Flop Reser SensisiviltyをAsyncronusに設定する.

    Figure 26

    図26

    6. 設定後,保存し,Runで実行を行うと,MATLABのフォルダにインプリメントされたファイルを含むフォルダが生
          成される.このフォルダの下に\verilogと\vhdlのフォルダがあり,その下にmodel-Base設計した回路が記述さ
          れたHDLファイル(.v,.vhd)とプロジェクトファイル(.prj)が生成される.

          *作成したモデルファイル(fpga_hw.mdl)はここからダウンロードできる.


  • Synplifyでedfファイルの生成
  • 1. Synplify Premierを起動する.画面上部のメニューからFile→Openを選択.SHLSToolで生成されたverilogフォル
          ダ内のプロジェクトファイル(fpga_hw_impl_1\verilog\fpga_hw.prj)を開く

    2. 画面左にあるImplementation Optionsをクリックする.

    3. Disable I/O Insertionにチェックをいれる.OKをクリック.

    Figure 27

    図27

    4. Runで実行する.fpga_hw_impl_1\verilogにrev_1フォルダが作成され,その中にedfファイルが作成される.

    5. 画面上部のメニューのHDL-Analyst→RTL→Hierarchical Viewをクリックする.

    Figure 28

    図28

    6. 生成したedfファイルの回路構成を見ることができる.

    Figure 29

    図29

    *作成したedfファイル(fpga_hw.edf)はここからダウンロードできる.

    RTLソースが欲しい方はこちらまで連絡ください。

    3-1-2. Xilinx ISE 及び EDKの使い方

  • AC97デモプログラムの実行方法
  • 今回,ATLYSボードに付属するAC97 AUDIO CODEC を使用するに当たり,AC97をMicroBlazeで制御するデモプロジェクトである Atlys_AC97_EDK_demoを参考に開発を行った.このデモはDIGILENT社のATLYSのHPからダウンロードできる.このデモを動かすためには, ISE13.2以降のバージョンのEDKが必要となる.下記に実行手順をまとめる.


    1. HPからダウンロードしてきたAtlys_AC97_EDK_demo.zipを解凍する.

    2. EDKのツールであるxps(Xilinx Platform Studio)を起動する.

    3. 画面上部のメニューからFile→Open projectを選択し,Atlys_AC97_EDK_demoフォルダ下のprojectフォルダ
          内のsystem.xmpを選択する.

    4. 画面上部のメニューの中からHardware→Generate Netlistをクリックする.

    Figure 30

    図30

    5. インプリメントが終了したら,画面上部のメニューからProject→Export Hardware Design to SDK を選択する.

    Figure 31

    図31

    6. Export & Launch SDKを選択する.

    Figure 32

    図32

    7. Atlys_AC97_EDK_demo\project\SDKのフォルダの下にSDK_Workフォルダを作成して,Workspaceにセットす
          る.OKを押す.

    Figure 33

    図33

    8. SDKが起動する.画面上部のメニューの中からFile→New→Xilinx C Projecetを選択する.

    Figure 34

    図34

    9. New Projectが開く.Select Project Template欄からEmpty Applicationを選択する.Nextを選択する.

    Figure 35

    図35

    10. Create a new Board Support Package project が選択されているのを確認してFinishをクリック.

    Figure 36

    図36

    11. Project Explorer にCプロジェクトとBSPプロジェクトのフォルダが追加される.

    Figure 37

    図37

    12. Atlys_AC97_EDK_demo\source\内のファイルを全てAtlys_AC97_EDK_demo\project\SDK\SDK_Work       \empty_application_0\srcにコピーする.その後Project Explorer内で右クリック→Refreshを選択すると,
          Projectが更新され,Project Explorerにソースが追加される.

    Figure 38

    図38

    13. 画面上部のメニューのProjectの中からBuild Allを選択する.

    Figure 39

    図39

    14. Atlysの電源を入れPROGポートにコネクタをさす.画面上部のメニューのXilinx Tools中からProgram FPGAを
          選択する.

    Figure 40

    図40

    15. 書きこむファイルを選択する.

    Text 2

    選択後Programをクリックし,FPGAに書き込まれる.

    Figure 41

    図41

    16. Project Exploler欄のempty_application_0を展開し,Binariesの項目からempty_application_0.elfを右クリック
          する.Run As→Launch on Hardwareを選択すると,FPGAにソースコードが書きこまれ実行される.

    Figure 42

    図42


  • ISE新規プロジェクトの作成
  • デモプロジェクトのままではISE上で作成したHW部(「3-1-1. Hardware Logic の設計」参照)とMicroBlazeをつなげることができないため, ISE上で接続できるように設定する.


    1. ISEを立ち上げ,画面上部のメニューの中からFile → New Project を選択するとNew Project Wizardが立ち
          上がる.

    2. Create New Projectのページではプロジェクト名と保存フォルダの場所を設定する.Top-level source typeが
          HDLになっていることを確認したら,Nextをクリックする.

    Figure 43

    図43

    3. Project Settingsのページでは開発ターゲットデバイスの設定と開発ツールの設定を行う.図のように設定を行
          い,終わったらNextをクリックする.

    Figure 44

    図44

    4. Project Summaryのページで設定に誤りがないか確認したらFinishをクリックし,New Project Wizardを閉じる.

    Figure 45

    図45

    ここまでで,ISEの空プロジェクトができた.

    Figure 46

    図46


  • EDKとISEのプロジェクトの統合
  • 前項(ISE新規プロジェクトの作成)で空のISEプロジェクトができたので,ISEプロジェクト(noise_cancelling.xise)に EDKプロジェクト(system.xmp)を追加する.手順は以下のとおりである.


    1. Atlys_AC97_EDK_demo\projectフォルダをISEプロジェクトのフォルダの下にコピーする.今回はこのフォルダ
          名をDemoに変更した.

    2. ISEプロジェクトを起動する.画面上部のメニューの中からProject → Add Sourceをクリックする.先ほどコピー
          したDemoフォルダ内のsystem.xmpを選択する.

    Figure 47

    図47

    3. ISEプロジェクトにEDKが追加された.

    Figure 48

    図48

    これで,ISE上で設計したHW部とEDKプロジェクトの回路が接続可能になった.

    Figure 49

    図49


  • ISE上に取り込まれたXPS上でのペリフェラルの設定
  • CPUとHW部を接続するためにEDKプロジェクト回路の外部へのインターフェースをXPSで追加する. 接続自体は次項(ISEでHW回路と統合)で ISE上にて行う.

    Figure 50

    図50


    1. ISEのHierarchyの中のsystemをクリックし,Processesの中からManage Processor Design(xps) を選択すると
          XPSが起動する.

    Figure 51

    図51

    2. “Create and Import Peripheral For Microblaze ver AXI.ppt(ここから)” を参考にペリフェラルの作成を行う.

    3. ペリフェラルを追加するにはIP Catalog欄から追加したいIPを右クリック→Add IPをクリックする.

    Figure 52

    図52

    4. 追加するIPに応じた設定画面が表示されるので設定をおこなう.

    Figure 53

    図53

    5. ペリフェラルが追加される.尚,設定を変更したいときは右クリック→Configure IPで再設定可能.また,Delete
          Instanceで削除される.

    Figure 54

    図54

    6. Portsタブ内ではペリフェラルの接続設定ができる.接続設定を行いたいペリフェラルを展開すると,ペリフェラ
          ルのポートが表示される.XPS内でつなぎたいポートがある場合,New Connection又は選択肢から接続先を設
          定する.XPSプロジェクト外で接続したい場合はMake Externalを選択する.

    Figure 55

    図55

    7. Make Externalを選択した場合External Ports の項目に追加される.

    Figure 56

    図56

    8. 今回は2で作成したtest IPを使用する.まず,test IPを6個追加する.その後,名前を以下のように変更する.

    Figure 57

    図57

    Text 3

    9. 上記6〜7を参考にポートの設定を行う.
          win_out, ifft_re_out, ifft_im_outは以下のポートをExternal Portsに設定する.

    Text 4

    HO_in, fft_re_in, fft_im_inは以下のポートをExternal Portsに設定する.

    Text 5

    ※(2012/11/13)  "iptobus_DATA"と"bustoip_DATA"の記述が逆になっていたので訂正しました.

    10. XPSでの設計が終わったら,画面上部のメニューの中の Hardware → Generate Netlistを選択しネットリスト
          の生成を行う.

    Figure 58

    図58

    11. xpsを閉じる.

    12. ISEのHierarchyの中のsystemをクリックし,Processesの中からGenerate Top HDL Sourceを選択する.

    Figure 59

    図59

    13. system_top.vが生成される.このファイルはDemoフォルダ内に生成される.これをISEプロジェクトのフォルダに
          コピーする.

    Figure 60

    図60

    14. Hierarchyの中のsystem_top.vを右クリックしRemoveでプロジェクトから除外する.その後,Add SourceでISE
          プロジェクトフォルダ直下のsystem_top.vファイルを追加する.このsystem_topモジュールが開発するシステム
          のトップモジュールになる.


  • ISEでHW回路と統合
  • 3-1-1.で作成したHW回路を,前項で作成したXPSでの回路とISE上で接続する.

    Figure 61

    図61

    1. ISEプロジェクトフォルダにsynphonyで作成したedfファイルをコピーし,Add Sourceでプロジェクトに追加する.

    2. system_top.vにこの回路のモジュールをverilogで記述し,xpsプロジェクトで作成した回路のポートと接続させ
          る.今回制作する回路のトップモジュール(system_top.v)はここからダウンロードできる.

    Figure 62

    図62

    3. Processesの欄のSynthesize-XST→View RTL Schematicで回路構成をみることができる.

    Figure 63

    図63


  • コンフィグレーション
  • 1. Hierarchy内のsystem_topを選択し,Processes欄の中のGenerate Programing Fileを右クリックし,Rerun All
          を実行する.

    Figure 64

    図64

    2. Errorが出なければ,system_top.bitファイルがISEプロジェクトのフォルダ内に生成される.


    ここまでで,HWの実装が完了した.