スライド 1

Similar documents
Verilog HDL による回路設計記述

VelilogHDL 回路を「言語」で記述する

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

Presentation Title

デジタル回路入門

電卓の設計 1

Microsoft PowerPoint LC_15.ppt

Microsoft PowerPoint - 01_Vengineer.ppt

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

Microsoft Word - 実験4_FPGA実験2_2015

TopSE並行システム はじめに

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」

卒業論文 巡回冗長検査 CRC32 のハード / ソフト最適分割の検討 氏名 : 伊藤大喜学籍番号 : 指導教員 : 山崎勝弘教授提出日 : 2009 年 2 月 19 日 立命館大学理工学部電子情報デザイン学科

SimscapeプラントモデルのFPGAアクセラレーション

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

Microsoft PowerPoint - 3.3タイミング制御.pptx

PLDとFPGA

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

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

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

untitled

機能検証トレーニング コース一覧

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

<4D F736F F F696E74202D D4C82F08A B582BD A A F2E707074>


-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

CSPの紹介

ハード・ソフト協調検証サービス

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

TULを用いたVisual ScalerとTDCの開発

Microsoft Word _C2H_Compiler_FAQ_J_ FINAL.doc

1: ITT-2 DDR2 1.8V,.V(F) Config. Mem. JTAG XCFPV048 LEDs SWs Clock (VariClock) DDR2 DDR2 DDR2 FPGA XC5VFX0T General-Purpose LEDs SWs XTAL (2.68kHz) MC

Microsoft PowerPoint - FPGA

NSW キャリア採用募集職種一覧 2018/8/16 現在 求人番号 職種対象業務必要とするスキル 経験 資格等勤務地 1 営業スペシャリスト金融 ( 損保 生保 クレジット ) 業でのソリューション営業 IT 業界での営業経験 金融業界 IT 業界での人脈がある方尚可 渋谷 2 プロジェクトマネー

2.5. Verilog 19 Z= X + Y - Z A+B LD ADD SUB ST (X<<1)+(Y<<1) X 1 2 LD SL ST 2 10

スライド 1

「電子政府推奨暗号の実装」評価報告書

Virtex-6 Clocking

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No03\201i\224z\225z\227p\201j.pptx)

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

はじめに : ご提案のポイント

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン

Microsoft PowerPoint - presen3x4an.pptx

Quartus II クイック・スタートガイド

スライド 1

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

OS

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

Microsoft PowerPoint - 01-VerilogSetup-2018.pptx

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

計算機アーキテクチャ

CCD リニアイメージセンサ用駆動回路 C CCD リニアイメージセンサ (S11155/S ) 用 C は 当社製 CCDリニアイメージセンサ S11155/S 用に開発された駆動回路です S11155/S11156-

Microsoft PowerPoint - Chap1 [Compatibility Mode]

ディジタル電子回路 設計演習課題

untitled

Microsoft PowerPoint - Lec pptx

PNopenseminar_2011_開発stack

学生 23 省メモリ指向一枚超解像 アーキテクチャとその FPGA 実装 北海道大学大学院情報科学研究科 大平貴徳 真田祐樹 築田聡史 五十嵐正樹 池辺将之 浅井哲也 本村真人 1

Microsoft Word - TC4011BP_BF_BFT_J_P8_060601_.doc

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

ソフトウェア基礎技術研修

Handsout3.ppt

DELPHINUS EQUULEUS 2019 NASA SLS FPGA ( ) DELPHINUS 2

プログラマブル論理デバイス

智美塾 ゆもつよメソッドのアーキテクチャ

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

科学技術振興調整費 中間成果報告書 若手任期付研究員支援 組込みアーキテクチャ協調型実時間 OS 研究期間 : 平成 13 年度 ~ 平成 15 年 6 月 北陸先端科学技術大学院大学田中清史

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

0630-j.ppt

Microsoft PowerPoint - kougi7.ppt

PowerPoint プレゼンテーション

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

PowerPoint Presentation

main.dvi

