Шифратор и дешифратор — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Источники информации)
м (rollbackEdits.php mass rollback)
 
(не показано 11 промежуточных версий 2 участников)
Строка 1: Строка 1:
<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='''Шифратор''' (англ. ''encoder'') — логическая схема, имеющая <tex>2^n</tex> входов <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{2^n - 1}</tex> и <tex>n</tex> выходов <tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{n-1}</tex>. Если на <tex>i</tex>-ый вход <tex>s_i</tex> подать <tex>1</tex>, а на остальные входы — <tex>0</tex>, то выходы <tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{n-1}</tex> будут кодировать число <tex>i</tex>.
+
|definition='''Шифратор''' (англ. ''encoder'') — [[Реализация булевой функции схемой из функциональных элементов| логическая схема]], имеющая <tex>2^n</tex> входов <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_{2^n - 1}</tex> и <tex>n</tex> выходов <tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{n-1}</tex>. Если на <tex>i</tex>-ый вход <tex>s_i</tex> подать <tex>1</tex>, а на остальные входы — <tex>0</tex>, то выходы <tex>z_0</tex>, <tex>z_1</tex>, <tex>\ldots</tex>, <tex>z_{n-1}</tex> будут кодировать число <tex>i</tex>.
 
}}
 
}}
  
 
{{Определение
 
{{Определение
|definition='''Дешифратор''' (англ. ''decoder'') — [[Реализация булевой функции схемой из функциональных элементов| логическая схема]], имеющая <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>
+
|definition='''Дешифратор''' (англ. ''decoder'') — логическая схема, имеющая <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>
 
}}
 
}}
  
Строка 14: Строка 11:
 
[[File:4-to-2encoder.png|thumb|180px|Шифратор 4-to-2]]
 
