お家に転がってたFPGAボードでStratum1 NTP サーバー兼JJY送信機をgpt-5.6-solに作らせた話

0.9K Views

August 23, 26

スライド概要

Kernel_VM探検隊@東京 No19で発表したスライドです。

profile-image

maybe Software Engineer

Docswellを使いましょう

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

お家に転がってたFPGAボードで Stratum 1 NTPサーバー兼JJY送信機を gpt-5.6-solに作らせた話 Kernel/VM探検隊@東京 No19 tomiy (@tomiy_0x62)

2.

自己紹介 tomiy (とみー) ● 𝕏: @tomiy_0x62 ● GitHub: @tomiy-0x62 ● Rustとneovimが好き ● 大都会の大学院で修士課程の学生 ○ ○ ● ● 某通信ミドルウェアをいじめる Rustで某通信ミドルウェアを実装 PCBの設計、発注の経験なし FPGAの開発経験なし 2

3.

Stratum 1 NTP サーバー兼JJY送信機 to GNSSアンテナ JJY送信コイル GNSSモジュール u-box NEO-M9N to JJY送信コイル お家に転がってた FPGAボード 3

4.

クオーツ時計 安価で一般的だが精度が月差±15秒 おうちの電波を受信できていない電波時計が1か月で2秒くらい遅れてた 年差±10秒程度の高精度なクオーツ腕時計もあるが、比較的高価 シチズン: 自律型年差時計, グランドセイコー: 9F クオーツ 安価な時計で正確な時刻を得るには外部の標準時と定期的に同期する必要がある 4

5.

同期方法 ● 電波時計 (JJY(日), WWVB(米), BPC(中), MSF(英), DCF(独), etc.) ○ ● GPS ○ ● 高級な腕時計 NTP ○ ● 腕時計、掛け時計 業務用の掛け時計 Bluetooth Low Energy ○ G-SHOCK, CASIO OCEANUSの一部モデル 5

6.

電波時計 比較的安価で腕時計、掛け時計など幅広く使用されている 自宅では標準電波の受信状態が悪い 窓際なら受信レベルが低いが受信できる 掛け時計の設置場所には届かない ソリューション: 電波時計用リピーター NTP, GPS, 商用電源周波数などを時刻ソースとしてJJY信号を発信 出力とアンテナ配置の自由度が限られる 6

8.

リピータ自作 GNSSで時刻を取得しJJY(※1)で時刻を送信するシステムを自作しよう! 精度を追求する(PPSの正確なタイミングを扱う)ならFPGAが有利そう ちょうどお家にTang Primer 20Kがころがってた Tang Primer 20KにはPHYチップとRJ-45コネクタがついてる ついでにNTPをしゃべらせてStratum 1 NTP サーバー(※2)機能ももたせる ※1 NICTが運用している標準電波を送信する日本の無線局の識別符号(コールサイン) ※2 原子時計やGPSなどの正確な時刻源を直接参照しているNTPサーバー 8

9.

構成 強い磁界を得るため将来的には直 列共振回路にする予定 9

10.

GPTにGNSS基板を設計させた結果 gpt-5.6-solに構成、部品選定の相談 部品を指定してPCBを作らせる DRCエラーが大量に出るものを出してくる エラーをなおさせると、コネクタがはみ出ている フットプリントのチェックとインピーダンスのチェックを求 められる gpt-5.6-solはググるのが下手で自分でフットプリント をとってこれず、データシートの図からフットプリントを 推測していた 10

11.

受信モジュールの作成&発注 DigiKeyからフットプリントをダウンロードし、JLCPCBイ ンピーダンス計算機で配線幅を計算し、修正させる JLCPCBにガーバーデータをアップロード パラメータの選択から部品の選定までgpt-5.6-solにや らせる 届いた基板はちゃんと測位に成功し、UARTを出力し、 PPSを1Hzで出力してくれた 11

12.

JJY送信モジュールの作成&発注 PCBは電源ケーブルとピンヘッダが干渉する問題があった以外スムーズにできた PCBA代をケチりたいから手はんだで問題ないかgpt-5.6-solに相談 gpt-5.6-sol: 問題ないです! まあ、Keyball61で表面実装部品をはんだ付けしたことあるし、GPTも問題ないっ ていってるし大丈夫だろう 届いたPCBをみて部品の小ささに絶望する 一番小さい部品が1608 (縦1.6mm×横0.8mm) 12

13.

JJY送信モジュールの作成 苦労しつつ抵抗、キャパシタをはんだ付け TSSOP-16なHブリッジのピンを曲げてだめにする リトライして成功したように見えたので動作テスト 挙動がおかしいとgptに相談したところ 2, 3番ピン がショートしてるっぽい どう見てもショートしてるように見えないがテスター 当てるとショートしてた 13

14.

JJY送信モジュールの作成 再度はんだ付けして動作テスト → 熱でICが壊れてるっぽい ICを再発注 PJ氏にジェルフラックスを勧められる gptはフラックス必須だとは教えてくれたが、ジェルフラックスの存在は教えてくれな かった ジェルフラックスを用意しリトライ → 成功 結果的にPCBAをたのんだ方が安く済んだ 14

15.

FPGA側の実装&動作確認 gpt 「NTP、PTP、Web設定、GNSS設定をすべて独自RTLで実装するのは大仕事です。現実的に は、FPGA内のソフトコアCPUとハードウェアタイムスタンプ回路を組み合わせる構成を推奨」 この機能を実装してと依頼したら基本的に依頼した通りの機能を実現してくれる + 動作確認の方法の案内、動作確認用のスクリプトの記述、ドキュメント更新までやってくれる たまに謎な挙動をする Tangのピン番号がおかしい、ピン番号がドキュメントと実装で異なっている NTPの精度向上を依頼したときにUDPのチェックサムは計算できないのでUDPチェックサム は常にゼロにしてますと言われた UDPチェックサムをまじめに計算するオーバーヘッドは?と詰めるとないですと言われる 15

16.

まとめ PCB設計・FPGA開発未経験でも、GPTの力を借りることで動くものを作れた 私の知識不足により時間を浪費したり金銭的に損をしたりした GPTは設計やコードを広範囲に作れるが、たまに様子がおかしくなるので監視が必 要 基本的に私が発注者でGPTが下請けだが、物理世界に干渉する必要のある場面や GPTの苦手な場面では立場が逆転していた 16