Какая кодировка данных используется в современных компьютерах

Обновлено: 21.11.2024

Как мы все знаем, компьютеры не понимают английский алфавит, числа, кроме 0 и 1, или текстовые символы. Мы используем кодирование для их преобразования. Итак, кодирование — это метод или процесс преобразования последовательности символов, т. е. букв, цифр, знаков препинания и символов, в специальный или уникальный формат для передачи или хранения в компьютерах. Данные представлены в компьютерах с использованием схем кодирования ASCII, UTF8, UTF32, ISCII и Unicode. Компьютеры могут обрабатывать все типы данных, включая числа, текст, фотографии, аудио- и видеофайлы. Например, 65 представляется как A, потому что всем символам, символам, числам присваивается некоторый уникальный код стандартными схемами кодирования. Некоторые из часто используемых схем кодирования описаны ниже:

  1. Непечатаемый, системные коды от 0 до 31.
  2. Меньший ASCII, от 32 до 127.
  3. Высший ASCII, от 128 до 255.
<р>2. ISCII: ISCII (индийский код письма для обмена информацией) — это аббревиатура индийского алфавитного кода для обмена информацией. ISCII — это метод кодирования, который можно использовать для кодирования широкого спектра индийских языков, как письменных, так и устных. Чтобы упростить транслитерацию между несколькими системами письма, ISCII использует единый механизм кодирования.

  1. Здесь представлено подавляющее большинство индийских языков.
  2. Набор символов прост и понятен.
  3. Между языками можно легко транслитерировать.
  1. Требуется специальная клавиатура с символьными клавишами ISCII.
  2. Поскольку Unicode был создан позже, а Unicode включал в себя символы ISCII, ISCII устарел. ISCII (код индийской письменности для обмена информацией) – это код индийской письменности для обмена информацией.
  3. ISCII – это метод кодирования, с помощью которого можно кодировать широкий спектр индийских языков, как письменных, так и устных. Чтобы упростить транслитерацию между несколькими системами письма, ISCII использует единый механизм кодирования.
  1. Юникод позволяет создавать единый программный продукт или веб-сайт для нескольких платформ, языков и стран (без переделки), что приводит к значительной экономии средств по сравнению со старыми наборами символов.
  2. Данные Unicode можно использовать без повреждения данных в различных системах.
  3. Юникод – это универсальный метод кодирования, который можно использовать для кодирования любого языка или буквы независимо от устройства, операционной системы или программного обеспечения.
  4. Юникод – это стандарт кодировки символов, который позволяет выполнять преобразование между несколькими системами кодировки символов. Поскольку Юникод является расширенным набором всех других основных систем кодировки символов, вы можете преобразовать одну схему кодировки в Юникод, а затем из Юникода в другую схему кодировки.
  5. Наиболее широко используемой кодировкой является Юникод.
  6. Применимые версии стандарта ISO/IEC 10646, определяющего кодировку символов универсального набора символов, полностью совместимы и синхронизированы с версиями стандарта Unicode. Или мы можем сказать, что он включает 96 447 кодов символов, которых достаточно для декодирования любого символа, присутствующего в мире.
<р>5. UTF-32: UTF-32 известен как 32-битный формат преобразования Unicode. Это кодировка фиксированной длины, которая кодирует кодовые точки Unicode, используя 32 бита на код. Он использует 4 байта на символ, и мы можем подсчитать количество символов в строке UTF-32, просто подсчитав байты. Основное преимущество использования UTF-32 заключается в том, что кодовые точки Unicode могут быть проиндексированы напрямую (хотя буквы в целом, такие как «кластеры графем» или некоторые эмодзи, не могут быть проиндексированы напрямую, поэтому определение отображаемой ширины строки является более сложным) . Операцией с постоянным временем является нахождение N-й кодовой точки в последовательности кодовых точек. С другой стороны, код переменной длины требует последовательного доступа для нахождения N-й кодовой точки в строке. В результате UTF-32 является простой заменой кода ASCII, который проверяет каждую проблему в строке, используя числа, увеличивающиеся на единицу.

Итак, вы можете подумать, что текст — это просто текст. Ну, подумайте еще раз. В этой серии статей мы спустимся на уровень байтов, изучим, как текст на самом деле представлен компьютерами, и обсудим, как это влияет на ваши интеграционные решения.

