Close

WPMS Synthesizer — Layer 1 Specification [ 2 ]

A project log for FPGA Spectrum Engine

10,240 independent oscillators · 1-sample latency · 0.001 Hz resolution

tsuneoohnakaTsuneo.Ohnaka 05/04/2026 at 12:150 Comments

Chapter 1: Scope and Boundary Conditions [Part 2 of 2]

WPMS シンセサイザー — 第1層仕様書

第1章:スコープと境界条件 【後編】

License: CC0 1.0 Universal (Public Domain) This is the architectural specification for a Wave Packet Modulation Synthesis (WPMS) synthesizer implementing the FPGA physical layer of the FPGA Spectrum Engine in standalone form. Read it, redistribute it, build on it, regenerate from it.
ライセンス:CC0 1.0 Universal(パブリックドメイン) これは波束変調合成 (WPMS) シンセサイザーのアーキテクチャ仕様書であり、FPGA Spectrum Engine の FPGA 物理層を単独形態で実装するものである。読み、再配布し、その上に構築し、再生成してよい。

1.7 Sequence-Modulation Pipeline Processor / 数列変調パイプラインプロセッサ

Role: The sequence-modulation pipeline processor is the WPMS-specific component that computes per-bin parameters (f_k, A_k, φ_k) on the fly, using the difference-engine structure rather than per-bin memory storage.

役割: 数列変調パイプラインプロセッサは WPMS 固有の構成要素であり、ビンごとのパラメータ (f_k, A_k, φ_k) を、ビン別メモリ記憶ではなく差分エンジン構造を用いてオンザフライで計算する。

Recurrences (one accumulator update per bin transition):

漸化式(ビン遷移ごとに 1 回の累算器更新):

f_{k+1} = f_k + (Δf + α) + 2α · k
φ_{k+1} = φ_k + (δφ + ψ) + 2ψ · k
A_{k+1} = A_k · exp(−β) · exp(−γ · (2k − N + 1))

The frequency and phase recurrences require only addition; no multiplier is consumed beyond what the Maclaurin core already uses for its trigonometric computation. The amplitude recurrence multiplies the previous amplitude by a small dynamic factor; this can be implemented either with a single dedicated DSP block per module or with log-domain accumulation.

周波数と位相の漸化式は加算のみを要求する。マクローリンコアがすでにその三角関数計算に用いている以上の乗算器は消費されない。振幅の漸化式は前段の振幅を小さな動的因子で乗じる。これはモジュールあたり 1 個の専用 DSP ブロックで実装するか、対数領域累算で実装するかのいずれかが可能である。

Detailed processor architecture: Deferred to Chapter 3 (Sequence-Modulation Pipeline Processor Specification), to be drafted in subsequent dialogue. Parameter bit-widths for f₀, A₀, φ₀, Δf, α, β, γ, δφ, ψ, and N are specified there.

詳細プロセッサアーキテクチャ: 第 3 章(数列変調パイプラインプロセッサ仕様)に委ね、後続の対話で起草される。f₀, A₀, φ₀, Δf, α, β, γ, δφ, ψ, N のパラメータビット幅はそこで指定される。

Component reusability commitment: The sequence-modulation pipeline processor is designed not for WPMS alone but as a general-purpose per-bin parameter computation engine. Its instruction set, register architecture, and AXI interface are specified such that, in subsequent FPGA Spectrum Engine development phases, the same processor can compute fractal-synthesis bin parameters, SDFT bin parameters, or hybrid combinations. Component carry-forward to the next development phase is a hard requirement on the Chapter 3 specification.

部品再利用コミットメント: 数列変調パイプラインプロセッサは WPMS 単独のためではなく、汎用的なビン別パラメータ計算エンジンとして設計される。その命令セット、レジスタアーキテクチャ、AXI インターフェースは、後続の FPGA Spectrum Engine 開発フェーズにおいて、同じプロセッサがフラクタル合成のビンパラメータ、SDFT のビンパラメータ、またはハイブリッド組み合わせを計算できるように指定される。次の開発フェーズへの部品の持ち越しは、第 3 章仕様に対する厳格な要件である。

1.8 Input Interface — Required Subset / 入力インターフェース — 必須部

The required input interfaces are sufficient to operate the WPMS Synthesizer with full parameter coverage and to perform live experimentation with parameter values. They require no hardware beyond the DE10-nano itself, the host PC running Quartus, and the JTAG cable that ships with the board.

