Перейти до вмісту

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

Матеріал з Вікіпедії — вільної енциклопедії.
Бінарний Код Ґрея Унітарний
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. (англ.)