lynxeyedの電音鍵盤

MBDとFPGAと車載で使うデバイスの備忘録

intelHLSプロトタイプの設計(Cyclone10GX基板の設計)

最近では、安全運転支援のカメラ開発も乗用車から船舶向け、最近では庫内の運搬用群ロボットまで引き合いをいただいております。
ありがとうございます。

開発スピード向上

上記のような簡易プロトタイプ用途としてCyclone10LPのボードを1年前に開発しました。基板単体を販売するほど販路やマーケが大きい会社ではないのでそのようなことはしていませんが、弊社の提供するサービスが動くハードウェアの一部として提供しており、すでにH社製ADASの補助、無人バイク制御などで活躍しています。

MATLAB/SimulinkをはじめとしたMBD開発に軸足を置いているため開発効率はそこそこ高い*1ものの、GPU開発に比べると遅いのも事実です。FPGAを利用した画像処理、深層学習、あるいは軽量NNの論文でも明らかなように1GFLOPSあたりの電力効率は2~10倍ほどアドバンテージはあり、単位処理能力あたりのデバイス単価は圧倒的に安いですが、開発速度がおそいと研究開発の分野では厳しいものがあります。
開発初期のプロト以降では開発コスト高めのFPGA内部はどうしても固定化されてしまう問題がありました。このためFPGA内部の開発も流動化できるような高位言語プロトタイプFPGAボードを設計しました。

高位言語を使おう

上記の問題はCPU/GPU/FPGAアーキテクチャの差異によるものですし、intelが力を入れて取り組んでいる分野でもあるので、intel oneAPIが次第に解決してくれるだろうとぼんやり考えていたのですが、その橋渡しになるであろうintelHLSが、お世辞にも開発に使うには厳しすぎるだろというものでした。

例えば、VS2010が必要だったり、MAX10とかその規模でHLSいらないよね?みたいな状況でした。*2

この記事を書いている時点で、Quartus Prime Pro v21.1ではVS2017になっています。また、HLSが使用できるデバイスが、ALMアーキテクチャFPGAに限定されています。
やっとか。という思いもありますが…時間をかけてインテルのマーケが市場調査を行い、HLSを周回軌道に乗せたようにも見えます。

intel HLSについてはまた次の記事で扱います。
弊社の場合、HLSはHLAC特徴量の演算モジュール、FCNの畳み込み層の高速化モジュールの設計のみに使用します。
手っ取り早くAvalon-MM/STモジュールにすればこっちのもの。
もちろんいずれもHDLでの記述ができないものではありません。が、この分野は年々更新されるため新しい手法にも追いつきつつ検証、試行するにはHLSが不可欠となってきています。

バイスの選定

Cyclone V EとCyclone10GXを天秤にかけました。
Cyclone10GXは(ほぼ)Arria 10と言えます。ウェハもおそらく同じものでしょう。フリーライセンスで使えるArria10。
フリーライセンスでDDR3/DDR4使う、高速トランシーバGXBを使うとなるとCyclone10GXが魅力的です。

また、車載に使う場合も考慮します。電力バカ食いされるとポンコツ欧州車でECUエラーになりやすいので、LEは控えめなデバイスを選定しました。(86kLE~105kLE)
対策すりゃいいんだけど、車載で電力消費が多いのはそもそも歓迎されません。車に収まるレベルの小さいバッテリーで動いてるわけだし。

その他のFA用途でも、消費電力は少ないに越したことはありません。
ちょうどCyclone10LPとロジック規模がクロスする、85kLE~105kLEのCyclone 10GXを採用しています。
Cyclone10GX基板、公式も含め評価ボードがすごく少ないんですよね。あと220kLEの最大規模のデバイスを採用している場合がほとんどで消費電力はそれなりに大きく、電源回路も電力消費も豪華。笑

基板設計も製造も今年は、(来年も期待はできませんが)設計サイド、量産サイドで考えると、気が遠くなるような芳しくない条件が重なります。

半導体の供給が遅れている

半導体がない、互換品ももちろん売り切れ、生産目処が立たないためベンダーは製品ラインナップから終息製品に突如移行。水晶発振器は旭化成の火災の影響で欲しいスペックのが突然のディスコン。今日あっても明日あるかわからない。
というわけで、設計始める前に100pcs~1000pcs単位で材料を集めました。ほんとこれからどうするんだろう。この設計スタイルはギャンブルでしかない。
今回、電圧も電流も異なる電源を複数必要としているため、本来であればそれぞれ最適な定格のものを選ぶのですが、大量に在庫しなくてはならない都合上、最大スペックに合わせています。電源ICもバリアントが増えると調達リスクが嵩みます。リスクとコストのギリギリを攻めています。

ロームさん、および代理店のご厚意により弊社でも実績のあるFPGA用超低リップルDCDCをサンプル提供いただきました。
また水晶発振器は調達の関係でルネサス大真空、京セラとすべて国産品になってます。

ハーネスが資材供給の遅れから作れない

また、ハーネスの問題も無視できません。如何に深刻なのか、少し例をあげます。
以下は公然の秘密で、スズキ本社に問い合わせたところ「隠しているつもりはない、書いて構わない」とのことでしたので例を挙げます。

ワゴンR
・SWIFT

これらは2021年春にフルモデルチェンジの新型が出る予定でした。ワゴンRはスライド式自動ドアがつきます。今までのワゴンRの立ち位置はハスラーが今後担います。(荷室が大きい、普通の4ドア)

SWIFTは5ナンバーを死守しつつの完全なモデルチェンジでした(除くスイスポ)。
SWIFTに関しては5年が経過しており、全車速対応の車線変更支援などADASを強化した完全モデルチェンジが出る予定でした。またADASのメインはデュアルカメラでしたが、こちらも挑戦的な変更がされるはずでした。我々アフターにも他に色々情報だけきておりますが、言って良いのはここまでとのことです。

これに関して、もうカタログまで印刷、プロトは倉庫にある状態です。取りやめたのは、

  • Renesasのデバイスの供給停止
  • BOSCHのあんちくしょうが(ry
  • ハーネス、主に車載向けのコネクタ樹脂がない

実は1番目は今年中に解決されそうです(また火災が起きたりしなければ)。B社も今年中にはどうにかしてくれそうとのこと。ですが、3番目が来年末にも解決が難しそうとのこと。

すくなくとも今年は専用ハーネス作ったり、設計するのは本当にやめた方がいい


あ、そうそう。ジムニーの納車が遅いのは仕様です。別に特段遅れてはいないそうですよ。うちもまだ来ないんだけど。。。


というわけで、LVDS、高速トランシーバともにUSB Type-Cコネクタを設け、そこから入出力しています。
このようにすれば、大量に家電量販店に出回っているUSB Type-C(USB3.0用)ケーブルを流用できます。残念ながらUSBとしてのプロトコルスタックは用意するつもりがないので互換性はありませんが、事故を避けるため、cc端子は5.1kΩでプルダウンして、5V,3AをUSB PDに則って取得しています。Type-C対応のモバイルバッテリーがあれば給電できます。15W有れば今回使用するCyclone10GXの電力を十分賄えます。

FAギョーカイだとよくやるパターンですね。USB3に対応しているType-Cコネクタを使用すると最大で、差動高速トランシーバTX2ch、RX2ch、差動1ch、GPIO2chを引き伸ばす事ができます。もちろん、そのようにすると代償としてコネクタの表裏が決まってしまうのでそこは対策する必要があるかもしれません(表裏逆の場合は給電止めるなど)。PCIe Gen2 x2を引き回すのに重宝しますね。

基板

仕事後にダラダラ設計やってたので1ヶ月くらいかかってますね。。
Raspberry Pi 3Aと同じフットプリントにしました。前回のCyclone10LPと同じく、Raspiからコンフィグできます。
部品面
f:id:Lynx-EyED:20210704215353p:plain
ハンダ面
f:id:Lynx-EyED:20210704222658p:plain
6層基板です。ドリル径0.3、L/S=5mil、内層クリアランスは10milとしました。2018年ごろから中国、台湾のPCB製造業社でも外層3mil/内層4milくらいまでは可能になってきました。以前は国外のPCB製造業社だと内層はとんでもなくL/Sを緩くしないといけないイメージでしたが、良くなっていますね。板厚は1.6mmくらいであれば、ドリル径0.3mmもあれば特注扱いにはならないと思います。
DDR3Lを搭載しました。データバスはインテルのガイドを参考に3.5mm以上ズレる場合だけ配線長を調整しています。
下記は90%程配線が終わった図。
f:id:Lynx-EyED:20210703223232p:plain
ベタを貼ると内層は見えなくなってしまいますがこんな感じ。
f:id:Lynx-EyED:20210704220503p:plain
Cyclone10GXの5つのバンク*3をフルに使い、4つの機能に分けています。

  • GPIO
    • Raspberry Piとの通信用です。これのために1.8V(FPGA)-3.3V(RasPi)間でレベル変換を使用しています。
  • LVDS
    • ディスプレーなど、低速ではないものの引き回す必要がある通信用
  • DDR3L
    • PCBレイアウトの都合でbankを2つ分跨いでいます。構想段階ではCyclone10LPの時のようにSDR SDRAMを搭載する予定でした。想定している場面が画像データのたたみ込まれたデータの保存だったので、そこまでスピードが要求されないのですが、SDR SDRAMより大容量の方が処理は楽になるため*4採用しました。DDR3の配線はどのピンでも配置できるわけではないので、試しに使用するDDR3のバス幅、CLなどを確認、pin plannerでバンクを指定、合成結果を確認するなどしてデータシートだけではなく合成結果を見た方が良いと思われます。
  • GXB
    • 言わずもがな、高速差動信号用です。車載、FAのフィールドで、以下の使用を想定しています。USB Type-Cケーブルを使って引き回します。
    • PCI Express Gen.2 (x2~)
    • SFP+



次回は、基板完成して、到着しているといいな。

*1:手戻りが少ない

*2:製薬系ではGMPにおけるソフトウェア開発で認証が降りるのはいまだにVS2010のみだったりするので…これはこれで、正しい選択ではあるのかもしれません

*3:4bank + GXB専用bank

*4:たとえば、同一データでも台形補正したもの、オリジナルのデータと2つ以上欲しい場合があります。両者を保存できるとFPGAが他の処理に専念できるため、見た目の処理性能が向上します