[[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>. Остальные случаи аналогичные, но для более лучшего понимания можно обратиться к таблице истинности.
+
Принцип работы шифратора заключается в том, что выходы <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"
 
{| class="wikitable"
Строка 42: Строка 39:
 
[[Файл:2to4decoder.png|thumb|180px|Дешифратор <tex>2</tex>-to-<tex>4</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>. Для более ясной картины обратимся к таблице истинности.
+
Суть дешифратора заключается в том, что с помощью <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"
 
{| class="wikitable"
Строка 59: Строка 56:
 
==Логическая схема дешифратора==
 
==Логическая схема дешифратора==
  
Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для <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>(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>, поэтому наша схема будет работать верно.
+
Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для <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>, а первые <tex>n-1</tex> входы соединим с дешифратором <tex>(n-1)</tex>-to-<tex>(2^{n-1})</tex> и потом соединим каждый выход дешифратора <tex>(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>, поэтому наша схема будет работать верно.
  
 
{|
 
{|
Строка 72: Строка 69:
 
*[[Реализация булевой функции схемой из функциональных элементов]]
 
*[[Реализация булевой функции схемой из функциональных элементов]]
 
*[[Метод Лупанова синтеза схем]]
 
*[[Метод Лупанова синтеза схем]]
*[[Мультиплексор]]
+
*[[Мультиплексор и демультиплексор]]
  
 
==Источники информации==
 
==Источники информации==
*[https://en.wikipedia.org/wiki/Priority_encoder - Priority encoder]
+
*[https://en.wikipedia.org/wiki/Priority_encoder Wikipedia - Priority encoder]
 
*[https://en.wikipedia.org/wiki/Binary_decoder Wikipedia - Binary decoder]
 
*[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]
 
*[https://www.efxkits.us/different-types-encoder-decoder-applications Different Types of Encoder and Decoder and Its Uses]

Текущая версия на 19:06, 4 сентября 2022

Определение:
Шифратор (англ. encoder) — логическая схема, имеющая 2n входов s0, s1, , s2n1 и n выходов z0, z1, , zn1. Если на i-ый вход si подать 1, а на остальные входы — 0, то выходы z0, z1, , zn1 будут кодировать число i.


Определение:
Дешифратор (англ. decoder) — логическая схема, имеющая n входов s0, s1, , sn1 и 2n выходов z0, z1, , z2n1. На все выходы подаётся 0, кроме выхода zi, на который подаётся 1, где i — число, которое закодировано входами s0, s1, , sn1


Принцип работы шифратора

Шифратор 4-to-2

Принцип работы шифратора заключается в том, что выходы z0, z1, , zn1 кодируют один из входов s0, s1, , s2n1 в двоичной системе счисления. Очевидно, что если подать на несколько входов значение 1, то такая схема будет работать некорректно. В качестве примера рассмотрим шифратор 4-to-2. Если s0=1, то z0=z1=0, если же s1=1, то z0=1 и z1=0. Остальные случаи разбираются аналогичным образом.

S0 S1 S2 S3 Z0 Z1
1 0 0 0 0 0
0 1 0 0 0 1
0 0 1 0 1 0
0 0 0 1 1 1

Логическая схема шифратора

Построить логическую схему шифратора можно следующим образом: давайте будем использовать гейт OR, который имеет m входов (где m — какое-то натуральное число), и на выходе возвращает 0, если на всех его входах будет подано 0, в противном случае этот гейт вернёт 1. Давайте рядом с каждым выходом zi поставим гейт OR, и будем, по необходимости, расширять этот гейт. Тогда для каждого входа рассмотрим двоичное представление номера этого входа, и если на i-ом месте стоит 1, то соединим этот вход с гейтом OR, который соединён с выходом zi. Очевидно, если подать ровно на один вход 1, то выходы будут кодировать это число в двоичном представлении (если подать 1 на вход s0, то на всех выходах будет 0, а сам вход не будет соединён ни с каким гейтом).

Логическая схема шифратора 2-to-1
Логическая схема шифратора 4-to-2

Принцип работы дешифратора

Дешифратор 2-to-4

Суть дешифратора заключается в том, что с помощью n входов s0, s1, , sn1 можно задавать выход, на который будет подаваться 1. Для того, чтобы лучше понять, как работает дешифратор, рассмотрим в качестве примера дешифратор 2-to-4 (это значит, что у этого дешифратора есть два входа s0 и s1 и четыре выхода z0, z1, z2 и z3). Если s0=s1=0, то на выходе z0 будет значение 1, на остальных выходах будет 0. Если же s0=1, s1=0, то на выходе z1 будет 1, на остальных выходах будут 0. Если s0=0, s1=1, то на выходе z2 будет 1, а на остальных входах будет 0. Если же s0=s1=1, то на выходе z3 будет 1, а на других — 0.

S0 S1 Z0 Z1 Z2 Z3
0 0 1 0 0 0
1 0 0 1 0 0
0 1 0 0 1 0
1 1 0 0 0 1

Логическая схема дешифратора

Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для n1 входа, теперь попробуем слить n-ый выход с предыдущими n1. Для n=1 схема выглядит тривиальным образом: от входа s0 отходят два провода, один напрямую соединён с выходом z1, другой соединён с гейтом NOT, а гейт NOT соединён с выходом z0. Теперь допустим, что мы можем построить схему для n1 входов. Тогда n-ый вход соединим с дешифратором 1-to-2, а первые n1 входы соединим с дешифратором (n1)-to-(2n1) и потом соединим каждый выход дешифратора (n1)-to-(2n1) с каждым выходом дешифратора 1-to-2 с помощью гейтов AND, потом соединим соответствующие гейты с выходами zi таким образом, чтобы значение на входе zi было равно 1 только в том случае, если число i кодируется входами s0, s1, , sn1. Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах s0, s1, , sn1, поэтому наша схема будет работать верно.

Логическая схема дешифратора 1-to-2
Логическая схема дешифратора 2-to-4

Использование в реальной жизни

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

См. также

Источники информации