Что такое кодировка?

Кодирование — это способ, которым компьютер сохраняет текст в виде необработанных двоичных данных. Чтобы правильно читать текстовые данные, вы должны знать, какая кодировка использовалась для их хранения, а затем использовать ту же кодировку для интерпретации двоичных данных, чтобы получить исходный текст. Теперь вы, вероятно, думаете: «Звучит не так уж и плохо, ведь существует всего пара разных кодировок, и наверняка все текстовые данные содержат информацию о том, какая кодировка используется, верно?” Что ж, ответы на эти вопросы, к сожалению, не так просты, поэтому кодирование может стать таким кошмаром для разработчиков.

Что такое текст?

Что такое текст на самом деле, зависит от контекста. При хранении или передаче текст представляет собой просто фрагмент двоичных данных, как и любой другой тип данных. На самом базовом уровне это длинный ряд нулей и единиц. Когда он активно обрабатывается компьютером, это все еще двоичные данные, но они интерпретируются системой как отдельные символы и во многих случаях преобразуются в другое двоичное представление во время обработки. Это представление называется Unicode.

Краткое введение в Юникод

В 1988 году цифровая обработка данных становилась все более распространенной, но рынок по-прежнему оставался крайне фрагментированным, и каждый поставщик использовал собственные нестандартные решения для большинства задач. В результате взаимной совместимости между различными компьютерными системами практически не существовало, а передача данных из одной системы в другую часто была очень сложной задачей. В это время была предпринята попытка остановить поток возникающих проблем с кодировкой путем введения стандартизированного общего набора символов, известного как Unicode. Таким образом, все различные используемые кодировки можно было бы, по крайней мере, сопоставить с общим набором символов, чтобы не было никаких сомнений относительно того, какой символ должен представлять данный код.

«Юникод – это отраслевой стандарт компьютерной техники для единообразного кодирования, представления и обработки текста, выраженного в большинстве систем письменности мира. Стандарт поддерживается Консорциумом Unicode, и по состоянию на май 2019 г. самая последняя версия Unicode 12.1 содержит репертуар из 137 994 символов, охватывающих 150 современных и исторических шрифтов, а также несколько наборов символов и эмодзи.

При обработке текста Unicode берет на себя роль предоставления уникальной кодовой точки — числа, а не глифа — для каждого символа. Другими словами, Unicode представляет символ абстрактным образом и оставляет визуальное представление (размер, форму, шрифт или стиль) другому программному обеспечению, такому как веб-браузер или текстовый процессор».

Набор символов Unicode сам по себе не является кодировкой, а представляет собой просто стандартизированный набор всех символов, которые могут встретиться в файле данных. Стандарт Unicode также содержит ряд фактических кодировок. Общим для всех них, в отличие от большинства других форм кодирования текста, является то, что они поддерживают весь набор символов Unicode.

Хотя Unicode решил некоторые проблемы, связанные с избытком сосуществующих кодировок символов, он не решил их всех. Во-первых, внедрение сопутствующих систем кодирования было медленным и до сих пор далеко не универсальным. С другой стороны, несмотря на то, что наличие общего набора символов для сопоставления кодировок было, безусловно, полезным, это не изменило того досадного факта, что многие типы текстовых данных не содержат никакой информации о том, какая система кодирования использовалась для их создания.

Итак, как работает кодирование?

Хорошо, давайте перейдем к мельчайшим деталям. Что на самом деле сохраняется при сохранении текстового файла? Во-первых, мы рассмотрим одну из самых старых и простых кодировок — ASCII. Вот выдержка из статьи Википедии для ASCII:

«Первоначально основанный на английском алфавите, ASCII кодирует 128 указанных символов в семибитные целые числа, как показано на приведенной выше диаграмме ASCII. Печатаются 95 закодированных символов: они включают цифры от 0 до 9, строчные буквы от a до z, прописные буквы от A до Z и знаки препинания. Кроме того, исходная спецификация ASCII включала 33 непечатаемых управляющих кода, созданных телетайпами; большинство из них сейчас устарели, хотя некоторые из них все еще широко используются, например возврат каретки, перевод строки и коды табуляции».