スイッチ ファブリック

ETCB Manual

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No02\201i\224z\225z\227p\201j.pptx)

スライド 1

エンジニアリング・サービスから見たMBD導入の成功・失敗

FPGAによる24時間時計回路

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

画像処理回路のASIC実装へ向けたHDL Coder適用事例

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

スライド 1

Microsoft Word - no02.doc

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

Design at a higher level

VLD Kazutoshi Kobayashi

Quartus II クイック・スタート・ガイド

Prog1_10th

Microsoft Word - N-TM307取扱説明書.doc

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

モータ HILS の概要 1 はじめに モータ HILS の需要 自動車の電子化及び 電気自動車やハイブリッド車の実用化に伴い モータの使用数が増大しています 従来行われていた駆動用モータ単体のシミュレーション レシプロエンジンとモータの駆動力分配制御シミュレーションの利用に加え パワーウインドやサ

Microsoft Word - TC74HCT245AP_AF_J_P8_060201_.doc

Transcription:

FPGA/HDLを活用したソフトウェア並列処理の構築 goyoki @ 並列プログラミングカンファレンス

自己紹介 goyoki(hatena/twitter) 千里霧中 http://d.hatena.ne.jp/goyoki/ 組込みエンジニア Doxygen 日本語メンテナ 主にテスト関連コミュニティで情報発信 yomite.swtest xunit Test Patterns 読書会等

概要 並列処理のための組込みアーキテクチャをソフトエンジニアを対象に紹介 組み込みでの並列処理の構築例 アーキテクチャの工夫で FPGA/HDL をソフトウェア的に扱う ソフトウェアと FPGA/HDL の協調により 並列処理の設計容易性を改善させる

目次 概要 組み込み並列処理と FPGA/HDL の関わり FPGA/HDL FPGA/HDL 概要 FPGA/HDL をソフトウェア的に扱うためのアーキテクチャ 並列設計 FPGA/HDL での並列処理設計 ソフトウェア -FPGA 協調処理 ( 通信処理編 ) 協調処理の設計プロセス

組み込み並列処理と FPGA/HDL の関わり

組込み並列処理の現状 組込み並列処理の需要 処理データの増大 画素数 FPS 通信料 ストレージ容量 インタフェースの複雑化 組込み並列処理のジレンマ 組み込みで要求されること リアルタイム性 ハードウェアのコストダウン

リアルタイム性 十分な実行時間の時間予測性 入力に対する即時反応 時間の粒度はデジタル回路信号レベル // 必ず 100ns for (i = 0; i < 100; i++){} // 必ず 100ns for (i = 0; i < 100; i++){}

ハードウェアのコストダウン ハードウェアコストが製品コストに直結 CPUパワーやメモリが一般的に貧弱 量産効果 配置面積 電源等の要因 スペックダウンが製品の強みに

組み込み並列処理のジレンマ 尐ないコア ( ロースペック ) で シングルタスク (RT 処理 ) シングルタスク + 割り込み RTOS 並行処理が複雑化すると設計が爆発 割り込みでリアルタイム性が損なわれる タイミングの重複でタスク漏れ FPGA/HDL への処理委譲で 並列処理の設計容易性を劇的に改善できることがある FPGA をソフトウェア的に扱えるアーキテクチャを構築 タスク分割で処理を FPGA に委譲

FPGA/HDL 概要

FPGA Field Programmable Gate Array 任意のロジック回路を構築できる LSI EDA/ 論理合成ツールにより HDL コードをデジタル回路として展開できる IP コアやペリフェラルで機能を提供 IC として提供される

HDL Hardware Description Language ハードウェア記述言語 Verilog HDL VHDL が主流 論理回路の設計やふるまいを記述するための開発言語 PLD 等の設計 実装 ASIC 等の設計 論理回路のシミュレーションやモデリング プログラミング言語とみなされる場合も

HDL

