Изменения

Перейти к: навигация, поиск

Шифратор и дешифратор

8605 байт добавлено, 19:06, 4 сентября 2022
м
rollbackEdits.php mass rollback
<div style="background-color: #ABCDEF; font-size: 16px; font-weight: bold; color: #000000; text-align: center; padding: 4px; border-style: solid; border-width: 1px;">Эта статья находится в разработке!</div>
<includeonly>[[Категория: В разработке]]</includeonly>
 
{{Определение
|definition='''ДешифраторШифратор''' (англ. ''decoderencoder'') - логическое устройство— [[Реализация булевой функции схемой из функциональных элементов| логическая схема]], которое имеет $n$ входов и $имеющая <tex>2^n$ выходов. Обозначим входы как $y_0$</tex> входов <tex>s_0</tex>, $y_1$<tex>s_1</tex>, $<tex>\ldots$</tex>, $y_<tex>s_{2^n-1}$</tex> и <tex>n</tex> выходов <tex>z_0</tex>, выходы как $<tex>z_1$</tex>, $z_2$, $<tex>\ldots$</tex>, $<tex>z_{2^n-1}$</tex>. На все выходы подаётся $0$Если на <tex>i</tex>-ый вход <tex>s_i</tex> подать <tex>1</tex>, а на выход $z_i$ подаётся $1$остальные входы — <tex>0</tex>, где $i$ - числото выходы <tex>z_0</tex>, которое кодируется входами $y_0$<tex>z_1</tex>, $y_1$, $<tex>\ldots$</tex>, $y_n$<tex>z_{n-1}</tex> будут кодировать число <tex>i</tex>.
}}
{{Определение
|definition='''ШифраторДешифратор''' (англ. ''encoderdecoder'') - логическое устройство— логическая схема, которое имеет $2^имеющая <tex>n$ </tex> входов <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{n-1}</tex> и $<tex>2^n$ </tex> выходов<tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{2^n-1}</tex>. Если подать сигнал ровно на один входНа все выходы подаётся <tex>0</tex>, то на выходы будут кодировать номер входакроме выхода <tex>z_i</tex>, на который подан сигнал.подаётся <tex>1</tex>, где <tex>i</tex> — число, которое закодировано входами <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{n-1}</tex>
}}
 
==Принцип работы шифратора==
 
[[File:4-to-2encoder.png|thumb|180px|Шифратор 4-to-2]]
 
Принцип работы шифратора заключается в том, что выходы <tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{n-1}</tex> кодируют один из входов <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{2^n-1}</tex> в двоичной системе счисления. Очевидно, что если подать на несколько входов значение <tex>1</tex>, то такая схема будет работать некорректно. В качестве примера рассмотрим шифратор <tex>4</tex>-to-<tex>2</tex>. Если <tex>s_0 = 1</tex>, то <tex>z_0 = z_1 = 0</tex>, если же <tex>s_1 = 1</tex>, то <tex>z_0 = 1</tex> и <tex>z_1 = 0</tex>. Остальные случаи разбираются аналогичным образом.
 
{| class="wikitable"
|-align="center"
! <tex>S_0</tex> !! <tex>S_1</tex> !! <tex>S_2</tex> !! <tex>S_3</tex> !! <tex>Z_0</tex> !! <tex>Z_1</tex>
|-align="center"
| <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>
|-align="center"
| <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>1</tex>
|-align="center"
| <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>1</tex> || <tex>0</tex>
|-align="center"
| <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>1</tex> || <tex>1</tex>
|}
 
==Логическая схема шифратора==
 
Построить логическую схему шифратора можно следующим образом: давайте будем использовать гейт <tex>OR</tex>, который имеет <tex>m</tex> входов (где <tex>m</tex> — какое-то натуральное число), и на выходе возвращает <tex>0</tex>, если на всех его входах будет подано <tex>0</tex>, в противном случае этот гейт вернёт <tex>1</tex>. Давайте рядом с каждым выходом <tex>z_i</tex> поставим гейт <tex>OR</tex>, и будем, по необходимости, расширять этот гейт. Тогда для каждого входа рассмотрим двоичное представление номера этого входа, и если на <tex>i</tex>-ом месте стоит <tex>1</tex>, то соединим этот вход с гейтом <tex>OR</tex>, который соединён с выходом <tex>z_i</tex>. Очевидно, если подать ровно на один вход <tex>1</tex>, то выходы будут кодировать это число в двоичном представлении (если подать <tex>1</tex> на вход <tex>s_0</tex>, то на всех выходах будет <tex>0</tex>, а сам вход не будет соединён ни с каким гейтом).
 
{|
|[[Файл:LogicSircuit2to1encoder.png|thumb|360px|Логическая схема шифратора <tex>2</tex>-to-<tex>1</tex>]]
|[[Файл:LogicSircuit4to2encoder.png|thumb|360px|Логическая схема шифратора <tex>4</tex>-to-<tex>2</tex>]]
|}
==Принцип работы дешифратора==
 
[[Файл:2to4decoder.png|thumb|180px|Дешифратор <tex>2</tex>-to-<tex>4</tex>]]
 
