Создайте свою первую пользовательскую микросхему
Пользовательская микросхема — это компонент, который вы программируете сами. Вы пишете простой код на C с использованием API velxio-chip.h, Velxio компилирует его в WebAssembly в облаке, и результат ведет себя как любой компонент из каталога: у него есть выводы, которые вы подключаете, атрибуты, которые вы редактируете, и логика, которая выполняется внутри симуляции.
Когда стоит создать такую микросхему
Заголовок раздела «Когда стоит создать такую микросхему»- Нужной вам ИС нет в каталоге (редкий сдвиговый регистр, проприетарный протокол датчика).
- Вам нужен тестовый стенд — генератор импульсов, имитатор протокола, поддельный датчик с заданными значениями.
- Вы преподаете цифровую логику и хотите, чтобы студенты реализовали микросхему, а не просто использовали ее.
Версия на пять минут
Заголовок раздела «Версия на пять минут»- Откройте выбор компонентов и добавьте Custom Chip на холст.
- Откроется галерея примеров — выберите отправную точку (или начните с пустого).
- Вы попадете в обычный редактор кода: микросхема владеет собственной секцией в файловом обозревателе с двумя обычными файлами —
chip.c— поведение;chip.json— манифест: имя, выводы, атрибуты (проверяется с автодополнением по мере ввода). Это встроенный пример Inverter (инвертор):
#include "velxio-chip.h"#include <stdlib.h>
typedef struct { vx_pin in, out; } chip_state_t;
static void on_in_change(void* ud, vx_pin pin, int value) { chip_state_t* s = ud; vx_pin_write(s->out, value ? VX_LOW : VX_HIGH);}
void chip_setup(void) { chip_state_t* s = malloc(sizeof *s); s->in = vx_pin_register("IN", VX_INPUT); s->out = vx_pin_register("OUT", VX_OUTPUT); vx_pin_write(s->out, vx_pin_read(s->in) ? VX_LOW : VX_HIGH); vx_pin_watch(s->in, VX_EDGE_BOTH, on_in_change, s); vx_log("inverter ready");}с его манифестом:
{ "schema": "velxio-chip/v1", "name": "Inverter", "pins": ["IN", "OUT", "GND", "VCC"], "attributes": []}- Подключите
INк кнопке, аOUTк светодиоду, затем нажмите Run (Запуск) — микросхема компилируется автоматически всякий раз, когда изменяется ее исходный код (кнопка с молотком в секции микросхемы в файловом обозревателе компилирует ее отдельно, с ошибками в консоли вывода, как у любого компилятора C). - Переключайте. Щелкните по микросхеме, пока симуляция остановлена, чтобы вернуться к ее
chip.c; отредактируйте и снова нажмите Run.
Придание микросхеме облика
Заголовок раздела «Придание микросхеме облика»По умолчанию микросхема рисуется как темный корпус с именем на шелкографической полосе и подписями выводов по краю. Вы можете заменить этот облик собственным изображением — фотографией реальной платы-адаптера, рисунком из даташита, иконкой:
Нажмите кнопку image (изображение) в секции микросхемы в файловом обозревателе (рядом с Compile) и выберите PNG, JPEG или SVG размером до 256 КБ. Оно присоединится к chip.c и chip.json как еще один файл в секции этой микросхемы — chip.png, chip.jpg или chip.svg — так что оно путешествует вместе с проектом, экспортируется внутри .vlx и сохраняется вместе с микросхемой в My Chips.
Изображение масштабируется, чтобы соответствовать корпусу микросхемы, никогда не обрезается и не растягивается. Выводы не двигаются: их позиции по-прежнему берутся из chip.json, поэтому добавление изображения к уже подключенной микросхеме оставляет каждый провод точно на месте. Подписи выводов остаются поверх изображения, нарисованные белым с темным контуром, чтобы они читались и на светлом, и на темном изображении, а печатное имя уступает место изображению (оно остается во всплывающей подсказке).
Чтобы удалить изображение, используйте кнопку рядом с кнопкой изображения или удалите файл изображения из секции микросхемы.
Как выполняются микросхемы
Заголовок раздела «Как выполняются микросхемы»Хост вызывает вашу chip_setup() один раз для каждого экземпляра микросхемы. После этого микросхема реактивна: ваш код выполняется только внутри обратных вызовов — изменился отслеживаемый вывод, пришел байт по I2C, сработал таймер. Нет главного цикла, который можно заблокировать, — именно это делает пользовательские микросхемы достаточно дешевыми, чтобы рассыпать их по схеме.
Встроенные примеры микросхем
Заголовок раздела «Встроенные примеры микросхем»Редактор микросхем поставляется с рабочими исходниками, которые вы можете загружать и изменять: логические элементы (инвертор, XOR), сдвиговые регистры (74HC595, CD4094), I2C-компоненты (PCF8574, DS3231 RTC, 24Cxx EEPROM), SPI АЦП (MCP3008), UART-преобразователь ROT13, счетчик импульсов — а также коллекция ретро-процессоров (Intel 4004 и другие) для по-настоящему отважных.
Далее: справочник по API микросхем.