Поскольку ASCII был разработан в США и основан на английском алфавите, он содержит только стандартные английские символы. Это означает, что текст, содержащий неанглийские символы (например, буквы с акцентом или специальные буквы, используемые в других языках), не может быть точно закодирован в ASCII без замены специальных символов на стандартные английские. ASCII был разработан с использованием 7-битных кодов для представления закодированных им символов, но поскольку все современные компьютеры используют байты (8 бит) в качестве наименьшей единицы памяти, символы ASCII теперь хранятся с использованием 8 бит на символ. Первый бит просто не используется.

Весь стандарт кодирования ASCII выглядит следующим образом:

Теперь давайте рассмотрим пример, чтобы увидеть, как эти тексты будут закодированы в стандарте ASCII.Вместо полного двоичного представления более длинных текстов мы будем использовать шестнадцатеричное представление для двоичных данных.

Когда вы открываете текстовый файл с кодировкой ASCII в текстовом редакторе, программа считывает каждый байт файла и ищет значение в таблице ASCII, чтобы определить, какой символ отображать для этого байта.

Однако кодировка ASCII очень ограничена. Он содержит только 95 печатных символов и поэтому может использоваться только для кодирования этих символов. Если у вас есть текстовые данные, содержащие больше символов, чем эти 95 печатных символов, вам придется использовать другую кодировку.

Это основы работы кодирования. В следующей части серии мы рассмотрим несколько различных кодировок и их отличия друг от друга, которые вы можете найти здесь: Кодировка 101 — Часть 2.

Однако сегодня, работая с сетевыми протоколами и сетевым программированием, вы столкнетесь с множеством схем кодирования данных и символов.

В этом руководстве мы рассмотрим основные схемы кодирования, используемые на компьютерах, а во второй части руководства мы рассмотрим, как данные передаются по сети.

Символы, целые числа, числа с плавающей точкой и т. д.

При хранении и передаче данных вам необходимо будет представлять следующие типы данных:

  • Символы и цифры, например A и 1
  • Длинные (32 бита) и короткие (16 бит) целые числа со знаком и без знака
  • Одинарное и двойное число с плавающей запятой
  • Логическое значение, т. е. True и False

Так как же компьютер запоминает букву А или цифру 1?

Как компьютер запоминает число вроде 60101? или 62.0101?

Как передать букву А и т. д. на другой компьютер по сети?

Компьютеры и кодировка символов

Чтобы сохранить текст в виде двоичных данных, необходимо указать кодировку для этого текста.

Компьютерные системы могут использовать различные схемы кодирования символов.

Пока данные остаются на компьютере, совершенно неважно, как они закодированы.

Однако для передачи данных между системами необходимо использовать стандартную схему кодирования.

В 1968 году ASCII (Американский стандартный код для обмена информацией) был принят в качестве стандарта кодирования текста для обмена данными.

ASCII

ASCII – это американский стандарт, разработанный для кодирования английских символов и знаков препинания, которые использовались на пишущих машинках и телетайпах того времени (1960-е годы).

ASCII использует 8 бит, хотя на самом деле используется только 7 бит.

Поскольку кодировка ASCII была разработана во время эксплуатации устройств телетайпа, она также содержит управляющие коды, предназначенные для управления устройством телетайпа.

В таблице ниже представлены сводные данные о распределении кодов.

Таблица ASCII – сводка кодов

Расширения ASCII

Поскольку ASCII не может кодировать такие символы, как знак фунта £ или распространенные символы немецкого и других европейских языков, были разработаны различные расширения.

Эти расширения сохранили набор символов ASCII и использовали неиспользуемую часть адресного пространства и управляющие коды для дополнительных символов.

Наиболее распространенными являются Windows 1252 и Latin-1 (ISO-8859).

Windows 1252 и 7-битная кодировка ASCII были наиболее широко используемыми схемами кодирования до 2008 года, когда UTF-8 стал наиболее распространенным.

ISO-8859-1,ISO-8859-15, Latin-1

ISO-8859 — это 8-битная кодировка символов, которая расширяет 7-битную схему кодирования ASCII и используется для кодирования большинства европейских языков. Подробнее см. вики.

ISO-8859-1, также известный как Latin-1, является наиболее широко используемым, поскольку его можно использовать для большинства распространенных европейских языков, например немецкого, итальянского, испанского, французского и т. д.

