MicroBlazeのチュートリアル

Similar documents
Microsoft Word - Lab110131b.doc

(Microsoft Word - \214\264\215e B_\217\221\202\253\215\236\202\335\225\224.docx)

デジタル回路入門

Nios II 簡易チュートリアル

Spectrum Setup 画面が現れます Install Tab の各項目に マウス カーソルを合わせると 項目の詳細説明 が表示されます 通常はデフォルトの選択で問題ありませんが LabVIEW Driver Matlab Driver が必要な場合は 選択します 6. Install sel

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

A 既製のプロジェクトがある場合

修正履歴 NO バージョ 修正内容 修正日 ン 1 Ver1.0 新規作成 2014/04/13 この文書の情報は 文書を改善するため 事前の通知なく変更されることがあります 最新版は弊社ホームページからご参照ください ( 株 ) の書面による許可のない複

ZVH_VIEWER

Nios II ハードウェア・チュートリアル

ModelSim-Altera - RTL シミュレーションの方法

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

Microsoft Word - Android開発環境構築.doc

Microsoft Word - Mac版 Eclipseの導入と設定.docx

Windows2000/XPインストール手順

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

CrossCore Embedded Studio install and tutorial

Nios II Flash Programmer ユーザ・ガイド

Microsoft Word - ALT0982_program_epcs_by_niosii_v10.doc

ReTRY HUB

Microsoft PowerPoint - Tutorial_2_upd.ppt

Welcome-Kit ~STM32L4-Nucleo~

目次 USBドライバダウンロードの手順...2 USBドライバインストールの手順...3 インストール結果を確認する...19 USBドライバアンインストール / 再インストールの手順...21 USB ドライバダウンロードの手順 1. SHL21 のダウンロードページからダウンロードしてください

! STEP 2. Quartus Prime のダウンロード WEB ブラウザで以下の URL を開きます 2 ページ中段の Quartus Prime 開発ソフトウェア ライト エディ

Slide 1

Windows10 における Ac6 System Workbench for STM32 のダウンロードとインストール V /06/01 Windows10 の PC で Ac6 System Workbench for STM32 のダウンロードとインストールの方法について説明しま

