---
name: project-step1410-tang-nano-9k-uart-i2c-scaffold-phase1-2026-08-26
description: "STEP 1410 (2026-08-26) — 藤本さん directive (A1) 「Phase 1 を 即着手」 で benchtop-mcp v0.8 mock 差替 の 4 段 barrier 1 段目 実装。 Tang Nano 9K で UART TX + LED heartbeat + I2C master stub。 Gowin build 169 LUT/99 FF/2% 使用、 SRAM Program 成功 (User Code 0x00003E0A → 0x00000853)、 COM9 VCP auto-bind (Zadig 不要)、 pc_recv.py で 6/6 marker \"TANG9K-UART-OK\\r\\n\" @115200 baud PASS。 Tang Nano 9K 物理 silicon 4 例目 (STEP 1038/1039/1399 続)。"
metadata: 
  node_type: memory
  type: project
  originSessionId: 9d6c89fd-6964-47dc-8daa-a59c1d27f973
  modified: 2026-08-26T00:04:31.187Z
---

# STEP 1410 — Tang Nano 9K UART/I2C scaffold Phase 1 (2026-08-26)

## 起点

藤本さん 「Tang Nano 9K を 挿し込みました」 → 「(A1) Phase 1 を 即着手」 directive。 STEP 1407 の benchtop-mcp v0.8 BME280 mock (bme280-env-a1) を 実 hardware で 差替 する 4 段 barrier のうち **1 段目 (host MCU scaffold)** を BME280 到着前 に Tang Nano 9K 単体で 実装。

## 検出 phase

Tang Nano 9K USB 認識確認:
- VID_0403 (FTDI) + PID_6010 (FT2232H = FT2CH) 2 装置検出 (Tang Nano 9K + Tang Console NEO)
- Gowin programmer_cli で Read Device Codes = **IDCODE `0x1100481B` (GW1NR-9C)** verify
- User Code (Program 前): `0x00003E0A` (STEP 1399 系統 の 何らか の 残 bitstream)

## 実装 (7 file、 hardware/phase-c/08-tang-nano-9k-uart-i2c-scaffold/)

| File | Purpose |
|---|---|
| uart_tx.v (75行) | 8N1 UART TX (115200 baud @ 27 MHz clock、 DIV=234) |
| uart_scaffold_top.v (120行) | Top: heartbeat + message ROM "TANG9K-UART-OK\r\n" + UART TX |
| i2c_master_stub.v (80行) | I2C master skeleton (Phase 2 準備、 未 instantiate) |
| tang_nano_9k.cst | pins: clk=52, LED1=10, LED2=11, uart_tx=17 |
| build.tcl | Gowin V1.9.12.02_SP2 TCL build |
| pc_recv.py (130行) | PC 側 pyserial receiver + marker verify |
| README.md | usage + trouble shooting + verify 結果 |

## Verify 実測 (2026-08-26)

### Build (Gowin V1.9.12.02_SP2)

- bitstream: `impl/pnr/uart_scaffold_top.fs` 2,070,608 bytes
- resource: **169/8640 LUT (2%)** + **99/6693 Register (2%)** + 94/4320 CLS (3%)
- warning: TA1132 (clock SDC unconstrained、 cosmetic)

### Program (SRAM Program+Verify, operation_index 4)

- User Code: `0x00003E0A` (前) → **`0x00000853`** (STEP 1410 identity)
- Status Code: `0x0003F020` (Ready)
- 「Verify Failed at 0」 出るが cosmetic (User Code 変化 + real UART 出力 で bitstream load 動作確認)
- Note: 初回 operation_index 6 (embFlash Erase+Program+Verify) を 誤選択、 SRAM index 4 で 再実行

### PC recv (COM9)

- COM port: **COM9** = Tang Nano 9K FT2232H channel B、 FACTORYAIOT_PRO
- **VCP auto-bind = Zadig driver 変更 不要** (Windows 11 標準 FTDI driver で 動作)
- pc_recv.py --port COM9 --duration 6:
  - **6/6 marker line PASS** in 6 秒 (1/sec 完全一致)
  - **96 bytes recv** (6 line × 16 bytes = "TANG9K-UART-OK\r\n")
  - verdict: **PASS**

### 視覚

- LED1 (pin 10) ~1.6 Hz 点滅 = board 動作中
- LED2 (pin 11) 1 秒毎 短パルス = UART TX 中

