Daily MaverickFUEL SHOCK: Why we could not avoid petrol pump prices shooting up above R30 per litreESPN DeportesSelección Mexicana protege a Gilberto Mora ante ofertas europeasESPNIs Bijan Robinson the NFL's best running back? He is when he's in primetimeThe Jerusalem PostGerald Posner analyzes whether Hamas actions on October 7 meets the legal standard for genocideBollywood HungamaSCOOP: RN Kao, Gadadhari Bheem, Radha Krishna, & Kartik Aaryan's next: Karan Johar expands theatrical slate for 2028RTP Desporto18h30 Cristiano Ronaldo regressaVarietySlayyyter to Release ‘Brother Album’ to ‘Wor$t Girl in America’: ‘Wor$t Man in America’Collider‘KPop Demon Hunters’ Is Officially Returning in a Brand-New WayDeadlineEmmy Winner Habiba Nosheen Flexes With ‘The Gymnasts Of Fishermen Colony,’ Inspiring Film From EPs Mariska Hargitay, Trish Adlesic, Malala YousafzaiThe Hollywood ReporterCAA Hires Top NFL Executive as Chief Operating OfficerAnime News NetworkYoung Magazine USA Special Gets 2nd IssueZDF heuteEntdecken Sie das ZDF-Nachrichtenstudio
The Daily Newsstand · Free, Always
Monday, October 5, 2026

С нуля до чипа: программирование FPGA на t27

Translate

27 состояний, 27 уроков: как спека на t27 превращается в битстрим на настоящей Artix-7 — без Vivado

TL;DR. Большинство курсов по FPGA начинаются со слов «установите Vivado». Мы пошли с другого конца: в каждом из 27 уроков есть рабочий виджет, собранный из реальных запусков на нашем стенде. Сначала разбираем, что такое FPGA и как числа становятся битами. Потом пишем спеку на t27, компилируем её t27c и превращаем в битстрим на плате. В конце — лаборатория из трёх уроков о наших собственных исследованиях, включая результаты, которые нам не понравились. Каждая картинка ниже — снимок живого виджета; нажмите, чтобы открыть его.

Чек сборки: от спеки t27 до битстрима XC7A200T без Vivado

Чек сборки: от спеки t27 до битстрима XC7A200T без Vivado

Почему 27

У трёх сбалансированных тритов 3 × 3 × 3 = 27 состояний. Для сравнения: у 4-битного float вроде E2M1 (элемент форматов NVFP4 и MXFP4) 16 кодов, и два из них означают ноль. T27 — наш формат, который использует все 27 состояний. Отсюда название языка, компилятора и, в общем-то, число уроков.

Даже сам курс — это спека

Структура курса не лежит в CMS. Это файл course.t27, и у него есть тесты. Даже то, какой виджет открывается в каком уроке, записано в спеке:

pub const MODULE_COUNT : u8 = 10;
pub const MODULE_IDS : [10]str = ["chip", "numbers", "program", "compiler",
    "hardware", "synthesis", "timing", "bitstream", "board", "lab"];
