PDF版

●アーキテクチャ設計の心構え

 FPGAのSoCはCPUコアを始めとして多くの機能を持っています.それらを利用するシステムは,高度なものが増えてきています.
 システムが高機能になるほど,その設計には計画性が必要になります.
 そういった場合,回路アーキテクチャは1発では決まらないため,設計時に上流と下流を行き来する場合が多いでしょう.
 そのような設計では,考えるのをやめて分かるところから作り始めるのもダメですし,考え過ぎて手を動かさないのもダメです.後で作り直しとなって,全面破綻となることは避けたいので,適切なバランスが必要です.
 大まかな検討から入り,徐々に仕様を精密化させていくために,たたき台のアーキテクチャを作り,その性能を評価します.
 モジュールレベルでも,要求性能を達成できるかどうかを実装開始前に検討し,計画的に作るため,処理に必要なクロック数やメモリ量を把握しておきます.
 実は,アーキテクチャ設計は,当たり前な作業をきちんとやることです.

●画像を例にアーキテクチャ設計を解説

 本書では,評価手順とアーキテクチャ変更の具体的な方法を解説します.
 画像処理を例題として使い,システム全体のアーキテクチャを検討します.
 モジュールごとに要求を定義し,モジュール単位で評価します.次にモジュールを結合し,システムとして評価します.要求を達成できない場合は,モジュールの設計にフィードバックします.
 ディジタル・カメラなどの画像処理を含むアプリケーションでは,次のようなストリーミング処理を行います.
・画像のスケーリング
・RGB-HSV変換
・肌色領域抽出
・平均明度計算
・RGB-HSV変換
・明度変更
・HSV-RGB変換
 システム全体での要求をもとに,各モジュールの遅延量やスループットといった要求を定義します.一連の処理のボトルネックを解消するため,モジュール間で受け渡すデータの形式やバッファの置き方も検討します.
 これらの設計手順は,上位から下位へ向かう一方通行ではありません.モジュールの設計結果によって必要なハードウェアの要件も変わる場合があり,製品の製造コストにも影響を与えます.従って,最終的に作る製品の仕様にもフィードバックされます.
 実際の製品開発では製品企画~モジュール設計までの工程をまたいで落としどころを決めます.見通しが立たない場合は,その時点で予測できる仕様で進めますが,うまく行かない場合は勇気をもって上流に戻り,仕様を変更します.しかし,あまりにも変更が多いと開発期間や開発コストに負担がかかり過ぎるため,できる限り効率よくシステムのアーキテクチャを確定させたいでしょう.
 本書では,前半で画像処理を例として挙げながら,アーキテクチャ設計の概要を解説します.後半ではVerilogによる実装例を紹介します.

●目次

第1章 重要さが増している回路アーキテクチャ設計

 アーキテクチャ設計とは

 アーキテクチャ設計Q&A

第2章 設計例題の概要と高位検証環境

 設計例題はシンプルな画像処理回路

 高位検証がなぜ必要なのか

 現在の高位検証手法とその制限

 MATLABによるアルゴリズム高位検証の例

 C言語によるアルゴリズム高位検証の例

第3章 アーキテクチャ設計で用いる部品とコスト感覚

 なぜハードウェアのコスト感覚が必要なのか

 回路内部で使われる主要部品

 回路デバイスの種類と性能,コスト

 回路内部のプロセッサの役割

 専用回路(IPコア)の役割

 いろいろな補助部品群の役割


第4章 アーキテクチャ設計のあらまし

 回路化をうまく進めるための経験的コツ

 IP設計でもLSI全体に目を向ける

 処理を回路として並べるのが第一歩

 たたき台を評価した後の最適化

 回路を並べずに処理を組む別アプローチ

 つないだ回路を動かすための検討項目

第5章 最初のアーキテクチャ案の構成

 高位検証したコードからブロック図を起こす

 ブロック中を流れるデータ量の初期評価

 処理速度の初期評価

 回路規模の初期評価

 初期評価結果のまとめ

第6章 データの流れに着目したメモリ配置の最適化

 回路中のメモリ配置の見直し

 処理開始のタイミングの調整バッファの配置

 メモリ量とデータの流し方の見直し

 全体動作制御についての再検討

 回路中のメモリの役割のまとめ

第7章 並列化による処理速度と回路規模の最適化

 回路部品を休ませずフル活用する

 レイテンシとスループットを区別する

 代表的な並列化法とコスト・バランス

 並列化が難しいケースと対応のヒント

 より良い並列化に使える最適化法

 
第8章 全体動作制御と部品間のデータ伝送の検討

 全体動作制御の基本パターン

 動作制御の実際的な構成スタイル

 部品間データ伝送におけるマスタとスレーブ

 全体性能を考えた部品間データ伝送プロトコル設計

第9章 各部品の内部構成の検討とRTL設計

 部品内部回路の基本構成と設計手順

 データ送受信インターフェースのRTL設計

 データ演算部のRTL設計

 部品間バッファのRTL設計

 現実に動く回路を作るために欠かせない知識

 例題の画像処理回路のRTL記述

第10章 データ演算処理の設計の最適化

 処理全体を見渡して演算アルゴリズムを選択する

 固定小数点演算と精度解析

 浮動小数点演算の利用

 誤り検出・訂正や暗号で使われる有限体演算

第11章 CPUやパソコンとのインターフェースの初歩

 オンチップCPUとのインターフェース

 回路制御用の軽量CPUの製作事例

 FPGAとパソコン間のインターフェース

コメントを残す