Skip to content
StartseiteWebAppsDokuÜber uns
🌐 Auto English 简体中文 繁體中文 Español Français Русский العربية Português Deutsch 日本語 한국어 हिन्दी

WaveDrom

WaveDrom ist eine JavaScript-Bibliothek, die digitale Timing-Diagramme aus JSON-Beschreibungen rendert. Sie wird haufig in der Hardware-Designdokumentation, FPGA-Entwicklung und Embedded-Systems-Technik eingesetzt, um Signalverhalten, Busprotokolle und Taktdomanen zu veranschaulichen.

In Moraya umschliessen Sie Ihr WaveDrom-JSON in einem eingehegten Codeblock mit dem Sprach-Tag wavedrom, und der Editor rendert automatisch ein interaktives Timing-Diagramm.

Die vollstandige Syntaxreferenz finden Sie in der offiziellen WaveDrom-Dokumentation.

Syntaxubersicht

Ein WaveDrom-Diagramm wird als JSON-Objekt definiert. Der primare Schlussel ist signal, der ein Array von Signaldefinitionen enthalt. Jedes Signal hat:

Wellenzeichen

ZeichenBedeutung
0Niedriger Logikpegel
1Hoher Logikpegel
xUndefiniert / beliebig
zHochohmig
=Datenwert (verwendet nachstes Element aus dem data-Array)
2-9Benannte Datenwerte mit unterschiedlichen Farben
pPositive Taktflanke
nNegative Taktflanke
PPositive Taktflanke mit Pfeil
NNegative Taktflanke mit Pfeil
.Vorherigen Zustand fortsetzen
|Lucke / Zeitunterbrechung

Beispiele

Einfaches Taktsignal

Ein grundlegendes positiv-flankengesteuertes Taktsignal uber 8 Zyklen.

```wavedrom
{
  "signal": [
    { "name": "clk", "wave": "p........" },
    { "name": "clk_n", "wave": "n........" }
  ]
}
```

Grundlegende Logiksignale — AND-Gatter-Timing

Zeigt zwei Eingangssignale und den resultierenden AND-Ausgang, wobei der Ausgang nur dann hoch ist, wenn beide Eingange hoch sind.

```wavedrom
{
  "signal": [
    { "name": "clk",    "wave": "p........" },
    { "name": "input_a", "wave": "0.1..0.1." },
    { "name": "input_b", "wave": "0..1..1.." },
    {},
    { "name": "output",  "wave": "0...0.1.0" }
  ]
}
```

Mehrbit-Bus mit Datenbeschriftungen

Ein Datenbus, der sequenzielle Bytewerte ubertragt, synchronisiert mit einem Takt und gesteuert durch ein Valid-Signal.

```wavedrom
{
  "signal": [
    { "name": "clk",   "wave": "p........" },
    { "name": "valid", "wave": "0.1....0." },
    { "name": "data",  "wave": "x.=.=.=.x", "data": ["0xA0", "0xB1", "0xC2"] },
    { "name": "ready", "wave": "1........" }
  ]
}
```

SPI-Kommunikationsprotokoll-Timing

Eine vollstandige SPI-Transaktion, die Chip Select, Takt, MOSI- und MISO-Leitungen beim Austausch eines Datenbytes zeigt.

```wavedrom
{
  "signal": [
    { "name": "CS_n",  "wave": "10......1" },
    { "name": "SCLK",  "wave": "0.p.....0" },
    { "name": "MOSI",  "wave": "x.=.=.=.x", "data": ["MSB", "...", "LSB"] },
    { "name": "MISO",  "wave": "x..=.=.=x", "data": ["MSB", "...", "LSB"] }
  ],
  "config": { "hscale": 2 }
}
```

Speicher-Lesezyklus

Ein SRAM-Lesevorgang, der Adressaufbau, Chip Enable, Output Enable und das Erscheinen der Daten auf dem Bus nach einer Leselatenz zeigt.

```wavedrom
{
  "signal": [
    { "name": "clk",     "wave": "p.........." },
    { "name": "addr",    "wave": "x.=........", "data": ["0x4000"] },
    { "name": "ce_n",    "wave": "1.0........" },
    { "name": "oe_n",    "wave": "1..0......." },
    { "name": "we_n",    "wave": "1.........." },
    { "name": "data",    "wave": "z...=......", "data": ["0xFF"] },
    { "name": "ready",   "wave": "0....1....." }
  ],
  "head": {
    "text": "SRAM Read Cycle"
  }
}
```

Signalgruppen mit Flankenmarkierungen

Gruppiert Signale in logische Kategorien und verwendet Flankenmarkierungen, um kausale Beziehungen zwischen Signalen darzustellen.

```wavedrom
{
  "signal": [
    ["CPU",
      { "name": "req",   "wave": "0.1..0.|.." },
      { "name": "addr",  "wave": "x.3..x.|..", "data": ["A5"] },
      { "name": "wr",    "wave": "0.1..0.|.." }
    ],
    {},
    ["Memory",
      { "name": "ack",   "wave": "0..1.0.|.." },
      { "name": "data",  "wave": "z..4.z.|..", "data": ["D3"] },
      { "name": "ready", "wave": "0...10.|.." }
    ]
  ],
  "edge": [
    "req~>ack", "wr~>data", "ack~>ready"
  ],
  "head": {
    "text": "CPU-Memory Bus Transaction"
  }
}
```