47
MISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル 技術部 慶野安則

MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 1

MATLAB/Simulinkを使ったFPGA開発ソリューション

MATLAB/Simulinkを使ったFPGA開発ソリューション

株式会社ミッシュインターナショナル

技術部 慶野安則

Page 2: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 2

4) FPGA4) FPGAにダウンロードにダウンロード

3) VHDL3) VHDLコードのビルドコードのビルド

2) VHDL2) VHDLコード自動生成コード自動生成

1) 1) アルゴリズム開発アルゴリズム開発

Bitstream

MATLAB/Simulink®を使用してアルゴリズムの開発・シミュ

レーションを行う

System Generator®を使用してVHDLコードを自

動生成する

ボードメーカの提供するFPGAコードに出力されたVHDLコードを組み込む(アダプテーションキット)

Xilinx ISEを使用してVHDLコードをビルドし、Bitstream

に変換する

出力されたBitstreamをFPGAにダウンロードする

Simulink Model

VHDL Code

FPGA code

FPGA開発フロー

FPGA開発フローFPGA開発フロー

Page 3: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 3

MATLAB Mathworks社製、数値計算・データ解析・可視化・アルゴリズム開発を行うためのテクニカ

ルコンピューティング言語と対話型環境を提供するソフトウェアhttp://www.cybernet.co.jp/matlab/

Simulink Mathworks社製、ブロック線図シミュレータ

http://www.cybernet.co.jp/matlab/products/product_listing/simulink/index.shtml System Generator

Xilinx社製、高性能 DSP 信号処理システム用のインプリメンテーション ツール

http://japan.xilinx.com/ise/optional_prod/system_generator.htm ISE Foundation

Xilinx社製、FPGA統合開発環境

http://japan.xilinx.com/ise/logic_design_prod/foundation.htm GateFlow

PENTEK社製、FPGAデザインキット

FPGAに接続されているデバイスとのインターフェイスを含むVHDLソースコード

Xilinx ISE Project一式

FPGA内部ブロック図

Adaptation Kit MISH社製、GateFlowへのSystem Generatorモデル用インプリメンテーションキット

開発環境に関して開発環境に関して

Page 4: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 4

バージョンの互換性について

各ツールが正しく連動して動作する為にバージョンの互換性が制約されていますので注意が必要です

バージョンの互換性に関してバージョンの互換性に関して

9.2System Generator

9.2ISE Foundation

2006b及び2007aMATLAB/Simulink

バージョンツール

※MATLAB/Simulink 2008及びISE10.1が既にリリースされていますが、現在の所弊社では上記組み合わせでの動作以外検証しておりません。

Page 5: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 5Model 7640

PENTEK 7640ボードに関してPENTEK 7640ボードに関して

Model 7640:2Ch マルチバンド・トランシーバPCIモジュール

– A/D:105MHz, 14bit, 2ch– D/A: 500MHz, 16bit, 2ch– FPGA: Virtex-IIPRO(XC2VP50)搭載

– DDC(GC4016×1 = 4Ch)搭載

設立: 1986年所在地: 米国 ニュージャージー州

業種: DSP, FPGA, AD/DAボードメーカー

WWW: http://www.pentek.com

米国ニュージャージー州に本社を置く高性能FPGA/DSPボード及び高速AD&DAボードの専門メーカーで、特に高速無線信号処理に卓越した技術

を持っています。また、ソフトウェア無線の市場では高い評価を得ています。

Page 6: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 6

EXTCLK

XTALOSC

LVDSCLK &SYNC

CLOCKCONTROL

SYNC / GATE /TRIGGER

GENERATOR

INTERRUPTGENERATORSTATUS &

CONTROL

A/D

DIGITALRECEIVER

ANALOGINPUT DATA

SOURCESELECT

OUTPUTDATA

FORMATTER

CLOCK& SYNC

DRIVERS

MEZZANINEINTERFACE

DIGITALINPUT

DMA CONTROL& COUNTERS

FPGAUSER BLOCK

INPUT OUTPUT

STATUSCONTROL

DEFAULTBYPASS

ユーザー

アルゴリズム