Она очень похожа на схему кодирования Windows-1252, но не идентична, см. Сравнение символов в Windows-1252, ISO-8859-1, ISO-8859-15

Юникод

В связи с необходимостью кодирования символов иностранных языков и других графических символов был разработан набор символов Unicode и схемы кодирования.

Самые распространенные схемы кодирования:

UTF-8 – это наиболее часто используемая схема кодирования, используемая в современных компьютерных системах и компьютерных сетях.

Это схема кодирования переменной ширины, разработанная для полной обратной совместимости с ASCII. Он использует от 1 до 4 байт. – вики

Наборы символов и схемы кодирования

Разница между ними не всегда ясна, и термины, как правило, используются взаимозаменяемо.

Набор символов — это список символов, а схема кодирования — это то, как они представлены в двоичном формате.

Это лучше всего видно с Unicode.

Схемы кодирования UTF-8, UTF-16 и UTF-32 используют набор символов Unicode, но кодируют символы по-разному.

ASCII – это набор символов и схема кодирования.

Знак порядка байтов (BOM)

Знак порядка байтов (BOM) — это символ Unicode, U+FEFF, который появляется как магическое число в начале текстового потока и может сигнализировать программе, потребляющей текст, о нескольких вещах: –Wiki

  • Порядок байтов или порядок следования байтов в текстовом потоке;
  • Тот факт, что кодировка текстового потока — Unicode, с высокой степенью достоверности;
  • Какой Unicode кодирует текстовый поток.

Спецификация различается для текста в кодировке UTF-8, UTF-16 и UTF-32

Следующая таблица, взятая из Wiki, показывает это.

Спецификации и текстовые редакторы

Как правило, большинство редакторов правильно обрабатывают спецификацию, и она не отображается.

Программное обеспечение Microsoft, такое как Блокнот, добавляет спецификацию при сохранении данных в кодировке UTF-8 и не может интерпретировать текст без спецификации, если он не является чистым ASCII.

Пример спецификации

Ниже приведен вывод простой программы на Python, которая отображает содержимое файла, содержащего символы TEST (4 символа), сохраненные в виде ASCII, UTF-8, UTF-16-BE и UTF-16-LE

Распространенные вопросы и ответы

В. Как узнать, какую кодировку символов использует файл?

A- Обычно это не так, но некоторые текстовые редакторы, такие как notepad++, отображают кодировку. Если вы получили файл, закодированный с помощью кодировки, отличной от ожидаемой, вы можете получить сообщение об ошибке при попытке его чтения.

В. Мой файл в формате ASCII, но он нормально декодируется с помощью декодера UTF-8. Почему?

A- Потому что UTF-8 обратно совместим с ASCII.

Целые числа и числа с плавающей запятой — Big и Little Endian

Примечание. Поскольку в кодировках UTF-16 и UTF-32 используются 2-байтовые или 4-байтовые целые числа, к кодированию текста с их использованием применяется следующее

Количество байтов, выделенных для целого числа или числа с плавающей запятой, зависит от системы.

Пункт Tutorials описывает это для языка программирования C, и я буду использовать его для иллюстрации

Если мы возьмем короткое целое как 2 байта, а длинное целое как 4 байта.

Поскольку они используют несколько байтов, возникает несколько вопросов:

  • Какой байт представляет старшую часть числа?
  • При сохранении в памяти, какой байт сохраняется первым
  • При отправке по сети какой байт отправляется первым.

Окончание байтов относится к последовательному порядку, в котором байты упорядочиваются в более крупные числовые значения при сохранении в памяти или при передаче по цифровым каналам связи.
Окончание байтов представляет интерес в информатике, потому что два конфликтующих и несовместимых формата широко используются: слова могут быть представлены в формате с прямым порядком байтов или прямым порядком байтов, в зависимости от того, упорядочены ли биты, байты или другие компоненты от большого конец (самый значащий бит) или маленький конец (наименьший значащий бит).
В формате с обратным порядком байтов всякий раз, когда адресуется память или отправляются/сохраняются слова побайтно, старший значащий байт — байт, содержащий старший значащий бит — сохраняется сначала (имеет младший адрес) или отправляется первым, затем следующие байты сохраняются или отправляются в порядке убывания значимости, причем младший байт — тот, который содержит младший значащий бит — сохраняется последним (имеет самый высокий адрес) или отправляется последним.

