Hợp tác
NGHỆ THUẬT
LÀM ĐẸP VÀ SỨC KHỎE
THỦ CÔNG
VĂN HÓA VÀ LỊCH SỬ
GIẢI TRÍ
MÔI TRƯỜNG
THỰC PHẨM VÀ ĐỒ UỐNG
KỸ THUẬT NGƯỢC
KHOA HỌC
THỂ THAO
CÔNG NGHỆ
THIẾT BỊ ĐEO

English
Youblob (simulation output) · CC0
Đèn thở trên chip: Ánh sáng được lưu trong bộ nhớ của chính con chip
Mẫu thiết kế (template) của wafer.space đi kèm hai macro SRAM trong thiết kế ví dụ, mỗi macro 512 byte, và để chúng ở trạng thái tắt. Macro là một khối bộ nhớ hoàn chỉnh từ PDK: 4.096 ô nhớ tĩnh (static memory cell), được vẽ sẵn một lần cùng với bộ giải mã địa chỉ và mạch đọc, và bạn đặt nguyên khối thay vì phải xây dựng từ các cổng logic.
Bậc này bật một trong số đó. Bộ điều chỉnh độ sáng (dimmer) từ bậc trước giờ chạy một chuỗi mẫu: một vi điều khiển ghi 256 byte vào chip qua các chân pad, chỉ một lần, và từ đó chip tự đọc lại chúng, mỗi bước một byte, làm độ sáng của một đèn đang thở chậm rãi.
Lõi và testbench của nó được chạy cho bản thiết kế này với Icarus Verilog 12.0, cocotb 2.1.0 và mô hình mô phỏng riêng của PDK dành cho macro SRAM: đầu ra bám theo bảng đã lưu trong 600 chu kỳ PWM. Hình ảnh là đầu ra mô phỏng của chính nó, mỗi thanh một chu kỳ. Bản phác thảo ESP32 nạp bảng này đã được biên dịch cho bản thiết kế này; hiện chưa có chip thật để chạy nó.
Nâng cao
Một buổi tối, cùng với con chip
Hướng dẫn
1
1
Mẫu, thời điểm và kích thước
Mẫu, thời điểm và kích thước
Đang tải sổ tay Jupyter…
2
2
Mỗi trong số 4.096 bit là gì
Mỗi trong số 4.096 bit là gì
Sơ đồ thiết kế nhúng cho thấy cách một bit bộ nhớ tĩnh tự giữ trạng thái: một vòng lặp gồm hai bộ đảo (inverter). Khối macro trong bậc này là 4.096 bit bộ nhớ tĩnh trong một mảng duy nhất.
3
3
Các chân của macro, và ba điều mô hình của nó cho biết
Các chân của macro, và ba điều mô hình của nó cho biết
gf180mcu_fd_ip_sram__sram512x8m8wm1 có dung lượng 512 byte. Các chân của nó: CLK; A, địa chỉ 9 bit; D, byte cần ghi; Q, byte được đọc. Ba tín hiệu điều khiển đều tích cực LOW. CEN bằng 0 sẽ bật bộ nhớ. GWEN bằng 0 khiến cạnh xung clock là thao tác ghi, bằng 1 là thao tác đọc. WEN có một bit cho mỗi bit dữ liệu, và khi bằng 0 thì bit đó được phép ghi, nên một thao tác ghi có thể thay đổi một số bit của byte và giữ nguyên các bit còn lại.
Đọc mô hình mô phỏng của PDK cho thấy ba điều đáng biết. Thứ nhất, bộ nhớ chỉ hoạt động sau khi CEN chuyển từ 1 xuống 0; nếu không, mô hình in ra "CEN is not reset, memory is not operational", vì vậy lõi giữ CEN ở mức 1 trong suốt quá trình reset và hạ xuống sau đó. Thứ hai, thao tác đọc đưa mem[A] ra Q ngay sau cạnh xung clock lấy mẫu A, nên dữ liệu sẵn sàng sau một chu kỳ clock. Thứ ba, mô hình khởi đầu với mọi byte bằng 0. Chip thực thì không: SRAM của nó khi khởi động mang giá trị ngẫu nhiên mà mỗi ô nhớ rơi vào, nên thiết kế phải ghi trước khi đọc.
Ví dụ của template gán CEN bằng 1, nên hai macro của nó bị tắt. Các file timing của nó cho chu kỳ clock tối thiểu của macro là 6,6 ns ở góc điển hình 5 V và 18,3 ns ở góc chậm 3,0 V, 125 °C, cả hai đều nằm trong giới hạn 40 ns của 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
Công cụ cần thiết:
Máy tính để bàn5
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
Công cụ cần thiết:
Máy tính để bàn6
6
Những gì mô phỏng đã in ra
Những gì mô phỏng đã in ra
Chạy cho blueprint này với Icarus Verilog 12.0 và cocotb 2.1.0:
-------- MESSAGE: CEN vừa được reset, bộ nhớ hoạt động ---------
test_pattern.test_plays_the_table PASS (600 chu kỳ, bảng khớp chính xác tại một offset)
test_pattern.test_reload PASS
TESTS=2 PASS=2 FAIL=0 SKIP=0
Để chứng minh test có thể thất bại, WEN đã được đổi từ 8'b0 thành 8'hFF, lỗi kinh điển với chân active-low: mọi bit bị che, không có gì được ghi, và bảng toàn số không. Cả hai test đều thất bại, và core đã được khôi phục.
Dòng đầu tiên là thông báo riêng của mô hình SRAM: core đã kéo CEN xuống thấp sau reset, như mô hình yêu cầu.
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
Vật liệu cho bước này:
Chip ASIC tùy chỉnh1 cái
Bảng mạch in1 cái
LED 5 mm1 cái
Điện trở 330 ohm1 cáiCông cụ cần thiết:
Bo mạch phát triển ESP32
Bảng cắm mạch
Dây nối
Máy tính để bàn8
8
Mẫu không lưu được hoặc không phát được
Mẫu không lưu được hoặc không phát được
Khắc phục sự cố mẫu SRAM.
Flow
Loading...
9
9
Nguồn và giới hạn trung thực
Nguồn và giới hạn trung thực
**Nguồn**, đọc ngày 29 tháng 9 năm 2026: GF180MCU PDK tại commit mà template ghim (gf180mcuD, f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, từ các bản phát hành fossi-foundation ciel; Apache-2.0): mô hình SRAM gf180mcu_fd_ip_sram__sram512x8m8wm1.v, LEF của nó cho đường viền và các tệp thời gian của nó cho chu kỳ xung nhỏ nhất; tệp thời gian của thư viện standard-cell cho diện tích flip-flop. Kho wafer-space/gf180mcu-project-template (src/chip_core.sv, src/chip_top.sv, README.md, librelane/config.yaml; Apache-2.0).
**Giới hạn trung thực.** Mô phỏng ở mức chip_core, với mô hình riêng của SRAM nhưng không có vành pad, tổng hợp hay layout, và các kiểm tra thời gian của mô hình không quyết định điều gì ở đây. Bản phác thảo ESP32 đã được biên dịch, chưa được chạy. HOLD_LOG2 bằng 0 trong bài kiểm tra để nó kết thúc; chip sẽ dùng 9, một nhịp thở khoảng 1,3 s.
Vật liệu
4- 1 cáiTạm thời
- 1 cáiTạm thời
- Tạm thời
- 1 cáiTạm thời
Blueprint liên quan
Các blueprint này chia sẻ kiến thức — kỹ thuật, vật liệu hoặc nguyên tắc
CC0 Phạm vi công cộng
Bản thiết kế này được phát hành theo CC0. Bạn tự do sao chép, sửa đổi, phân phối và sử dụng cho bất kỳ mục đích nào mà không cần xin phép.
Hỗ trợ nhà sáng tạo bằng cách mua sản phẩm qua bản thiết kế, nơi họ nhận Hoa hồng nhà sáng tạo do nhà bán hàng đặt, hoặc tạo phiên bản mới và kết nối trong bản thiết kế riêng để chia sẻ doanh thu.