pub const LESSON_WIDGETS : [30]str = [
    "fasm-skyline", "idcode", "pin-map", ...

test it_starts_at_the_chip_and_ends_on_the_board {
    assert MODULE_IDS[0] == "chip";
    assert MODULE_IDS[8] == "board";
}

Русский перевод проверяется скриптом: числа и {плейсхолдеры} должны совпадать с английской версией, иначе сборка падает. Принцип spec-first работает и здесь: если утверждение нельзя проверить, его нет на сайте.

Маршрут: 10 модулей от кристалла до платы

№

Модуль

Что вы трогаете руками

1

Чип

Сетка тайлов XC7A200T в 3D, 32 бита, которыми чип называет себя, пины и корпус

2

Числа

Биты и триты, сколько стоит арифметика, сколько влезает в кристалл

3

Программа

«Привет, t27»; тесты — это и есть спека; «компилируется» ≠ «работает»

4

Компилятор

Стадии t27c и путь от спеки до Verilog

5

Железо

Один LUT под микроскопом, конечные автоматы

6

Синтез

Считаем ячейки, смотрим, куда уходят LUT, читаем предупреждения синтеза, глубина логики

7

Размещение, трассировка, тайминг

Где оказываются ячейки и успевает ли тактовая частота

8

Битстрим

Как оттрассированный дизайн становится битами без Vivado: FASM → фреймы, чтение битстрима

9

На плате

Спросить чип по JTAG, кто он, загрузить биты и проверить, что на плате те же биты

10

Лаборатория

Свой формат чисел, честная таблица результатов, таблицы модели, перемноженные на плате

Урок 1: FPGA — это сетка, а не процессор

Процессор выполняет инструкции одну за другой. У FPGA программы нет вовсе: это сетка маленьких блоков — LUT, триггеров, цепочек переноса, блочной памяти и DSP-умножителей, — соединённых переключаемыми проводами. Настроили сетку — построили схему.

Виджет Skyline рисует один реальный оттрассированный дизайн на кристалле AMD Artix-7 XC7A200T: каждый настроенный тайл встаёт столбиком, а большая часть чипа остаётся тёмной. Поверните кристалл и нажмите на самый высокий столбик: какой тип тайла задаёт больше всего фич?

FASM Skyline — XC7A200T

FASM Skyline — XC7A200T

Следующий шаг — спросить у чипа, кто он. Чип называет себя 32 битами, и во втором уроке вы учитесь их читать.

IDCODE: 32 бита, которыми чип называет себя

IDCODE: 32 бита, которыми чип называет себя

От спеки к Verilog

В уроке «Привет, t27» вы видите, как выглядит спека t27 и что с ней делает компилятор, прямо в браузере, без установки тулчейна. А через что именно проходит спека внутри t27c, показывает виджет стадий компилятора.

Стадии t27c

Стадии t27c

Дальше маршрут спускается по стеку: синтез, подсчёт ячеек, потом размещение и трассировка — что они делают и куда поставили настоящий дизайн.

Карта размещения

Карта размещения

Итоговый, 27-й урок называется «Переугадайте yosys». Вам показывают настоящий модуль t27, и нужно угадать, сколько LUT он займёт. Кажется, что это легко, — пока не попробуешь.

Gatle: переугадайте yosys

Gatle: переугадайте yosys

Лаборатория

Первый урок лаборатории объясняет сам формат. 27 уровней T27 стоят там, где на самом деле лежат веса обученной сети, и на каждый блок весов приходится один общий масштаб. На троичной памяти это больше уровней в том же объёме. Проведите вес по диапазону и найдите, где E2M1 округляет хуже, чем T27.

T27: 27 уровней против 16 кодов E2M1

T27: 27 уровней против 16 кодов E2M1

Самый спорный (и, по-моему, самый ценный) урок — «Честная таблица результатов». Мы сохранили веса небольшой языковой модели в каждом формате и измерили перплексию на тексте, которого модель не видела.

Правило победы записали до запуска: T27 выигрывает у соперника, если его перплексия ниже 990/1000 от перплексии соперника. Итог:

  • T27 выиграл у NVFP4, MX+ и MXFP4;

  • T27 проиграл E2M2 — более широкому формату;

  • если упаковать T27 в обычные двоичные биты, он получается больше, а не меньше; виджет показывает оба счёта.

Под графиком перечислено, чего этот тест утверждать не может. Утверждение, которое выдерживает проверку, одно: T27 выигрывает у NVFP4 на троичной подложке. Не больше.

Честная таблица: T27 против NVFP4, MX+, MXFP4, E2M2

Честная таблица: T27 против NVFP4, MX+, MXFP4, E2M2

Что можно попробовать прямо сейчас

  1. Откройте весь курс: t27.ai/ru/learn — регистрация и железо не нужны.

  2. Пройдите «Переугадайте yosys» и напишите в комментариях, на сколько LUT вы ошиблись.

  3. Исходники компилятора и спеки: github.com/gHashTag/t27.

Вопрос к сообществу

Какой шаг на пути «спека → битстрим» до сих пор кажется вам чёрным ящиком? Самые частые ответы из комментариев превращу в следующие уроки.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.