Вики

На приведенном ниже рисунке с использованием python показано целое число 16, представленное в виде 4 байтов, с использованием порядка байтов с прямым и обратным порядком байтов.

Сетевой порядок байтов и системный порядок байтов

Сетевой порядок байтов – это порядок расположения байтов при отправке данных по сети. ( TCP/IP обычно имеет формат Big Endian ).

Это означает, что старший байт отправляется первым.

Системный порядок байтов или порядок байтов хоста — это способ размещения байтов при сохранении в памяти хост-системы.

ASCII и UTF-8 – две современные системы кодирования текста. И то, и другое объясняется в этом видео с участием Кейтлин Мерри.

В 1963 году был принят Американский стандартный код для обмена информацией, или ASCII, чтобы информацию можно было переводить между компьютерами. Он был разработан для создания международного стандарта кодирования латинского алфавита; превращая двоичные числа в текст на экране вашего компьютера. ASCII кодирует символы в семь битов двоичных данных. Поскольку каждый бит может быть либо 1, либо 0, всего получается 128 возможных комбинаций. Каждое из этих двоичных чисел можно преобразовать в десятичное число от 0 до 127. Например, 1000001 в двоичном формате равняется 65 в десятом. В ASCII каждое десятичное число соответствует символу, который мы хотим закодировать.От прописных и строчных букв до цифр, символов и компьютерных команд.

Ошибки в преобразовании японских иероглифов стали такой проблемой, что у них даже есть название для этого — модзибаке. Эта проблема стала намного хуже с изобретением всемирной паутины. Для решения проблем, связанных с отправкой документов на разных языках по всему миру, был создан консорциум для создания всемирного стандарта Unicode. Как и в ASCII, в Unicode каждому символу присваивается определенный номер. Unicode также использует старую кодировку ASCII для английского языка. Таким образом, A в верхнем регистре по-прежнему равен 65. Но Unicode кодирует гораздо больше, чем 100 000 символов в большинстве языков. Для этого он использует не 8 бит данных, а 32. Но 65, закодированные в 32 бита, выглядят так, что занимает много места.

Кроме того, многие старые компьютеры интерпретируют восемь нулей подряд как конец строки символов, также называемый нулем. Это означает, что они не будут отправлять никаких символов, которые появятся позже. Метод кодирования Unicode, UTF8, решает эти проблемы. Вплоть до номера 127 значение ASCII остается неизменным. Так что A по-прежнему 01000001. Для всего, что выше 127, UTF8 разделяет код на два байта. Он добавляет 110 к первому байту и 10 ко второму байту. Затем вы просто заполняете двоичный код для промежуточных битов. Например, число 325 равно 00101000101, которое вставляется вот так. Это работает для первых 4096 символов. После этого добавляется еще один байт.

Поделиться этой публикацией

Два стандарта кодирования символов определяют, как символы декодируются из единиц и нулей в текст, который вы видите на экране прямо сейчас, и в различные языки, просматриваемые каждый день во всемирной паутине. Этими двумя стандартами кодирования являются ASCII и Unicode.

ASCII

Американский стандартный код для обмена информацией (ASCII) был разработан для создания международного стандарта кодирования латинского алфавита. В 1963 году был принят ASCII, чтобы информацию можно было интерпретировать между компьютерами; представляющие строчные и заглавные буквы, цифры, символы и некоторые команды. Поскольку ASCII кодируется с использованием единиц и нулей, системы счисления с основанием 2, он использует семь битов. Семь бит позволяют 2 в степени 7 = 128 возможных комбинаций цифр для кодирования символа.

Поэтому ASCII гарантирует, что можно закодировать 128 важных символов:

Хотите продолжать
учиться?

Представление данных в вычислениях: оживление данных

Как работает кодировка ASCII

  • Вы уже знаете, как преобразовывать десятичные числа в двоичные.
  • Теперь вам нужно преобразовать буквы в двоичные числа.
  • Каждому символу соответствует десятичное число (например, A → 65).
  • ASCII использует 7 бит.
  • Мы используем первые 7 столбцов таблицы преобразования, чтобы создать 128 различных чисел (от 0 до 127)

Например, 1000001 дает нам число 65 ( 64 + 1 ), что соответствует букве «А».