PENTEK社GateFlowについて PENTEK社の提供しているGateFlowにはユーザーアルゴリズムを実装しやすいようにユーザーブロック

がVHDLコードで予め準備されています。よってユーザーはユーザーブロックのエリアのみ開発する事でFPGAにアルゴリズムを実装する事ができます

GateFlowに関してGateFlowに関して

Page 7: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 7

PENTEK社Model7640ブロックダイアグラム

GateFlowに関してGateFlowに関して

AD664514-BIT A/D

AD664514-BIT A/D

DAC568616-BIT D/A & DUC

GC40164-Ch DDC

Top_vp50.vhd

FLASH8M x 16

DDRSDRAM64M x 32

DDRSDRAM32M x 32

DDRSDRAM32M x 32

PCI 2.2 INTERFACE(64 Bits / 66 MHz)

RF In RF In RF Out RF Out

PCI BUS (64 Bits / 66 MHz)

P15 XMC VITA 42.0

(Serial RapidIO, PCI-Express, etc.)

P4 PMC FPGA I/O

(Option –104)

14 14 32

32 32 3264 64

adcdata.vhdadcdata.vhd

adc_data_router.vhdadc_data_router.vhd

cntrl_reg.vhdcntrl_reg.vhd

User_blockA.vhd

User_blockA.vhd

User_blockB.vhd

User_blockB.vhd

dram_dtl.vhddram_dtl.vhd

datapath.vhddatapath.vhdddc_data_router.vhdddc_data_router.vhd

data_router.vhddata_router.vhd

User_blockA.vhd

User_blockA.vhd

User_blockB.vhd

User_blockB.vhd

User_block.vhdUser_block.vhd

syncgate.vhdsyncgate.vhd

各User_blockに、それ

ぞれユーザーアルゴリズムを実装する事ができます

ユーザーアルゴリズム

ユーザーアルゴリズム

ユーザーアルゴリズム

ユーザーアルゴリズム

Page 8: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 8

MISHのアダプテーションキットに関して MISHで提供しているアダプテーションキットはGateFlowで提供しているユーザーブロックに

USER_BLOCK_SGというエンティティを追加して、Ub_sysgen_7x40_cwというコンポーネントでSystemGeneratorのモデルと統合しています

このアダプテーションキットを利用する事でユーザーはブロック線図で作成したモデルをVHDL言語を記述する事無くFPGAに実装する事ができます

アダプテーションキットに関してアダプテーションキットに関して

USER_BLOCK_SG (USER_BLOCK.VHD)

Data_In[31:0]

CLK

DVALID_IN

Data_Out[31:0]

DVALID_OUT

Ub_sysgen_7x40_cw

ub_data_In[31:0]

clk

ub_ce vout

ub_data_out[31:0]

Page 9: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 9

1) アルゴリズム開発1) アルゴリズム開発

Simulinkモデルの起動

アダプテーションキットで提供されているモデル”ub_sysgen_7x40.mdl”ファイルをダブルクリックしてSimulinkモデルを起動します

SimulinkモデルのTop画面

Page 10: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 10

1) アルゴリズム開発1) アルゴリズム開発

アルゴリズムの実装

青いブロック部分に、System Generatorで提供されているFPGA用ブロックセットを使用してユーザーアルゴリズムを実装します

Xilinxブロックへの入出力部はGateway In/Outを挿入してあります

Page 11: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 11

1) アルゴリズム開発1) アルゴリズム開発

アルゴリズムの実装

Simulinkライブラリブラウザを起動します

ライブラリブラウザからXilinx Blocksetを開きます

必要なブロックをドラッグ&ドロップで貼り付けます

配置したブロックを線で接続し、ブロックをダブルクリックしてパラメータを設定します

このボタンをクリックするとSimulinkライブラリブラウザが起動します

ライブラリブラウザ

Xilinx BlocksetをクリックするとFPGA用のブロックセットライブラリが表示されます

Page 12: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 12

1) アルゴリズム開発1) アルゴリズム開発

Simulinkモデルのシミュレーション

入力信号・出力波形表示ツール(Scope)等はSimulink標準のツールを使用してシミュレーションを行います

