Zusammenarbeit
KUNST
SCHÖNHEIT & WELLNESS
HANDWERK
KULTUR & GESCHICHTE
UNTERHALTUNG
UMFELD
ESSEN & GETRÄNKE
REVERSE ENGINEERING
WISSENSCHAFTEN
SPORT
TECHNOLOGIE
WEARABLES

English
Youblob (simulation output) · CC0
Der On-Chip-SRAM: Ein atmendes Licht, gespeichert im eigenen Speicher des Chips
Die Vorlage von wafer.space enthält in ihrem Beispieldesign zwei SRAM-Makros mit je 512 Byte und lässt sie ausgeschaltet. Ein Makro ist ein fertiger Speicherblock aus dem PDK: 4.096 statische Speicherzellen, einmal mit ihrem Adressdecoder und ihren Leseschaltungen entworfen, die man als Ganzes platziert, statt sie aus Gattern aufzubauen.
Diese Stufe schaltet einen davon ein. Der PWM-Dimmer aus der vorherigen Stufe spielt nun ein Muster ab: Ein Mikrocontroller schreibt einmalig 256 Byte über die Pads in den Chip, und danach liest der Chip sie selbstständig Byte für Byte, Schritt für Schritt, als Helligkeit eines langsam atmenden Lichts zurück.
Der Kern und sein Testbench wurden für diese Blaupause mit Icarus Verilog 12.0, cocotb 2.1.0 und dem eigenen Simulationsmodell des PDK für das SRAM-Makro ausgeführt: Der Ausgang folgte der gespeicherten Tabelle über 600 PWM-Perioden. Das Bild ist die eigene Ausgabe dieser Simulation, ein Balken pro Periode. Die ESP32-Skizze, die die Tabelle lädt, wurde für diese Blaupause kompiliert; es gibt noch keinen Chip, auf dem sie laufen könnte.
Erfahren
Ein Abend, plus der Chip
Anweisungen
1
1
Das Muster, das Timing und die Größe
Das Muster, das Timing und die Größe
Jupyter-Notebook wird geladen …
2
2
Was jedes der 4.096 Bits ist
Was jedes der 4.096 Bits ist
Der eingebettete Bauplan zeigt, wie ein Bit statischen Speichers sich selbst hält: eine Schleife aus zwei Invertern. Das Makro in dieser Stufe besteht aus 4.096 Bits statischen Speichers in einem Array.
3
3
Die Pins des Makros und drei Dinge, die sein Modell aussagt
Die Pins des Makros und drei Dinge, die sein Modell aussagt
gf180mcu_fd_ip_sram__sram512x8m8wm1 speichert 512 Bytes. Seine Pins: CLK; A, eine 9-Bit-Adresse; D, das zu schreibende Byte; Q, das gelesene Byte. Die drei Steuersignale sind alle aktiv LOW. CEN bei 0 schaltet den Speicher ein. GWEN bei 0 macht die Taktflanke zu einem Schreibvorgang, bei 1 zu einem Lesevorgang. WEN hat ein Bit pro Datenbit, und eine 0 erlaubt das Schreiben dieses Bits, sodass ein Schreibvorgang einige Bits eines Bytes ändern und die anderen unverändert lassen kann.
Das Simulationsmodell des PDK zeigt drei wissenswerte Punkte. Erstens funktioniert der Speicher erst, nachdem CEN von 1 auf 0 gewechselt hat; das Modell gibt andernfalls "CEN is not reset, memory is not operational" aus, daher hält der Kern CEN während des Resets auf 1 und senkt es danach ab. Zweitens liefert ein Lesevorgang mem[A] kurz nach der Taktflanke, die A abgetastet hat, auf Q, sodass die Daten einen Takt später bereitstehen. Drittens startet das Modell mit jedem Byte auf 0. Ein echter Chip tut das nicht: sein SRAM startet in dem Zustand, den jede Zelle beim Einschalten zufällig annimmt, daher muss das Design schreiben, bevor es liest.
Das Beispiel der Vorlage setzt CEN auf 1, sodass seine beiden Makros abgeschaltet sind. Seine Timing-Dateien geben die minimale Taktperiode des Makros mit 6,6 ns im typischen 5-V-Eckfall und 18,3 ns im langsamen 3,0-V-, 125-°C-Eckfall an, beide deutlich innerhalb der 40 ns der Vorlage.
4
4
The core
The core
src/chip_core.sv for the pattern player, with the template's port list unchanged plus one parameter, HOLD_LOG2. Input pad 0 enables, pad 1 selects LOAD mode, pad 2 is the write strobe; bidirectional pads 0 to 7 carry the byte, pad 8 the PWM. The LOAD and strobe pads are passed through two flip-flops before use, a synchroniser: they change whenever the outside world likes, not in step with the chip's clock, and a flip-flop caught mid-change can hover between 0 and 1 for a while. In play mode, each time HOLD_LOG2 periods have passed, the byte the SRAM has been reading becomes the new duty and the address moves on.
chip_core.svsystemverilog
Benötigte Werkzeuge:
Desktop-Computer5
5
The test
The test
test_pattern.py builds the core with the PDK's SRAM model, gf180mcu_fd_ip_sram__sram512x8m8wm1.v, at the template's 25 MHz and with HOLD_LOG2 = 0 so the whole table plays in 256 periods. It loads the table through the pads the way the ESP32 will, then counts the high clocks in each of 600 PWM periods and requires them to follow the table from exactly one starting point. A second test loads again and checks the new pattern replaced the old.
test_pattern.pypython
Benötigte Werkzeuge:
Desktop-Computer6
6
Was die Simulation ausgegeben hat
Was die Simulation ausgegeben hat
Lauf für diesen Blueprint mit Icarus Verilog 12.0 und cocotb 2.1.0:
-------- MESSAGE: CEN ist gerade zurückgesetzt, Speicher ist betriebsbereit ---------
test_pattern.test_plays_the_table PASS (600 Perioden, Tabelle passt an genau einem Offset)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
Um zu beweisen, dass der Test fehlschlagen kann, wurde WEN von 8'b0 auf 8'hFF geändert, der klassische Fehler mit einem active-low-Pin: jedes Bit maskiert, nichts geschrieben, eine Tabelle aus Nullen. Beide Tests schlugen fehl, und der Kern wurde wiederhergestellt.
Die erste Zeile ist die eigene Meldung des SRAM-Modells: Der Kern hat CEN nach dem Reset heruntergezogen, wie es das Modell verlangt.
7
7
Load it from an ESP32
Load it from an ESP32
Once the chip is on its breakout board, this sketch writes the table. Eight GPIOs carry the byte, three more drive LOAD, the strobe and enable, and an LED with a 330 ohm resistor from pad 8 to ground shows the breath. Each level is held for 1 microsecond, 25 of the chip's clocks, so the synchroniser always sees it. The sketch then does nothing: the pattern lives in the chip. It is lost when the chip loses power, so send r over serial to load it again.
The ESP32 is a 3.3 V part and its inputs are not 5 V tolerant. The sketch only drives the chip and never reads from it. The template's default libraries are the 5 V ones; before you connect, check in the I/O library's documentation that 3.3 V is a valid logic high for your chip's inputs, or build with the 3.3 V libraries, as the template's README shows. The sketch compiles for the ESP32 with the Arduino ESP32 core 3.3.12; it has not been run, because the chip does not exist yet.
load_pattern.inocpp
Materialien für diesen Schritt:
Eigener ASIC-Die1 Stück
Leiterplatte1 Stück
5-mm-LED1 Stück
330-Ohm-Widerstand1 StückBenötigte Werkzeuge:
ESP32-Entwicklungsboard
Steckbrett
Steckbrücken
Desktop-Computer8
8
Ein Muster, das nicht gespeichert wird oder nicht abgespielt werden kann
Ein Muster, das nicht gespeichert wird oder nicht abgespielt werden kann
Fehlerbehebung bei SRAM-Mustern.
Flow
Loading...
9
9
Quellen und ehrliche Grenzen
Quellen und ehrliche Grenzen
**Quellen**, abgerufen am 29. September 2026: die GF180MCU PDK beim Commit, den die Vorlage festlegt (gf180mcuD, f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, aus den fossi-foundation-ciel-Releases; Apache-2.0): das SRAM-Modell gf180mcu_fd_ip_sram__sram512x8m8wm1.v, dessen LEF für den Umriss und dessen Timing-Dateien für die minimale Taktperiode; die Timing-Datei der Standardzellbibliothek für die Fläche des Flip-Flops. Das Repository wafer-space/gf180mcu-project-template (src/chip_core.sv, src/chip_top.sv, README.md, librelane/config.yaml; Apache-2.0).
**Ehrliche Grenzen.** Die Simulation erfolgt auf der Ebene chip_core, mit dem eigenen Modell des SRAM, jedoch ohne Pad-Ring, Synthese oder Layout, und die Timing-Prüfungen des Modells entscheiden hier nichts. Die Skizze ESP32 wurde kompiliert, aber nicht ausgeführt. HOLD_LOG2 war im Test 0, damit sie terminiert; der Chip würde 9 verwenden, ein Atemzug von etwa 1,3 s.
Materialien
4- 1 StückPlatzhalter
- 1 StückPlatzhalter
- Platzhalter
- 1 StückPlatzhalter
Benötigte Werkzeuge
4- Platzhalter
- Platzhalter
- 1 vendor sell this, none ship to you yetPlatzhalter
- 3 vendors sell this, none ship to you yetPlatzhalter
Verwandte Blueprints
Diese Blueprints teilen Wissen — Techniken, Materialien oder Prinzipien
CC0 Gemeinfrei
Dieser Blueprint ist unter CC0 veröffentlicht. Sie dürfen dieses Werk für jeden Zweck frei kopieren, ändern, verbreiten und verwenden, ohne um Erlaubnis zu fragen.
Unterstützen Sie den Maker, indem Sie Produkte über seinen Blueprint kaufen, wo er eine Maker-Provision von Anbietern festgelegt, verdient. Oder erstellen Sie eine neue Iteration dieses Blueprints und verbinden Sie ihn in Ihrem eigenen Blueprint, um Einnahmen zu teilen.