Вот как «HELLO» закодировано в ASCII в двоичном формате:

< /tr> < /tbody>
Латинские символы ASCII
H 1001000< /td>
E 1000101
L 1001100
L 1001100
O 1001111

Давайте применим эту теорию на практике:

  1. Откройте Блокнот или любой другой текстовый редактор.
  2. Введите сообщение и сохраните его, например. "данные прекрасны"
  3. Посмотрите на размер файла — у меня 18 байт
  4. Теперь добавьте еще одно слово, например "данные такие красивые"
  5. Если вы еще раз посмотрите на размер файла, вы увидите, что он изменился — теперь мой файл стал на 3 байта больше (SO[ПРОБЕЛ]: «S», «O» и пробел)

Юникод и UTF-8

Проблема несовместимых систем кодирования стала более актуальной с изобретением Всемирной паутины, поскольку люди обменивались цифровыми документами по всему миру, используя несколько языков. Для решения этой проблемы Консорциум Unicode создал универсальную систему кодирования под названием Unicode. Юникод кодирует более 100 000 символов, охватывая все символы, которые вы найдете в большинстве языков. Unicode присваивает каждому символу определенное число, а не двоичную цифру. Но с этим были некоторые проблемы, например:

  1. Для кодирования 100 000 символов потребуется около 32 двоичных разрядов. Unicode использует ASCII для английского языка, поэтому A по-прежнему равно 65. Однако при 32-битной кодировке буква A будет двоичным представлением 0000000000000000000000000000000000001000001. Это тратит много драгоценного места!
  2. Многие старые компьютеры интерпретируют восемь нулей подряд (ноль) как конец строки символов. Таким образом, эти компьютеры не будут отправлять символы, следующие за восемью нулями подряд (они не будут отправлять букву A, если она представлена ​​как 0000000000000000000000000000000000001000001).

Метод кодирования Unicode UTF-8 решает следующие проблемы:
– До символа с номером 128 используется обычное значение ASCII (так, например, A равно 01000001)
– Для любого символа после 128, UTF-8 разделяет код на два байта и добавляет «110» к началу первого байта, чтобы показать, что это начальный байт, и «10» к началу второго байта, чтобы показать, что он следует за первым байтом.

Итак, для каждого символа после числа 128 у вас есть два байта:

И вы просто вводите двоичное число между ними:

Это работает для первых 2048 символов. Для других символов в начале первого байта добавляется еще одна «1», а также используется третий байт:

Это дает вам 16 пробелов для двоичного кода. Таким образом, UTF-8 достигает четырех байтов:

Таким образом, UTF-8 позволяет избежать проблем, упомянутых выше, а также необходимости в индексе, и позволяет вам декодировать символы из двоичной формы в обратном порядке (т. е. он обратно совместим).

Занятия в классе

Есть много интересных занятий по обучению кодированию символов. Мы включили два упражнения ниже, чтобы вы могли попробовать их в своем классе. Какие у вас есть главные советы по обучению кодированию символов? Поделитесь ими в комментариях!

Перевод секретных сообщений: опубликуйте короткое секретное сообщение в формате ASCII в разделе комментариев, а также переведите или ответьте на сообщения других участников в формате ASCII

Двоичные браслеты: создавайте браслеты, используя разноцветные бусины для обозначения единиц и нулей и написания инициала или имени в ASCII.

Чтобы пакет данных правильно передавался по сети, его необходимо преобразовать в лучший и самый надежный способ передачи. По этой причине данные кодируются так, чтобы их лучше всего понимали компьютеры.

Кодирование данных — это преобразование данных в цифровые сигналы, т. е. нули и единицы.

В этом руководстве рассказывается, как кодируются данные, передаваемые по сети. Особое внимание будет уделено различным методам кодирования данных. Также речь пойдет о цифровых и аналоговых данных.

Различные методы кодирования данных, на которых мы сосредоточимся, включают в себя; Невозврат к нулевому уровню, Невозврат к нулю, Невозврат к нулю с инвертированием, Двухфазное кодирование и Блочное кодирование.

Чтобы данные можно было закодировать, их необходимо преобразовать в вариации сигнала.

