DXTデコーダ作成検討

2010/11/23

MTM 会場で動画のフォーマットについて質問された方が多かったのですが、
OLED 用のデータを流用した 96×64 RGB565 の生データを利用していました。

SD カードからの読み出し速度の都合上、生データのままでは
解像度を上げられませんので、MTM 会場でも宣言していた
DXT1 のデコーダを作りたいと思います。

デコーダの性能的には QVGA/30fps がひとつの指標で、
その場合のブロック数は ( 320 * 240 / ( 4 * 4 ) * 30 ) = 138000 個 / 秒、
80MHz 動作の場合、デコードを約 580 クロックで行う必要があります。

1コアでは厳しいですが、2コアで半分ずつデコードすれば間に合いそうですね。


MTM06 二日目終了

2010/11/21

お疲れさまでした!

二日目は口が慣れてきた?こともあり、昨日よりも多くの方に
声をかけてデモンストレーションさせていただきました。
濃いネタを日常会話的に交わせてしまうMTMは、すごいイベントですね。

フライヤーは二日間で180枚配布しました。
使用したPDFをこちらに置いておきます。
mtm06_paper.pdf (227k)

見た目が地味なので一瞬しか起動しませんでしたが、
ヌンチャクを振っての音生成や、6chのシーケンサーなどもありました。
これらも追って公開していきたいと思います。


MTM06 一日目終了

2010/11/21

出展者の皆様、おつかれさまでした。
ご来場いただいた皆様、ありがとうございました。

Propeller の実機を初めて見たという方、実際に使ってみようと思っていただいた方、
単純にゲームを楽しんでくれた少年少女など、自分が思っていたよりも多くの方に
興味を持っていただき、パンフレットも多数配布できました。

皆さん購入方法や価格を聞かれていたので、ユーザーが増える予感がしますよ!

PIC や AVR では作るのが大変な ”並列処理” や “安定したタイミングの生成” が
得意なマイコンですので、Propeller が一般的なホビーユースの選択肢に入る日を
夢見つつ、明日も頑張りたいと思います。


MTM06参加告知

2010/10/05

2010/11/20~21 東京工業大学大岡山キャンパスにて開催される、
「Make: Tokyo Meeting 06」 に出展する運びとなりました。

基本的には、今まで作ったものの入れ替え展示になると思います。
展示が二日あるため、期間中に何か作ってみるかもしれません。
インスピレーションを刺激される展示がいくつもありますので、
都合のつく方はお越し下さいませ。


QVGA 動画再生成功

2010/10/04

OLEDで実験した時のコンバータをファイルの解像度に対応できるようにして、
QVGA の動画を変換してみました。

SD カードからの読み出しが間に合わないため、元の動画が白黒であることを利用して
2bpp インデックスカラーに減色しています(インデックスカラーの解決はドライバ側)。
QVGA 30fps の場合、生データでは 39Mbps、2bpp にすると 4.4Mbps です。

転送する側もパレットを毎回読みに行くと間に合わず、ついにプログラムの
自己書き換えに手を出してしまいました…。コアのローカルメモリ内に
テーブルを作って、何とか 30fps で動くようにできました。

ただ、現在テストしている動画のサイズがフルではなく 16:9 なので、
QVGA 全面を更新した場合は性能が不足すると思います。
(QVGA 30fps の場合、1ピクセル当たり34サイクル以内で
送る必要がありますが、現在のドライバはそこまで速くありません)

動画ばかりやっていてもしょうがないですし、
次はタッチパネルを使ってみたいと思います。


TFTドライバのアセンブラ化

2010/09/28

初期化・通信部分だけ変換しました。

単色リフレッシュは50Hz程度?メモリーカードからの画像表示は
5コマ/秒くらいです。これはカードの読み出し側が律速になっているので、
解像度を落とした上で、何らかの圧縮を行わないと30Hzは出ません。

色空間変換(おそらくYUV420)と、各要素に対してDXT的な圧縮を
組み合わせると良いかな?と思っています。
デコードにパワーが要るのは、コア数に任せて力技で…。

