Унітарний код
В цифрових схемах та машинному навчанні уніта́рний код, або прями́й уніта́рний код (англ. one-hot) — це група бітів, серед яких дозволеними комбінаціями значень є лише ті, в яких встановлено (1) лише один біт, а всі інші вимкнено (0).[1] Подібне втілення, в якому всі біти є «1», крім одного «0», іноді називають зворотним (інверсним) унітарним кодом (англ. one-cold).[2] У статистиці подібну методику для представлення категорійних даних представляють фіктивні змінні.
Бінарний | Код Ґрея | Унітарний |
---|---|---|
000 | 000 | 00000001 |
001 | 001 | 00000010 |
010 | 011 | 00000100 |
011 | 010 | 00001000 |
100 | 110 | 00010000 |
101 | 111 | 00100000 |
110 | 101 | 01000000 |
111 | 100 | 10000000 |
Застосування
Унітарний код часто використовують для вказування стану скінченного автомату. При використанні двійкового коду або коду Ґрея для визначення стану потрібен дешифратор. Проте скінченний автомат з унітарним кодом не потребує дешифратора, оскільки він перебуває в n-тому стані тоді й лише тоді, коли встановлено n-тий біт.
Прикладом скінченного автомату є кільцевий лічильник з 15 послідовно впорядкованими станами. «Унітарне» втілення матиме 15 з'єднаних ланцюжком тригерів, де вихід Q кожного з тригерів з'єднано з входом D кожного наступного, а вхід D першого тригера з'єднано з виходом Q 15-го. Перший тригер в цьому ланцюжкові представляє перший стан, другий представляє другий стан, і так далі, до 15-го тригера, що представляє крайній стан. При скиданні цього скінченного автомату всі тригери встановлюються в «0», крім першого в ланцюжку, який встановлюється в «1». Прибуття на ці тригери фронту наступного синхроімпульсу просуває цей єдиний встановлений біт до другого тригера. Встановлений біт просувається таким чином до 15-го стану, після чого скінченний автомат повертається до першого стану.
Дешифратор адреси здійснює перетворення з двійкового коду або коду Ґрея на унітарне представлення. Пріоритетний шифратор перетворює унітарне представлення на двійковий код або код Ґрея.
В обробці природних мов вектор унітарного коду є матрицею 1 × N (вектором), який використовують, щоби відрізняти кожне слово зі словника від кожного іншого слова з цього словника. Цей вектор складається з 0-ів у всіх комірках, за виключенням у вигляді єдиної 1-ці в комірці, що використовуються виключно щоби ідентифікувати це слово.
Відмінності від інших методів кодування
Переваги
- Визначення стану має низькі та сталі витрати на доступ до одного тригера
- Зміна стану має низькі витрати на доступ до двох тригерів
- Простора проєктування та модифікації
- Простота виявляння недозволених станів
- Використання переваги численності тригерів ПКВМ
Використання унітарного втілення зазвичай дозволяє скінченному автоматові працювати на вищій частоті, ніж будь-якому іншому кодуванню цього скінченного автомату.[3]
Див. також
- Двійково-п'ятіркове десяткове кодування
- Унарна система числення
- Єдиність
- Виключне або (логічний вентиль)
- Дешифратор
- Послідовне десяткове кодування
Примітки
- 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. (англ.)
- One-Hot Encoding. www.sciencedirect.com. Процитовано 20 січня 2020. (англ.)
- Xilinx. "HDL Synthesis for FPGAs Design Guide". section 3.13: "Encoding State Machines". Appendix A: "Accelerate FPGA Macros with One-Hot Approach". 1995. (англ.)
- 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. (англ.)