Эти варианты сигнала включают:

  1. Преобразование аналоговых данных в аналоговый сигнал. Сюда входят: Амплитудная модуляция, фазовая модуляция и частотная модуляция.
  2. Цифровые данные в аналоговые сигналы – сюда входят; Амплитудная манипуляция, частотная манипуляция и фазовая манипуляция.
  3. Цифровые данные в цифровые сигналы. Это то, на чем мы сосредоточимся.

Типы методов кодирования включают:

  1. Невозврат к нулю
  2. Двухфазное кодирование
  3. Блокировать кодировку

Схема невозврата к нулю

Сигнал Non Return to Zero включает в себя как положительное, так и отрицательное напряжение. NRZ-Level и NRZ-Inverted — это два варианта схемы без возврата к нулю.

Невозврат к нулевому уровню

Уровень невозврата к нулю, также сокращенно обозначаемый как NRZ-L, уровень напряжения определяет значение бита. Мы берем положительное и отрицательное напряжение для представления битов 1 и 0 соответственно.

У нас будет пример данных 11001100.

Первый бит равен 1, и по правилу бит 1 представлен положительным напряжением. В этом случае мы проводим прямую линию на положительном уровне.

Следующий бит равен 1, что соответствует положительному напряжению. Поэтому проводим прямую линию на положительном уровне.

Бит 0 следует за битом 1, поэтому мы рисуем прямую линию на отрицательном уровне.

Тот же процесс продолжается до тех пор, пока не будут записаны все биты.

Если мы соединим эти линии, мы получим наш сигнал в схеме NRZ-L.

Невозврат к нулю инвертирован

В инвертированном режиме без возврата к нулю (NRZ-I) изменение или отсутствие изменения уровня напряжения определяет значение бита. Для бита 1 произойдет изменение уровня напряжения, а для бита 0 уровень напряжения не изменится.

Давайте рассмотрим пример.

Мы рассматриваем те же данные, что и раньше, и предполагаем, что сигнал был на положительном уровне до момента времени 1.

Для бита 1 мы знаем, что будет изменение уровня сигнала. Следовательно, сигнал сдвинется на отрицательный уровень.

Для следующего бита 1 происходит изменение уровня сигнала. Поскольку текущий уровень отрицательный, мы нарисуем положительный сигнал.

Следующий бит равен 0, что означает отсутствие изменений, поэтому мы продолжаем на положительном уровне, поскольку текущий положительный. Опять же, у нас бит 0, поэтому мы продолжаем на положительном уровне.

Следующий бит равен 1, поэтому мы переходим от положительного к отрицательному.

Следующий бит равен 1, поэтому нам нужно снова изменить уровень, и, следовательно, мы рисуем отрицательный сигнал.

Снова у нас есть 1, поэтому мы снова меняем уровень и переходим от отрицательного к положительному.

Наконец, у нас есть бит 0, что означает, что уровень сигнала не изменится. Поэтому продолжаем сигнал на плюсе.

Следующий бит также равен 0, следовательно, никаких изменений.

После кодирования мы получаем осциллограмму ниже:

Проблемы, возникшие в NRZ-L и NRZ-I

Несмотря на то, что отклонение базовой линии является проблемой для обоих вариантов, в NRZ-L оно вдвое серьезнее.

Если есть длинная последовательность нулей или единиц, в NRZ-I мы получаем плоскую линию, которая приводит к искажению средней мощности сигнала. В результате получатель с трудом распознает значение бита. В NRZ-I эта проблема возникает только для длинной последовательности нулей.

Проблема синхронизации также существует в обеих схемах. Опять же, эта проблема более серьезна в NRZ-L, чем в NRZ-I.

Хотя длинная последовательность нулей может вызвать проблемы в обеих схемах, длинная последовательность единиц влияет только на NRZ-L.

Еще одна проблема с NRZ-L возникает при внезапной смене полярности в системе. При изменении полярности системы сигнал инвертируется. В результате все 0 интерпретируются как 1, а все 1 как 0.

Однако в NRZ-I этой проблемы нет, поскольку в NRZ-I значение бита не определяется уровнем напряжения.

Двухфазное кодирование

Двухфазное кодирование включает двойную проверку сигнала. Сигналы проверяются в начале и в середине. Благодаря двойной проверке сигнала тактовая частота вдвое превышает скорость передачи данных.

