Изменения

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

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

970 байт добавлено, 14:33, 16 декабря 2018
Нет описания правки
}}
==Принцип работы дешифраторашифратора==
[[ФайлFile:2to4decoder4-to-2encoder.png|thumb|180px|Дешифратор <tex>2</tex>Шифратор 4-to-<tex>4</tex>2]]
Суть дешифратора Принцип работы шифратора заключается в том, что с помощью выходы <tex>n</tex> входов <tex>s_0z_0</tex>, <tex>s_1z_1</tex>, <tex>\ldots</tex>, <tex>s_z_{n-1}</tex> можно задавать выход, на который будет подаваться кодируют один из входов <tex>1s_0</tex>. Для того, чтобы лучше понять, как работает дешифратор, рассмотрим в качестве примера дешифратор <tex>2</tex>-to-<tex>4</tex> (это значит, что у этого дешифратора есть два входа <tex>s_0</tex> и <tex>s_1</tex> и четыре выхода <tex>z_0</tex>, <tex>z_1\ldots</tex>, <tex>z_2s_{2^n-1}</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 = 14</tex>, -to-<tex>s_1 = 0</tex>, то на выходе <tex>z_1</tex> будет <tex>1</tex>, на остальных выходах будут <tex>02</tex>. Если <tex>s_0 = 0</tex>, <tex>s _1 = 1</tex>, то на выходе <tex>z_2</tex> будет <tex>1z_0 = z_1 = 0</tex>, а на остальных входах будет <tex>0</tex>. Если если же <tex>s_0 = s_1 = 1</tex>, то на выходе <tex>z_3</tex> будет <tex>z_0 = 1</tex>, а на других — и <tex>z_1 = 0</tex>. Для Остальные случаи аналогичные, но для более ясной картины обратимся лучшего понимания можно обратиться к таблице истинности.
{| class="wikitable"
|-align="center"
! <tex>S_0</tex> !! <tex>S_1</tex> !! <tex>Z_0S_2</tex> !! <tex>Z_1S_3</tex> !! <tex>Z_2Z_0</tex> !! <tex>Z_3Z_1</tex>
|-align="center"
| <tex>\textbf{01}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>
|-align="center"
| <tex>\textbf{1}0</tex> || <tex>\textbf{01}</tex> || <tex>0</tex> || <tex>\textbf{1}0</tex> || <tex>0</tex> || <tex>01</tex>
|-align="center"
| <tex>\textbf{0}</tex> || <tex>\textbf{1}0</tex> || <tex>0\textbf{1}</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex>
|-align="center"
| <tex>\textbf{1}0</tex> || <tex>\textbf{1}0</tex> || <tex>0</tex> || <tex>0\textbf{1}</tex> || <tex>01</tex> || <tex>\textbf{1}</tex>
|}
==Логическая схема дешифраторашифратора==
Давайте построим Построить логическую схему дешифратора рекурсивным способомшифратора можно следующим образом: допустим, что мы построили схему для давайте будем использовать гейт <tex>n-1OR</tex> входа, теперь попробуем слить который имеет <tex>n</tex>-ый выход с предыдущими входов (где <tex>n-1</tex>. Для <tex>n=1</tex> схема выглядит тривиальным образом: от входа <tex>s_0</tex> отходят два провода— любоё натуральное число), один напрямую соединён с выходом и на выходе возвращает <tex>z_00</tex>, другой соединён с гейтом если на всех его входах будет подано <tex>NOT0</tex>, а в противном случае этот гейт вернёт <tex>NOT</tex> соединён с выходом <tex>z_1</tex>. Теперь допустим, что мы можем построить схему для <tex>n-1</tex> входов. Тогда для каждого входа рассмотрим двоичное представление номера этого входа, и если на <tex>ni</tex>-ый вход соединим с дешифратором ом месте стоит <tex>1</tex>-to-<tex>2</tex>, а первые <tex>n-1</tex> входы то соединим этот вход с дешифратором гейтом <tex>(n-1)</tex>-to-<tex>(2^{n-1})</tex> и потом соединим каждый выход дешифратора <tex>(n-1)</tex>-to-<tex>(2^{n-1})OR</tex> , который соединён с каждым выходом дешифратора <tex>1</tex>-to-<tex>2</tex> с помощью гейтов <tex>AND</tex>, потом соединим соответствующие гейты с выходами <tex>z_i</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>. Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах вход <tex>s_0</tex>, то на всех выходах будет <tex>s_10</tex>, <tex>\ldots</tex>, <tex>s_{n-1}</tex>, поэтому наша схема а сам вход не будет работать верносоединён ни с каким гейтом).
{|
|[[Файл:LogicSircuit1to2decoderLogicSircuit2to1encoder.png|thumb|360px|Логическая схема дешифратора шифратора <tex>12</tex>-to-<tex>21</tex>]]|[[Файл:LogicSircuit2to4decoderLogicSircuit4to2encoder.png|thumb|360px|Логическая схема дешифратора шифратора <tex>24</tex>-to-<tex>42</tex>]]
|}
==Принцип работы шифраторадешифратора==
[[FileФайл:4-to-2encoder2to4decoder.png|thumb|180px|Шифратор 4Дешифратор <tex>2</tex>-to-2<tex>4</tex>]]
Принцип работы шифратора Суть дешифратора заключается в том, что выходы с помощью <tex>z_0n</tex> входов <tex>s_0</tex>, <tex>z_1s_1</tex>, <tex>\ldots</tex>, <tex>z_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>\ldotsz_1</tex>, <tex>s_{2^n-1}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>41</tex>-to-, на остальных выходах будут <tex>20</tex>. Если <tex>s_0 = 0</tex>, <tex>s _1 = 1</tex>, то на выходе <tex>z_2</tex> будет <tex>1</tex>, а на остальных входах будет <tex>z_0 = z_1 = 0</tex>, если . Если же <tex>s_0 = s_1 = 1</tex>, то на выходе <tex>z_3</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_2Z_0</tex> !! <tex>S_3Z_1</tex> !! <tex>Z_0Z_2</tex> !! <tex>Z_1Z_3</tex>
|-align="center"
| <tex>\textbf{10}</tex> || <tex>\textbf{0}</tex> || <tex>0\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex>
|-align="center"
| <tex>0\textbf{1}</tex> || <tex>\textbf{10}</tex> || <tex>0</tex> || <tex>0\textbf{1}</tex> || <tex>0</tex> || <tex>10</tex>
|-align="center"
| <tex>\textbf{0}</tex> || <tex>0\textbf{1}</tex> || <tex>\textbf{1}0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex>
|-align="center"
| <tex>0\textbf{1}</tex> || <tex>0\textbf{1}</tex> || <tex>0</tex> || <tex>\textbf{1}0</tex> || <tex>10</tex> || <tex>\textbf{1}</tex>
|}
==Логическая схема шифраторадешифратора==Построить Давайте построим логическую схему шифратора в общем случае довольна нетривиальная задачадешифратора рекурсивным способом: допустим, что мы построили схему для <tex>n-1</tex> входа, теперь попробуем слить <tex>n</tex>-ый выход с предыдущими <tex>n-1</tex>. Для <tex>n=1</tex> схема выглядит тривиальным образом: от входа <tex>s_0</tex> отходят два провода, один напрямую соединён с выходом <tex>z_0</tex>, другой соединён с гейтом <tex>NOT</tex>, а гейт <tex>NOT</tex> соединён с выходом <tex>z_1</tex>. Теперь допустим, поэтому ограничимся лишь двумя частными случаями шифраторов что мы можем построить схему для <tex>n-1</tex> входов. Тогда <tex>n</tex>-ый вход соединим с дешифратором <tex>1</tex>-to-<tex>2</tex>, а первые <tex>n-1</tex> входы соединим с дешифратором <tex>(n-1)</tex>-to-<tex>(2^{n-1})</tex> и потом соединим каждый выход дешифратора <tex>4(n-1)</tex>-to-<tex>(2^{n-1})</tex> с каждым выходом дешифратора <tex>1</tex>-to-<tex>2</tex> с помощью гейтов <tex>AND</tex>, потом соединим соответствующие гейты с выходами <tex>z_i</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>. Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{n-1}</tex>, поэтому наша схема будет работать верно.
{|
|[[Файл:LogicSircuit2to1encoderLogicSircuit1to2decoder.png|thumb|360px|Логическая схема шифратора дешифратора <tex>21</tex>-to-<tex>12</tex>]]|[[Файл:LogicSircuit4to2encoderLogicSircuit2to4decoder.png|thumb|360px|Логическая схема шифратора дешифратора <tex>42</tex>-to-<tex>24</tex>]]
|}
390
правок

Навигация