ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

今日FPGAで学んだこと(10)CからVerilogなどへ書き換えるための手順

2013-10-11 18:34:16 | Weblog
CからVerilogなどのFPGA用HDLに書き換えるための手順について学んできたのでメモメモ

要するに、Cでも、状態遷移に持っていけば、FPGAのステートマシンで記述できる。
なんだけど、Cには、独特な部分があって(ポインタとか)それを、きれいきれい
にしてからでないと・・・とかいうお話。




■CからVerilogなどへ書き換えるための手順

(1)アルゴリズムリファインメント
     →ハードウェア向きへの変更

  ・ポインタ→インデックスへ
     領域がどこまで増えるか
     伝搬性
     構造体のポインタ
     キャスト
     アドレス変換

  ・配列→メモリにマッピング
      (配列へのアクセスを減らす)

  ・関数→最適化
  ・演算子→最適化(式の変換)
  ・500ステップぐらいにわける
  ・並列性、順次性のみきわめ
    ビヘイビアパラレル、ビヘイビアパイプライン
      →シーケンスグラフ
  ・固定小数点(後述)

(2)アーキテクチャリファインメント

  回路サイズ、周波数、消費サイクル、消費電力などで決まる

  固定したアーキテクチャにすると、楽

  ・外部インターフェースは決まっている
    →一般性をもたせる
    →方法:ハンドシェーク

  ・内部
    ステートマシン、レジスタ、パイプライン、ブロックメモリ
    マクロ

  (2-1)システムレベルの関数を考える
     依存性を考慮する

  (2-2)それを細分化し、
      ファンクション内のブロックレベルのシーケンス
      ★プロセス化、モジュール化

  (2-3)トレードオフをどうするか考える
     周波数と速度
     周波数とサイクル
    →これを考えやすくするため、コードサイズを500行ぐらいにわけている
      ★メモリアーキテクチャの検討

  (2-4)ブロック内のスケジューリング
      ★性能解析情報とプロセス間スケジューリング

  (2-5)ステートマシンの作成

(3)RTLの作成
   ・時間に関係ないアルゴリズム

   ・時間軸を入れる

   ・バスサイクル→サイクルを考慮し

   ・RTLへ
     状態遷移図→ステートマシンへ

(4)RTLの検証




■固定小数点化

・対象とする入出力データ確認

・テストベンチ作成

・対象とするデータは・・・
   ・ダイナミックレンジの確認
   ・最大値と最小値の確認

・整数部と小数部の決定
   →最大値、最小値がわかれば、整数の桁数はわかる
    ダイナミックレンジと整数の桁数から小数の桁数は
    決定する

・書き換え

※ポイント
 掛算、割算、三角関数→有効桁数の問題が出るのは・・
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« IE7で複数フォントが使えなか... | トップ | グーグル、独自のスマートウ... »
最新の画像もっと見る

Weblog」カテゴリの最新記事