マンデルブロー集合をマルチコアで演算・描画するテスト(出力はTFTドライバ)も
作りましたので、少し整理してからアップロードします。


TFTモジュール動作確認

2010/09/26

ピン数の多い ProtoBoard を使って、無改造状態での表示を確認しました。
16bit パラレルでの接続のため、信号線に20ピン使っています。ぜいたく!

Spin で作っているためリフレッシュに2秒くらい掛かっていますが、
アセンブリに変換すれば、秒10回程度は更新できると思います。


グラデーション。


ワイヤージャングル。
いくつかモジュール側に線を乗せて、外に出る線の数は減らす予定です。


SD カードに置いたRGB565のDDSファイルを表示してみました。
LEDバックライトの影響か、ちょっと青味が強いですね。発色は悪くありません。


TFTモジュールをDemoBoardで使う

2010/09/20

先程のTFTモジュールですが、ジャンパを切り替えて 8bit モードにすることで、
線の数は何とかできそうです。(データ以外の信号は PS/2 ポートに繋ぎます)
ただし、やはり線の数が足りないため、タッチパネルは使えません…。

※シフトレジスタを使えば何とでもなってしまうので、後日試してみようと思います。
 ILI9325 の機能を使えないのは勿体無いですが、ないものはしょうがないですね。


TFTモジュール購入

2010/09/20

2.8インチTFT液晶
http://www.aitendo.co.jp/product/2121

こちらのボードを買いました。
2.8インチ 320×240、タッチパネル付き、3.3V動作のTFT液晶モジュールです。
制御チップの ILI9325 には SPI モードがあり、VRAM も搭載されているので
以前の OLED と同じ使い方が…と、思ったのですが、
モジュールから SPI 用の信号線が出ていませんでした!
なので、パラレルで使うしかなさそうです。
残念ながら、ピン数の少ない DemoBoard には接続できません。

今回の液晶はピクセル数が多いため、Propeller 側に状態を保持しようとすると
2 ビットカラーになってしまいます。表示色数は多いほうが良いので、
フレームバッファが不要なタイル+スプライトのドライバを作ろうと思います。
タッチパネルがあるので、触って楽しめるものにしたいですね。

マンデルブローやレイトレースなどの計算画像や、SDカードからの
ストリーミングであればバッファは(ほぼ)不要なので、こちらも
単純に綺麗な絵を出す方向で実験してみたいと思います。

OLED も値下がりしていたので、1枚追加購入しました。
最近流行の立体視はどうでしょうね?

さて、DemoBoard では使えないことがわかってしまいましたが、
ちょうど Propeller 自体も欲しかったので、ProtoBoard を注文予定です。

USB-シリアル変換装置は、USB-TTL(3.3V)変換ケーブル が良さそうだったのですが、
リセットが出ていません。
改造は面倒なので、Arduino 系の FTDI Basic Breakout で運用予定です。

(追記)DigiKey には USB 付き ProtoBoard がありました。


PropLauncher 作成

2010/07/14

作ったものが増えてきて、PCに繋いでプログラムを入れ替えるのが
面倒になってきたため、SDカードに書き込んだコンパイル済みバイナリを
直接起動するランチャーを作りました。

これをEEPROMに焼いておくことで、スタンドアロン状態でも
複数のプログラムを切り替えて実行することができるようになります。

コンパイル済みバイナリの出力方法は、
Propeller Tool では F8 を押して出たウィンドウの「Save Binary File」ボタン、
BST では Compile メニューの 「Compile and save binary」です。
SDカードには、出力されたファイルの拡張子を “.bin” に変更してコピーしてください。

画面はテレビに出力され、ランチャーの操作はマウスで行います。
1画面に30ファイルまで表示され、1ページにおさまらない場合は
ホイールの上下でページを切り替えます。
選択したプログラムの起動は左クリックです。

ダウンロード (要SDカード接続&ピン設定)


フォロー

Get every new post delivered to your Inbox.