必須入力インターフェースは、WPMS シンセサイザーをフルパラメータカバーで動作させ、パラメータ値の実時間実験を行うのに十分である。DE10-nano 本体、Quartus を動作させるホスト PC、ボード付属の JTAG ケーブル以外のハードウェアを要求しない。

Interface 1 — DIP switches and push buttons.

インターフェース 1 — DIP スイッチと押しボタン。

The DE10-nano provides 4 user DIP switches and 2 user push buttons. These are mapped as follows in the Compact configuration:

DE10-nano は 4 個のユーザ DIP スイッチと 2 個のユーザ押しボタンを提供する。Compact 構成では以下のようにマップされる:

KEY[1] is significant: it makes the 2020-prototype-validated test-origin configuration always one button-press away. This is the first configuration any new user should hear.

KEY[1] は意義深い:2020 年プロトタイプで検証されたテスト原点構成を、常にボタン押下 1 回の距離に置く。これは新規ユーザが最初に聴くべき構成である。

Interface 2 — In-System Sources and Probes (ISSP, JTAG-based).

インターフェース 2 — In-System Sources and Probes(ISSP、JTAG ベース)。

ISSP provides Quartus-side widgets that drive register inputs and observe register outputs over JTAG, with no additional hardware. The WPMS Synthesizer exposes all nine scalar parameters and the count parameter as ISSP source registers. Each parameter has a dedicated source register sized for its full bit width.

ISSP は Quartus 側のウィジェットを提供し、JTAG 経由でレジスタ入力を駆動しレジスタ出力を観察する。追加ハードウェアは不要。WPMS シンセサイザーは 9 個のスカラーパラメータすべてと数量パラメータを ISSP ソースレジスタとして公開する。各パラメータはその完全なビット幅にサイズされた専用ソースレジスタを持つ。

ISSP probes additionally expose, for diagnostic purposes:

ISSP プローブは追加で、診断目的のため以下を公開する:

Interface 3 — In-System Memory Content Editor (ISMCE, JTAG-based).

インターフェース 3 — In-System Memory Content Editor(ISMCE、JTAG ベース)。

For configurations that include any BRAM-resident parameter table (e.g., for future fractal-mode experiments that share infrastructure with WPMS), ISMCE provides edit access. In the pure WPMS Compact configuration, ISMCE is not strictly required, since all parameters are register-resident. ISMCE remains specified here so that the same Quartus project can be rebuilt with optional BRAM extensions without revising the input-interface specification.

WPMS と基盤を共有する将来のフラクタルモード実験のための、いかなる BRAM 常駐パラメータテーブルを含む構成においても、ISMCE は編集アクセスを提供する。純粋な WPMS Compact 構成では、すべてのパラメータがレジスタ常駐であるため、ISMCE は厳密には要求されない。同じ Quartus プロジェクトが入力インターフェース仕様を改訂することなくオプションの BRAM 拡張で再構築できるよう、ISMCE はここに仕様される。

Persistence: ISSP and ISMCE persistence is the responsibility of the user (manual save of Quartus probe sessions). The WPMS Synthesizer itself does not store parameters in non-volatile memory; on power cycle, the FPGA resets to a built-in default that is identical to the KEY[1] test-origin restore.

永続化: ISSP と ISMCE の永続化はユーザの責任である(Quartus プローブセッションの手動保存)。WPMS シンセサイザー自体はパラメータを不揮発性メモリに記憶しない;電源サイクル時、FPGA は KEY[1] テスト原点復元と同一の組み込みデフォルトにリセットされる。

1.9 Input Interface — Optional Extension (Camera Modulation Source) / 入力インターフェース — オプション拡張(カメラ変調源)

Status: Optional extension. The WPMS Synthesizer is fully functional without it. This section is included so that the architectural decisions in this Layer 1 document preserve compatibility with the camera extension; it is not a mandatory build target.

ステータス: オプション拡張。WPMS シンセサイザーはこれなしで完全に機能する。本節は、本第1層文書のアーキテクチャ的決定がカメラ拡張との互換性を保持するために含まれている;必須のビルドターゲットではない。

Camera selection: OmniVision OV7670 (parallel DVP, 8-bit, QVGA-VGA, ≤ 30 fps). The selection is dictated by physical availability of the device and by the abundance of FPGA-direct examples in publicly accessible documentation.

