Сотрудничество
ИСКУССТВО
КРАСОТА И ЗДОРОВЬЕ
РЕМЕСЛО
КУЛЬТУРА И ИСТОРИЯ
РАЗВЛЕЧЕНИЯ
ЭКОЛОГИЯ
ЕДА И НАПИТКИ
ОБРАТНАЯ ИНЖЕНЕРИЯ
НАУКИ
СПОРТ
ТЕХНОЛОГИИ
НОСИМЫЕ УСТРОЙСТВА

English
Youblob (simulation output) · CC0
Встроенный SRAM: дышащий свет, хранящийся в собственной памяти вашего чипа
Шаблон wafer.space поставляется с двумя макросами SRAM в своём примерном проекте, по 512 байт каждый, и оставляет их выключенными. Макрос — это готовый блок памяти из PDK: 4 096 статических ячеек памяти, однажды спроектированных вместе с дешифратором адреса и схемами считывания, который вы размещаете целиком, а не собираете из логических вентилей.
Эта ступень включает один из них. PWM диммер из предыдущей ступени теперь воспроизводит шаблон: микроконтроллер записывает 256 байт в чип через свои контактные площадки один раз, а затем чип сам считывает их по одному байту на каждом шаге, как яркость медленно дышащего света.
Ядро и его тестовое окружение были запущены для этого блюпринта с Icarus Verilog 12.0, cocotb 2.1.0 и собственной симуляционной моделью PDK для макроса SRAM: выход повторял сохранённую таблицу в течение 600 PWM периодов. Картинка — собственный вывод этой симуляции, по одной полосе на период. Скетч ESP32, который загружает таблицу, был скомпилирован для этого блюпринта; чипа, на котором его можно запустить, пока нет.
Продвинутый
Вечер и чип
Инструкции
1
1
Закономерность, тайминг и размер
Закономерность, тайминг и размер
Загрузка блокнота Jupyter…
2
2
Что представляет собой каждый из 4 096 битов
Что представляет собой каждый из 4 096 битов
На встроенной схеме показано, как один бит статической памяти удерживает себя: петля из двух инверторов. Макрос на этой ступени — это 4 096 битов статической памяти в одном массиве.
3
3
Выводы макроса и три вещи, которые говорит его модель
Выводы макроса и три вещи, которые говорит его модель
gf180mcu_fd_ip_sram__sram512x8m8wm1 хранит 512 байт. Его выводы: CLK; A — 9-битный адрес; D — байт для записи; Q — прочитанный байт. Три управляющих сигнала все активны LOW. CEN в 0 включает память. GWEN в 0 делает фронт тактового сигнала записью, в 1 — чтением. WEN содержит по одному биту на каждый бит данных, и 0 разрешает запись этого бита, поэтому запись может изменить одни биты байта и оставить другие без изменений.
Чтение модели симуляции PDK показывает три важных момента. Во-первых, память работает только после того, как CEN перешёл с 1 на 0; в противном случае модель выводит "CEN is not reset, memory is not operational", поэтому ядро удерживает CEN в 1 во время сброса и опускает его после. Во-вторых, чтение выдаёт mem[A] на Q сразу после фронта тактового сигнала, которым был зафиксирован A, поэтому данные готовы через один такт. В-третьих, модель стартует с нулями во всех байтах. Реальный чип так не делает: его SRAM при включении содержит то, что оказалось в каждой ячейке, поэтому проект должен выполнить запись до чтения.
Пример из шаблона связывает CEN с 1, поэтому два его макроса выключены. Файлы временных характеристик дают минимальный период тактового сигнала макроса 6.6 нс при типичном угле 5 В и 18.3 нс при медленном угле 3.0 В и 125 °C, оба значения заметно меньше 40 нс шаблона.
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
Необходимые инструменты:
Настольный компьютер5
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
Необходимые инструменты:
Настольный компьютер6
6
Что напечатала симуляция
Что напечатала симуляция
Запуск этого блюпринта с Icarus Verilog 12.0 и cocotb 2.1.0:
-------- MESSAGE: CEN только что сброшен, память работает ---------
test_pattern.test_plays_the_table PASS (600 периодов, таблица совпадает ровно при одном смещении)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
Чтобы доказать, что тест может упасть, WEN был изменён с 8'b0 на 8'hFF — классическая ошибка с активным низким сигналом: все биты замаскированы, ничего не записано, таблица из нулей. Оба теста упали, после чего ядро вернули в исходное состояние.
Первая строка — собственное сообщение модели SRAM: ядро опустило CEN после сброса, как и требует модель.
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
Материалы для этого шага:
Кристалл заказной ASIC1 штука
Печатная плата1 штука
Светодиод 5 мм1 штука
Резистор 330 Ом1 штукаНеобходимые инструменты:
Отладочная плата ESP32
Макетная плата
Соединительные провода
Настольный компьютер8
8
Шаблон, который не сохраняется или не воспроизводится
Шаблон, который не сохраняется или не воспроизводится
Устранение неполадок с шаблоном SRAM.
Flow
Loading...
9
9
Источники и честные ограничения
Источники и честные ограничения
**Источники**, прочитано 29 сентября 2026: GF180MCU PDK на коммите, который фиксирует шаблон (gf180mcuD, f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, из релизов fossi-foundation ciel; Apache-2.0): модель SRAM gf180mcu_fd_ip_sram__sram512x8m8wm1.v, её LEF для контура и её файлы синхронизации для минимального периода тактового сигнала; файл синхронизации библиотеки стандартных ячеек для площади триггера. Репозиторий wafer-space/gf180mcu-project-template (src/chip_core.sv, src/chip_top.sv, README.md, librelane/config.yaml; Apache-2.0).
**Честные ограничения.** Симуляция выполнена на уровне chip_core, с собственной моделью SRAM, но без кольца контактных площадок, синтеза и топологии; проверки синхронизации в модели здесь ничего не решают. Эскиз ESP32 был скомпилирован, но не запускался. HOLD_LOG2 в тесте был равен 0, чтобы он завершился; в чипе использовалось бы 9, это дыхание около 1,3 с.
Материалы
4- 1 штукаЗаполнитель
- 1 штукаЗаполнитель
- Заполнитель
- 1 штукаЗаполнитель
Требуемые инструменты
4- Заполнитель
- Заполнитель
- 1 vendor sell this, none ship to you yetЗаполнитель
- 3 vendors sell this, none ship to you yetЗаполнитель
Связанные чертежи
Эти чертежи делятся знаниями — техники, материалы или принципы
CC0 Общественное достояние
Этот чертёж выпущен под лицензией CC0. Вы можете свободно копировать, изменять, распространять и использовать эту работу в любых целях без запроса разрешения.
Поддержите мейкера, покупая товары через его чертёж, где он получает Комиссию мейкера установленную продавцами, или создайте новую итерацию этого чертежа и включите его как связь в свой чертёж для распределения дохода.