メニューバーから ボタンをクリックしてシミュレーションを実行します

シミュレーションの実行

Page 13: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 13

MATLAB/SimulinkにSystem Generatorをインストールすると、Simulink上でXilinx用のブロックセットを使用できるようになります

System Generatorで提供されているブロックセット

Basic Elementsブロック

デジタルロジックの基本ブロック

Communicationブロック

デジタル通信システムでよく使用される順方向誤り訂正ブロック及びモジュレータブロック

Control Logicブロック

制御回路及びステートマシン用のブロック

Data Typesブロック

データ型を変換するブロック(Gatewayブロックを含む)

DSPブロック

DSP(デジタル信号処理)ブロック

Mathブロック

演算ファンクションをインプリメントするブロック

Memoryブロック

メモリをインプリメントするブロック及びメモリにアクセスするためのブロック

Shared Memoryブロック

ザイリンクス共有メモリをインプリメントするブロック及び共有メモリにアクセスするためのブロック

Toolsブロック

コード生成(System Generatorブロック)、リソース予測、HDL協調シミュレーションなどを実行するユー

ティリティブロック

System GeneratorについてSystem Generatorについて

Page 14: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 14

Basic Elementsブロック一覧

ブロックブロック

Mux乗算器

Logical2、3、又は4つの固定小数点の値の論理演算

LFSRリニア・フィードバック・シフト・レジスタ

Inverter固定小数点型の論理コンポーネント

Gateway Outザイリンクス部分からの出力

Gateway Inザイリンクス部分への入力

Expressionビット単位の論理式を実行

Down Sampleサンプルレートを削減する

DelayLサイクルの固定遅延

ブロック名

Up Sampleサンプルレートを増加する

Time Division Multiplexer入力ポートの値を1つの高速レートの出力ストリームに多重化する

Time Division Demultiplexerシリアル入力を遅いレートの複数の出力に変換する

System Generatorコードジェネレータを起動する

Slice入力データからビットのシーケンスを切り取り新しいデータ値を作成する

Serial to Parallel指定した倍数のサイズを1つのまとめて出力する

Relationalコンパレータ

Reinterpret入力値に関係なく出力を新しいデータ型にする

RegisterDフリップフロップベースのレジスタ

Parallel to Serial入力ワードを多重化して出力する

ブロック名

Counterアップ/ダウンカウンタなどのカウンタ

Convert入力サンプルを指定した演算タイプの値に変換する

Constant固定小数点値、ブール値、DSP48命令

のいずれかの定数を生成

Concatnビットベクタを連結する

Clock Enable Probeクロックイネーブル信号を抽出する

Black BoxHDLモデルを変換する

BitBasher入力値をスライスし連結する

Assert信号にレートやデータ型をアサートする

Addressable Shift Register可変長のシフトレジスタ

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 15: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 15

Communicationブロック一覧

Viterbi Decorder v6_0ビタビデコーダ

Viterbi Decorder v5_0ビタビデコーダ

RS Encoder v6_0リードソロモン符号化

RS Decorder v6_0リードソロモン復号化

Puncture入力ワードからユーザーが指定したビットのセットを削除する

Interleaver Deinterleaver v5_0インターリーバ/デインターリーバ

Interleaver Deinterleaver v4_0インターリーバ/デインターリーバ

Depunctureデパンクチャ符号で指定した位置の入力データにシンボルを挿入する

Convolutional Encoder v6_0たたみ込み符号のエンコーダ

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 16: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 16

Control Logicブロック一覧

Logical2、3、又は4つの固定小数点の値のビット単位の論理演算を実行

Slice入力データからビットのシーケンスを切り取り新しいデータ値を作成する

Single Port RAMデータ入出力ポートが1つずつ付いたRAM

Shift入力信号を左または右にシフトする

ROMシングルポートのROM

Relationalコンパレータ

RegisterDフリップフロップベースのレジスタ

PicoBlaze MicrocontrollerPicoBlazeマクロを使用した8ビットのマイ

コン

Muxマルチプレクサ

MCodeMATLAB関数を実行する為のコンテナ

Inverter固定小数点の論理コンポーネント