Суть дешифратора заключается в том, что с помощью <tex>n</tex> входов <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{n-1}</tex> можно задавать выход, на который будет подаваться <tex>1</tex>. Для того, чтобы лучше понять, как работает дешифратор, рассмотрим в качестве примера дешифратор <tex>2</tex>-to-<tex>4</tex> (это значит, что у этого дешифратора есть два входа <tex>s_0</tex> и <tex>s_1</tex> и четыре выхода <tex>z_0</tex>, <tex>z_1</tex>, <tex>z_2</tex> и <tex>z_3</tex>). Если <tex>s_0 = s_1 = 0</tex>, то на выходе <tex>z_0</tex> будет значение <tex>1</tex>, на остальных выходах будет <tex>0</tex>. Если же <tex>s_0 = 1</tex>, <tex>s_1 = 0</tex>, то на выходе <tex>z_1</tex> будет <tex>1</tex>, на остальных выходах будут <tex>0</tex>. Если <tex>s_0 = 0</tex>, <tex>s _1 = 1</tex>, то на выходе <tex>z_2</tex> будет <tex>1</tex>, а на остальных входах будет <tex>0</tex>. Если же <tex>s_0 = s_1 = 1</tex>, то на выходе <tex>z_3</tex> будет <tex>1</tex>, а на других — <tex>0</tex>.
 
{| class="wikitable"
|-align="center"
! <tex>S_0</tex> !! <tex>S_1</tex> !! <tex>Z_0</tex> !! <tex>Z_1</tex> !! <tex>Z_2</tex> !! <tex>Z_3</tex>
|-align="center"
| <tex>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>
|-align="center"
| <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex>
|-align="center"
| <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex>
|-align="center"
| <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex>
|}
==Логическая схема дешифратора==
[[Файл:LogicSircuit2to4decoder.png|thumb|180px|Логическая схема дешифратора 2-to-4]]
Преимущество Давайте построим логическую схему дешифратора заключается в томрекурсивным способом: допустим, что размер схемы линейно зависит мы построили схему для <tex>n-1</tex> входа, теперь попробуем слить <tex>n</tex>-ый выход с предыдущими <tex>n-1</tex>. Для <tex>n=1</tex> схема выглядит тривиальным образом: от входоввхода <tex>s_0</tex> отходят два провода, один напрямую соединён с выходом <tex>z_1</tex>, другой соединён с гейтом <tex>NOT</tex>, а гейт <tex>NOT</tex> соединён с выходом <tex>z_0</tex>. Принцип построения такой схемы заключается в томТеперь допустим, что мы сначала строим можем построить схему для $<tex>n-1$ </tex> входов, потом пытаемся добавить $. Тогда <tex>n$</tex>-ый вход таксоединим с дешифратором <tex>1</tex>-to-<tex>2</tex>, чтобы схема оставалась корректной. Заметим, что если на $X$ подать $0$, то на всех выходах $Z_0$, $Z_1$, $\ldots$, $Z_а первые <tex>n-1</tex> входы соединим с дешифратором <tex>(n-1)</tex>-to-<tex>(2^{n-1})</tex> и потом соединим каждый выход дешифратора <tex>(n-1)</tex>-to-<tex>(2^{n - 1}$ будет $0$)</tex> с каждым выходом дешифратора <tex>1</tex>-to-<tex>2</tex> с помощью гейтов <tex>AND</tex>, а если подать $1$потом соединим соответствующие гейты с выходами <tex>z_i</tex> таким образом, то $чтобы значение на входе <tex>z_i</tex> было равно <tex>1$ должна оказаться </tex> только на выходе $Z_i$в том случае, где $если число <tex>i$ </tex> кодируется входами $S_0$<tex>s_0</tex>, $S_1$<tex>s_1</tex>, $<tex>\ldots$</tex>, $S_<tex>s_{n-1}$</tex>. Давайте построим такую схемуОчевидно, чтобы с помощью гейтов $NOT$ и $AND$ у нас получилось ровно $2^n$ различных вариантов что мы таким образом перебрали всевозможные комбинации значений на входах $S_0$<tex>s_0</tex>, $S_1$<tex>s_1</tex>, $<tex>\ldots$</tex>, $S_<tex>s_{n-1}$</tex>, поэтому наша схема будет работать верно{||[[Файл:LogicSircuit1to2decoder.png|thumb|360px|Логическая схема дешифратора <tex>1</tex>-to-<tex>2</tex>]]|[[Файл:LogicSircuit2to4decoder.png|thumb|360px|Логическая схема дешифратора <tex>2</tex>-to-<tex>4</tex>]]|} ==Использование в реальной жизни==Принцип работы дешифратора используется при построении [[Мультиплексор|мультиплексора и демультиплексора]]. Также шифраторы и дешифраторы используются в том случае, когда надо передавать большое количество данных, при этом использовать много проводов затруднительно (к примеру телеграф). В этом случае они позволяют использовать малое количество проводов, обеспечивая при этом наибольшее возможное количество состояний, которое может быть передано. ==См. также==*[[Реализация булевой функции схемой из функциональных элементов]]*[[Метод Лупанова синтеза схем]]*[[Мультиплексор и демультиплексор]] ==Источники информации==*[https://en.wikipedia.org/wiki/Priority_encoder Wikipedia - Priority encoder]*[https://en.wikipedia.org/wiki/Binary_decoder Wikipedia - Binary decoder]*[https://www.efxkits.us/different-types-encoder-decoder-applications Different Types of Encoder and Decoder and Its Uses] [[Категория: Дискретная математика и алгоритмы]] [[Категория: Схемы из функциональных элементов ]]
1632
правки

Навигация