Kerjasama
SENI
KECANTIKAN & KESEJAHTERAAN
KRAFTANGAN
BUDAYA & SEJARAH
HIBURAN
ALAM SEKITAR
MAKANAN & MINUMAN
KEJURUTERAAN TERBALIK
SAINS
SUKAN
TEKNOLOGI
BOLEH PAKAI

English
Youblob (simulation output) · CC0
Makro On-Chip: Cahaya Bernafas yang Disimpan dalam Memori Cip Anda Sendiri
Templat wafer.space dilengkapi dengan dua makro SRAM dalam reka bentuk contohnya, masing-masing 512 bait, dan membiarkannya dimatikan. Makro ialah blok memori siap sedia daripada PDK: 4,096 sel memori statik, dilukis sekali dengan penyahkod alamat dan litar bacaannya, yang anda letakkan secara keseluruhan dan bukannya membina daripada get.
Peringkat ini menghidupkan salah satunya. Pengdim PWM dari peringkat sebelumnya kini memainkan corak: sebuah mikropengawal menulis 256 bait ke dalam cip melalui pad-padnya, sekali sahaja, dan selepas itu cip membaca semula bait-bait tersebut dengan sendirinya, satu bait setiap langkah, sebagai kecerahan lampu yang bernafas perlahan-lahan.
Teras dan testbench-nya dijalankan untuk cetak biru ini dengan Icarus Verilog 12.0, cocotb 2.1.0 dan model simulasi milik PDK bagi makro SRAM: output mengikuti jadual tersimpan selama 600 tempoh PWM. Gambar tersebut ialah output simulasi itu sendiri, satu bar setiap tempoh. Lakaran ESP32 yang memuatkan jadual itu telah disusun untuk cetak biru ini; belum ada cip untuk menjalankannya.
Lanjutan
Sebuah petang, serta cip
Arahan
1
1
Corak, masa dan saiznya
Corak, masa dan saiznya
Memuatkan buku nota Jupyter…
2
2
Apa yang diwakili oleh setiap satu daripada 4,096 bit
Apa yang diwakili oleh setiap satu daripada 4,096 bit
Gambar rajah terbenam menunjukkan bagaimana satu bit memori statik mengekalkan dirinya: satu gelung dua penyongsang. Makro dalam anak tangga ini ialah 4,096 bit memori statik dalam satu tatasusunan.
3
3
Pin makro, dan tiga perkara yang dinyatakan oleh modelnya
Pin makro, dan tiga perkara yang dinyatakan oleh modelnya
gf180mcu_fd_ip_sram__sram512x8m8wm1 menyimpan 512 bait. Pinnya: CLK; A, alamat 9-bit; D, bait untuk ditulis; Q, bait yang dibaca. Ketiga-tiga kawalan semuanya aktif LOW. CEN pada 0 menghidupkan memori. GWEN pada 0 menjadikan tepi jam sebagai tulis, pada 1 sebagai baca. WEN ialah satu bit bagi setiap bit data, dan 0 membenarkan bit itu ditulis, jadi satu tulisan boleh mengubah sebahagian bit dalam bait dan membiarkan yang lain tidak berubah.
Membaca model simulasi PDK menunjukkan tiga perkara yang patut diketahui. Pertama, memori hanya berfungsi selepas CEN beralih dari 1 ke 0; jika tidak, model mencetak "CEN is not reset, memory is not operational", jadi teras memegang CEN pada 1 semasa tetapan semula dan menurunkannya selepas itu. Kedua, bacaan memberikan mem[A] pada Q sejurus selepas tepi jam yang mensampel A, jadi data sedia satu kitaran jam kemudian. Ketiga, model bermula dengan setiap bait pada 0. Cip sebenar tidak: SRAM dihidupkan dengan memegang apa sahaja yang jatuh ke dalam setiap sel, jadi reka bentuk mesti menulis sebelum membaca.
Contoh templat menetapkan CEN kepada 1, jadi dua makronya dimatikan. Fail pemasaannya memberikan tempoh jam minimum makro sebagai 6.6 ns pada sudut tipikal 5 V dan 18.3 ns pada sudut perlahan 3.0 V, 125 °C, kedua-duanya jauh dalam had 40 ns templat.
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
Alatan diperlukan:
Komputer Meja5
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
Alatan diperlukan:
Komputer Meja6
6
Apa yang dicetak oleh simulasi
Apa yang dicetak oleh simulasi
Jalankan untuk cetak biru ini dengan Icarus Verilog 12.0 dan cocotb 2.1.0:
-------- MESSAGE: CEN baru sahaja diset semula, memori beroperasi ---------
test_pattern.test_plays_the_table PASS (600 tempoh, jadual sejajar pada tepat satu ofset)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
Untuk membuktikan ujian boleh gagal, WEN ditukar daripada 8'b0 kepada 8'hFF, kesilapan klasik dengan pin aktif-rendah: setiap bit ditutup topeng, tiada apa ditulis, jadual sifar. Kedua-dua ujian gagal, dan teras dikembalikan semula.
Baris pertama ialah mesej model SRAM itu sendiri: teras merendahkan CEN selepas set semula, seperti yang dikehendaki model.
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
Bahan untuk langkah ini:
Cip ASIC khusus1 keping
Papan litar bercetak1 keping
LED 5 mm1 keping
Perintang 330 ohm1 kepingAlatan diperlukan:
Papan Pembangunan ESP32
Papan Roti
Wayar Pelompat
Komputer Meja8
8
Corak yang tidak akan disimpan atau tidak akan dimainkan
Corak yang tidak akan disimpan atau tidak akan dimainkan
Penyelesaian masalah corak SRAM.
Flow
Loading...
9
9
Sumber dan batasan yang jujur
Sumber dan batasan yang jujur
**Sumber**, dibaca 29 September 2026: GF180MCU PDK pada commit yang dipin oleh templat (gf180mcuD, f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, daripada lepasan fossi-foundation ciel; Apache-2.0): model SRAM gf180mcu_fd_ip_sram__sram512x8m8wm1.v, LEF-nya untuk rangka luar, dan fail masanya untuk tempoh jam minimum; fail masa perpustakaan sel piawai untuk luas flip-flop. Repositori wafer-space/gf180mcu-project-template (src/chip_core.sv, src/chip_top.sv, README.md, librelane/config.yaml; Apache-2.0).
**Had kejujuran.** Simulasi dijalankan pada aras chip_core, dengan model SRAM itu sendiri tetapi tanpa gelang pad, sintesis atau reka letak, dan semakan masa model tidak memutuskan apa-apa di sini. Lakaran ESP32 telah dikompil, bukan dijalankan. HOLD_LOG2 ialah 0 dalam ujian supaya ia dapat selesai; cip itu akan menggunakan 9, satu nafas kira-kira 1.3 s.
Bahan
4- 1 kepingPemegang Tempat
- 1 kepingPemegang Tempat
- Pemegang Tempat
- 1 kepingPemegang Tempat
Alatan Diperlukan
4- Pemegang Tempat
- Pemegang Tempat
- 1 vendor sell this, none ship to you yetPemegang Tempat
- 3 vendors sell this, none ship to you yetPemegang Tempat
Blueprint berkaitan
Blueprint ini berkongsi pengetahuan — teknik, bahan atau prinsip
CC0 Domain Awam
Blueprint ini dikeluarkan di bawah CC0. Anda bebas menyalin, mengubah, mengedar, dan menggunakan karya ini untuk sebarang tujuan, tanpa meminta kebenaran.
Sokong Pembuat dengan membeli produk melalui Blueprint mereka di mana mereka memperoleh Komisen Pembuat ditetapkan oleh Penjual, atau cipta iterasi baru Blueprint ini dan sertakan ia sebagai sambungan dalam Blueprint anda sendiri untuk berkongsi hasil.