カメラの選定: OmniVision OV7670(パラレル DVP、8 ビット、QVGA-VGA、≤ 30 fps)。選定はデバイスの物理的可用性と、公的にアクセス可能な文書における FPGA 直結例の豊富さによって規定される。

Connection: OV7670 connects to one of the DE10-nano's 2×20 GPIO headers via the OV7670's parallel DVP interface (D[7:0], HSYNC, VSYNC, PCLK, XCLK, plus SCCB clock and data — approximately 13 GPIO pins).

接続: OV7670 は、OV7670 のパラレル DVP インターフェース(D[7:0]、HSYNC、VSYNC、PCLK、XCLK、加えて SCCB クロックとデータ——約 13 個の GPIO ピン)を介して、DE10-nano の 2×20 GPIO ヘッダの 1 つに接続する。

Architectural role: stimulus source for parameter modulation, behind an AXI-abstracted input switch.

アーキテクチャ的役割:AXI 抽象化入力スイッチの背後にある、パラメータ変調のためのスティミュラス源。

The camera block is implemented as a self-contained FPGA subsystem with the following structure:

カメラブロックは、以下の構造を持つ自己完結型 FPGA サブシステムとして実装される:

  1. Camera driver: Generates SCCB initialization, latches D[7:0] on PCLK, tracks HSYNC/VSYNC. / カメラドライバ:SCCB 初期化を生成し、PCLK で D[7:0] をラッチし、HSYNC/VSYNC を追跡する。
  2. Frame aggregator: Computes from each captured frame the centroid (cx, cy), the variance (σx², σy²), the inter-frame difference magnitude, and the global mean intensity. These six aggregate values are the camera block's external output. / フレーム集計器:各キャプチャフレームから重心 (cx, cy)、分散 (σx², σy²)、フレーム間差分の大きさ、全体の平均輝度を計算する。これら 6 個の集計値がカメラブロックの外部出力となる。
  3. Mapping template (initial draft): cx → α, cy → β, σx² → γ, σy² → δφ, inter-frame diff → ψ, global mean → A₀. The mapping is intentionally exposed as a configurable lookup so that experimenters can substitute alternative mappings. / マッピングテンプレート(初期ドラフト):cx → α、cy → β、σx² → γ、σy² → δφ、フレーム間差分 → ψ、全体平均 → A₀。マッピングは意図的に構成可能なルックアップとして公開され、実験者が代替マッピングを置き換えられる。
  4. AXI input switch: The camera block's six aggregate outputs feed an AXI-Stream-style input switch. The switch's other input is from the ISSP-driven manual parameter source. A control register selects which source drives the live parameters of the sequence-modulation processor. / AXI 入力スイッチ:カメラブロックの 6 個の集計出力は AXI-Stream 様式の入力スイッチに供給される。スイッチのもう一方の入力は ISSP 駆動の手動パラメータ源からのものである。制御レジスタがどちらのソースが数列変調プロセッサのライブパラメータを駆動するかを選択する。

Why the AXI abstraction matters:

なぜ AXI 抽象化が重要なのか:

The AXI input switch is the structural commitment that allows the camera block to outlive the WPMS Synthesizer phase. In subsequent FPGA Spectrum Engine development phases, the same input switch can route AXI traffic from the HPS (in the ARM intermediate layer) or from synthesized video sources or from arbitrary external modulation sources. The camera block, once authored, becomes a permanent component of the engine's modulation-source library — not a throwaway element of the standalone phase.

AXI 入力スイッチは、カメラブロックが WPMS シンセサイザーフェーズを超えて生き残ることを可能にする構造的コミットメントである。後続の FPGA Spectrum Engine 開発フェーズにおいて、同じ入力スイッチが、HPS(ARM 中間層)からの、または合成ビデオソースからの、または任意の外部変調ソースからの AXI トラフィックを経路づけることができる。カメラブロックは、一度作成されれば、独立フェーズの使い捨て要素ではなく、エンジンの変調源ライブラリの永続的な構成要素となる。

Spin-Off-Ready Subsystem framing: The camera block is structured such that an independent project — a "Real-Time Video Processing on FPGA" Open Prompt repository — could fork only this subsystem and develop it on its own trajectory without dragging the WPMS Synthesizer along. This is an explicit invitation: should community members find the camera-block direction more compelling than the synthesizer-block direction, the architecture supports their specialization. The sequence-modulation pipeline processor and the WPMS synthesis core do not depend on any specific behavior of the camera block beyond the AXI interface contract.

