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

Сравнение двоичного, серого и быстрого кодирования

В этой статье показано сравнение реализаций, которые являются результатом использования двоичного, серого и однократного кодирования для реализации конечных автоматов в FPGA. Эти кодировки часто оцениваются и применяются инструментами синтеза и реализации, поэтому важно знать, почему программное обеспечение принимает такие решения.

Конечные автоматы (FSM) - очень распространенная часть почти каждой цифровой системы. Вот почему инструменты синтеза часто проверяют ваш код, чтобы обнаружить конечные автоматы и выполнить оптимизацию, которая может изменить кодировку состояний. Не имеет значения, тщательно ли вы выбрали и указали значения, которые реализуют ваши состояния в исходном коде, инструмент синтеза может заменить эти значения другими, длина которых в битах может отличаться от вашей исходной кодировки.

Если вы хотите освежить в памяти реализацию конечных автоматов в Verilog, вам следует прочитать мою статью под названием «Создание конечных автоматов в Verilog».


Кодирование состояний:серый, двоичный и один-горячий

Три самых популярных кодировки для состояний конечного автомата:двоичная, серая и горячая.

Двоичное кодирование

Двоичное кодирование - это простой метод, который вы можете интуитивно использовать, когда вы последовательно присваиваете значения своим состояниям. Таким образом, вы используете как можно меньше битов для кодирования ваших состояний.

Пример быстрого кодирования. Изображение Стива Арара

Кодировка серого

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

Колесо кода Грея. Изображение от Мари Кристиано

Быстрое кодирование

Наконец, одноразовое кодирование заключается в использовании одного бита, представляющего каждое состояние, так что в любой момент времени состояние будет закодировано как 1 в бите, представляющем текущее состояние, и 0 во всех остальных битах. Сначала это может показаться не очень эффективным из-за количества используемых битов и чрезмерного количества недопустимых состояний. Однако однократное кодирование очень хорошо упрощает логику стимула для триггеров, потому что нет необходимости декодировать состояния. Биты есть Штаты.

Пример быстрого кодирования. Изображение Стива Арара

Чтобы узнать больше о кодировании состояний, вы можете прочитать статью Стива Арара «Кодирование состояний конечного автомата в VHDL».

Какая кодировка самая лучшая?

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

Теперь все эти утверждения - просто обоснованные предположения, и поиск оптимального назначения состояний - сложная проблема. По этой причине мой официальный совет - позволить компилятору решать за вас. Тем не менее, я решил провести сравнение результатов для этих трех кодировок в трех разных инструментах разработки и трех разных конечных автоматах.

В следующей статье мы обсудим результаты моих экспериментов.


Встроенный

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