Verilog HDL コード module simple_ff (clk, nreset, d, q, enable); input clk, nreset, d, enable; output q; reg q_reg; assign q = q_reg; always @(posedge clk or negedge nreset) if (nreset == 1'b0) q_reg <= 0; else if (enable == 1'b0) q_reg <= q; else q_reg <= d; endmodule

HDL コードの特徴 コードがデジタル回路として動作 常時評価 並列動作 電気的遅延

Verilog HDL の記述例 wire A, B, C, D, E; assign A = B & C; assign D = A & E; B B C E A D C A E D

Verilog HDL の記述例 2 reg clk; always #100 clk <=~ clk; initial clk <= 0; 100unit clk

ソフトウェアとの違い HDL の特徴 ソフトウェアプログラミング言語 デフォルトで直列実行 特殊な構文で並列実行 HDL デフォルトで並列実行 特殊な構文で直列実行

Verilog HDL の基本文法 今回は触りとして基本的なものを紹介

基本型 データ型 代入文の扱い ネット型 (wire): 配線 レジスタ型 (reg): 値を保持するデータ型 代入文の扱い ネット型 (assign 文 ): 回路の接続 wire X, Y; assign X = Y;

データ型 代入文の扱い レジスタ型への代入 = : ブロッキング代入 順序を守って代入 <= : ノンブロッキング代入 並列的に代入 always #500 begin A <= B; C <= D; end always #300 begin A = B; C = D; end

基本表現 0 1 x z 数値表現 上記の連なった値 ( 4 b101x 4 d5 ) シミュレーション用にハイレイヤーなデータ型も持つ (Integer 型など ) 高位な数値表現は規約的に実現 小数 : 固定小数点を設定 負値 :2 の補数処理を導入

