バイリニア補間するユニット
バイリニア補間するユニットを作って、以前作成したテクスチャキャッシュと統合して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度回転させながらのシミュレーション出力です。ニアレストネイバーのときよりもだいぶギザギザがなくなりました。
上は、テストベンチとして書いた、アフィン変換のアドレス生成によるものですが、本来は2Dサンプラーですので、ピクセルシェーダ的なものを上に載せたいわけです。
さて、なかなかシミュレータの世界から出れていないのですが、実機で動く日はいつになるやら。
固定パイプラインシェーダーでよいので、何かしら動かしたいなぁ。
« 除算の検討(回復法と非回復法) | トップページ | 続・テクスチャキャッシュ »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
この記事へのコメントは終了しました。
コメント