Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Бинарное, Грея и One-Hot кодирование: практическое руководство для FPGA конечных автоматов

Подробное сравнение бинарного, Грея и one-hot кодирований при реализации конечных автоматов (FSM) на FPGA. Понимание того, как инструменты синтеза оценивают и потенциально трансформируют эти кодировки, необходимо для достижения оптимальной производительности и энергоэффективности.

Конечные автоматы повсюду в цифровом дизайне. Инструменты синтеза регулярно анализируют ваш RTL для обнаружения FSM и могут переписывать кодировки состояний для выполнения тайминговых, площадных или энергетических целей. Даже если вы вручную назначаете коды состояний, инструмент может подставить другие значения — иногда с другой разрядностью — на основе своей стратегии оптимизации.

Для обновления знаний по построению FSM на Verilog см. мою статью Creating Finite State Machines in Verilog.

Варианты кодирования: бинарное, Грея, One-Hot

Три наиболее распространенных FSM кодирования — бинарное, Грея и one-hot. Каждое предлагает уникальные компромиссы.

Бинарное кодирование

Бинарное кодирование присваивает минимально возможное число бит для представления всех состояний. Это наиболее пространственно-эффективный выбор, но переходы состояний могут включать изменение нескольких бит, что может увеличить динамическую мощность.

Бинарное, Грея и One-Hot кодирование: практическое руководство для FPGA конечных автоматов
Пример бинарного кодирования. Изображение от Steve Arar

Кодирование Грея

Код Грея гарантирует, что между последовательными состояниями меняется только один бит. Когда FSM следует предсказуемой последовательности, кодирование Грея может снизить коммутационную активность и уменьшить динамическую мощность.

Бинарное, Грея и One-Hot кодирование: практическое руководство для FPGA конечных автоматов
Колесо кода Грея. Изображение от Marie Christiano

One-Hot кодирование

One-hot кодирование представляет каждое состояние выделенным битом триггера. Хотя оно потребляет больше логических ресурсов и вводит множество невалидных комбинаций, оно устраняет необходимость в декодировании состояний, упрощая комбинационную логику и часто улучшая тайминг на высоких частотах.

Бинарное, Грея и One-Hot кодирование: практическое руководство для FPGA конечных автоматов
Пример one-hot кодирования. Изображение от Steve Arar

Для более глубоких идей о кодировании состояний в VHDL обратитесь к Encoding the States of a Finite State Machine in VHDL от Steve Arar.

Выбор правильного кодирования

Определение оптимального кодирования контекстно-зависимо и подразумевает баланс между площадью, таймингом и мощностью. Общие рекомендации включают:

Поскольку компромиссы нюансированы, я рекомендую позволять инструменту синтеза выбирать кодирование. Тем не менее, я провел сравнительные эксперименты на трех основных тулчейнах и трех разных автоматах, чтобы проиллюстрировать, как каждое кодирование работает на практике. Результаты обсуждаются в моей следующей статье.

Встроенный

  1. Сталь 300, 400 и 500 серии: состав, свойства и применение
  2. Восьмеричная и шестнадцатеричная системы: практическое руководство для инженеров
  3. Сложение в двоичной системе: правила, примеры и роль в цифровых компьютерах
  4. Двоичное вычитание с использованием двухкратного дополнения
  5. Структуры C++ против классов: практическое руководство для разработчиков встроенных систем
  6. Six Sigma против Lean Manufacturing: понятное руководство по выбору правильной стратегии
  7. Выбор правильного кодирования FPGA: практическое исследование на примере «Игры жизни» Конвея
  8. Код Морзе и двойное вымогательство: ландшафт передовых вредоносных угроз
  9. Стратегии пожарной защиты для цехов электроэрозионной и ЧПУ обработки: сохранение продуктивности и безопасн…
  10. Серый чугун: свойства, марки и промышленное применение