Zum Hauptteil springen

Erste Schritte mit der Wokwi Custom Chips C API

warnung

Die Chips API ist momentan in der Beta. Bitte teile deine Tests und gib im #custom-chips Kanal auf unserem Discord Server Feedback.

Einleitung

Die Custom Chips API ermöglicht es dir, neue Simulationsmodelle zu erstellen und die Funktionalität von Wokwi zu erweitern. Du kannst neue Sensoren, Displays, Speicher, Testgeräte und sogar eigene Hardware simulieren.

Benutzerdefinierte Chips werden normalerweise in C erstellt, aber du kannst jeder Sprache nutzen, die zu WebAssembly kompiliert wird (z.B. Rust). Zusätzlich gibt es experimentellen Support für Chips in Verilog.

Tutorials

Erste Schritte

Öffne ein beliebiges Wokwi Projekt (oder erstelle ein neues Projekt) und klicke auf das blaue "+" im Editor. Wähle "Custom Chip" in der Liste aus.

Gib im Dialog den Namen des Chips sowie die Sprache ein. Als Sprache wird C empfohlen. Klicke anschließend auf "Create Chip", um den Chip zu erstellen.

Der Chip wird zur Grafik hinzugefügt und diese beiden Dateien werden erstellt:

  • eine JSON Datei mit den Pins und Einstellungen des Chips (Name, Autor, etc.)
  • eine C (bzw. Rust/Verilog) Datei mit dem Code für den Chip

Die JSON Datei hat Standardmäßig vier Pins ("VCC", "GND", "IN", "OUT"). Die Name und Anzahl der Pins kannst du in der JSON Datei jederzeit ändern.

Am Anfang besteht die C Datei nur aus Beispielcode. Du kannst deinen Code in der chip_init() Funktion hinzufügen. Jeder Chip ruft diese Funktion am Anfang auf und du kannst sie nutzen, um den Zustand, Timer oder Aktionen an Pins zu definieren.

Der Beispielcode enthält auch die Struktur chip_state_t, in der du die Zustände speichern kannst, die dein Chip braucht. Du kannst das Feld user_data von i2c_config_t, timer_config_t, etc. nutzen, um Pointer zur Stuktur zu speichern.

Benutzerdefinierten Chip debuggen

Du kannst mit der Standard C Funktion printf() Debug Nachrichten senden. Achte darauf, stdio.h einzubinden. Die Nachrichten werden im "Chips Console" Tab unter der Konsole erscheinen:

Chips Console

Zusätzlich kannst du den Wokwi Logic Analyzer nutzen, um die Kommunikation mit dem Chip zu debuggen.

tipp

Achte darauf, einen Zeilenumbruch ("\n") am Ende von jeder printf() Nachricht einzufügen. Der Simulator zeigt Nachrichten erst, wenn ein Zeilenumbruch kommt.

Chips API reference 📖

Beispiele

Basics

Kommunikation

  • SPI Chip - A basic ROT13 cipher over SPI
  • UART Chip - A basic ROT13 cipher over UART
  • I2C Chip - Simple counter with interrupt output
  • EEPROM Chip - Simple I2C memory with 256 kbits by Benny Meisels

Displays

Sensoren

Komplexe Chips