FFT v4_1離散フーリエ変換を計算するアルゴリズム

Expressionビット単位の論理式を実行

EDK Processorエンベデッド・プロセッサ・システムに接続する

Dual Port RAMデュアルポートのRAM

Counterアップ/ダウンカウンタなどのカウンタ

Constant固定小数点、ブール値、DSP48命令の

いずれかの定数を生成

Block BoxHDLモデルをSystem Generator用に

変換する

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 17: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 17

Data Typesブロック一覧

Slice入力データからビットのシーケンスを切り取り新しいデータ値を作成する

Shift入力信号を左または右にシフトする

Serial to Parallel指定した倍数のサイズを1つにまとめて出力する

Scale入力を2のべき乗でスケール変換する

Reinterpret入力値に関係なく出力を新しいデータ型にする

Parallel to Serial入力ワードを多重化して出力する

Gateway Outザイリンクス部分からの出力

Gateway Inザイリンクス部分への入力

Convert各入力サンプルが指定した演算タイプの値に変換される

Concatnビットベクタを連結する

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 18: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 18

DSPブロック一覧

LFSRリニア・フィードバック・シフト・レジスタ

From FIFOFIFOのメモリ キューの後半分

FFT v4_1離散フーリエ変換を計算するアルゴリズム

FDAToolFDAToolソフトウェアへのインターフェイス

DSP48 MacroDSP48, DSP48A, DSP48Eをデバイスに依存せず

抽象化したもの

DSP48DSPアプリケーションを構築する

DDS v5_0ダイレクト・デジタル・シンセサイザ

DAFIR v9_0分散演算タイプのFIRフィルタ

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 19: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 19

Mathブロック一覧

Threshold入力数の符号をテストする

SineCosineSin(x), cos(x)のどちらか、または両方を計算しROMに格納する

Shift入力信号を左または右にシフトする

Scale入力を2のべき乗でスケール変換する

Relationalコンパレータ

Reinterpret入力値に関係なく出力を新しいデータ型にする

Negate入力の論理否定(2の補数)

Mult乗算器

MCodeMATLAB関数を実行する為のコンテナ

Logical2、3、又は4つの固定小数点の値のビット単位の論理演算を実行

Inverter固定小数点型の論理コンポーネント

Expressionビット単位の論理式

Counterアップ/ダウンカウンタなどのカウンタ

Convert各入力サンプルを指定した演算タイプの値に変換する

Constant固定小数点、ブール値、DSP48命令の

いずれかの定数を生成

CMultGain演算子

AddSub加算器/減算器

Accumulator加算器または減算器ベースのスケーリングアキュムレータ

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 20: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 20

Memoryブロック一覧

Single Port RAMデータ入出力ポートが各1つずつついたRAM

Shared Memory共有できるRAM

ROMシングルポートのROM

RegisterDフリップフロップベースのレジスタ

LFSRリニア・フィードバック・シフト・レジスタ

FFT v4_1離散フーリエ変換を計算するアルゴリズム

Dual Port RAMデュアルポートのRAM

DelayLサイクルの固定遅延

Addressable Shift Register可変長シフトレジスタ

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 21: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 21

Shared Memoryブロック一覧

To RegisterDフリップフロップベースのレジスタの前半分

To FIFOFIFOのメモリ キューの前半分

Shared Memory Write共有メモリオブジェクトにデータを高速に書き込むための高速インターフェイス

Shared Memory Read共有メモリオブジェクトからデータを読み出すための高速インターフェイス

Shared Memory複数のデザインや1つのデザインの選択した箇所で共有できるRAM

Multiple Subsystem Generator複数のSystemGeneratorデザインを複数のクロックドメインを使用する1つの最上位レベルのHDLコンポーネントに

接続する

From RegisterDフリップフロップベースのレジスタの後半分

From FIFOFIFOのメモリ キューの後半分

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 22: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 22

Toolsブロック一覧

WaveScope高度な機能を備えた使いやすい波形ビューア

Toolbar複数のユーティリティに素早くアクセスする

System Generatorコードジェネレータを起動する