演算 C Pascal の多くの演算子を使用可 演算子 ( + - / * % ~ & ^ ) 論理演算 比較 (!= && == < <= ) シフト演算など ( >> << ) assign C = A + B; assign A = (B == 4'b0101)? D : E;

手続き型処理の記述 initial 文 : 指定ステートメントを一度だけ実行 always 文 : 指定ステートメントを繰り返し実行 イベントトリガを設定可能 initial 文はシミュレーション用 Initial begin end always #100 begin end

構造化 if 文 for 文 while 文使用可 多くはシミュレーション用途 プログラミング言語と見なされることも モジュール単位 module function task `include 構文で参照構造を形成 for (i = 0; i < 100; i = i + 1) begin... end

高級言語機能 ファイル操作 ($fopne $fread $fwrite ) 標準入出力 ($monitor $display ) 時間関連 ($time $stime ) 基本シミュレーション用途

3 つの特徴 並列実行 常時評価 電気的遅延 HDL まとめ 高級言語機能も持つマルチパラダイム言語 並列処理を容易に記述できる

FPGA/HDL をソフトウェア的に 扱うためのアーキテクチャ

一般的な設計 FPGAとプロセッサは個別のICとして扱う 物理配線を介して外部 IOで通信する FPGAはデジタル回路デバイスとして扱われる 物理配線 プロセッサ IC ( ソフトウェア ) FPGA IC (HDL) IC ピン IC ピン

プロセッサ /FPGA 統合ボード プロセッサ /FPGA 統合ボード ex) プロセッサとFPGAを高速バスで接続する ex) を柔軟な通信規格で接続する ex) プロセッサIOをFPGAでラッピングする FPGA IO のラッピング プロセッサ ( ソフトウェア ) ペリフェラル 高速なバス接続 物理配線 柔軟な通信仕様 (I2C/SPI 等 ) FPGA IC (FPGA) IP コア

問題 データ共有が外部 IO 物理配線で縛られる 上流工程で機能分割がFix 下流でのタスク分割 委譲が制限される FPGAは非ソフトなハードウェアとして扱われる 物理配線 プロセッサ IC ( ソフトウェア ) FPGA IC (HDL) IC ピン IC ピン

改善策 : ソフトプロセッサ ソフトプロセッサでソフトを駆動する FPGA 上に展開可能なプロセッサ コードで記述される ツールで柔軟にカスタマイズ 拡張可能 MicroBlaze Nios II 等 IO は設定で柔軟に変更可 プロセッサ ( ソフトウェア ) FPGA IC (FPGA)

改善策 : ソフトプロセッサ ソフトウェア -HDL の IF を柔軟に設定可 抽象化されたデジタルデータをAPIで共有 プロセッサ機能カスタマイズ化 接続設定カスタマイズ 拡張可 ライブラリの API のような扱いで HDL 側を操作 IO は設定で柔軟に変更可 プロセッサ ( ソフトウェア ) FPGA IC (FPGA)

アーキテクチャまとめ 通信 データ共有方法が H.W. に依存すると上流で機能分割を Fix しなければならない ソフトプロセッサにより HDL をソフトウェア的に扱えるようになる

FPGA/HDL での並列処理設計

HDL での並列処理の設計 並列処理設計の障害 常時評価 並列実行 電気的遅延 HDL では時間予測性の確保が重要 一般的なアプローチ クロック同期設計

A の処理 start B の処理 start Cの処理 start データ送信 クロック同期設計 高精度 高周波数の基準クロックを確保 基準クロックに合わせて信号伝達や演算を行う クロック同期設計の構成要素 クロック同期回路 ( クロック同期型 FF) タイミング解析 CK

クロック同期型 FF デジタル信号を保持する 保持信号はクロックに合わせて更新する D Q CK CK D Q

FF の HDL 記述 module simple_ff (clk, nreset, d, q, enable); input clk, nreset, d, enable; output q; reg q_reg; assign q = q_reg; always @(posedge clk or negedge nreset) if (nreset == 1'b0) q_reg <= 0; else if (enable == 1'b0) q_reg <= q; else q_reg <= d; endmodule

FF によるタイミング調整 回路を FF で囲む クロックの edge で FF の保持データ更新 遅延がクロック幅を超えない限り 値の更新タイミングが固定 十分な時間予測性が確保される CK CK in FF A 遅延を持つ回路 B FF out in A B out DATA DATA DATA DATA 遅延

FF によるモジュール化 FF を IO として回路を連結する クロック遅延の差は FF トリガ信号で調整 並列処理の同期は FF の数で調整 回路モジュール FF 回路モジュール FF 回路モジュール FF 回路モジュール FF FF FF

まとめ クロック同期型 FF によるタイミング調整 有効データの入出力をクロックエッジに限定 電気的遅延をクロック間で吸収する 十分な時間予測性が確保される モジュール間の同期が可能となる 並列処理設計はタイミング設計で実現 例外 : 外部デバイスの排他制御 非同期信号との連携等

タイミング解析 意図したタイミングで信号を処理できるか CK in A B out DATA DATA DATA DATA CK in A B out DATA DATA DATA DATA 遅延 遅延 CK in FF A 組み合わせ回路 B FF out

タイミングの遅延や誤差 一般的なタイミング誤差の原因 電気的誤差 外部デバイスの制御遅延 クロックの誤差 多相クロックの合成誤差 非同期信号 等 予測は困難 論理合成 配置配線のやり方で遅延が変化 電圧や温度でも変化 予測不能な非同期信号も存在

タイミング解析の手段 静的解析 パスベースの遅延評価 論理合成 配置配線の評価 動的解析 モデルベーステスト RTL シミュレーション ゲートレベルシミュレーション 実機検証 ロジックアナライザ セルフチェッキング

タイミング解析 設計の課題 定番の課題 多相クロック 非同期信号 外部デバイスの誤差 大規模回路のプローブ困難な内部信号 FPGA 設計は様 な課題を持つ タイミング設計 ゲート数 消費電力 ノイズ IP コア使用数 現在は FPGA の高集積化が進んでいる背景からタイミング設計が一番のネックになりつつある

FPGA/HDL での並列処理設計 のまとめ 大事なこと : クロック同期設計で時間予測性を確保する クロック同期型 FF タイミング解析 時間予測性を保障できれば 並列処理設計はクロック遅延ベースのタイミング設計で済む タスク分割 モジュールの追加で実現 モジュール間の遅延は FF で調整 データ分割 信号の幅を調整する 複数バスにするといった形で実現

ソフトウェア -FPGA 協調処理 ( 通信処理編 )

ソフトウェア /FPGA の協調処理 直列世界のソフトウェア 並列世界の HDL 協調により 組込みソフトウェア並列処理の設計容易性を劇的に改善できる場合がある 今回は通信処理のタスク分割 並列処理化の例を紹介

例題 : 通信仕様 AAA クロックにあわせてシリアル伝送 クロックは絶対に1KHz バイト単位で送受信 途切れることはない データ送信中はenable 信号を1に クロック data bit1 2 3 4 5 6 7 8 enable

ソフトウェアで開発する場合 IO ピンをファームウェアが直接制御 プロセッサ ( ソフトウェア ) IO ピン clk data enable clk data enable 送信 受信

void AAA_send(unsigned char send_data) { int i; clk_set(0); wait_us(100); enable_set(1); 送信部 for (i = 7; i >= 0; i--) { clk_set(1); data_set((send_data >> i) & 1); wait_us(500); clk_set(0); wait_us(500); } wait_us(100); enable_set(0); } wait_us(100);

受信部 unsigned char AAA_receive_isr(void) {//enable 信号割り込み unsigned char data = 0; int i; for (i = 7; i >= 0; i--) { while(clk_get() == 1); while(clk_get() == 0); ] data += (unsgined char)(get_data() << i); } return data; クロック data bit1 2 3 4 5 6 7 8 enable

問題 リアルタイム性の要求が厳しい クロック生成処理保護 1 コア 1 タスク & 割込み全ブロック 受信漏れ防止 受信は enable エッジ検出後即時に開始 設計上のリスク 長時間送受信を行う場合は? 送信中に受信データが来た場合は? 複雑なタイミング調整が要求される 設計 アーキテクチャが爆発 マルチコア化対応も非現実的 最大同時送信数数 最大同時受信数分 コアを増やす?

並列処理化 ソフトウェア処理をタスク分割し FPGA に委譲 コアを増やさず処理を並列化する

FPGA/HDL への処理の委譲 ( 送信 ) before after ソフトウェアソフトウェア FPGA 通常処理送信部通常処理送信部 送信要求 送信要求 クロック生成のため処理停止

FPGA/HDL への処理の委譲 ( 受信 ) before after ソフトウェア ソフトウェア FPGA 通常処理 受信部 通常処理 受信部 enable 割り込み 受信開始 enable エッジ クロック生成のため処理停止 受信終了 受信データ取得

モジュール接続 通信に FPGA モジュールを介する NiosII ( ソフトウェア ) data 8bit enable load data 8bit received AAA_send AAA_cat FPGA

送信部 (FPGA モジュール ) module AAA_send(clk, enable, nreset, load, send_data, out_data, out_clk, out_enable); input clk, enable, load, nreset; input [7:0] send_data; output out_data, out_clk, out_enable; reg [7:0] reg_data; reg [3:0] send_cnt; wire sending, sending_d1; wire enable_d1; simple_ff enable_ff(.clk(clk),.nreset(nreset),.d(enable),.q(enable_d1),.enable(1)); simple_ff sending_ff(.clk(clk),.nreset(nreset),.d(sending),.q(sending_d1),.enable(1)); assign sending = enable_d1 & ~load; assign out_data = (enable_d1)? reg_data[7] : 0; assign out_clk = clk;// 今回は簡略化 assign out_enable = (send_cnt == 4'h8)? 0 : enable_d1; ( 続く )

( 続き ) 送信部 (FPGA モジュール ) always @(posedge clk or negedge nreset) if (nreset == 0) begin send_cnt <= 4'h8; reg_data <= 0; end else if (load) begin reg_data <= send_data; send_cnt <= 0; end else if (send_cnt == 4'h8) begin // 何もしない end else if (sending) begin reg_data <= reg_data << 1; send_cnt = send_cnt + 4'b1; end endmodule

送信部 (FPGA モジュール )

送信部 ( ソフトウェア ) void AAA_send(unsigned char send_data) { enable_set(0); wait_us(100); data_set(send_data); wait_us(100); load_set(1); wait_us(100); load_set(0); wait_us(100); } enable_set(1); wait_us(100);

受信部 (FPGA) FPGA モジュール module AAA_cat(clk_AAA, nreset, enable, in_sig, out_data, received); input nreset, in_sig, enable, clk_aaa; output [7:0] out_data; output received; reg [3:0] receive_cnt; reg [7:0] receive_data; assign out_data = receive_data; assign received = (receive_cnt == 4'h8)? 1'b1 : 1'b0; always @(posedge enable) begin receive_cnt <= 0; receive_data <= 0; end ( 続く )

FPGA モジュール 受信部 (FPGA) ( 続き ) always @(posedge clk_aaa or negedge nreset) begin if (nreset == 0) begin receive_data <= 0; receive_cnt <= 0; end else if (receive_cnt == 4'd8) begin // 何もしない end else if (enable) begin receive_data <= {receive_data, in_sig}; receive_cnt <= receive_cnt + 1; end end endmodule

受信部 (FPGA)

受信部 ( ソフトウェア ) unsigned char AAA_get_isr(void) {//received 割り込み unsigned char data; data = data_read(); } return data;

改善点 改善点 ( 問題 ) シングルタスク 割り込み全ブロック 割り込みセーフに 非シングルタスクも化 ( 問題 ) 割り込み後即時受信処理に 1 バイト分まで保持可 拡張性も向上 送信処理時間の拡大 FF や RAM で送信データをバッファリング ソフトのアクセス数を削減 大量の受信データ バッファリング用の FF や RAM を用意 余裕を拡大 クリティカルな処理が並列処理化 並列処理の設計容易性が改善

協調処理の設計プロセス

ソフトウェア /FPGA 設計プロセス 1 仕様設計 2 機能設計 3 機能分割 4 実装 5 テスト 6 QA

並列処理設計で特に大事なプロセス 機能設計 機能分割 アーキテクチャ設計 アルゴリズム設計

アーキテクチャ設計 協調処理の統合設計を行う FPGA/ プロセッサの必要条件を明らかにする IP コア ゲート数 クロック周波数 アーキテクチャレベルのタイミング設計 ソフトウェア FPGA 間のタイミング設計 外部デバイスとのタイミング設計 data_trg 画像処理 Analysis_mod AAAデータ転送 NiosII F.W. 200clk 640*480*2clk 200clk

アーキテクチャ設計 アーキテクチャ プロトタイピング モデルや設計のシミュレータで検証 モデル駆動開発 モデルベーステスト システム設計言語によるシミュレーション SystemC SystemVerilog ソフトウェアやスクリプトでシステムの挙動を検証 Cベースによる実装 MATLAB 等スクリプトによる実装

アルゴリズム設計 理想アルゴリズムと精度制約を設計する FPGA への委譲によってアルゴリズム精度は一般的に低下 ex) 周波数フィルタ FIR フィルタ ex) 浮動小数点 固定小数点 ex)32bit 整数 8bit データ 上流設計でテストオラクルを確保 タスク分割 タスク委譲時はオラクルを使った動的解析を行う

動的解析 アルゴリズム設計 品質を検証するのに十分な入力パターンを用意 その入力パターンで出力がテストオラクルと精度制約内で一致するか検証 実機 or シミュレータ 出力 入力パターン テストオラクル 理想値 差は制約範囲内か?

まとめ

まとめ FPGA/HDL は並列処理と親和性が高い アーキテクチャの工夫で FPGA/HDL をソフトウェア的に扱えるようになる ソフトプロセッサ FPGA/HDL との協調により ソフトウェア並列処理の設計容易性が大きく改善することがある