今回はFPGAボードUltra96-V2のカメラ基板兼Pmod拡張基板を作ります。
背景
Ultra96-V2はMPSoCを搭載した便利なボードです。ただし、Zyboと違ってPmod等が出ておらず拡張性に乏しいのが問題です。自分の使い方ではRaspiカメラのようなMIPI CSI-2を接続したいと考えていましたが、残念ながらIOが出ておりません。今回はCSI-2と余っているIOを出す基板を設計します。
なお、この基板はRyuzi氏のultra96_multi_ioを参考にして開発されています。ここでお礼を申し上げます。
目標
Ultra96はHS HeaderとLS Headerからそれぞれ差動信号系とそれ以外のGPIOが出ています。MIPIはHSから出ているようです。
以下のような性能を持ったボードを設計することを目指します。
- CSI-2 4Lane
- CSI-2 2Lane
- 電源ボタン・リセットボタンが出てること
- PL系LED 4ch
- PL系ボタン2ch
- PS系LED 2ch
- PS系ボタン2ch
- MIO SPI2ch
- それ以外をPmodとして外部に出すこと
裏目標として、LCSCを使って見るというのがあります。LCSCは中国版Digikey的なもので、パーツが安く、自分がよく使っている基板メーカーのJLCPCBも対応しています。なんだかんだいって使ったことがなかったので今回これをベースにパーツ選定を行います。
これについての記事を別で書いてるので見てみてください。
設計
Eagleを使って設計します。本当はKicadを勉強したいと思っていたのですが、気づいたら手癖でEagleで作り始めてしまっていました。次は絶対にKicadでやります。(Eagleは使いやすくはないと思いますので今からやるなら、理由がないならKicadが良いと思います。)
電源
電源はLSから5Vと1.8Vが出ています。3.3Vはないので適当なLDOで作ります。多分ADP3338とか使ったほうがいいんですが、超高いので今回は[任意の3文字]1117を使ってみます。本当は過渡応答性能が高いADP3338とかLT1117とかが良いです。(2回目)ノイズ少ないし。壊れないし。いいですよ。高いけど。
[任意の3文字]1117が多すぎる
— fumi (@fumi_maker) February 13, 2023
LSヘッダ
LSヘッダから出てるPLのピンはBank26で1.8Vです。一方でRaspiカメラなどでは3.3VのGPIOとI2Cで通信しています。なので1.8V→3.3Vのレベル変換が必要ということになります。また、Pmodで出すときも1.8Vより3.3Vの方が扱いやすいため3.3Vに変換します。
HSヘッダ
HSヘッダから出ている高速信号はBank65は1.2Vです。もしこれを使いたい場合、例えばDSIを普通のIOとして使いたい場合などはこれもまたレベル変換をする必要があります。しかし、Ultra96のHSヘッダ、LSヘッダからは1.2Vが出力されていません。なのでやるとしたら自分で1.2Vを作って変換してやる必要がありそうです。
今回は面倒だったので、DSIを内蔵プルアップで入力2ch、LED用で4chとしています。LED駆動用のFETは1.2Vでもスイッチングできるものを選定しています。
レベル変換IC
レベル変換ICとしてTexas Instruments TXS0108EPWRを選定しました。1.2Vから対応しており、オープンドレイン、プッシュプルに対応しています。今回はI2Cの変換でも使うのでこれにしました。全部これに揃えています。
本当は小さいパッケージのにしたかったんですが、値段が6倍くらいしたので大きいもので妥協しました。
HSコネクタ
これを使っています。これのことなんて言うのかわからないんですが、メザニンコネクタでいいんですかね?このコネクタは多分互換品なのですが、データシートを見る限り問題なさそうなのでこれを使います。なお、LSピンヘッダのデータシートを読み違えて高さをやらかしました(結論)。もし、自分のように設計するならBA41-60CT-1-NHBを使ってください。自分はBA41-60BT-1-NHBを使って2mm高さが足りませんでした。
BA41-60CT-1-NHB | STWXE | Mezzanine Connectors (Board to Board) | JLCPCB
LSコネクタ
表面実装型のL字2列2mmピンヘッダです。結構キワモノで、探しても全然ありませんでした。なんとかLCSCで見つけてこれを使っています。
LED関連
1.2Vでドライブしているところもあるので1.2Vで駆動できるFET **onsemi NTZD3154NT1Gを選定しています。
SW関連
普通のPSWです。LCSCで激安だったので200個くらい買っておきました。アルプス電気のちゃんとしたものだと思われるので、結構お得です。(使ってみた感じ、ちゃんとしているように見えますが…)
あと、DIPSWもつけられるようになっていますが、買うの忘れてしまったので実装されていません。
注:DSIピンについては内蔵プルアップ前提となっています。
開発
Eagleの特徴はFusionに内蔵されていることでシームレスに3Dモデルを扱えることですね。(なお、ライブラリにはちゃんと3Dデータを登録してないせいでまともに使えていない)
こちらです。
回路図
https://github.com/fumimaker/Ultra96-V2_MIPI_Board
回路図・デザインはこちらで公開しています。
MIPI CSI-2が2つあり、CSI0は4Laneで、CSI1は2Laneとなっています。一般的なRaspi Cameraを使いたい場合はCSI1を使うことになります。CSI0は今後、4Laneのカメラで俺tueeeeeeeeしたい場合に作っておきました。世の中、みんなRaspiカメラ標準になってしまって4Laneの22ピン0.5mmピッチのコネクタで出てることがないので重要です。より高解像度なカメラ画像が欲しいなら4Laneにすることは今後必要となるだろうと考えてつけました。
あとで気づきましたが、レベル変換IC(U3)のいちが微妙にずれてて気持ち悪いですね。次で直しておきます。まぁ、Ultra96がもう手に入らないので次があるかは・・・。
BOM
BOMです。(かなり雑です、すみません。)
発注
基板をJLCPCBに発注します。いつもお世話になっていて、品質も良いしおすすめです。そのうちPCBAも試してみたいな。 また、JLCPCBでは初めて作る人向けにクーポンを配っているそうです。基板作ってみようという人は利用してはいかがでしょうか。
クーポンもらえるリンク↓ jlcpcb.com
今回の設定は、1.6mm厚、仕上げはEING(金フラ)、黒としました。
届いた
基板が届きました。いつもの青い箱。
これが家にたくさんあるので名前を書いてわかりやすくしています。
こんな感じで非常に綺麗です。やっぱり黒艶消しにEINGは…最高やな!超かっこいいのでおすすめです。
相変わらずダックスが鎮座しており、良いです。
余談
ところで、Ultra96はもう作ってくれないんですかね・・・。小さくて良かったんですが・・・。後継はKV260みたいな雰囲気がありますが、ちょっと大きいなという気がしています。できればMPSoC Zyboが欲しいんですが・・・。誰か作ってくれないかな(他力本願)
次はKV260の拡張基板(というかSOM K26のキャリアボード)を作ります。(希望) そっちの方が使いたい人もいるし、いいよね。
次回
実装して実際に動作させてみます。