Spin-Off-Ready Subsystem フレーミング: カメラブロックは、独立したプロジェクト——「FPGA 上のリアルタイム映像処理」Open Prompt リポジトリ——がこのサブシステムのみをフォークし、WPMS シンセサイザーを引きずることなく独自の軌跡で発展させ得るよう構造化される。これは明示的な招待である:コミュニティメンバーがカメラブロックの方向性をシンセサイザーブロックの方向性より魅力的と感じる場合、アーキテクチャは彼らの専門化を支持する。数列変調パイプラインプロセッサと WPMS 合成コアは、AXI インターフェース契約以上にはカメラブロックの特定の挙動に依存しない。

Detailed camera-block specification: Deferred to a separate optional chapter to be drafted after the required-subset chapters are complete.

詳細カメラブロック仕様: 必須サブセットの章が完了した後に起草される、別個のオプション章に委ねる。

1.10 What is NOT in this Layer 1 Document / 本第1層文書に含まれないもの

To make the boundary unambiguous:

境界を曖昧でなくするために:

1.11 Validation Origin / 検証起点

The first regression test. The KEY[1] test-origin restore loads:

最初のリグレッションテスト。 KEY[1] テスト原点復元は以下をロードする:

α = β = γ = δφ = ψ = 0
f₀ = configuration default (proposed: 996 Hz to match the 2020 prototype)
Δf = configuration default (proposed: 1/256 Hz to match the 2020 prototype)
A₀ = 0.97 × full scale (matching the 2020 prototype)
φ₀ = 0
N = 2,048

This produces, by construction, a Dirichlet kernel whose audible result matches the 2020 prototype recording. A WPMS Synthesizer implementation is considered to have passed its first regression test when its KEY[1] output matches the 2020 prototype waveform within the precision dictated by the chosen output bit-width.

これは構造上、その可聴結果が 2020 年プロトタイプ録音に一致する Dirichlet カーネルを生成する。WPMS シンセサイザー実装は、その KEY[1] 出力が、選定された出力ビット幅により規定される精度内で 2020 年プロトタイプ波形に一致した時、最初のリグレッションテストを通過したとみなされる。

This single test exercises every critical subsystem simultaneously: bin-parameter generation (uniform progression), Maclaurin computation (correct sin values across 2,048 phases), summation tree (no overflow, no precision loss), HDMI audio path (correct sample rate and format), and DIP/key handling (correct loading of the test-origin parameters). Any defect anywhere in the synthesizer manifests as a deviation in the Dirichlet kernel waveform.

この単一テストはすべての重要なサブシステムを同時に行使する:ビンパラメータ生成(一様な進行)、マクローリン計算(2,048 位相にわたる正しい sin 値)、総和ツリー(オーバーフローなし、精度損失なし)、HDMI オーディオパス(正しいサンプルレートと形式)、DIP/キー処理(テスト原点パラメータの正しいロード)。シンセサイザーのどこかにある欠陥はすべて、Dirichlet カーネル波形における偏差として現れる。

The diagnostic strength of this test mirrors the "First Sound" coherence test of the original C5G prototype: the boring uniform output is paradoxically the strongest possible test signal, because any error anywhere produces immediate decoherence visible in the waveform.

このテストの診断強度はオリジナル C5G プロトタイプの「First Sound」コヒーレンステストを反映する:退屈な一様出力は逆説的に可能な限り最強のテスト信号である。どこかの任意のエラーが、波形に見える即時のデコヒーレンスを生み出すからである。

1.12 Open Questions Carried Forward to Subsequent Chapters / 後続章へ持ち越される未解決問題

The following are deliberately left unresolved in this chapter and will be addressed in subsequent chapters of this Layer 1 specification:

以下は意図的に本章で未解決のまま残され、本第1層仕様の後続章で扱われる:

