私のDIY FPGAボードはクエイク II(Quake II)を動かすことができます。

2026/03/23 8:06

私のDIY FPGAボードはクエイク II(Quake II)を動かすことができます。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

**

## Summary
レポートは、Efinix Ti60F256 FPGA(256ピンBGA)と1 GB DDR3LメモリチップIM8G16D3FFBGを中心に構築された新しい6層PCBを記載しています。  
主要ペリフェラルには、TMDSシリアライザ(TFP410)、USB電流制限器、SD‑カード電圧スイッチ(UHS‑1 SDR104 用の3.3 V↔1.8 V)、実時間クロック+バッテリー、ESP32 WiFiモジュール、および追加の高電圧 USB‑Cポートが含まれます。  
BGA部品は、221 °C のボトムヒーターとハードガンを使用してはんだ付けされ、ステンシル幅は基板に合わせてペーストを正確に適用しました。DDR3コントローラのレイアウトはEfinix ガイドラインに従いましたが、内部層トレースの短縮によってトレース長一致は部分的にしか達成できませんでした。

FPGA の利用率はロジックリソースの 89 %(53,612/60,800 XLR)とメモリブロックの 95 %(241/256)に達しました。単一の VexiiRiscv コア(SpinalHDL 経由で構築)は 207 MHz で動作し、511 DMIPS、117 MFLOPS の実際的な FP ベンチマーク、および CoreMark 1.0 スコア 783.08 を提供します。メモリ性能:1 GB RAM;SD‑カード読み込み速度 45.06 MB/s;CPU memset 348 MB/s;DMA memset 1130 MB/s(理論上の限界 ≈1.6 GB/s)。WiFi 機能は ESP32 のピン使用ミスにより初期に失敗しましたが、後続のリビジョンで修正されました。

基板コストは 5–20 個あたり $100 を超えます。以前の二層プロトタイプは各約 $2 でした。カスタム HDL モジュール(DDR3 Tilelink アダプタ、UART、I²C、オーディオ、多数の SPI コントローラ、ビデオコントローラ、DMA)は主に SpinalHDL で開発され、VexiiRiscv と Dolu1990 の IP コアへの大きな依存がありました。SpinalHDL の学習曲線は不完全なドキュメントのため急峻でしたが、コミュニティサポートが助けになりました。

今後の計画には、リソース制限内で FPGA 対応 GPU を実装し、Quake II のパフォーマンス向上を目的とした DMA のさらなる最適化があります。

本文

2026年3月22日


Part 1/6 – イントロダクション

Part 2/6 – 最初のプロトタイプ

Part 3/6 – ほぼ動作している現在

Part 4/6 – 次世代(ここから)

Part 5/6 – もう一度試行

Part 6/6 – 「Quake II」を走らせるためのハードウェア最適化


新しいボードを設計する時期

以前作ったものをそのまま再現したくはありませんでした。もっと高度な構成にするにはBGAのはんだ付けが必要で、やれるか不安でしたが、挑戦してみることにしました。

具体的には、より進化したFPGA Efinix Ti60F256 と最新型メモリ IM8G16D3FFBG(1 GB DDR3L)を採用したいと考えました。前者はピン数256本、後者は96本で、どちらも0.8 mmのピッチです。

BGA‑256パッケージに入ったIC。一部はTi60ではないが、外観は非常に似ている。

DDR1を扱う際にメモリコントローラを再設計したくなくなり、Efinixのサイトで DDR3 Soft Controller Core を見つけ、DDR3 PCBレイアウトに関するガイドにも案内されました。

不慣れだった用語を学ぶために余分に時間を費やしました。トレース長マッチング要件はほぼ満たせず、アドレス・コマンドライン全てを単一層で走らせるのは不可能に近かったので、内部層でトレースを短くすることで補いました。