1. ST-LINK Utility のダウンロード Windows7 PC にインストールする場合について説明します 1.1. STMicroelectronics のサイト STMicroelectronics のサイトを開きます ここに ST-LINK と入力して検索します ( 右側の虫眼鏡を

Nios II 簡易チュートリアル

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

SonicDICOM Cloud Connector インストール手順書 SonicDICOM Cloud Connector とは 検査装置が撮影した画像を自動的にクラウドへアップロー ドするためのソフトウェアです 1 前準備 クラウド上に PACS を作成する SonicDICOM Cloud

monologue Sound Librarian 取扱説明書

デジタル回路入門

2. インストールの方法 インストールの手順は まずインストーラーをサイトからダウンロードし イールドブック カリキュレーターと Java Web Start をインストールします 次にイールドブック カリキュレーターを起動してサーバー接続し Java のファイルをダウンロードします 以下の手順に従

MINI2440マニュアル

Studuinoライブラリ環境設定Mac編

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

図 1.SDK でインストールするパッケージ選択ができたら [Install] ボタンをクリックしますダウンロードとインストールが始まります インストールが終わると [close] ボタンが表示されるので クリックしてとじて下さい Google USB Driver package, revisio

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

履歴 修正日 内容 2011/01/18 第 1 版制定 2012/10/ 版 内容 Bee Beans Technologies 社から配布されているネットワーク プロセッサ (SiTCP) のライブラリ使用方法を解説した文書です SiTCP の概要や各信号意味などは別文書 SiTCP

(Microsoft PowerPoint - TINA_Creating_PCB.ppt [\214\335\212\267\203\202\201[\203h])

FTDI USB-Serial Converter デバイスドライバのインストール(Rev.1.01)

Eclipse&gcc install and tutorial

無線LAN JRL-710/720シリーズ ファームウェアバージョンアップマニュアル 第2.1版

プリンタドライバのインストール. Windows で使用する場合 Windows プリンタドライバのインストール方法は 接続方法や使用するプリンタドライバによって異なります また コンピュータの OS によってインストール方法が異なります お使いのコンピュータの OS に合わせて 以下の参照ページを

***************************************************************** README.TXT for Touch Panel Driver Win9x/Me/2000/XP/Vista Copyright(C) 2009 IIYAMA CO

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

目次 1. HLA Fusion 3.0 がインストール可能な環境 HLA Fusion 3.0 のインストール HLA Fusion 3.4 のインストール 初期設定用データベース接続 ( 初めての方のみ ) 既存データベースのUpg

リファレンスアプリケーション RefApp7

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

M4i_M2i_card_W10_ 最初にお読み下さい.docx M4i.xxxx M2i.xxx シリーズをご評価 ご購入頂きありがとうございます 本ドキュメントは Windows10 環境での M4i.xxxx M2i.xxx シリーズの取り付け ドライバ ソフトウエア (Control Cen

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Microsoft PowerPoint - RM-PDU_IP設定方法.ppt

ST-LINK/V2-1 への Upgrade V /10/07 ST-LINK/V2-1 USB driver のインストールおよび ST-LINK/V2-1 の Upgrade について説明します ST-LINK/V2-1 USB driver をインストールしてから ST-LIN

インテル(R) Visual Fortran コンパイラ 10.0

VPN ユーザを管理し、RV016、RV042、RV042G および RV082 VPN ルータの速い VPN を設定して下さい

著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社

ArcGIS Runtime SDK for WPF インストールガイド (v10.2.5)

Microsoft Word - Android_実習環境

Windows AIKを使用したPE2

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

プレゼンタイトルを入力してください

Studuino ライブラリ環境設定Windows編

Maser - User Operation Manual

AP-RZA-1A シリアルFlashROMの書き込み方法

内容 1 はじめに インストールの手順 起動の手順 Enterprise Architect のプロジェクトファイルを開く 内容を参照する プロジェクトブラウザを利用する ダイアグラムを開く 便利な機能.

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

monologue Sound Librarian 取扱説明書

prologue Sound Librarian 取扱説明書

Quartus II はじめてガイド - プロジェクトの作成方法

Windows XPでの手動USBドライバインストール方法

1 1 Arduino とは Arduino アルドゥイーノ は ワンボードマイコンの一種で オープンソースハードウェアであ り 組み立て済みの基板を購入することもできるほか 誰でも自分の手で Arduino を組み立てる ことができます USBコネクタでPCと接続して利用します デジタルポートとア

1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x

Lab GPIO_35 GPIO

Microsoft Word - SSL-VPN接続サービスの使い方

Merging と AES67 ディバイスの設定

Microsoft Word - NanoPhotometer用PCソフトウエア操作説明書 Rev 1.00.doc

PowerPoint Presentation

DSP5Dアップグレードガイド

PowerPoint Presentation

Nios II 簡易シミュレーション

OpenVPN接続マニュアル

地図 SD カードを取り外す 最初に ナビゲーション本体から地図 SD カードを取り外します 本操作は地図 SD カードを初めて ROAD EXPLORER Updater に登録するときや パソコンにダウンロードしたデータを地図 SD カードに保存するときに実行してください 1 ナビゲーション本体

Team Foundation Server 2018 を使用したバージョン管理 補足資料

スクールCOBOL2002

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

MS5145、MS7120,USB通信の設定

Visual DSP++ install and tutorial

黒板作成 連携ツールの概要 黒板作成 連携ツールは 事前に撮影する工事写真用の黒板を作成するツールです 本書では EX-TREND 武蔵の写真管理 黒板作成 連携ツール ios アプリ 現場 DE カメラ土木版 の連携について 説明します 写真管理 EX-TREND 武蔵の写真管理で作成した 工種分

スライド 1

G800SE HTMLdocument update

<4D F736F F D D834F D B834C815B837B815B D836A B A2E646F6378>

Biz Box HUB S724EP ファームウェアバージョンアップ手順書 1

スライド 1

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

スクールCOBOL2002

Microsoft Word - COP_MasterSim_Installation_Supplement_A00.doc

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

Transcription:

Xilinx 社 Spartan 3E Starter Kit を使った Micro Blaze のチュートリアル 九州工業大学 笹尾研究室 中原啓貴 1

はじめに 本ドキュメントは Xilinx Spartan3E Starter Kit と Embedded Development Kit( 以降 EDK) を用いた Micro Blaze のチュートリアルとなっています 環境 ISE 8.2i Foundation EDK 8.2i Spartan 3E Starter Kit 事前に必要なこと 両方のバージョンが一致しないと EDK が起動しません! 上記の環境をインストール済み (USBのドライバもインストール済み) Verilog, Cの習得 (VHDLも習得しておくことが望ましい) 2

ドキュメントの内容 簡単な Micro Blaze の設計 EDK の使い方の習得 既存 IP の追加 LED を C でコントロール IP の追加法を習得 ユーザ IP の追加 クロックカウンターを追加 Import/Create IP の使い方を習得 ソフトウェアとハードウェアの比較 FIR フィルタを設計し, ハード ソフト混在システムを設計 ハードとソフトの速度を計測 3

簡単な Micro Blaze の設計 (1) ここでは簡単な Micro Blaze を設計し, EDK の使い方を覚えます をダブルクリックして EDK を起動してください プロジェクトを作成し, Micro Blaze の設定を行います Base System Builder wizard をチェックし OK を押してください 4

簡単な Micro Blaze の設計 (2) プロジェクトを置く場所とプロジェクト名を指定します Project file に直接入力するか, Browse で指定してください プロジェクトディレクトリ : C: XilinxEDK プロジェクト名 : system.xmp ディレクトリを指定したら, OK をクリックしてください 5

簡単な Micro Blaze の設計 (3) 右図のウィンドウが起動しますので I would like to create a new design にチェックをつけて, Nextをクリックしてください 6

簡単な Micro Blaze の設計 (4) ターゲットを指定します Board vendor: Xilinx Board name: Spartan-3E Starter Board Board revision: C 指定が終わったら Next をクリックしてください 7

簡単な Micro Blaze の設計 (5) 次に FPGA とプロセッサを指定します StarterKit は FPGA とプロセッサが決まっているのでここでは何もおこないません. そのまま Next をクリックしてください 8

簡単な Micro Blaze の設計 (6) ここからは Micro Blaze の設定を行います メインメモリがデフォルトでは 8KByteと少ないので, 32KBtyeに増やしておきます その他は変更しません 設定が終わったらNextをクリックしてください 9

簡単な Micro Blaze の設計 (7) ここからはMicroBlazeに組み込む構成要素 (IP) を設定します RS232_DTE, LEDs_8Bitのチェックを外してください ( 後で追加します ) RS232_DCEのチェックは残してください 設定が終わったらNextをクリックしてください 10

簡単な Micro Blaze の設計 (8) 以下のチェックを外します FLASH_16Mx8, SPI_FLASH, DDR_SDRAM_16Mx16, Ethernet_MAC 設定が終わったら Next をクリックしてください 11

簡単な Micro Blaze の設計 (9) 内部 IP の追加ウィンドウが開きます そのまま Next をクリックしてください 12

簡単な Micro Blaze の設計 (10) ソフトウェアの設定を行います そのまま Next をクリックしてください 一応サンプルアプリケーションは残しておくことをお勧めします ( 初めて作成したプロジェクトは一度合成を行う必要があり 何かアプリケーションを置いておかないと合成が上手くいかないから!?) 13

簡単な Micro Blaze の設計 (11) 初期化プログラムをどこに置くか聞いてきますので Next を押します (Peripheral Test も同様に ) 14

簡単な Micro Blaze の設計 (12) システムの設計は完了です そのまま Generate をクリックしてください ( 図 1) 次に Finish をクリックしてください ( 図 2) 図 1:System Created 図 2:Finish 15

簡単な Micro Blaze の設計 (13) 次に何をするのか聞いてきますので, Start using Platform Studio をチェックして OK をクリックしてください 16

簡単な Micro Blaze の設計 (14) Platform Studio が起動します ( 図 1) この時点で C: XilinxEDK フォルダ ( 図 2) を見るとわかるのですが まだ MicroBlaze の HDL ファイルと C のテンプレート ヘッダが生成されていません. この時点で設計を行うと上手くいきません!! 図 2:C: XilinxEDK 図 1:Platform Studio 17

簡単な Micro Blaze の設計 (15) まず Micro Blaze の HDL ファイルを生成し HDL の合成を行います (ISE の Synthesis -> Implementation を行うのと同じ ) Hardware -> Generate Bitstream をクリックしてください Done! が表示された後, C: XilinxEDK を見ると HDL ファイルが 生成されていることが確認できます 18

簡単な Micro Blaze の設計 (16) 次にソフトウェアのライブラリとヘッダを生成します (C: XilinxEDK microblaze_0 に格納される ) Software -> Build All User Applications をクリックしてください ビルド後 ソフトウェアのサイズが表示されます C: XilinxEDK microblaze_0 にライブラリが生成されます ( 注意 ) ソフトウェアをビルドするときは microblaze_0 フォルダ 及び直下のディレクトリのファイルを閉じてください ( ビルド時にファイルを削除 追加するので フォルダや ファイルを開いていると操作できなくてビルドが終わらない ) ヘッダーフォルダ プログラムのサイズ 19

簡単な Micro Blaze の設計 (17) ソフトウェアプロジェクトを作成しましょう まず TestApp_Memory を起動させないようにします TestApp_Memory を右クリックして Mark to Initialize BRAMs のチェックを外してください ( 図 1) 次に, Add Software Application Project をダブルクリックし Project Name に TutorialProject と入力して OK をクリックします ( 図 2) 図 1:TestApp_Memory を起動させないようにする 図 2: ソフトウェアプロジェクトの追加 20

簡単な Micro Blaze の設計 (18) 追加したプロジェクトを起動するように設定します TutorialProject を右クリックして, Mark to Initialize BRAMs にチェックをつけてください ( 図 1) 次にソースファイルをプロジェクト上に作成します Sources を右クリックして Add New File を選択してください ( 図 2) ウィンドウが開きます. tutorial.c と入力して OK をクリックしてください ( 図 3) 図 1: Mark to Initialize BRAMs 図 2:Add New File を選択 図 3: ソースファイル名を指定 21

簡単な Micro Blaze の設計 (19) Sources に tutorial.c が追加されます C: XilinxEDK tutorial.c をダブルクリックするとエディタが起動するので, 以下のプログラムを入力して保存してください 改行は r n Xilinx 専用のライブラリ. printf ではメモリ量が多すぎる! 22

簡単な Micro Blaze の設計 (20) プロジェクトを Build して, Bitstream を生成します Software -> Build All User Applications ( 図 1) Device Configuration -> Update Bitstream ( 図 2) 以上の順で操作を行ってください 図 1: プロジェクトのビルド 図 2: Bitstream の作成 23

簡単な Micro Blaze の設計 (21) ボードと PC を接続してください ターミナルソフトを起動して ( ここでは TeraTerm Pro http://hp.vector.co.jp/authors/va002416/ を使用 ) ください 9600bps, データ長 8 ビット, パリティなし, ストップビット 1 ビット 電源を接続 RS232C を PC に接続 USB を PC に接続 ジャンパピンを JTAG に設定 ( 真ん中を残して上下を外す ).... 24

簡単な Micro Blaze の設計 (22) TeraTerm では Serial の Port を Starter Kit の DCE に接続している Port にあわせる ( デバイスマネージャを見るとよい ) Setup -> Serial Port を選択し上記のように設定 25

簡単な Micro Blaze の設計 (10) FPGA に書き込みます Device Configuration -> Download Bitstream を選択してください ターミナルに表示されます! プログラムの停止 (FPGA をクリア ) リセット 26

ここまでのまとめ EDK の使い方を習得しました プロジェクトの作成法 初期設定の方法 ソフトウェアプロジェクトの作成法 簡単なプログラムの実行方法 課題 : tutorial.c をいろいろ改造して ターミナルに表示させてみましょう 27

既存 IP の追加 (1) ここでは 前回設計したシステムに既存の IP を接続し ソフトウェアでコントロールする方法を習得します Starter Kit の LED を接続してみましょう C: XilinxEDK をコピーして C: XilinxEDK_LED を作成します Xilinx_EDK をコピー ( 中身は同じ ) 28

既存 IP の追加 (2) EDK を起動します コピーした C: XilinxEDK_LED system.xmpを開きます 最初のプロジェクトウィンドウでは Cancel を選択 メインウィンドウが起動するので File -> Open Project を選択し, C: XilinxEDK_LED にある system.xmpを開いてください 29

既存 IP の追加 (3) ボードの LED と Micro Blaze を接続する I/O IP をシステムに追加します IP Catalog タブをクリックし, General Purpose IO にある opb_gpio をダブルクリックしてください ( 図 1) 確認ダイアログがでるので Yes を選択します ( 図 2) 右の IP リストに opb_gpio_0 が追加されました ( 図 3) 図 1: opb_gpio を選択 図 3: gpio がシステムに追加される 図 2: 確認ダイアログ 30

既存 IP の追加 (4) 追加した IP をバス (OPB) に接続します Filters の Bus Interface にチェックを入れ, Bus Connection にある opb_gpio_0 の No Connection をクリックしてください プルダウンメニューの中から mb_opb を選択します opb_gpio_0 をクリックして LED_8bit にリネームしてください IP がバスに接続されると緑色で塗りつぶされる 31

既存 IP の追加 (5) 次にポートの接続を設定します ( バスに接続した個々の信号線を設定すると思えばよい ) Filters の Ports をチェックし, LED_8bit にある GPIO_d_out の Net を クリックして, プルダウンメニューから LED_8bit_GPIO_d_out を選択してください ( 選択はメニューを選んで どこか他の部分をクリックすると行われることに注意!) LED_8bit_GPIO_d_out を選んだ後 どこか他の部分をクリックする 32

次にI/Oの方向とビット幅を設定します LED_8bitを右クリックし, Configure IPを選択してください 既存 IP の追加 (6) Common では Enable Channel2 のチェックを外す GPIO Data Bus Width を 8 に設定 8 Channel 1 では Channel 1 is Bi-directional: FALSE Channel 1 is Input Only: FALSE 33

既存 IP の追加 (7) さらにこの IP のポートを外部に接続します LED_8bit の GPIO_d_out の Net をクリックし, Make External を選択してください External Ports に LED_8bit_GPIO_d_out_pin が接続されます! 幅 (Range) は [0:7] になっています 34

既存 IP の追加 (8) I/O ポートにソフトウェアからアクセスするアドレスを設定します Filters の Addresses をチェックし, LED_8bit (Size が U 以外の部分 ) を Lock します (Lock にチェックをつける ) LED_8bit の Size (U の部分 ) をクリックし, プルダウンメニューから 64K を選択します 仮のアドレスが設定されるので, をクリックしてアドレスを 割り当てます Lock をクリックして既存の IP のアドレスを変更しないようにする 仮のアドレス 64K を選択 仮のアドレスが表示されたらクリック 35

既存 IP の追加 (9) Clean Netlist を行い, Update Bitstream を行ってハードウェアとソフトウェアを一度に更新します ( なぜか Clean Netlist を行わないと更新できない 何で!?) 36

既存 IP の追加 (10) C: XilinxEDK_LED microblaze_0 include 内にある xparameters.h を開いてみてください LED_8BIT のアドレス定義が追加されています! このアドレスに値を書けば LED をコントロールできます 37

既存 IP の追加 (11) 次に FPGA ピンを LED に接続します Project タブを選択し, UCF File をダブルクリックします ピン配置ファイル (**.ucf) に以下の内容を記述します ピン名はさきほどの External Ports 名を指定, ピンの位置はデータシート (Spartan3E Starter Kit Board User Guide を参考に ) 38

既存 IP の追加 (12) Clean Netlist を行い, Update Bitstream を行ってハードウェアとソフトウェアを一度に更新します なぜかこの手順 ( 更新.ucfを後から編集 更新 ) で行わないとエラーがでる 39

既存 IP の追加 (13) ソフトウェアを設計します 前回の TutorialProject は使用しないので, 右クリックして Mark to Initialize BRAMs のチェックを外しておきます Add Software Application Project をダブルクリックし, プロジェクト LED_Ctrl を追加してください 40

既存 IP の追加 (14) Project: LED_Ctrl を右クリックし Mark to Initialize BRAMsをチェックします Sources を右クリックし, Add Net File.. から led_ctrl.c を入力し, 以下のプログラムを入力してください I/O ポートを読み書きする関数を集めたヘッダ ベースアドレス, オフセット, 値 I/O ポートに値を書き込む関数 41

既存 IP の追加 (15) プログラムの入力が終わったら保存し FPGA に書き込みます Device Configuration -> Download Bitstream を選択してください (Build Project や Update Bitstream を同時に行ってくれる ) LED が交互に点滅します! 42

ここまでのまとめ EDK にあらかじめ用意されている IP を追加しました 課題 : このシステムはあらかじめ, Dip SwitchとPush Button が接続され 設定も済んでいる gpio_l.h には関数 XGpio_mReadReg(BaseAddress, RegOffset) が用意されており, ベースアドレスをこれらのスイッチのアドレスに設定すればボードのスイッチを操作できる スイッチからLEDを操作できるようにプログラムを改造せよ ( ソースコードだけ改造すればできる ) 43

ユーザ IP の追加 (1) ここではユーザが独自に設計したオリジナルのハードウェアを Micro Blaze に接続し, 動かしてみます なお 追加するにあたって ユーザが設計したハードは正しく動作する ( ハードを設計しながら Micro Blaze を設計してるととても非効率!) ユーザのハードは Verilog で記述されている ことを前提に説明を行っていきます FPGA clock OPB バス 今回はこの部分を設計 Micro Blaze clock counter clk cnter I/O 44

ユーザ IP の追加 (2) C: XilinxEDK_CCNT フォルダを作成し, 前回設計した C: XilinxEDK_LED フォルダの中身をコピーしてください EDK を起動し, Cancel を選んでください File -> Open Project でさきほどコピーした C: XilinxEDK_CCNT にある system.xmp を開きます 45

ユーザ IP を追加します ユーザ IP の追加 (3) Hardware -> Create or Import Peripheral を選択してください Welcomeウィンドウが開きますので, Next をクリックしてください 46

ユーザ IP の追加 (4) 次に新規に作成するか, 既存の IP を読み込むか聞いてきます 今回は新規に作成するので Create templates for a new peripheral にチェックをつけて Next をクリックしてください 47

ユーザ IP の追加 (5) 作成した IP を格納する場所を指定します デフォルトはプロジェクトの pcores フォルダに作成されます 今回はデフォルトで指定されている場所に格納します そのまま Next をクリックしてください 今回はここに格納される 48

ユーザ IP の追加 (6) ユーザ IP の名前とバージョンを指定します Name に sys_clk_cnt_ip と入力し, Next をクリックしてください 今回はバージョンの設定をデフォルトの 1.00.aにします 49

ユーザ IP の追加 (7) 作成した IP を接続するバスを指定します On-chip Periperal Bus にチェックをつけて Next をクリックしてください 50

ユーザ IP の追加 (8) バスとユーザ IP 間のインタフェースを設定します S/W reset and MIR, User logic interrupt support のチェックを外します User logic S/W register support にチェックをつけます 51

ユーザ IP の追加 (9) ユーザ IP のレジスタを設定します Number of software accessible registers: 1 Data width of each register: 32 bit とします 52

ユーザ IP の追加 (10) バスと IP 間の制御信号の設定を行います 今回はデフォルトで用意されている信号を使用するので Next をクリックしてください 53

ユーザ IP の追加 (11) シミュレーションのファイルを出力するか設定します シミュレーションには ModelSim-SE, 又は ModelSim-PE が必要です 今回は手元にないので チェックをはずし Next をクリックします 54

ユーザ IP の追加 (12) ユーザ IP の記述言語と合成フローを指定します Generate stub user_logic template in Verilog instead of VHDL, Generate template driver files to help you implement software interface にチェックをつけます Generate ISE and XST project files to help you implement the peripheral using XST flow のチェックを外します チェックをつけると確認ダイアログがでますが, そのまま OK をクリックしてください 設定がおわると User Logic の色が変わります. Next をクリックしてください 色が変わる 55

ユーザ IP の追加 (13) 確認ウィンドウに切り替わるので Finish をクリックしてください 56

ユーザ IP の追加 (14) pcores フォルダ内に新しいフォルダが作成されます ここからは直接ファイルを編集します User Logic と IF の HDL ファイルを置くフォルダ IP コア名 IP コアの設定ファイルを置くフォルダ User Logic (verilog) インタフェース (VHDL) 57

ユーザ IP の追加 (15) C: XilinxEDK_CCNT pcores sys_clk_cnt_ip_v1_00_a data にある sys_clk_cnt_ip_v2_1_0.mpd を編集します sys_clk_in と cnt_num を追加し, 設定を加えます EDKの File -> Open から開くと予約語に色がつくので編集しやすいでしょう 58

ユーザ IP の追加 (16) C: XilinxEDK_CCNT pcores sys_clk_cnt_ip_v1_00_a data hdl vhdl にある sys_clk_cnt_ip.vhd を編集します component に信号を追加 entity に信号を追加 59

ユーザ IP の追加 (17) 同様にポートにも信号定義を追加します 60

ユーザ IP の追加 (18) C: XilinxEDK_CCNT pcores sys_clk_cnt_ip_v1_00_a hdl verilog にある user_logic.v を編集します 61

ユーザ IP の追加 (19) clock counter の記述を行います 62

ユーザ IP の追加 (20) 次にプロジェクトにユーザ IP を追加します Hardware -> Create or Import Peripheral を選択します Welcome ウィンドウが開きますので Next をクリックしてください 63

ユーザ IP の追加 (21) Peripheral Flow ウィンドウになります Import existing peripheral をチェックし Next をクリックします 64

ユーザ IP の追加 (22) Repository or Project ウィンドウになります そのまま Next をクリックしてください 65

ユーザ IP の追加 (23) さきほど設定したユーザ IP を指定します Name : sys_clk_cnt_ip ( プルダウンメニューから選択できる ) Use version にチェックをつけてください Next を押すと確認ダイアログがでますので OK をクリックしてください 66

ユーザ IP の追加 (24) ソースファイルの種類を設定します HDL source files にチェックをつけて Next をクリックしてください 67

ユーザ IP の追加 (25) HDL ソースファイルの設定を行います 1 使用する言語を Mixed に設定 2 C: XilinxEDK_CCNT pcores sys_clk_cnt_ip_v1_00_a data sys_clk_cnt_ip_v2_1_0.pao を読み込むように設定 68

ユーザ IP の追加 (26) HDL の解析を行います ( さきほど編集したファイルにエラーがないか確認を行う. user_logic.v のチェックは行ってくれないことに注意!) 69

ユーザ IP の追加 (27) 編集したファイルにエラーがなければこのウィンドウが表示されます OPB Slave にチェックをつけて Next をクリックしてください 70

ユーザ IP の追加 (28) Port の追加, Parameter の設定は共にデフォルトの値を 使用するので, Next をクリックしてください 71

ユーザ IP の追加 (29) 割り込み信号の設定を行います 今回は割り込みを使わないので, Select and configure interrupt のチェックを外し, Next をクリックしてください 72

ユーザ IP の追加 (30) パラメータとポートの属性を設定します 今回は行わないのでそれぞれ Next をクリックしてください 73

ユーザ IP の追加 (31) これで IP を追加する作業は終了です Finish をクリックしてください 74

ユーザ IP の追加 (32) ユーザ IP を読み込みます EDK に切り替えて, IP Catalog タブをクリックしてください Project Repository にさきほど設定した IP が追加されているので ダブルクリックしてください. 確認ダイアログがでるので Yes をクリックしてください 75

ユーザ IP の追加 (33) 同様に opb_gpio を追加し, clk_cnt_io にリネームします 次に追加した IP の HDL 合成を行います Hardware -> Generate Netlist を選択してください 76

ユーザ IP の追加 (34) 追加した IP をバスに接続します Filters の BusInterface をチェックしてください Bus Connection をクリックし, mb_opb を選択してください mb_opb に接続されると塗りつぶされる 77

ユーザ IP の追加 (35) Port を接続します Filters の Ports にチェックを付けて 赤枠で囲った部分を 設定してください sys_clk_in を外部のクロックに接続 cnt_num を io に接続 78

ユーザ IP の追加 (36) IO Port を設定します clk_cnt_io を右クリックし, Configure IP を選択してください Channel1 を指定し Bi-directional : FALSE Input Only : FALSE としてください 79

Base Address を設定します ユーザ IP の追加 (37) Filters の Addresses にチェックをつけ, Size を64Kに設定してください 次に追加したIP 以外の Lock にチェックをつけ, をクリックします 3. アドレスを割り振る 1. Size を 64K に設定 2. 追加した IP 以外の Lock にチェックをつける 80

ユーザ IP の追加 (38) システムを更新し, 追加したIPのソフトウェアライブラリとヘッダを作成します Device Configuration -> Updata Bitstream を選択してください C: XilinxEDK_CCNT microblaze_0 include 内に sys_clk_cnt_ip.h が作成され, xparameters.h に作成したIPのアドレスが追加されます 81

ユーザ IP の追加 (39) 新たにソフトウェアプロジェクト system_clk_cnt を作成します Mark to Initialize BRAMs チェックをつけて下さい Sources を右クリックし Add New File を選んで system_clk_cnt.c を作成してください その他のプロジェクトは Mark to Initialize BRAMs チェックを外します クロック数を計測 system_clk_cnt を作成しソースファイルを作成する この部分を計測 プログラムを入力する 82

ユーザ IP の追加 (40) ターミナルソフトを起動してください ビルドを行い, FPGA にデータを転送します Device Configuration -> Download Bitstream を選択してください システムクロックは 50MHz(20ns 周期 ) なので 20 をかけると時間 [ns] がわかる最初のループと次のループ数は 10 倍違っている約 10 倍くらいの速度差が確認できた 83

ここまでのまとめ ユーザが独自に設計したIPを追加し ソフトウェアでコントロールしてみました クロックカウンタを設計し, 実時間を計測できるようになりました 課題 : さまざまなプログラムを動作させ 実行時間を計測してみましょう ハードとソフトで実現し 両方の手法を速度 ( 動作時間 ) と面積 ( ハードウェアリソース ) で比較してみましょう 84

ソフトウェアとハードウェアの比較 FIR フィルタの設計 FIR ディレクトリ以下を参照してください 仕様 : タップ数は 11 対照型フィルタとして設計 係数は適当に設定 ( 本当に動かすならきちんと設定しないといけません ) ハードウェアは 50MHz 以上で動作するように適時レジスタを追加して設計 input レジスタ 定数乗算器 input + + Σ + + + Σ 85

演算時間の比較 ハード + ソフトで約 10 倍高速化を実現 ソフトウェアのみで FIR を設計 ソフト + ハードで FIR を設計 86