Pakikipagtulungan
SINING
BEAUTY AT WELLNESS
CRAFTS
KULTURA AT KASAYSAYAN
LIBANGAN
KAPALIGIRAN
PAGKAIN AT INUMIN
REVERSE ENGINEERING
AGHAM
ISPORTS
TEKNOLOHIYA
MGA WEARABLE

English
Youblob (simulation output) · CC0
Ang On-Chip SRAM: Isang Humihingang Ilaw na Nakaimbak sa Sariling Memorya ng Iyong Chip
Ang template ng wafer.space ay may kasamang dalawang SRAM macro sa kanilang halimbawang disenyo, tig-512 bytes bawat isa, at iniwan itong naka-patay. Ang macro ay isang tapos nang bloke ng memorya mula sa PDK: 4,096 na static memory cell, na iginuhit nang isang beses kasama ang kanilang address decoder at read circuit, at inilalagay mo nang buo sa halip na buuin mula sa mga gate.
Binubuksan ng rung na ito ang isa sa mga ito. Ang PWM dimmer mula sa naunang rung ay nagpapatugtog na ngayon ng isang pattern: isinusulat ng microcontroller ang 256 bytes sa chip sa pamamagitan ng mga pad nito, minsan lang, at mula noon ay binabasa ng chip ang mga ito nang mag-isa, isang byte bawat hakbang, bilang liwanag ng isang dahan-dahang humihingang ilaw.
Ang core at ang testbench nito ay pinatakbo para sa blueprint na ito gamit ang Icarus Verilog 12.0, cocotb 2.1.0 at ang sariling simulation model ng PDK para sa SRAM macro: sinundan ng output ang nakaimbak na talahanayan sa loob ng 600 PWM period. Ang larawan ay sariling output ng simulation na iyon, isang bar bawat period. Ang ESP32 sketch na naglo-load ng talahanayan ay na-compile para sa blueprint na ito; wala pang chip na mapapatakbuhan nito.
Abantado
Isang gabi, kasama ang chip
Mga Tagubilin
1
1
Ang pattern, ang timing at ang laki
Ang pattern, ang timing at ang laki
Naglo-load ng Jupyter notebook…
2
2
Ano ang bawat isa sa 4,096 bits
Ano ang bawat isa sa 4,096 bits
Ipinapakita ng naka-embed na blueprint kung paano hinahawakan ng isang bit ng static memory ang sarili nito: isang loop ng dalawang inverter. Ang macro sa rung na ito ay 4,096 bits ng static memory sa iisang array.
3
3
Ang mga pin ng macro, at tatlong bagay na sinasabi ng model nito
Ang mga pin ng macro, at tatlong bagay na sinasabi ng model nito
gf180mcu_fd_ip_sram__sram512x8m8wm1 ay may hawak na 512 bytes. Ang mga pin nito: CLK; A, isang 9-bit na address; D, ang byte na isusulat; Q, ang byte na binasa. Ang tatlong control ay pawang active LOW. Ang CEN na 0 ay nagbubukas ng memory. Ang GWEN na 0 ay ginagawang write ang clock edge, at read naman kapag 1. Ang WEN ay may isang bit bawat data bit, at ang 0 ay nagpapahintulot na maisulat ang bit na iyon, kaya maaaring baguhin ng write ang ilang bit ng isang byte at iwanang hindi nagalaw ang iba.
Sa pagbasa ng simulation model ng PDK, may tatlong bagay na dapat malaman. Una, gumagana lamang ang memory pagkatapos mapunta ang CEN mula 1 patungong 0; kung hindi, ipiprint ng model ang "CEN is not reset, memory is not operational", kaya pinananatili ng core ang CEN sa 1 habang nagre-reset at ibinababa ito pagkatapos. Ikalawa, ang read ay nagbibigay ng mem[A] sa Q pagkatapos ng clock edge na sumampol sa A, kaya handa na ang data makalipas ang isang clock. Ikatlo, nagsisimula ang model na may lahat ng byte na 0. Hindi ito ginagawa ng totoong chip: ang SRAM nito ay nagsisimulang may laman ang bawat cell na nahulugan nito, kaya dapat magsulat muna ang design bago magbasa.
Ang sariling halimbawa ng template ay nagtatakda ng CEN sa 1, kaya nakapatay ang dalawang macro nito. Ayon sa timing files nito, ang pinakamababang clock period ng macro ay 6.6 ns sa typical na 5 V corner at 18.3 ns sa mabagal na 3.0 V, 125 °C corner, parehong nasa loob ng 40 ns ng template.
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
Mga kailangang kasangkapan:
Desktop na Kompyuter5
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
Mga kailangang kasangkapan:
Desktop na Kompyuter6
6
Ce que la simulation a imprimé
Ce que la simulation a imprimé
Exécutez ce blueprint avec Icarus Verilog 12.0 et cocotb 2.1.0 :
-------- MESSAGE: CEN vient d'être réinitialisé, la mémoire est opérationnelle ---------
test_pattern.test_plays_the_table PASS (600 périodes, la table s'aligne à exactement un décalage)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
Pour prouver que le test peut échouer, WEN a été modifié de 8'b0 à 8'hFF, l'erreur classique avec une broche active à l'état bas : chaque bit masqué, rien d'écrit, une table de zéros. Les deux tests ont échoué, et le cœur a été remis en place.
La première ligne est le propre message du modèle SRAM : le cœur a abaissé CEN après la réinitialisation, comme le modèle l'exige.
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
Mga materyales para sa hakbang na ito:
Pasadyang ASIC chip1 piraso
Printed circuit board (PCB)1 piraso
LED na 5 mm1 piraso
Risistor na 330 ohm1 pirasoMga kailangang kasangkapan:
Lapad na Pang-unlad na ESP32
Lapad na Pansubok
Mga Jumper Wire
Desktop na Kompyuter8
8
Isang pattern na hindi nag-iimbak o hindi tumatakbo
Isang pattern na hindi nag-iimbak o hindi tumatakbo
Pag-troubleshoot ng pattern ng SRAM.
Flow
Loading...
9
9
Fuentes y límites honestos
Fuentes y límites honestos
Mga Materyales
4- 1 pirasoPlaceholder
- 1 pirasoPlaceholder
- Placeholder
- 1 pirasoPlaceholder
Mga Kinakailangang Kasangkapan
4- Placeholder
- Placeholder
- 1 vendor sell this, none ship to you yetPlaceholder
- 3 vendors sell this, none ship to you yetPlaceholder
Kaugnay na Blueprint
Ang mga blueprint na ito ay nagbabahagi ng kaalaman — mga teknik, materyales, o prinsipyo
CC0 Pampublikong Domain
Ang blueprint na ito ay inilabas sa ilalim ng CC0. Malaya kang kumopya, magbago, mamahagi, at gumamit nang walang pahintulot.
Suportahan ang Maker sa pamamagitan ng pagbili ng mga produkto sa kanilang Blueprint Komisyon ng Maker itinakda ng mga Vendor, o lumikha ng bagong bersyon ng Blueprint na ito at isama bilang koneksyon sa iyong Blueprint upang ibahagi ang kita.



