« 除算の検討(回復法と非回復法) | トップページ | 続・テクスチャキャッシュ »

2016年11月28日 (月)

バイリニア補間するユニット

  バイリニア補間するユニットを作って、以前作成したテクスチャキャッシュと統合して2Dサンプラーユニットを作って見ました。
  各バイリニアのユニットは、4サイクルかけて1ピクセル処理できるようにしており、それを8並列で結合して合成して見ました。
  xc7z010-1clg400 の ISE14.7での合成で下記のとおりです。
  (Vivadoだと合成段階では周波数出してくれないので)

  Number of Slice Registers    : 8,371 (23%)
  Number of Slice LUTs         : 5,343 (30%)
  Number of Block RAM/FIFO : 36 (60%)
  Number of DSP48E1s          : 33(41%)

  Maximum Frequency: 404.040MHz

  キャッシュミスしなければ、4並列で1サイクル1ピクセルなわけですが、実際には8並列でも、キャッシュミス区間は埋めきれない模様です。
  規模的には16並列とかでも収まりはしそうですが、そこまでしなくてもVGA程度ならリアルタイムでいけそうな感じです。とりあえずシミュレーション上では、0度,45度,90度の回転で、SDRAMアクセスは殆どのアドレスで二度読みは起こらなかったので、タグアドレスの割り振りはまあまあうまく機能しているようです。

  下記は45度回転させながらのシミュレーション出力です。ニアレストネイバーのときよりもだいぶギザギザがなくなりました。

Bilinear

 

   上は、テストベンチとして書いた、アフィン変換のアドレス生成によるものですが、本来は2Dサンプラーですので、ピクセルシェーダ的なものを上に載せたいわけです。

  さて、なかなかシミュレータの世界から出れていないのですが、実機で動く日はいつになるやら。
  固定パイプラインシェーダーでよいので、何かしら動かしたいなぁ。

« 除算の検討(回復法と非回復法) | トップページ | 続・テクスチャキャッシュ »

FPGA」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/560384/64555530

この記事へのトラックバック一覧です: バイリニア補間するユニット:

« 除算の検討(回復法と非回復法) | トップページ | 続・テクスチャキャッシュ »