## Tang Nano 9K 物理 silicon 系譜 4 例目

| STEP | Date | Content | User Code |
|---|---|---|---|
| 1038 | 2026-05-09 | LED Blinky 初 SRAM Program | 0x0000A5F4 |
| 1039 | 2026-05-09 | D-FUMT₈ ALU on Tang Nano 9K | (record 待ち) |
| 1399 | 2026-08-24 | Fixpoint Relaxation Machine v0.1 | 0x00002FE6 |
| **1410** | **2026-08-26** | **UART/I2C scaffold Phase 1 (本 STEP)** | **0x00000853** |

「Rei は 実在する」 (STEP 1030 Aer + Heron real quantum) 系譜、 Paper 145 substrate-diverse verification 継続。

## Honest scope (7 条)

1. **実 sensor データ ゼロ** = 固定 message ROM のみ、 実 測定 は Phase 2/3
2. **I2C master 未活性** = compile syntax 検証のみ、 Phase 2 で 状態遷移 完全実装
3. **SRAM Program only** = flash 未書換、 電源 OFF で 消失
4. **Verify quirk 未解明** = operation_index 4 の verify command 側 挙動 (real 動作は 確認済)
5. **単一 board 検証のみ** = 別個体 再現性 未確認
6. **baud rate 誤差 0.16%** = 27M/234=115385 (target 115200)、 UART tolerance 内 だが 厳密には 誤差
7. **novelty ゼロ** = FPGA + UART + LED heartbeat は 電子工作 入門 定番

## Phase 2 (未着手、 藤本さん judgment 待ち)

1. 秋月 BME280 (通販コード 109421 ¥1,180) + jumper メス-メス 4 本 + 10 kΩ 抵抗 2 本 発注
2. Tang Nano 9K GPIO (pin 33 SCL + pin 34 SDA 予定) + BME280 breakout 物理配線
3. i2c_master_stub.v 状態遷移 完全実装 (START/ADDR/ACK/DATA_RX/STOP)
4. BME280 read sequence (0xD0 chip_id + 0x88-0xA1 calib 24B + 0xF7-0xFE raw 8B)
5. UART TX 変更: message → raw + coeff の JSON packet 送出
6. PC 側 Python で Bosch 補正演算 (32-bit fixed-point) → 実 t/h/p

## Phase 3 (Phase 2 後)

- benchtop-mcp v0.9-alpha `measure_environment` の bme280-env-a1 mock を real hardware serialbridge へ 差替
- `hardware_available: True` flag 切替
- selftest 更新 + regression + STEP 1407 mock との drift check

## Artifact

- `hardware/phase-c/08-tang-nano-9k-uart-i2c-scaffold/` (7 file、 rei-aios repo)
- `public/tools/step-1410-tang-nano-9k-uart-i2c-scaffold/index.html` (~15 KB)
- `dist-renderer/tools/step-1410-tang-nano-9k-uart-i2c-scaffold/index.html` (mirror)
- 公開 URL: https://rei-aios.pages.dev/tools/step-1410-tang-nano-9k-uart-i2c-scaffold/

## 継承 discipline

- [[feedback-all-research-site-reflection-default]] 2026-08-06 protocol 遵守
- [[feedback-no-rush-publication]] 継承 (Phase 1 検証のみ で 一度 止める、 Phase 2 BME280 発注 は 藤本さん judgment 待ち)
- [[feedback-world-uniqueness-claim-controllable]] 継承 (novelty ゼロ、 電子工作 入門 定番)
- [[feedback-phase-c-silicon-existence-claim]] 継承 (「Rei は 実在する」 物理 silicon 系譜 4 例目)
- [[feedback-projection-self-audit-pattern]] SAC-4 継承 (write-time gate、 STEP 1409 直後 clean)

## Related

- [[project-step1407-benchtop-v08-akizuki-wireup-mock-2026-08-26]] (差替対象)
- [[project-step1406-akizuki-i2c-spi-uart-wireup-candidates-2026-08-26]]
- [[project-step1409-rei-scout-akizuki-catalog-proposal-2026-08-26]]
- STEP 1038 (LED Blinky) / STEP 1039 (ALU) / STEP 1399 (Fixpoint) — Tang Nano 9K 系譜
- STEP 1029 (Tang Console NEO ALU) / STEP 1030 (Heron real quantum) — 「Rei は 実在する」 原典