今回のPCBは 6層 です。デカップリングコンデンサの推奨数・容量も調べましたが、電源ピン付近に物理的に配置できるものは限られており、0603(0.06″ × 0.03″=1.6 × 0.8 mm)より小さい部品をはんだ付けしたくありませんでした。できるだけ多く挟み込む形で進めました。

FPGA下部に配置されたコンデンサ(3‑Dモデル)。

前回のボードからの主な変更点

  • 緑色アーティファクトを防ぐため、独立したTMDSシリアライザチップ(TFP410)を採用。
  • USB機器接続時の電流制限付き。
  • SDカードデータラインの電圧を3.3 Vから1.8 Vに切り替えられるようにし、転送速度を104 MB/s(UHS‑1 SDR104モード)まで向上可能。
  • リアルタイムクロックとバッテリーを搭載し、Linuxが起動時に1970年に戻るのを防止。
  • ESP32モジュールをWi‑Fiアダプタとして追加。
  • USB‑Cポートを二つ設け、標準USB(5 V 500 mA)が不足した場合は高電圧を要求できるチップを搭載。

BGAのはんだ付け方法

JLCPCBで6層PCBを注文すると2層に比べて費用が大幅に上がります。総額は100ドル以上で、5枚・10枚・20枚といった数量でもほぼ同じでした。一方、以前の2層ボード5枚のセットはわずか2ドルでした。

PCBsとステンシル(比較用に前回のPCBも添付)。

「BGAをはんだ付けする方法」という記事は多くが修理作業に焦点を当てています。ヒートガンで加熱、チップを取り外し、古いはんだを除去、リボール、再び修理対象のデバイスへはんだ付けといった工程です。これらは難易度が高く専用機器も必要ですが、本ケースでは不要です。

新しいチップを新品に取り付ける作業は容易です。まずボード上の全ての接点にフラックス付きペーストを塗布し、次にチップを配置して加熱します。この際、ペーストはチップのパッド上のサルダーボールと同じ温度帯で評価されるものを選びます。すべてが順調なら作業完了です。何か問題(見た目に不具合がなくても)が起きた場合は捨てて再挑戦、または修理パラグラフに戻ります。

ペーストを整然と塗布するにはステンシルが必要です。私のステンシルはPCBサイズに完全一致し、合わせやすくなっています。テープで固定し、プラスチックカードでペーストを広げました。

温度調節可能なボトムヒーター(「Uyue 946 Constant Temperature Heating Station Screen Removal tool」)を購入しました。数枚の安価メモリチップで試した後、221 °Cに加熱し、サルダーペーストが色変化してボールになる様子を観察。FPGAフットプリント上の生成されたボールは欠陥無しだったので、そのまま進めました。

テスト実行

ボトムヒーターでは部品をトップ面にしかはんだ付けできません。そのため、底面に数十個のコンデンサや抵抗を配置しつつ、上面への影響を抑えるためにヒートガンと低融点サルダー(183 °C)を併用しました。驚くほど最初からうまくいき、トップ側・底側・コネクタをそれぞれ3日で仕上げました。隣接ピンブリッジはわずかに発生したものの、BGAチップ下部には一切ありませんでした。

ボトムヒーター使用時の写真。

数ヶ月に渡るドライバ開発とデバッグ中、ESP32モジュールの誤ったピン設定が原因でWi‑Fiが機能しないことを発見しました。この問題は次回リビジョンで解決済みです。


システム・オン・チップ(SoC)

  • SoC:CPU、メモリ、GPU、およびI/Oインターフェースを一つのチップに統合した集積回路。
  • FPGA:フィールドプログラマブルゲートアレイ。VerilogまたはVHDL(HDL)で記述されたカスタムロジック(完全なSoC)が実装されます。

図面上、SoCは大きな緑色の四角「FPGA Ti60」に収まっています。他の緑色四角はボード上の他チップを示しています。スキーマでソースが明記されていないコンポーネントはすべて自作で、GitHub(Verilogコード・Scalaコード)で公開済みです。主なものにDDR3 Tilelinkアダプタ、UARTコントローラ、I2Cコントローラ、オーディオコントローラ、特定用途向け最適化されたSPIコントローラ3種、ビデオコントローラ、DMAコントローラがあります。