Синхронизация часов берется из сигнала; следовательно, требуется большая пропускная способность. Существует два типа двухфазного кодирования: дифференциальный манчестерский код и двухфазный манчестерский код.

Дифференциальный Манчестер

В дифференциальном Манчестере переход происходит всякий раз, когда в середине битового интервала есть ноль.

Например, в нашем примере сигнал 101101 можно закодировать как:

Напряжение сигнала 1, которое является высоким, начинается сверху.

Теперь, когда следующий бит равен нулю, происходит переход, и сигнал снова начинается сверху. Та же процедура выполняется до тех пор, пока не будут записаны все биты.

На рисунке ниже показан результирующий закодированный сигнал:

Двухфазный Манчестер

В манчестерском кодировании мы делаем инверсию всякий раз, когда находим единицу, и не делаем инверсию, когда находим ноль.

Это сложно, потому что всякий раз, когда мы находим ноль, мы возвращаемся на другую сторону, а затем снова возвращаемся на ту же сторону.

Мы должны помнить, что всегда начинаем с положительной стороны. Когда мы находим ноль, мы переходим на другую сторону, а затем делаем переход и возвращаемся на ту же сторону.

Здесь переход выполняется в середине битового интервала. Результирующий импульс перехода от высокого к низкому, когда вход равен 1, и наоборот для входа 0.

Например, чтобы закодировать 1011:

Первый бит равен 1, поэтому мы начинаем сверху вниз. Когда он равен нулю, вы начинаете снизу к середине, как показано на рисунке ниже:

Блокировать кодировку

Для достижения синхронизации часов необходима избыточность для обнаружения ошибок. Эта избыточность может быть достигнута путем блочного кодирования для повышения производительности.

Этот тип кодирования заменяет блок из x битов на блок из y бит, в котором y биты более значимы по сравнению с x битами; это называется кодированием xB/yB.

Это включает в себя три шага:

Разделение. На этом шаге группа битов делится на x битов.

Замена — это основной шаг; Биты x заменяются группой битов y.

Комбинация. Здесь y битовых групп объединяются для формирования потока. Вновь сформированный поток содержит больше битов, чем исходный; поэтому отправляется больше данных.

Два типа блочного кодирования: Методы кодирования 4B/5B и 8B/6T.

Техника кодирования 4B/5B

Как и при манчестерском кодировании, для отправки данных требуются часы с удвоенной скоростью.

В этом типе кодирования не требуются часы с двойной скоростью. Вместо этого 4 бита кода отображаются в 5 бит; иметь минимум 1 бит в группе.

Частота с двойной скоростью можно избежать, назначив 5 битов вместо 4 последовательных битов, которые заранее определены в словаре.

При выборе 5-битного кода должен быть только один 0 в начале и не более двух нулей в конце. Например, 4-битное число 0110 может использоваться для представления 5-битного числа 01110.

Следовательно, передача происходит в виде блока битов.

Техника кодирования 8B/6T

Для отправки данных в ранее описанных методах кодирования использовались два напряжения. Что, если мы используем больше напряжений, например, 3 вольта или более? Можем ли мы отправить больше данных? Ответ положительный.

Например, если мы используем уровни 6 вольт для представления 8 битов для одного сигнала, мы называем тип кодирования кодированием 8B/6T.

Это означает, что у нас может быть до 15625, т.е. 5 6 комбинаций, и 65536, т.е. 4 8 комбинаций для битов.

Из этой статьи мы узнали, что когда для кодирования данных используется блочное кодирование, по сети отправляется больше битов; следовательно, он более надежен.

Кроме того, блочное кодирование более эффективно, поскольку для отправки данных не требуются двойные часы; следовательно, нет никаких последствий плохой синхронизации часов.

Как обсуждалось выше, при кодировании без возврата к нулю мы понимаем, что кодирование NRZ не является лучшим способом кодирования данных для передачи из-за отсутствия тактовой синхронизации; следовательно, получатель может получить неправильное сообщение.

Для надежной передачи цифровые данные обычно преобразуются в цифровые сигналы с использованием уже изученных нами методов.

Заключение

Эта статья поможет вам лучше понять двухфазное кодирование, блочное кодирование и кодирование без возврата к нулю.

Вы поняли различные типы двухфазного кодирования, как дифференциального, так и двухфазного манчестерского, и кодирование сообщения обоими типами.

Читайте также: