lynxeyedの電音鍵盤

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

QuickLogic EOS S3基板を起こすハメになった話

ついに半導体枯渇が死活問題になってきた

ある程度の在庫を抱えてはいたのですが、Cyclone 10LP/MAX10が枯渇しそうです。
少なくともトレイに入った状態のintel FPGAはここ半年くらいお目にかかっていません。在庫しているボードものこりがわずかで、使い終わったらおしまい。商社によると年末に各社から不良在庫回避放出イベントが多少あるんじゃないか、と言われてましたがそうでもなさそう。

そんな経緯で、代替デバイスを検討すべく小規模FPGAに限って新興メーカ数社を中心に評価ボード、供給体制をチェックしていました。とはいえ弊社との取引先に無断でメインコアを変えるわけにも行かないので、対応を長いこと協議していました。
ADAS向けとシニアカーなどの福祉車両向けがメインです。車載グレードが必ずしも要求されない用途に限ります。

複数のデバイスを調査していますが、早い段階からチェックしていたQuickLogic EOS S3は、私(ハードウェア担当)が選択肢から外そうとしていました。詳細は後述しますが、いわゆるFPGAに求める機能があまりにも欠落しているかな、、、という判断でした。

ですが、取引先の大半のエンジニア(ソフトウェア担当)が違う観点でした。
下記は協議中に挙げられたメリットデメリットです。

設計検討

EOS S3の何がいいのか、会議を重ねました。

ハードウェアサイド(基板設計とFPGA側)

メリット
  • 値段にしてはロジック規模大きめ
  • CPUとのバスブリッジがあり、128kBのアドレス空間
  • ハードマクロでSRAMがある
  • SRAMは非同期デュアルポート
デメリット
  • 基板設計時、EOS S3のパッケージが小さく(0.4mm BGA 64pin)、ビルドアップないしIHV加工がほぼ前提となってる
  • FPGAの(単なるマルチプレクサではなく)GPIOとして使えるピンが32ピンしかなく、そのうち6ピン以上が起動時のデバッグトリガーやデバッグ端子や状態遷移につかわれていてめんどくさい(少ピンFPGAあるある)
  • ハードマクロSRAMが8kBしかない
  • ちょっとしたロジックを組むと50MHz超えたあたりでFPGA部の動作が怪しい(Fmax=40MHzくらいがせいぜいではないか?)
  • PLL(というかクロック)が足りない
  • DDRない
  • LVDSない

ソフトウェアサイド(CPUプログラミングチーム)

メリット
  • Cortex-M4F(CMSISライブラリが使える)
  • 組み込みにしては大容量の512kB SRAM
  • dockerですぐ環境構築できる
  • Zephyrつかえる、FreeRTOSつかえる
  • 提供されている音声認識エンジンが優秀
  • エッジデバイス用AIソリューションが豊富
  • I2Cセンサーに限るが、Arduinoサンプルソースコードがある場合、小変更で動かせる事が多い。
  • スタートアップ時にCPUがまず起動するのはありがたい
  • 気に入らなかったらFPGA側をとめられる(おいやめろ
デメリット
  • コントロールしているペリフェラルがどのサブモジュールに属しているか意識しなければならない事がある
  • 他デバイスへの移植性がちょっと悪いかも(EOS S3に限らず、他社デバイスへの移植性が良いSoCは無いので仕方ない)

ソフトウェアサイドのメリットが目立ったので、QuickLogic EOS S3を続行することにしました。導入コストが低い*1というのはどのエンジニアからも出たのでそうなんだろうなー。
音声認識は現状は行っていないのですが、直近で発生しそうな案件ではあるので用意しておいてもよいでしょう。音声でなくても低周波の波形解析に応用できそうとのこと。

基板の設計にあたって

チップの在庫確保もでき問題なさそうです。
問題はハードウェアチームです。基板製造コストがintelFPGAに比べかなり上がるのと、intelFPGAほどの機能が見込めないので妥協案を探っていきます。

  • PLLがない問題

頼りにしていたSi5351Aがしばらく枯渇しています。L/Tみても絶望しかありません。
これについてはPLLで何がしたいか、という問題を検討しました。多くの場合数百MHzのクロックが欲しいのではなく、数十MHzのクロックとその90度位相が遅れたクロック(I-Q)が欲しいだけです。ですので、ロジック回路で解決できそうです。高速動作する74AVC74などに欲しい周波数の4倍を加え、I,Qを取得する算段にします。なお、FPGA側でそのくらいは作れそうに思えますが、ループエラーで論理合成は成功しないと思われます。そもそもFmaxが低いのでそれ以前の問題ですが。

  • 基板製造価格

製造費用増は仕方がありません。事前検討の結果、EOS S3のBGA64ピンのうち62ピンはどうしても必要なことがわかっています。
パッドオンビアかつビルドアップを選択しますが、べリードビアを避ける、フルスタックではなく貫通viaにする(4-layer ,1−2−1 BHなし)ことによりなるべく費用を下げます*2

  • SRAMが足りない問題

外付けでQSPI IoT SRAMを使用します。EOS S3のFmaxがかなり低いことも検討の結果わかっていますので、帯域を確保するため2個パラレルで使用します。この時必要になるGPIOは12pin(=6pin x 2個)です。パラレルSRAMを使用する場合より格段に少ないピン数です。

基板外観

こんな感じ。アートワークは2日ほどで終わりました。部品選定は選定中に商社から在庫が消えるという体験を何回もやっているので4日ほどかかっています。もうやだー。
f:id:Lynx-EyED:20211206021621p:plain

裏面
何も部品は配置しません。*3シルクで電源端子の説明だけ書いておきます。
f:id:Lynx-EyED:20211206022856p:plain


部品点数自体は少ないので、4層もあれば広々と配置できます。
f:id:Lynx-EyED:20211206021949p:plain

見ての通り、Raspberry Pi ZeroのHATと同じフットプリントです。デバッグはすべてラズパイから行います。
部品も確保済み。ガーバーアウトしたので、あとは製造実装まちです。

*1:ジョインしてきた企業や人員に教育するコストが低い

*2:基板製造業者によります。この方法でも価格は変わらない場合も十分あり得ます

*3:実装業者のペースト添付方法次第ですが、Type-Cコネクタのスルーホール部分は裏面実装部品とみなされるかもしれません。いずれにせよこの場合は裏面実装時の接着剤などは必要とはされないでしょう