Single-Step Simulationシングルステップモードの場合にクロックサイクルごとにシミュレーションを一時停止する

Resource EstimatorFPGAリソースを高速に概算する

PicoBlaze Instruction DisplayPicoBlazeデザインをデバッグする

Pause Simulation入力が0以外の場合にシミュレーションを一時停止する

ModelSim1つまたは複数のブラックボックスの協調シミュレーションをコンフィギュレーション・制御する

Indeterminate Probe入力データが不定値かどうかを示す

FDAToolFDAToolソフトウェアへのインターフェ

イス

Configurable Subsystem ManagerSimulinkのコンフィギャブルシステムの

機能を拡張したブロック

Clock Probe倍精度のクロック信号がSimulinkシス

テム周期と同じ周期で出力される

ChipScopeランタイムデバッグ及びFPGA内の信号

検証を実行

ブロック名ブロック

System GeneratorについてSystem Generatorについて

Page 23: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 23

2) VHDLコード自動生成2) VHDLコード自動生成

SystemGeneratorでVHDLコードを生成する

Simulinkモデルから上記System Generatorブロックをダブルクリックすると右のダイアログが現れます

NGC Netlistを選択します

Virtex2Pのxc2vp50-5ff1152を選択します

./ngc_netlistと入力します

XSTを選択します

VHDLを選択します

10と入力します

空欄のまま

1を入力します

Defaultを選択します

Page 24: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 24

2) VHDLコード自動生成2) VHDLコード自動生成

SystemGeneratorでVHDLコードを生成する

GenerateボタンをクリックするとVHDLコード生成がスタートします

これで終了です

Page 25: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 25

2) VHDLコード自動生成2) VHDLコード自動生成

指定されたフォルダにngc_netlistフォルダが生成され、VHDLコードが出力されます

Page 26: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 26

アダプテーションキットアダプテーションキット

出力されたVHDLコードをボードメーカーの提供する

サンプルコードに組み込む

PENTEKより提供されているGateFlow”FPGAデザインキット“を使用し”USER_BLOCK.VHD”にSystem Generatorで生成されたVHDLコードを組み込みます

Page 27: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 27

アダプテーションキットアダプテーションキット

出力されたVHDLコードを

ボードメーカーの提供するサンプルコードに組み込む

Ngc_netlistフォルダをGateFlowで提供されているISEプロジェクトフォルダにコピー&ペーストします

コピー&ペーストするだけ!

Page 28: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 28

3) VHDLコードのビルド3) VHDLコードのビルド

ISE プロジェクトの起動

Xc2vp50フォルダから7140_usr.iseファイルをダブルクリックしてISEプロジェクトを起動します

Page 29: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 29

3) VHDLコードのビルド3) VHDLコードのビルド

ISE FoundationでISEプロジェクトをビルドする

ProcessesウィンドウからGenerate Programming Fileを右クリックして”Run”を実行します

Synthesize, Implement Design, Generate Programming Fileの全ての処理が完了するまで約1時間かかります

ビルドが完了すると”top_vp50.bit”ファイルが出力されます(ROMに焼きこむ場合はmcsファイルに変換します)

Page 30: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 30

3) VHDLコードのビルド3) VHDLコードのビルド

ビルド環境について

ビルドの時間は開発効率に大きく影響しますので最適なビルド環境を選択しましょう

1) できるだけ性能の良いPCを選択します

2) メモリーは1GB以上を搭載します

3) CPUのクロックも高速なものを選定します

4) CPUの内部キャッシュが大きいものを選定します

Page 31: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 31

iMPACTでFPGAにダウンロード ISEに書き込みツールとして含まれているiMPACTを使用して、生成されたBitstreamを

JTAGケーブル(又はプログラム経由)でFPGAにダウンロードします

実機にてリアルタイムにシミュレーションが可能です

4) FPGAコードのダウンロード4) FPGAコードのダウンロード

Bitstream

iMPACT起動画面

Page 32: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 32

フィルターデザイン・デモフィルターデザイン・デモ

デモの概要PENTEK社製Model7640用アダプテーションキットを使用して、Simulinkモデル上でLowpassフィルターを設計する

ビルドしたビットストリームを実機にダウンロードする

信号発生器から800KHzのサイン波にノイズを付加した信号を出力し、ローパスフィルタでノイズをカットした波形をPC画面上に表示する

使用機材PENTEK社製Model7640デスクトップPCノートPCJTAGケーブル

信号発生器

使用ツールMATLAB/Simulink R2007aSystem Generator 9.2ISE Foundation 9.2Chip Scope Pro 9.2GateFlowAdaptation Kit

Windows PC

信号発生器

デモ構成図

Page 33: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 33

フィルターデザイン・デモフィルターデザイン・デモ

AD664514-BIT A/D

AD664514-BIT A/D

DAC568616-BIT D/A & DUC

GC40164-Ch DDC

Top_vp50.vhd

FLASH8M x 16

DDRSDRAM64M x 32

DDRSDRAM32M x 32

DDRSDRAM32M x 32

PCI 2.2 INTERFACE(64 Bits / 66 MHz)

RF In RF In RF Out RF Out

PCI BUS (64 Bits / 66 MHz)

P15 XMC VITA 42.0

(Serial RapidIO, PCI-Express, etc.)

P4 PMC FPGA I/O

(Option –104)

14 14 32

32 32 3264 64

adcdata.vhdadcdata.vhd

adc_data_router.vhdadc_data_router.vhd

cntrl_reg.vhdcntrl_reg.vhd

User_blockA.vhd

User_blockA.vhd

User_blockB.vhd

User_blockB.vhd

dram_dtl.vhddram_dtl.vhd

datapath.vhddatapath.vhdddc_data_router.vhdddc_data_router.vhd

data_router.vhddata_router.vhd

User_blockA.vhd

User_blockA.vhd

User_blockB.vhd

User_blockB.vhd

User_block.vhdUser_block.vhd

syncgate.vhdsyncgate.vhd

Model7640への実装Model7640のAD側のUser_Block AとUser_Block BにSimulink上で作成したフィルターを実装する

LowpassFilter

LowpassFilter

LowpassFilter

LowpassFilter

Page 34: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 34

フィルターデザイン・デモフィルターデザイン・デモ

SimulinkモデルTop画面SimulinkのTop画面からFDATool(フィルターデザインツール)を起動します

Page 35: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 35

フィルターデザイン・デモフィルターデザイン・デモ

FDAToolフィルターデザインツールでローパスフィルタを選択し、フィルタ次数・周波数仕様等を設定します

ローパスを選択

FIRを選択

フィルタ次数は64を設定

正規化を選択

パスバンドを0.1に設定

ストップバンドを0.2に設定

Page 36: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 36

フィルターデザイン・デモフィルターデザイン・デモ

フィルタ係数のエクスポートFDAToolのファイル->エクスポートでエクスポートダイアログが開きます

フィルタ係数をfilter1という名前にしてMATLABのワークスペースにエクスポートします

Page 37: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 37

フィルターデザイン・デモフィルターデザイン・デモ

Simulinkフィルター実装部下図オレンジ色のブロックにローパスフィルタを実装します

さらにその下のオレンジ色のブロックにはDDS (Direct Digital Synthesizer)ブロックを実装しており、切り替えができるように設計しています

Page 38: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 38

フィルターデザイン・デモフィルターデザイン・デモ

Simulink DAFIRフィルター部下図がDAFIRフィルターを実装しているFilter_Blockです

ブロックをダブルクリックするとダイアログが開きパラメータを設定することができます

Page 39: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 39

シミュレーション結果元の波形とフィルター通過後の波形を見ると、パスバンドはそのまま通過してストップバンドでノイズが遮断されているのがわかります

フィルターデザイン・デモフィルターデザイン・デモ

元信号波形 フィルター通過後波形

Page 40: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 40

フィルターデザイン・デモフィルターデザイン・デモ

実機上の動作結果下図はChAがフィルター通過後の波形(赤)、ChBがフィルターをバイパスした波形(青)です

同様にその下がChA, ChB共にDDSに切り替えた時の波形です

ChA:フィルター通過後

ChB:フィルターバイパス

Page 41: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 41

MIMO送受信機評価システム