SoCの中で最も複雑なのはプロセッサコアですが、自前では作成せず以下を利用しました。

  • VexiiRiscv – SpinalHDLで書かれたRISC‑Vコア。
  • SpinalHDLとともに配布されるコンポーネント:Tilelinkインターコネクト、APB3ブリッジ、USB OHCIコントローラ、PLIC。
  • ZipCPU/sdspi SDカードコントローラ。
  • Efinix DDR3 Soft Controller Core(ソースは公開されていない)。

VexiiRiscvとSpinalHDLは非常に優れたツールです。Verilogからスタートしましたが、2年間でSpinalHDLへ移行し、自作モジュールの記述を容易にしています。

学習曲線は急でした。SpinalHDLはScalaで書かれたライブラリ群であり、Verilog/VHDLを生成します。パイプライン、FSM、バス、キャッシュなどハードウェア抽象化と、コルーチン、遅延インスタンス化、継承、プラグインという生成時構文を同一ファイルに混在させるのは容易ではありません。Scala自体が初めてで、何が変数名で何がSpinalHDL内部なのか判別できないことも多々ありました。ドキュメントは良いものの不完全です。もし1000ページの書籍があれば購入したいところです。

幸運にも Dolu1990 は常に質問に答えてくれました(Dolu1990、読んでいる方へ感謝)。


実績

指標
FPGA利用率53 612/60 800 XLRs (89 %)、241/256 メモリブロック (95 %)
コア207 MHzで単一RISC‑Vコア(FPUを犠牲にすれば二コア可)
Dhrystone511 DMIPS(2.46 DMIPS/MHz)– Pentiumより上、Pentium IIより下
RAM1 GB – 平均的なPentium II PC以上
浮動小数点ピーク207 MFLOPS(実際は約117 MFLOPS)
CoreMark 1.0783.08
SDカード読み込み45.06 MB/s
CPU memset348 MB/s
DMA memset1130 MB/s(理論上最大≈1.6 GB/s、データが各クロックで転送される場合)

Quake IIの最適化時にDMAを議論します。GPUはFPGAリソース不足だったため、グラフィックス関連処理も行える「DMAコントローラ」を作成しました。


スクリーンショット

  • ベアメタル Hello World
  • ウィンドウマネージャーとTTY実装
  • Doom
  • Heroes 2

(次パートにさらに多くの画像を掲載予定)

次回:近日公開

同じ日のほかのニュース

一覧に戻る →

2026/03/26 6:11

テスラ・モデル 3 のコンピュータをデスク上で稼働させ、事故車から取り出した部品を使用しています。

