inductive-coil v0.2 — 105 kHz carrier gating silicon spike

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) への 基盤完成。

「周波数は 40/60 kHz を避けて 100 kHz 以上にしてください (本物の電波時計への干渉回避)」
— chat-Claude 電波時計 arc 2026-08-30

v0.1 → v0.2 delta

要素v0.1 (STEP 1591)v0.2 (STEP 1597)
Manchester encoder✓ (同一)
Manchester decoder✓ (同一)
Internal loopbackManchester 生 streamManchester 生 stream (同一)
Carrier oscillator105.5 kHz (27M/256、 counter[7] toggle)
TX gatingtx_gated = tx_manchester & carrier
External carrier-gated pinGPIO 27 (オシロで burst 観測可)
External raw pinGPIO 25 (生 Manchester、 比較用)
LED3carrier activity 低速 sample
LUT / FF63 / 5394 / 76 (+50% / +43%)
Nano 9K 使用率< 1% / < 1%2% / 2%
UserCode0x0000E28C0x00006D68

Silicon verify (2026-08-30)

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)

藤本さん目視:

Design

Carrier gating

// 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 (比較)

分離設計 (critical)

// 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 は無変更で動くはず。

期待動作

pinsignal期待
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 25tx_raw_pin3.29 kbps Manchester 波形 (オシロ)
GPIO 27tx_out_pin (gated)bit HIGH 期間中に 105.5 kHz burst (オシロ)、 chat-Claude 「非接触結合 carrier」 実体

Honest scope

STEP 1578 spec との対応 (v0.2 進捗)

Spec layer / rolev0.1v0.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+)

V0.3+ candidate (defer)

Files