« 脳とFPGAと | トップページ | ARメガネにおけるハイフレームレートの必要性 »

2018年3月18日 (日)

高速LED駆動用基板作成(まとめ)

OLED制御用にFusion PCBにて、基板を作成して動き始めたのでまとめておきます。

 

過去記事からの続きです。
電脳メガネ開発計画
OLED(有機EL)高速駆動
視覚のハッキングについての考察
低遅延リアルタイムGPUでZテスト
RealTime-GPU テクスチャマップ編
RealTime-GPU のアーキテクチャ
リアルタイムコンピューティングについて再考察

 

 

 

今回、なんと基板製造だけだと$4.41で10枚作れてしまいました。1種類だけの製造で発送してもらったので送料の方が高くついていたりします(笑)。

 

 

 

 

ちなみに KiCADで設計していますが、こちらも久々に使いました。バージョンが上がってどんどん進化していますね。すばらしいです。

 

 

 

 

Photo

 

OLEDはコントローラにSSD1331を搭載した96x64サイズのものをHiLetgoから\1,150で買って分解したものです。
階調テーブルに小さな値を設定することで駆動のフレームレートが変えられます。

 

OLEDはコントローラにSSD1331を搭載した96x64サイズのものをHiLetgoから\1,150で買って分解したものです。
階調テーブルに小さな値を設定することで駆動のフレームレートが変えられます。

 

データシートではフレームレートは

 

FFRM = FOSC×1/(D×K×N)となっており、

 

FOSC は 内部オシレータ(誤差大)で、800~980kHz(typ.890kHz)
D = 1
K = 4+7+GS63
N = 64

 

となるようで、今回はGS63に5を設定しています(4だとかなり暗くなりました)。

 

ですのでこの時のフレームレートは、781.25~957.0Hz (typ. 869.1Hz) となります。
デフォルトではGS63は125で、91.9Hz~112.5Hz(typ.102.3Hz)なので、かなり設計者の意図しない設定値にしていいると思います。実際あまり小さい値を入れるとかなり発熱したりしたので、限界に近いところでのセッティングと思います。

 

本当は外からクロックを入れたいのですが、フレキに端子が出ていないので如何ともしがたいですが、まあほぼ1000fps級とは言えると思います。

 

次にデータの書き込みですが、SPIでは追いつかないので、8080モードなどのパラレル書き込みを考えます。
データシートの最小書き込み間隔が、130nsですので、1画素8bit(256色)モードで書き込んで、96x64の全面書き換えが最大で 1252fps で行える計算になります。

 

次に今回作成した基板の回路ですが、ZyboのHigh-Speed PMODに繋ぐように作成しております。

 

PMODのI/Oは8本しかありませんので、外部にSERDESチップを使って、パラレル書き込みを行うことを考えます。

 

今回は安く仕上げたかったので、SERDESにはFIN1216というチップを選定しています(Digikeyで \313 でした)。

 

しかしながら、ZyboのI/Oは、3.3V固定なので、LVDS_25 が利用できません。そもそも3.3Vだと、LVCMOS33とTMDS_33しか選択肢が無いので迷わずTMDS_33を使うことを考えました。

 

実際、XILINXの評価ボードを調べていると、MGTにHDMI_RXを直結している回路があるようです。

 

ただし、HDMIはDCバランスが取られているので、コンデンサによるカップリングが出来ますが、今回はそういうことは出来ません。

 

実は深く考えずに基板発注して、後からリワークで何とかしたのですが、最終的に100Ωでテブナン終端にすればとりあえず受けられました。

 

最初は単に、T.M.D.S.として 50Ωで終端してみたのですが VICM が3.3VだとFIN1216の定格外でして、ちょっとは期待していたのですが残念ながらうまく動いてくれませんでした。

 

以下、一応、現在動いているテブナン終端の回路でのLT-Spiceです。

 

100ohm

 

シミュレーションするまでも無く、出力側が理想的な電流源なら反射は抑制できますね。

 

で、これは今度はFPGA側の VOCMを満たしてませんが、動いているのでOKとします(笑)。

 

ちゃんとやりたい場合は、5Vなどの少し電圧の高い電源を作り下記のように回路組めば多分両方の定格満たせると思います。

 

Photo_2

 

 なお、基板のレイアウト設計の方は、2層基板ということもあり、超短い結線だったので、インピーダンスコントロールとかはしてません(最近のKiCADでは差動ペア配線が出来るらしいですが)。

 

 短く繋ぐ以上のノイズ対策は無いです。

 

実際、ちゃんとした回路を作る場合でも、ICの手前でどうしてもコントロールできないスタブ部分は出来ますので、同レベルの長さと思っています(そもそもPMODはピンヘッダだし)。

 

 結果として、Zyboの125MHzのクロックから、62.5MHzと、7逓倍の437.5MHzを作成して送信したところ、見事にデータが通りました。
 データ線が3本あるので 1.3125Gbps の帯域で、21bitパラレルが制御できます。

 

 このシステムだと、8080バスでのデータ書き込みが 62.5MHzの9サイクル(144ns)で行えますので、1162fpsの書き込み帯域が確保できる計算になります。

 

 今後、これに前に作ったGPUを繋いで、1000fps描画を試みる予定です。

 

 さしあたって、ZyboのARMコアから完全にソフトウェアのみで書き換えを行ってみました。
 ソフトウェアのみでも、1000枚を2~3秒で書き込めたのでまあまあフレームレート出ているようです。
 以下、そのときの動画です。

 

 

 



 まだまだRTL開発もあるし、そもそもカメラ側なんかまったく未着手なのでまだまだ先は非常に長いですが、技術的にリスキーな部分はいろいろとアタリが付いてきたので、しばらく楽しめそうです。

 

 現在、GPU側は200MHzで描画できているので、帯域的には 96x64のOLEDなら32枚ぐらい並べても、1000fps出る計算です。片目に4x4=16枚づつぐらい並べたらそこそこの視野とは思うのですが、機構(メカ)と光学と予算が課題ですね。

 

追記(2020/01/12)

rev2になっていますが、改造も含めてこのときの回路図の最新版を置いておきますね。

ダウンロード - pmod_oled_rev2.pdf

 

 

« 脳とFPGAと | トップページ | ARメガネにおけるハイフレームレートの必要性 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 高速LED駆動用基板作成(まとめ):

« 脳とFPGAと | トップページ | ARメガネにおけるハイフレームレートの必要性 »