## 日本語訳: ## 要約: この記事では、セキュリティ研究のためにテスラ・モデル 3 MCU(モーター制御ユニット)の取得とセットアップ方法を説明しています。テスラのバグバウンティプログラムが研究者に車両内の脆弱性発見を奨励していることを強調し、筆者はeBayから安価な部品(約 $200–$300)を購入し、DC電源と最大8 Aまで供給可能な12 Vアダプタで組み立てました。さらに、Rosenbergerケーブル(パーツ番号1067960‑XX‑E)が必要で、個別販売されていないためダッシュボードロウムを購入しました。BMW LVDSコネクタを使った初期試行ではMAX16932制御チップがショートし、筆者は現地で修復して2つの機能的MCUを得ました。テスラの電気参照書にケーブル部品番号が確認されています。次のステップとして、MCUのユーザーインターフェース、ネットワークインターフェース(CANバス、ポート 22のSSH、ポート 8080のREST‑ライクAPI)を探索し、システム稼働時にファームウェアを抽出する可能性があります。これらの方法でルートアクセスを取得すると、研究者はテスラの「Root Access Program」のための重要な脆弱性を特定でき、車両セキュリティの向上につながる可能性があります。 ## 要約骨格 **本文が主に伝えたいこと(メインメッセージ)** 筆者はテスラ・モデル 3 MCUを取得し設定する方法を示し、その電源供給とネットワークサービスへのアクセス手順を強調しています。 **根拠/推論(なぜこう言われているか)** - テスラのバグバウンティプログラムは研究者に脆弱性発見を促している。 - 筆者はeBayから安価な部品($200–$300)を購入し、DC電源と最大8 Aまで供給可能な12 Vアダプタで組み立てた。 - 配線には特定のRosenbergerケーブル(パーツ番号1067960‑XX‑E)が必要で、個別販売されていないためダッシュボードロウムを購入した。 **関連ケース/背景(文脈・過去事例・周辺情報)** - BMW LVDSコネクタを使用した初期試行は失敗し、即席配線でMAX16932制御チップがショートした。 - 損傷したチップは現地で修復され、2つの機能的MCUが得られた。 - テスラ公開電気参照書に必要なケーブル部品番号が記載されている。 **今後起こりうること(本文中の将来展望/予測)** 筆者はMCUのユーザーインターフェース、ネットワークインターフェース、CANバスを探索し、システム稼働時にファームウェアを抽出する計画だ。 **影響(利用者・企業・業界への影響)** SSH(ポート 22)またはREST‑ライクAPI(ポート 8080)でMCUにアクセスできれば、研究者はテスラのバグバウンティ「Root Access Program」のための根本的脆弱性を特定し、車両セキュリティ向上に寄与する可能性がある。

2026/03/26 3:16

ARC‑AGI‑3(アーク・AGI・3)

## Japanese Translation: ARC‑AGI‑3は、AIエージェントを真に適応的かつ継続的な学習へと導く新しい対話型推論ベンチマークです。モデルに探索・目標追求・環境変化への世界モデリングを課し、単発の回答ではなく効率的なスキル獲得と長期計画を評価します。完璧なスコア(100 %)は、エージェントがすべてのゲームで人間よりも優れたまたは同等の性能を示し、多様なタスクにおける習熟度を証明することを意味します。 ベンチマーク設計は、事前学習済み知識なし、明確な目標、有意義なフィードバック、およびブルートフォース記憶化を防ぐ新規性を重視しています。開発者向けには、エージェントの意思決定が構造化されたタイムラインに記録される再生可能実行、使いやすいAPI、環境アクセスとエージェント統合用の包括的ドキュメント、およびリアルタイムでエージェント挙動を確認できるUIが提供されています。 ARC‑AGI‑3は迅速な反復と透明性のある評価を奨励し、研究者が多様なシナリオで継続的に学習可能なAIシステムを構築する手助けとなります。ユーザーはプラットフォーム上のインタラクティブインターフェースを通じて「エージェントをテストしよう!」と呼びかけられ、プレビュー再生でエージェント挙動を反復的にテスト・検査できます。

2026/03/26 5:27

EUは、依然としてあなたの個人メッセージや写真をスキャンしようとしています。

## Japanese Translation: ## 改訂概要 保守党(欧州人民党)は、無差別スキャンに関する議会の以前の「NO」決定を覆すため、4月26日木曜日に新たな国会投票を求めています。彼らはこの決定を逆転させることが民主主義への攻撃であり、プライバシー権を明白に無視する行為だと主張し、「No means no」というスローガンのもと支持者を集結させています。この要求は、議会が無差別スキャンを承認しなかったことに続くものであり、保守党はこれを政府の過剰介入として捉え、民主主義原則および個人プライバシーを侵害するものと見ています。今後の投票結果は、そのような広範なデータ監視ツールが実施可能かどうかを決定し、市民のプライバシー保護を再構築するとともに、管轄区域内のテクノロジー企業の規制慣行にも影響を与える可能性があります。

私のDIY FPGAボードはクエイク II(Quake II)を動かすことができます。 | そっか~ニュース