Двійкові коди

Кодери абсолютних значень працюють у двійковій системі (числа, записані комбінацією "1s" та "0s".
Інформація про позицію, в якій вони перебувають, постачається з одним із таких бінарних кодів:

  • Чистий двійковий
  • B C D
  • Сірий
  • Сірий надлишок

Ми побачимо кожен з цих кодів:

Чистий двійковий код:

Це система нумерації така ж, як десяткова, але в основі 2. Вона утворена послідовністю "1s" і "0s".
Давайте подивимося, як отримати двійкове число з десяткового числа:

Припустимо, ми хочемо перетворити десяткове число 75 у двійкове: Ми розділимо число 75 на 2, а частку знову розділимо на 2. Ми будемо продовжувати так послідовно, поки фактор не буде “0”. Потім двійкове число складається з послідовності "1s" і "0s", які були отримані як залишок від кожної операції.

Подивимось процес:

теорія

Майте на увазі, що залишок першого ділення - це найменш значуща цифра двійкового виразу (перша цифра справа) і так до останньої залишку, яка буде найбільш значущою цифрою двійкового числа (перша цифра зліва).

Побачимо зараз протилежний процес. Ми збираємося перетворити двійкове число в його вираз у десятковій системі. Формула, яку слід застосувати, така:

Де: D = число в десяткових числах
Bn = число бітів у двійковому (коефіцієнт потужності 2)
n = Кількість бітів

Припустимо, ми маємо таке двійкове число: 00110111. Давайте перетворимо його в десяткове:

Код BCD (двійковий десятковий код):

У цьому коді кожна цифра десяткового числа представлена ​​в чистому двійковому вигляді. Іншими словами, з 4 бітами кожна цифра кодується незалежно від решти цифр.

Найяскравіший спосіб це побачити - на прикладі:

Ми маємо число в десятковому 358, його представлення в BCD є таким:

Отже, перші чотири біти праворуч є одиницями; другі чотири біти - десятки, а останні чотири біти - сотні.

Отже, для запису 3-значного числа (у десяткових цифрах) до BCD потрібно 12 біт. Якщо число в десятковому значенні має 5 цифр, знадобиться 20 бітів тощо, тощо.

Ця система кодування не відповідає реальному математичному поданню чисел. Це комбінація "1s" і "0s", які є можливими комбінаціями, які змінна може прийняти.

Починаючи з певної кількості бітів, комбінації складаються відповідно до норм Грея.

Основна характеристика цього коду полягає в тому, що два послідовних числа, якими б вони не були, відрізняються лише на один біт (вони мають відстань "1").

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

Поки це здається дещо складним, але ми наполягатимемо на поясненні, щоб спробувати його повністю пояснити.

Нижче наведена таблиця з побудовою у сірому коді чисел від 0 до 31 з використанням до 5 бітів:

Як видно з попередньої таблиці, код Грея симетричний по відношенню до ламаної лінії у всіх її бітах, крім коду зліва (Gn). У цьому останньому біті вгорі штрихової лінії є "0", а внизу - "1".

Давайте подивимося, як склалася ця таблиця:

Оскільки для одного біта існує лише дві можливості (воно коштує «0» або воно коштує «1»), ми можемо кодувати № 0 та № 1. Для кодування з № 0 до № 3 нам потрібні дві біти. Згідно з правилом Грея, ми діємо наступним чином:

Для кодування від № 0 до № 7 потрібні 3 біти і виконуйте дії, як на попередньому кроці:

Таким чином ми продовжуємо послідовно додавати ще один біт кожного разу.

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

Для перетворення потрібно застосувати таку формулу для обчислення значення кожного біта:

Біт (n) = Біт (n + 1) XOR G (n)

Біт (n) - це n-й біт у двійковому
Біт (n + 1) - це наступний біт
G (n) - це n-й біт у сірому кольорі
XOR - це логічна операція, яка виконується між бітами.

ПРИМІТКА: Операція XOR це логічний затвор з двома входами, який подає на вихід “1” лише тоді, коли два входи різні. Якщо два входи рівні (і "1", і "0"), на виході буде "0". Схема така:

Також можна знайти таку схему:

Далі ми застосуємо цю функцію для перетворення числа в сірому коді в чистий двійковий:

Давайте розглянемо цю саму схему на прикладі. Давайте перетворимо вираз № 4 у коді Грея (0110) у двійковий код (0100):

ПРИМІТКА: Вхід Nº2 засувки Xor найбільш значущого біта (M.S.B.) повинен бути зафіксований на логічному рівні "0".

Надлишок сірого коду

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

Крім того, це циклічний код, оскільки відстань між останнім і першим зчитуванням дорівнює 1.

Подивимось приклад:

За допомогою 4 бітів ви можете закодувати числа від 0 до 15. Вирази коду Грея обох: 0 = 0000 та 15 = 1000

Як ми бачимо, вони відрізняються лише в долоті з найбільшою вагою (зліва). Щоб перейти з 15 на 0, вам просто потрібно встановити цей біт на 0. Отже, відстань одна, і вона також циклічна, оскільки від останнього числа вона передається першому, змінюючи, лише один біт.

Коли диск, що несе кодер, є точним двійковим кратним (256, 512, 1024, 4096 або 8192), це відбувається, як ми вже пояснювали.

Але коли програма, де ви хочете використовувати кодер, не є точним кратним, наприклад, 360 кроків (контроль кутового положення), ви не можете помістити диск із 360 показаннями в сірий код, оскільки це не буде циклічним диском, оскільки відстань між положеннями 359 і 0 не дорівнює 1, як ми бачимо нижче:

Різниця між двома числами перевищує один біт, отже, відстань не 1, і ми не можемо перейти від 359 до 0, змінивши лише один біт.

Для вирішення цієї проблеми був розроблений Кодекс надлишків сірого. Цей код також є сірим кодом, але зміщений на певну кількість етапів: E

Ми збираємось обчислити це переміщення, E, і ми перевіримо, чи виконуються дві основні умови Відстані 1 і бути Циклічністю.

Формула, яку слід застосувати, така:

На прикладі ми побачимо це чіткіше:

Припустимо, ми хочемо розрахувати коефіцієнт Е для діапазону вимірювання 360º. У цьому випадку параметром "n" є:

2 9 = 512 (512> 360)

Коефіцієнт R дорівнює 360, тому ми можемо обчислити E:

Таким чином, зміщення для цього випадку дорівнює 76. Тому діапазон вимірювання буде становити від 76 до 435 (це 360 поділок; те саме, що від 0 до 359).

Приймач сигналу кодера (який буде нести сірий диск - перевищення 76 з 360 поділок) повинен буде відняти 76 з кожного зчитуваних значень, щоб знати правильне зчитування.

На жаль, поки немає коментарів.