FC2カウンター FPGAの部屋 2011年11月02日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

CyberWorkBenchのセミナに行ってきた

昨日、田町駅の近くの森永プラザビルで行われたCyberWorkBenchのセミナに参加してきました。(何か勘違い、間違いがありましたら、ご指摘ください)

FPGAで性能を追求すると、動作周波数とデータが出てくるまでのクロック・レイテンシの最適化にいつも悩みます。つまり、動作周波数を可能なかぎり速くしたい、しかし、データが出てくるまでのクロック・レイテンシは可能なかぎり下げたいという要求仕様があります。これはいつでも同じだと思います。

前に作ったネットワークの回路では、この要求がありました。ぎりぎりFF間に入りそうなロジックを詰め込んで、論理合成し、インプリメントする。すると、”しまった。FF間のロジックが多すぎてクリティカル・パスの遅延が動作周波数の周期を満足できない!”パイプライン段数を増やして作りなおしだ。。。というのが複数回発生して、大変な状況になってしまいました。一応まとまったから良いものの、かなり完成が遅くなってしまったことがあります。
それに、FPGAがどう論理合成されてインプリメントするか、概略しかわからないというジレンマもありました。つまり、FF間のロジックが完全には予測はできませんでした。これが、FF間のロジックの見積もりを甘くしていました。

その時から、パイプライン段数を簡単に可変出来て、試せたらものすごく良いのにと思っていました。
C言語ベースの合成環境は、うまく行けば、その苦労を解消してくれるはずです。Cソースから、いろいろなパイプライン段数や、回路方式を出力できて、それを試すことが出来ます。複数のパソコンとツールのライセンスがあれば、全部同時に論理合成、インプリメントすることが出来ます。という訳で、C言語ベース(Javaベースでも何ベースでも)の高位合成環境には期待しています。

前フリが長くなりましたが、印象に残ったところを書きます。(間違いや勘違いがある可能性があります。あくまで自分の感じた印象を書きます)

1.モデルの統一
アルゴリズムのCでの検証は、floatやintの変数を使って行います。それからハードウェアに落とす前に浮動小数点演算を固定小数点演算に落とします。その時にビット精度(途中も含めて)を決めるのですが、どのくらいの精度にするか悩むところです。オーバーフローを防ぐため飽和演算処理を行ったり、アンダーフローを丸めたりする処理が必要です。今までは、アルゴリズム検証用のCモデルとハードウェア精度のCモデルを別々に書いて、効果を比較していましたが、CyberWorkBenchにすると、ビット幅を定義できるそうなので、ifdefで分けて1つのファイルに書けるそうです。これは便利だと思いました。

2.ハードウェアの使用リソースの変更
パイプラインのレジスタの入れる位置を調節してくれる機能を想像していたのですが、最初の説明では、FSMと計算リソースを使用して、指定された計算リソースで回路を生成するようなイメージでした。後でパイプラインの段数も指定できるというような説明があったと思います。どっちでも出来るのでしょう?
レイテンシや回路規模を簡単に変更できると、前に書いたように、とても便利だと思います。

3.サイクル精度シミュレータ
サイクル精度シミュレータは便利だと思いました。RTLも合わせて、サイクル精度でシミュレーション出来るようです。ModelSimよりかなり速くシミュレーション出来ます。私も画像関係のシミュレーションには、1フレームとてもシミュレーションできないほど時間かかってましたので、魅力的です。ただ、何値の信号をシミュレーションしているかを聞いてくるのを忘れました。後、SecureIPはどうなのか?というのも聞いてくれば良かったです。

4.Cソースコードデバック
Cソースコードデバックでは、回路になって並列化されるので、複数行が選択されていました。これも便利そうです。

CyberWorkBenchは、とても便利なツールだと思いました。使い所は新たなアルゴリズムを生成する部分になると思います。それ以外は、どうしても検証済みのIPを使いたいところだと思います。それなので、出来れば、AXIバス・インターフェースを自動生成できて、EDKやQsysに簡単に接続できるようにウィザードなどを整備して頂ければ、より一層簡単に使えるものと、私は思います。

(なお、問題がある内容、表現がありましたら、お知らせ下さい。)

  1. 2011年11月02日 19:35 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

ステレオカメラ基板作成7(OV9655基板2)

aitendoのOV9655モジュール用のステレオカメラ基板が出来上がったので、Fusion PCBに発注しました。
いつも注文するときはドキドキします。

最終的な基板を下に示します。
StereoCamBoard_27_111102.png

ほとんどOV7670のステレオカメラ基板と同じですが、OV9655モジュールのピン配置が違うので、FPGAのピン番号が違っています。基板にFPGAのピン番号を合わせることにします。途中で1ピン空いていますが、XCLKを出力するFPGAのペアピンをわざと空きにしてあります。
その理由は、XCLKだけ他の信号のクロックと別系統になっています。FPGAのペアのピンのIOB内のクロックの配線はマルチされているので、XCLKを出力しているFPGAのペアのピンはIOBに入力のFFを配置することができません。それでわざと空きにしています。
  1. 2011年11月02日 05:29 |
  2. プリント基板作成
  3. | トラックバック:0
  4. | コメント:0