Унітарний код

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Бінарний Код Ґрея Унітарний
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10000000

В цифрових схемах та машинному навчанні уніта́рний код, або прями́й уніта́рний код (англ. one-hot) — це група бітів, серед яких дозволеними комбінаціями значень є лише ті, в яких встановлено (1) лише один біт, а всі інші вимкнено (0).[1] Подібне втілення, в якому всі біти є «1», крім одного «0», іноді називають зворотним (інверсним) унітарним кодом (англ. one-cold).[2] У статистиці подібну методику для представлення категорійних даних представляють фіктивні змінні[en].

Застосування[ред. | ред. код]

Унітарний код часто використовують для вказування стану скінченного автомату. При використанні двійкового коду або коду Ґрея для визначення стану потрібен дешифратор. Проте скінченний автомат з унітарним кодом не потребує дешифратора, оскільки він перебуває в n-тому стані тоді й лише тоді, коли встановлено n-тий біт.

Прикладом скінченного автомату є кільцевий лічильник[en] з 15 послідовно впорядкованими станами. «Унітарне» втілення матиме 15 з'єднаних ланцюжком тригерів, де вихід Q кожного з тригерів з'єднано з входом D кожного наступного, а вхід D першого тригера з'єднано з виходом Q 15-го. Перший тригер в цьому ланцюжкові представляє перший стан, другий представляє другий стан, і так далі, до 15-го тригера, що представляє крайній стан. При скиданні цього скінченного автомату всі тригери встановлюються в «0», крім першого в ланцюжку, який встановлюється в «1». Прибуття на ці тригери фронту наступного синхроімпульсу просуває цей єдиний встановлений біт до другого тригера. Встановлений біт просувається таким чином до 15-го стану, після чого скінченний автомат повертається до першого стану.

Дешифратор адреси[en] здійснює перетворення з двійкового коду або коду Ґрея на унітарне представлення. Пріоритетний шифратор[en] перетворює унітарне представлення на двійковий код або код Ґрея.

В обробці природних мов вектор унітарного коду є матрицею 1 × N (вектором), який використовують, щоби відрізняти кожне слово зі словника від кожного іншого слова з цього словника. Цей вектор складається з 0-ів у всіх комірках, за виключенням у вигляді єдиної 1-ці в комірці, що використовуються виключно щоби ідентифікувати це слово.

Відмінності від інших методів кодування[ред. | ред. код]

Переваги[ред. | ред. код]

  • Визначення стану має низькі та сталі витрати на доступ до одного тригера
  • Зміна стану має низькі витрати на доступ до двох тригерів
  • Простора проєктування та модифікації
  • Простота виявляння недозволених станів
  • Використання переваги численності тригерів ПКВМ

Використання унітарного втілення зазвичай дозволяє скінченному автоматові працювати на вищій частоті, ніж будь-якому іншому кодуванню цього скінченного автомату.[3]

Недоліки[ред. | ред. код]

  • Вимагає більше тригерів, ніж інші кодування, роблячи його непрактичним для пристроїв ПМЛ
  • Багато станів є недозволеними[4]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Harris, David and Harris, Sarah (7 серпня 2012). Digital design and computer architecture (вид. 2nd). San Francisco, Calif.: Morgan Kaufmann. с. 129. ISBN 978-0-12-394424-5. (англ.)
  2. One-Hot Encoding. www.sciencedirect.com. Процитовано 20 січня 2020. (англ.)
  3. Xilinx. "HDL Synthesis for FPGAs Design Guide". section 3.13: "Encoding State Machines". Appendix A: "Accelerate FPGA Macros with One-Hot Approach". 1995. (англ.)
  4. Cohen, Ben (2002). Real Chip Design and Verification Using Verilog and VHDL. Palos Verdes Peninsula, CA, US: VhdlCohen Publishing. с. 48. ISBN 0-9705394-2-8. (англ.)