EchoTekD/A

ECTR-114E

EchoTekD/A

ECTR-114E

VME Bus

Mercury MCJ9Mercury MCJ9

S-FPDP IF

Windows PC

Dual RACE++

IF 140MHz

(20MHz B/W)

Serial FPDP

CPU-54T

Solaris8

CPU-54T

Solaris8

PPC 7410 x4 PENTEK

A/D&FPGA6236&4205

PENTEKA/D&FPGA6236&4205

VME Bus

Mercury MCJ9Mercury MCJ9

S-FPDP IF

Windows PC

Dual RACE++

Serial FPDP

CPU-54T

Solaris8

CPU-54T

Solaris8

PPC 7410 x8

RF Unit

To/From 5GHz

Tx System Rx System

EchoTekD/A

ECDA-614

EchoTekD/A

ECDA-614

Control Signal

12 channels

ユーザー・アプリケーション例ユーザー・アプリケーション例

Page 42: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 42

ユーザー・アプリケーション例ユーザー・アプリケーション例

受信部データフロー

VIM

-CV

IM-B

VIM

-A

Swing Buffer4KW

PCI-I/F

PLX9656

PCI

Bridge

512M

SDRAM

PPC

MPC745x

PCI Bus, 64Bit / 66MHz

Model6236

Virtex-II FPGA-AB

Virtex-II FPGA-CD

Model4205 Simplified VIM BIFO/FPGA Configuration

UserBlockAB

UserBlockC

VIM

-DPCI-I/F

PLX9656

Swing Buffer4KW

VIM-A BIFO

VIM-B BIFO

VIM-C BIFO

VIM-D BIFO

6250c

Preamble Data

Received Data

AD

AD

Page 43: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 43

MIMO 受信部ブロックダイアグラム

UserBlock 6250c

ub_sysgen

UserBlock_C

ub_sysgen_4205cd

UserBlock_AB

ub_sysgen_4205ab

Preamble Data

Sync

-GI FFT

Sepalation

-GI FFT

De-Mapping

De-Mapping

Phase Tracking

Phase Tracking

Deinterleaver

Deinterleaver

Viterbi

Viterbi

Channel Estimation

614 Control

Detect

Packing

Received Data

ユーザー・アプリケーション例ユーザー・アプリケーション例

Page 44: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 44

2x2 MIMO Simulink モデル

ユーザー・アプリケーション例ユーザー・アプリケーション例

Page 45: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 45

開発システム外観

ユーザー・アプリケーション例ユーザー・アプリケーション例

ユーザーの研究テーマ:新世代移動機用適応アンテナシステムに関する研究開発

ホームページ:http://www2.nict.go.jp/u/u361/proj14.html

Page 46: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 46

まとめまとめ

☆☆☆☆☆☆5)開発効率

「書かれたとおりに処理」されるため、シミュレーションでチェックしきれなかったバグが入りやすく、ビルド回数は一般的に多くなる

Simulinkモデルの時点でシミュレーションができるので、シミュレーション結果がOKなら1回のビルドで同じ結果が得られる

4)ビルドの実行回数

ハードウェア記述言語で信号を正しく接続する必要がある

アダプテーションキットにて最適化している為、コピー&ペーストのみ

3)外部I/Oとの接続

外部デバイスの動き(モデル)を再現しなければ、正確なシミュレーションが行えない

Simulink上で容易にシミュレーションが可能2)シミュレーション

FPGA用のハードウェア記述言語を使用して論理回路を実装する必要がある

必要な機能はブロックセットで提供されているので簡単に実装できる

1)難易度

VHDL / Verilog HDLMATLAB/Simulink(アダプテーションキット)

Page 47: MATLAB/Simulinkを使った FPGA開発ソリューションMISH International Co., Ltd. 1 MATLAB/Simulinkを使った FPGA開発ソリューション 株式会社ミッシュインターナショナル

MISH International Co., Ltd. 47

弊社ブースのご案内弊社ブースのご案内

ブースNo.30 ミッシュインターナショナル

弊社ブースにて実機によるデモンストレーションを行っておりますので是非弊社ブースまでお越しください。