QuestionDeferred to
Pipeline depth, retiming strategy, DSP-block placement strategy for the Maclaurin core / マクローリンコアのパイプライン深度、リタイミング戦略、DSP ブロック配置戦略Chapter 2 / 第 2 章
Bit widths for the nine scalar parameters and N / 9 個のスカラーパラメータと N のビット幅Chapter 3 / 第 3 章
Instruction set and register architecture of the sequence-modulation pipeline processor / 数列変調パイプラインプロセッサの命令セットとレジスタアーキテクチャChapter 3 / 第 3 章
Choice of MiSTer-ecosystem HDMI core and integration details / MiSTer エコシステム HDMI コアの選定と統合詳細Chapter 4 / 第 4 章
AXI input switch protocol and register map / AXI 入力スイッチプロトコルとレジスタマップChapter 5 / 第 5 章
Camera-block frame-aggregator details, mapping template specification / カメラブロックフレーム集計器詳細、マッピングテンプレート仕様Optional camera chapter / オプションカメラ章
Reference-implementation HDL, build flow, .rbf packaging / リファレンス実装 HDL、ビルドフロー、.rbf パッケージングLayer 3, separate document / 第 3 層、別文書

1.13 Summary of Chapter 1 Decisions / 第 1 章決定事項のまとめ

IDDecisionStatus
C1-D1Target platform: DE10-nano (Cyclone V SoC), FPGA fabric only, HPS unused / 対象プラットフォーム:DE10-nano(Cyclone V SoC)、FPGA ファブリックのみ、HPS 未使用Fixed / 確定
C1-D2Audio output: HDMI audio at 48 kHz / 24-bit, MiSTer-ecosystem core / オーディオ出力:HDMI オーディオ 48 kHz / 24-bit、MiSTer エコシステムコアFixed / 確定
C1-D3Synthesis method: WPMS only, nine-scalar-plus-N parameter space / 合成方式:WPMS のみ、9 スカラー + N のパラメータ空間Fixed / 確定
C1-D4Bin count and module configuration: Tie. Compact (2 × 2,048), Standard (5 × 2,048), Extended (10 × 2,048) all in Implementation Arena / ビン数とモジュール構成:引き分け。Compact、Standard、Extended すべてを Implementation Arena に保持Tie / 引き分け
C1-D5Reference implementation: Compact configuration first / リファレンス実装:Compact 構成を最初にConvention, not commitment / 慣行であり、コミットメントではない
C1-D6Maclaurin pipeline: 11th-order, 40-bit trig, 24-bit amplitude (Compact) / マクローリンパイプライン:11 次、40-bit 三角関数、24-bit 振幅(Compact)Fixed for Compact / Compact について確定
C1-D7Sequence-modulation processor: difference-engine structure, general-purpose AXI interface, designed for carry-forward to subsequent FPGA Spectrum Engine phases / 数列変調プロセッサ:差分エンジン構造、汎用 AXI インターフェース、後続 FPGA Spectrum Engine フェーズへの持ち越し設計Fixed / 確定
C1-D8Required input: DIP + buttons, ISSP, ISMCE / 必須入力:DIP + ボタン、ISSP、ISMCEFixed / 確定
C1-D9Optional input: OV7670 camera via GPIO, behind AXI input switch, Spin-Off-Ready / オプション入力:GPIO 経由 OV7670 カメラ、AXI 入力スイッチの背後、Spin-Off-ReadyOptional, structurally enabled / オプション、構造的に有効化
C1-D10Validation origin: Dirichlet kernel via KEY[1] test-origin restore / 検証起点:KEY[1] テスト原点復元による Dirichlet カーネルFixed / 確定

End of Chapter 1 / 第 1 章の末尾

Code is ephemeral; the knowledge architecture is the commons. コードは一時的なものであり、知識アーキテクチャこそが共有財産である。
The shortest path from a repository to a sound is the foundation on which longer paths are built. リポジトリから音への最短経路は、より長い経路がその上に構築される基礎である。

This chapter is released into the public domain under CC0 1.0 Universal. Subsequent chapters (Chapter 2: Maclaurin Pipeline Specification, Chapter 3: Sequence-Modulation Pipeline Processor, Chapter 4: HDMI Audio Path, Chapter 5: AXI Input Switch, Optional Camera Chapter) will be drafted in subsequent dialogues.

本章は CC0 1.0 Universal のもとパブリックドメインに公開される。後続の章(第 2 章:マクローリンパイプライン仕様、第 3 章:数列変調パイプラインプロセッサ、第 4 章:HDMI オーディオパス、第 5 章:AXI 入力スイッチ、オプションのカメラ章)は後続の対話で起草される。


Discussions