Двійкові коди
Кодери абсолютних значень працюють у двійковій системі (числа, записані комбінацією "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 з кожного зчитуваних значень, щоб знати правильне зчитування.
На жаль, поки немає коментарів.