STEP: 1597 / Date: 2026-08-30 / Status: ★★★ ✅ silicon 動作確認完了 (LED2 常時点灯、藤本さん目視)
★ STEP 1591 (v0.1) の 拡張: 100 kHz 相当 (実 105.5 kHz) carrier gating を TX 側に追加。 chat-Claude 電波時計 arc 「非接触結合の実機実験」 提案の carrier layer を silicon で 実装。 「carrier gating layer 追加後も decoder 対称性が破壊されない」 を silicon で verify = 分離設計成立 = v0.3+ (envelope detector + 実 coil) への 基盤完成。
| 要素 | v0.1 (STEP 1591) | v0.2 (STEP 1597) |
|---|---|---|
| Manchester encoder | ✓ | ✓ (同一) |
| Manchester decoder | ✓ | ✓ (同一) |
| Internal loopback | Manchester 生 stream | Manchester 生 stream (同一) |
| Carrier oscillator | — | 105.5 kHz (27M/256、 counter[7] toggle) |
| TX gating | — | tx_gated = tx_manchester & carrier |
| External carrier-gated pin | — | GPIO 27 (オシロで burst 観測可) |
| External raw pin | — | GPIO 25 (生 Manchester、 比較用) |
| LED3 | — | carrier activity 低速 sample |
| LUT / FF | 63 / 53 | 94 / 76 (+50% / +43%) |
| Nano 9K 使用率 | < 1% / < 1% | 2% / 2% |
| UserCode | 0x0000E28C | 0x00006D68 |
Program via STEP 1596 wrapper:
scripts/gowin-program-verify.sh -f impl/pnr/inductive_coil_v02.fs
attempt 1 result:
programmed User Code: 0x00006D68
Status Code: 0x0003F020
Cost 2.95 second(s)
✅ MATCH — configuration OK (fs=0x00006D68 == prog=0x00006D68)
✅ SUCCESS after 1 attempt(s)
藤本さん目視:
// 105.5 kHz carrier oscillator (27M/256、 counter[7] toggle) reg [7:0] carrier_counter = 8'd0; always @(posedge clk) carrier_counter <= carrier_counter + 8'd1; wire carrier = carrier_counter[7]; // AND gate = bit HIGH の間だけ 105 kHz burst wire tx_gated = tx_manchester & carrier; // External pin (オシロ観測用) assign tx_out_pin = tx_gated; // carrier-gated assign tx_raw_pin = tx_manchester; // 生 Manchester (比較)
// Internal loopback は carrier gating 前 の Manchester 生 stream を そのまま流す wire rx_manchester_internal = tx_manchester; // NOT tx_gated // = 「decoder は carrier 有無に 関わらず 動く」 // = carrier layer が 上位 stack から 独立 // = 実 coil 経由の envelope detector (v0.3+) を挟んだ時、 // 同じ decoder が 復元 stream に対して 動作するはず
LED2 常時点灯 = 分離設計が silicon で成立する 証拠。 v0.3+ で envelope detector 経由に切替えた時、 decoder は無変更で動くはず。
| pin | signal | 期待 |
|---|---|---|
| LED1 (10) | heartbeat_counter[24] | ~0.8 Hz 点滅 |
| LED2 (11) | ~match | 常時点灯 (安定 ON) ← silicon で verify ✅ |
| LED3 (13) | tx_manchester sampled @ ~412 Hz | 目視不明瞭 (fast flicker or 中間輝度)、 オシロ本命 |
| GPIO 25 | tx_raw_pin | 3.29 kbps Manchester 波形 (オシロ) |
| GPIO 27 | tx_out_pin (gated) | bit HIGH 期間中に 105.5 kHz burst (オシロ)、 chat-Claude 「非接触結合 carrier」 実体 |
| Spec layer / role | v0.1 | v0.2 |
|---|---|---|
| receiver | (loopback) | (loopback) |
| decoder | ✓ | ✓ |
| output | ✓ | ✓ |
| carrier gating (100 kHz) | — | ✓ TX 側 |
| envelope detector | — | — (v0.3+) |
| CRC-8 | — | — (defer) |
| 32-bit frame + preamble | — | — (defer) |
| 実 coil 空中経由 | — | — (v0.3+) |
rx_manchester_internal = envelope_output(tx_gated) に切替 = 実 coil 経由 に 近い verifyhardware/phase-c/15-nano9k-inductive-coil-v02-carrier/inductive_coil_v02.v (~140 line)tang_nano_9k.cst (clk=52, LED1=10, LED2=11, LED3=13, GPIO=25/27/28)build.tclimpl/pnr/inductive_coil_v02.fs (UserCode 0x00006D68)