Шифратор и дешифратор — различия между версиями
Gaporf (обсуждение | вклад) |
Gaporf (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
{{Определение | {{Определение | ||
− | |definition='''Дешифратор''' (англ. ''decoder'') — логический [[Реализация булевой функции схемой из функциональных элементов|схема]], имеющая | + | |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> |
}} | }} | ||
==Принцип работы== | ==Принцип работы== | ||
− | [[Файл:2to4decoder.png|thumb|180px|Дешифратор | + | [[Файл: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" | {| class="wikitable" | ||
|- | |- | ||
− | ! | + | ! <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>\textbf{0}</tex> || <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> |
|- | |- | ||
− | | | + | | <tex>\textbf{1}</tex> || <tex>\textbf{0}</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> |
|- | |- | ||
− | | | + | | <tex>\textbf{0}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> |
|- | |- | ||
− | | | + | | <tex>\textbf{1}</tex> || <tex>\textbf{1}</tex> || <tex>0</tex> || <tex>0</tex> || <tex>0</tex> || <tex>\textbf{1}</tex> |
|} | |} | ||
==Логическая схема== | ==Логическая схема== | ||
− | [[Файл:LogicSircuit1to2decoder.png|thumb|180px|Логическая схема дешифратора | + | [[Файл:LogicSircuit1to2decoder.png|thumb|180px|Логическая схема дешифратора <tex>1</tex>-to-<tex>2</tex>]] |
− | [[Файл:LogicSircuit2to4decoder.png|thumb|180px|Логическая схема дешифратора | + | [[Файл:LogicSircuit2to4decoder.png|thumb|180px|Логическая схема дешифратора <tex>2</tex>-to-<tex>4</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>(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>, поэтому наша схема будет работать верно. |
==См. также== | ==См. также== |
Версия 11:21, 4 декабря 2018
Эта статья находится в разработке!
Определение: |
Дешифратор (англ. decoder) — логический схема, имеющая входов , , , и выходов , , , . На все выходы подаётся , кроме выхода , на который подаётся , где — число, которое закодировано входами , , , |
Принцип работы
Суть дешифратора заключается в том, что с помощью
входов , , , можно задавать выход, на который будет подаваться . Для того, чтобы лучше понять, как работает дешифратор, рассмотрим дешифратор -to- (это значит, что у этого дешифратора есть два входа и и четыре выхода , , и ). Если , то на выходе будет значение , на остальных выходах будет . Если же , , то на выходе будет , на остальных выходах будут . Если , , то на выходе будет , а на остальных входах будет . Если же , то на выходе будет , а на других — . Для более ясной картины обратимся к таблице истинности.Логическая схема
Давайте построим логическую схему дешифратора рекурсивным способом: допустим, что мы построили схему для
элемента, теперь попробуем слить -ый выход с предыдущими выходами. Для схема выглядит тривиальным образом: от входа отходят два провода, один напрямую соединён с выходом , другой соединён с гейтом , а гейт соединён с выходом . Теперь допустим, что мы можем построить схему для входов. Тогда -ый вход соединим с дешифратором -to- , а первые выходы соединим с дешифратором -to- и потом соединим каждый выход дешифратора -to- с каждым выходом дешифратора -to- с помощью гейтов , потом соединим соответствующие гейты с выходами таким образом, чтобы значение на входе было равно только в том случае, если число кодируется входами , , , . Очевидно, что мы таким образом перебрали всевозможные комбинации значений на входах , , , , поэтому наша схема будет работать верно.