Информация к новости
  • Просмотров: 5970
  • Автор: sulicompany
  • Дата: 6-10-2012, 02:01
 (голосов: 0)
6-10-2012, 02:01

Основы алгебры логики

Категория: IT » Аналитика


 

 

 

Все устройства и вся техника делится на аналоговую и цифровую. Постоянно слышно: цифровой звук, цифровое изображение, цифровая камера или что-то там еще. Что же такое цифровая техника? И почему именно цифровая? Чем, к примеру, она отличается от аналоговой?

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

 

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

Что же такое ноль и единица? Логический ноль - это сигнал, напряжение которого равно или близко к нулю (к "земле", если хотите), логическая единица - сигнал, напряжение которого равно или близко к напряжению источника питания. Для тех, кто в танке, ноль - это када напруги нет, адын - када есть. Еще сигнал логического нуля (или просто нуля) называютнапряжением низкого уровняили простонизким уровнем. Соответственно, единичку кличутнапругой высокого уровняили простовысоким уровнем, ну, там, к примеру, сигнал высокого уровня, низкий уровень напряжения и т. п.

Ну что ж, с нулями разобрались (если нет, перечитывай заново), будем теперь запихивать себе в башку такую галиматью, как цифровые коды. Пожалуй самым распространенным в цифровой технике является так называемый код. Мы же все привыкли кдесятичному коду, который численно выражается, как ряд чисел от 0 до 9. Комбинацией этих символов можно получить любое число. А двоичный? Это явно не ряд от 0 до 1 (или 2).

Двоичный код потому двоичный, что в нем используются степени числа 2. Вся фишка состоит в том, что двоичный код есть сумма произведений вот этих 2nчисел на 0 или 1, ну в случае умножения на нуль получаем нуль. Числа 2nназываютсявесовыми коэффициентами. Сложив пару-тройку чисел формата 0x23+1x22+0x21+1x20получим желаемую величину, в данном случае цифру 5. В примере знак x не всеми любимая буква, а знак умножения. Слышу вопрос: "Почему именно 5?". Считаем: 0 на что-либо равно ноль, 2 во второй равно 4, любое число в степени 0 есть единица (надо было учить математику). Складываем 4 и 1 получаем 5. Более понятно это можно показать спешиал таблицей, которую можно назвать таблицей перевода десятичных чисел в двоичные и, кстати, наоборот.

 


 

 

Десятичное число Весовые коэффициенты
23 22 21 20
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1

 

Охренеть, да? На первый взгляд какая-то фигня. Объясняю, в чем суть. Во-первых, двоичные числа читают справа налево. Самое правое число (0 или 1) называетсямладшим разрядом, самое левое -старшим разрядом. В таблице показаны коды 4-х разрядных двоичных чисел, причем 20есть младший разряд числа, 23старший разряд. Чем выше степень весового коэффициента старшего разряда (2n), тем выше разрядность двоичного числа. Суть перевода двоичного числа в десятичное заключается в сумме всех весовых коэффициентов, причем, единицы и нули показывают, какие коэффициенты складывать. Если в коде числа стоит 1, то весовой коэффициент, соответствующий этой единице, складывается со следующим весовым коэффициентом, т. е. со следующим в разряде числе. Если в коде числа стоит 0, то весовой коэффициент, соответствующий этому нулю, будет равен нулю, поскольку любое число, умноженное на 0 есть не что иное, как 0. То есть, если имеется двоичное число, например, 1011, чтобы перевести его в десятичное надо первый символ (в данном случае 1) умножить на соответствующий ему весовой коэффициент (в данном случае 23=8), прибавить следующий символ (0 x 22) и так далее. Получается примерно такое: 1 x 23+ 0 x 22+ 1 x 21+ 1 x 20= 11. Принцип ясен?

Очевидно, что для всего этого необходимо иметь представление о степенях числа 2. Вот табличка со значением степеней числа 2 вплоть до 215

 

Степень 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Число 0 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768

 

Особо наблюдательные может быть заметили в первой таблице одну закономерность. В младшем разряде поочередно меняется 0 и 1. В следующем разряде - два нуля и две единицы, в следующем - четыре нуля и четыре единицы. Таким образом, зная эту закономерность, запоминать эту таблицу не требуется. Всегда можно где-нибудь нарисовать нолики и единички и перевести двоичные числа. Также следует отметить, что 4 разряда не предел. Если слева пририсовать еще нули и единицы, получим 5-ти разрядный код и т. д. до бесконечности. Суть понятна?

Каждая единица либо ноль, т. е. один разряд в двоичном коде называетсябитом, соответственно, в первой таблице все числачетырехбитные. Восьмиразрядное двоичное число называетсябайтом, т. е. в одном байтевосемь бит. Еще восьмиразрядное двоичное число называетсясловом. Т. е. слово - это 1 байт или 8 бит, или для тех, кто в танке, в слове 8 циферок, каждая из которых принимает значение 0 или 1.

Ахтунг:в цифровой технике считают от 0, а не как мы - от 1. Т. е. максимальное число в 4-х разрядном двоичном коде не 16, а 15, в пятиразрядном - 31, а не 32 и т. п.

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

Восьмеричный код

Этот код аналогичен двоичному, только разрядов 3 и максимальное число будет равно 7 (в двоичном коде 111). Подобный код почти не используется, да и в некоторых книгах про него вообще ничего не пишут. Просто он есть.

Двоично-десятичный код

Двоично-десятичный код также полностью аналогичен двоичному. Единственное отличие состоит в том, что в десятичном эквиваленте такой код представляется, как ряд чисел от 0 до 9. То есть, если посмотреть на первую таблицу, до числа 9 двоичные коды будут двоично-десятичными, после числа 9 - просто двоичными. По аналогии с десятичными числами, чтобы представить, допустим, число 243 в двоично-десятичном коде, необходимо взять двоичный эквивалент чисел 2, 4 и 3. Т. е. 243=0010 0100 0011. Каждая четырехразрядная группа двоично-десятичного кода называетсятетрадой. Т. е. число 243 мы записали в виде трех тетрад, или по аналогии с десятичными числами - комбинацией тетрад. Двоично-десятичный код используется для индикации чисел в цифровых индикаторах.

Шестнадцатеричный код

Иногда шестнадцатеричный код называетсягексагональным. Такой код широко используется в вычислительной технике. Еще он называетсякод с основанием 16(двоичный зовут с основанием 2). В отображении шестнадцатеричного кода используются цифры от 0 до 9 и первые буквы латинского алфавита A, B, C, D, E, F. Если в двоичном коде используются степени числа 2 (см. выше), то в шестнадцатеричном коде - степени числа 16. Например, число 157 представляется, как 9 x 161+ D x 160, т. е. 157=9D. Вообще же, шестнадцатеричный код в основном используется для упрощения представления двоичных чисел. Посмотрите, для отображения числа 157 потребовался бы 8-ми разрядный двоичный код (а именно 1001 1101), а в 16-тиричном коде число содержит всего 2 символа (9D).

Ахтунг:сами устройства этот код и все другие (в том числе и двоичный) вообще не воспринимают и никак на него не реагируют. В устройствах используются лишь перепады напряжения источника питания, которыесимволическиобозначают 0 и 1. И все коды предназначаются для объяснения работы устройств.

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

Теперь немного узнав о системах счисления хорошо бы освоить перевод чисел из одной системы в другую. Начнем с перевода десятичного числа в двоичное. Для отображения чисел в разных системах используются нижние индексы, например, число10- десятичное число, число2- двоичное число, число16или числоH- 16-тиричное число.

Для перевода десятичного числа в двоичное нужно десятичное число делить на 2 до получения минимального остатка. При делении десятичного числа на 2 образуются остатки, равные 0 или 1. Первый остаток будет младшим разрядом. Последний остаток будетпредпоследнимперед старшим разрядом. Результат деления последнего числа является старшим разрядом и он всегда равен 1. Например, переведем малюхонькое число 21 в двоичный код.

 

21/2=10 Остаток 1
10/2=5 Остаток 0
5/2=2 Остаток 1
2/2=1 Остаток 0

 

Последнее число 2/2=1. Эта единицаидет в старший разряд. В следующий разряд идет остаток от этого деления (0) и т. д. до последнего разряда, т. е. считаем снизу вверх. В результате деления получили код 10101. Проверим: 16 + 4 + 1 = 21. Ты гляди, работает! А ну-ка, переведем число посложней, типа 274.

 

274/2=137 Остаток 0
137/2=68 Остаток 1
68/2=34 Остаток 0
34/2=17 Остаток 0
17/2=8 Остаток 1
8/2=4 Остаток 0
4/2=2 Остаток 0
2/2=1 Остаток 0

 

Полученное число 1 0001 0010. Проверим: 256 + 16 + 2 = 274. Работает, твою налево!

Итак, суть понятна? Для простоты и экономии места на странице умножение нулей на весовые коэффициентыне показано. То есть, для первого примера полный формат имеет вид: 1 x 16 + 0 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 21.

Можно переводить и по-другому. Лично мне удобней переводить так. Если имеется какое-то число, например, 43, оно, как видно, меньше 64, но больше 32, значит первые два разряда 01. Из 43 вычитаем 32 получаем 11. Разряд с весовым коэффициентом 16 здесь не канает, ставим 0. Число 11 представляется как 1011 (см. первую таблицу). Итого имеем: 0010 1011. Первые два нуля стоят для красоты.

Как же перевести наоборот, из двоичного в десятичное. Еще проще. Это написано чуть-чуть выше, где проверяется результат перевода десятичного числа в двоичное. Допустим есть число 1011 0101. Где стоит 1, имеет право на жизнь весовой коэффициент, где 0 - весовые коэффициенты "сдохли". Считаем: 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181. Для тренировки можете проверить переводом его в двоичное.

Перевод шестнадцатеричных чиселтуда сюда осуществляется аналогично. Делим десятичное число на 16 до получения остатка, причем меньшего 16. При делении десятичного числа остатки получаются в виде ряда чисел от 0 до 15. Числа от 10 до 15 заменяются буквами латинского алфавита A, B, C, D, E, F. Как и при переводе в двоичный код, последний остаток предшествует старшему разряду, результат деления последнего числа есть старший разряд. Переведем число 845 в 16-тиричный код.

 

845/16 = 52 Остаток 13 = D
52/16= 3 Остаток 4

 

Полученное число 34D. Проверим: 3 х 162 + 4 x 161 + D x 160 = 845. D в шестнадцатеричном коде эквивалентно 13. Здесь также показан и обратный перевод. Умножаем числа 16-тиричного кода на 16 в степени и складываем.

Для перевода 16-тиричного кода в двоичный достаточно разбить число на отдельные символы (числа) которым соответствуют двоичные эквиваленты. То есть, то же число 34D разбиваем на 3, 4 и D и записываем двоичный код каждого элемента: 3 = 0011, 4 = 0100, D = 1101. 34D = 0011 0100 1101. Вот так, 10-разрядное двоичное число в 16-тиричном эквиваленте записывается всего тремя символами. Понятно, зачем шестнадцатеричный код? Для обратного перевода двоичное число разбивается на тетрады и каждой тетраде ставится в соответствие шестнадцатеричный эквивалент. Причем разбиение ведетсясправа налево. Если последняя тетрада не получается, т. е. в старшей тетраде всего 1, 2 или 3 единицы, к ним дописывают нули. Получается как в последнем примере, первые два нуля образуют тетраду совместно с единицами (число 3).

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

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

Математические операции над двоичными кодами просты до безобразия, по сравнению с десятичными цифрами.

Операция сложениявыглядит так:

  1101
+        
  0110
10011

В десятичном эквиваленте это 13 + 6 = 19. Следует помнить, что при сложении двух едениц получается ноль, а единица переносится в старший разряд.

Еще проще операция умножения:

    1011   
х        
  110       
  0000
  1011    
1011      
1000010

При умножении на разряд множимое либо повторяется, либо записываются нули. В данном случае была произведена операция умножения 11 х 6 = 66.

 

 

Поскольку в цифровых устройствах используются только два символа 0 и 1, алгебра логики использует логические переменные и функции от них, которые также принимают только два значения - 0 и 1. В логике символы 0 и 1 не цифры. Единица обозначает абсолютную истину, символ 0 - абсолютную ложь. Основы алгебры логики придумал в середине XIX века ирландский математик Дж. Буль, поэтому алгебра логики иногда называется булева алгебра.

В отличие от обычной математики, в алгебре логики операции сложения и умножения заменяют операциейлогического умножения, которая по-буржуйски звучит красивым словомконъюнкция, и операциейлогического сложения(дизъюнкция). Для обозначения операций сложения и умножения используют специальные символы: \/ - логическое сложение, /\ - логическое умножение, но мы для простоты будет обозначать привычными нам + и х, все равно правильно. Опять же, "х" - это не всеми любимая буква, а знак умножения.

Операция логического сложения обозначается союзом "ИЛИ", да да, БОЛЬШИМИ БУКВАМИ. Выражение a + b означает "или a или b". т. е. если и a, и b равно нулю, то и результат равен нулю. Результат равен единице, если хотя бы одна из переменных равна единице. Результат также будет единицей, если обе переменных равны единице.

Логическое умножение обозначается союзом "И", также В ВЕРХНЕМ РЕГИСТРЕ. Выражение a x b означает "a и b", т. е. если a и b равны нулю, то и результат равен нулю. Если одна из переменных равна единице, другая нулю, то результат все равно равен нулю. Результат равен единице, еслиобе переменных равны единице. В двух словах все вышесказанное: для логического сложения результат равен нулю только при совпадении нулей, для логического умножения результат равен единице только при совпадении единиц.

Есть еще понятиеотрицания, обозначаемое "НЕ". Обозначается отрицание чертой над обозначением переменной или символом ¬, стоящим перед переменной. Например, ā означает отрицание a. По-другому это отрицание называетсяинверсией. То есть, если a = 1, то ā = 0 и наоборот. Отрицание может быть не только одной переменной, но и целого выражения.

Понятие двоичной переменной, логических операций И, ИЛИ, НЕ образуют систему аксиом алгебры логики.

Аналогично обычной алгебре, в булевой действительны свойства перестановки, сочетательности и распределительности:

 

a + b = b + a
a x b = b x a
a + (b + c) = (a + b) + c
a x (b x c) = (a x b) x c
a x (b + c) = a x b + a x c

 

Помимо этих есть и другие, свойственные только алгебре логики, законы:

 

Законы одинарных элементов
a x 1 = a
a + 1 = 1
a x 0 = 0
a + 0 = a
Законы отрицания
(правила де Моргана)
Распределительность дизъюнкции
a + (b x c) = (a x b) + (a x c)
Правила поглощения
a + (a x b) = a
a x (a + b) = a

 

Эти правила и законы позволяют значительно упростить логические уравнения и функции.

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

Двухвходовый логический элемент "И" обозначается вот так:


Обозначение логического элемента И

 

x2 x1 y
0 0 0
0 1 0
1 0 0
1 1 1

 

Такая табличка называетсятаблицей истинностилогического элемента. Она поясняет, как работает элемент, т. е. какой сигнал на его выходе при определенных сигналах на входе. Таблицы истинности присуще всем цифровым устройствам. В этой таблице символы x1и x2означают входные сигналы, y - выходные. Причем входы принято обозначать слева (это касается любых устройств), выходы - справа. Переменная х с индексом 1 обозначает младший разряд, x2- старший. Судя по таблице, единица будет на выходе только тогда, когда на обоих входах будут единицы. Символ&говорит о том, что это элемент "И". Не так уж и сложно, правда?

Логический элемент "ИЛИ" обозначается так:


Обозначение логического элемента ИЛИ

Его таблица истинности:

 

x2 x1 y
0 0 0
0 1 1
1 0 1
1 1 1

 

То есть, единица на выходе тогда, когда хотя бы на одном из входов присутствует единица. Символ1говорит о том, что это элемент "ИЛИ".

Логический элемент "НЕ", который иначе называетсяинвертор, обозначается так:


Обозначение логического элемента НЕ

Таблица истинности:

 

x y
0 1
1 0

 

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

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

Базисные элементы

Очевидно, базис происходит от слова "база". Абсолютно в дырочку. Намек понятен?Базисомназывается совокупность элементов, с помощью которых схемотехнически можно реализовать устройство любой сложности. Простым языком, базис - это те элементы, при помощи которых можно сделать любое устройство (речь идет о цифровой технике). Да да, абсолютно любое и самое интересное, что этих базисных элементов всего 2. На их основе можно сделать все вышеперечисленные элементы и еще кучу других, что, собственно, и делается.

И-НЕ - это схема И и схема НЕ, сложенные вместе. Операция, которую производит такой элемент называетсяинверсией логического умноженияилиотрицанием логического умножения, ну илиинверсией конъюнкциии еще красивым словосочетаниемштрих Шеффера. Штрих кого-то там называется потому, что в виде формулы операция И-НЕ записывается так:y = x1 | x2. Вертикальная черта между иксами и есть штрих какого-то Шеффера.

Логический элемент И-НЕ обозначается так:


Обозначение логического элемента И-НЕ

Таблица истинности для него:

 

x2 x1 y
0 0 1
0 1 1
1 0 1
1 1 0

 

Суть ясна? Сначала вроде как умножаем (логически), а потом все это отрицаем (тоже логически). Если к элементу И (см. выше) прилепить на выход инвертор, то получим такой вот элемент И-НЕ. Ну и кто уже догадался, если к элементу И-НЕ прилепить на выход инвертор, то получим элемент И. Если у элемента И-НЕ замкнуть входы, то получится тот самый инвертор.

Здесь все по аналогии с элементом И-НЕ. Операция, выполняемая элементом ИЛИ-НЕ называетсяинверсией логического сложенияилиинверсией дизъюнкциии еще красивым словосочетаниемстрелка Пирса. Стрелка потому, что в виде формулы функция записывается так:y = x 1↓ x2. Символ между иксами и есть стрелка какого-то Пирса.

Обозначается элемент ИЛИ-НЕ так:


Обозначение элемента ИЛИ-НЕ

Таблица истинности:

 

x2 x1 y
0 0 1
0 1 0
1 0 0
1 1 0

 

Аналогично, если к выходу элемента ИЛИ-НЕ прилепить инвертор, то получится элемент ИЛИ.

Существует помимо перечисленных еще куча других элементов, рассматривать их будем по ходу дела. Эти элементы представляют собой комбинацию вышеперечисленных. Ну а напоследок рассмотрим элемент.

Операция, выполняемая таким элементом называетсясложение по модулю дваи обозначается плюсиком в кружочке, т. е. вот таким символом. В виде уровнения функция записывается так:X1⊕X2. Читается это, как "либо икс один, либо икс два". Обозначение элемента ИСКЛЮЧАЮЩЕЕ-ИЛИ следующее:


Обозначение элемента ИСКЛЮЧАЮЩЕЕ-ИЛИ

Таблица истинности:

 

x2 x1 y
0 0 0
0 1 1
1 0 1
1 1 0

 

Кстати, этот элемент можно заменить логическими элементами И, ИЛИ, НЕ, поскольку


Для пущей наглядности составим схему из базисных элементов (И-НЕ, ИЛИ-НЕ).


Схема замены логического элемента ИСКЛЮЧАЮЩЕЕ-ИЛИ базисными элементами

Вот вам и применение законов алгебры логики. Где это может пригодиться? Ну допустим, собираете вы какую-то схему с использованием цифровых микросхем, среди которых есть логический элемент ИСКЛЮЧАЮЩЕЕ-ИЛИ (или два), а у вас его нет. Ну в падлу идти в магазин или где-то ковыряться в платах. А тут бах, под рукой завались микросхем с логикой И-НЕ, ИЛИ-НЕ, например 155ЛА3. Таким образом, зная свойства цифровых устройств и основы булевой алгебры, недостающий элемент легко заменяется другими. К тому же, подобный метод имеет и обратное направление, т. е. если в какой-то схеме стоит изображенная на рисунке часть, она легко заменяется на один элемент ИСКЛЮЧАЮЩЕЕ-ИЛИ (а вдруг автор схемы торопился и не догадался сам этого сделать). Причем схемотехническая часть может быть любой, главное, чтобы выполнялось условие сложения по модулю два. Идея ясна? Подобным принципом менять можно почти все, суть в том, чтобы максимально упростить схемотехнику при сохранении ее простоты и легкоповторяемости.

 

Минимизация логических функций необходима для упрощения сложных выражений этих самых функций, например, сложные логические функции могут отображаться в две-три и более строк (допустим, на листе формата А4). Понятно, что сразу приступать к схемной реализации таких функций по большому счету тупо. Минимизировать логические функции можно с помощью всяких правил и законов алгебры логики (про это), можно с помощью так называемых карт Карно. Представление функций с помощью карт Карно очень удобно, когда число переменных невелико (меньше или равно 6). По сути карта Карно - это табличка, которая содержит 2nклеток, где n - число переменных (n=1, 2, 3 ... n). К каждой клетке содержится логическое произведение переменных или их инверсий. Одни переменные располагаются по горизонтали, другие - по вертикали. Изображаться карты Карно могут по-разному. Например, так:

 

x3x4 x1x2
00 01 10 11
00
01
10
11

 

Или так:


Изображение карты Карно

Что касается первой таблички, первый знак (0 или 1) относится к первому символу (x1или x3). Второй знак, соответственно, ко второму символу. Т. е., если в самой нижней правой ячейке стоит 1, то функция записывается x2x4. Во втором варианте вертикальные и горизонтальные черточки напротив ячеек означают, что переменная перекрывает эти ячейки, т. е. x1перекрывает две верхние стрроки, x2- два верхних столбца и т. п. И так, и так правильно, но лично мне более предпочтителен второй вариант.

Заполняются карты Карно следующим образом. Допустим есть некая функция из четырех переменных. Карта Карно будет содержать 16 клеток (24= 16). Функция вот такая:


Не такая уж сложная функция. Путем преобразований можно ее немного упростить, но это потребует больших выкладок. Составим карту Карно:


Как это все делается? Посмотрите, вторая сверху слева ячейка, в ней стоит 1 и этой единице соответствует первое слагаемое в формуле. Единица стоит именно там, поскольку в этой ячейке перекрываются все переменные. Стоит уйти на ячейку влево, вправо, вверх, вниз и одна из переменных уже перекрывать ее не будет. Если одна из переменных с инверсией, что характерно для второго слагаемого, единица ставится с учетом не перекрытия ячейки этой переменной, т. е. для второго слагаемого x1с инверсией и единица стоит в третьей (сверху) строке третьего столбца. Для четвертого слагаемого с инверсией переменные x2и x4. Поэтому единица стоит в последней строке (второй столбец). Так проставляются все единицы. В пустых ячейках по идее стоят нули (не показаны для наглядности). Подытожим, если переменная без инверсии, ей соответствует 1, если с инверсией - 0. Суть ясна?

После проставления всех единиц начинается объединение ячеек, в которых стоят эти самые единицы. Объединяются клетки по следующим правилам: число объединяемых клеток 2, 4, 8, 16, 32 и т. д., т. е. 2n, объединять надо как можно больше клеток, а самих объединений должно быть как можно меньше. На рисунке ниже показано, как это делается:


Для тех, кто не понял, единицы в количестве три, пять, шесть, семь, девять, десять и т. п. не объединяются. Если единицы стоят буквой "Т", "Г" и пр., то они также не объединяются.

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


Вот так. Было 5 слагаемых, осталось 2. Такую функцию уже намного легче реализовать. Такая форма записи функции называется совершенной дизъюнктивной нормальной формой (СДНФ). Дизъюнктивная нормальная форма (ДНФ) - это такая форма представления функции, при которой логические выражения функции строятся в виде дизъюнктивного ряда членов, каждый из которых является простой конъюнкцией аргументов. На простом языке, ДНФ - это форма записи функции в виде логической суммы слагаемых, каждое из которых является логическим произведением переменных. Если в каждом члене ДНФ представлены все аргументы или их инверсии, такая форма записи называется совершенной (СДНФ). Существует также конъюнктивная нормальная форма (КНФ) - форма представления функции в виде конъюнкции (логического умножения) ряда членов, каждый из которых является простой дизъюнкцией (логическим сложением) аргументов. Если в каждом члене КНФ представлены все аргументы или их инверсии, то такая форма называетсясовершенной (СКНФ).

 

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


Дифференцирующая цепь
Форма напряжения на взоде и выходе дифференцирующей цепочки

Рис. 1 - Дифференцирующая цепочка и форма напряжения на входе и выходе

Вот такое соединение резика и кондера называетсядифференцирующей цепьюилиукорачивающей цепью. На графиках показаны эпюры напряжения на входе и выходе этой цепи. Допустим кондер разряжен. При подаче на вход RC-цепи импульса напряжения кондер сразу же начнет заряжаться током, проходящим через него самого и резик. Сначала ток будет максимальным, затем по мере увеличения заряда конденсатора постепенно уменьшится до нуля по экспоненте. Когда через резик проходит ток, на нем образуется падение напряжения, которое определяется, какU=i R, где i-ток заряда кондера. Поскольку ток изменяется экспоненциально, то и напряжение будет изменяться также - экспоненциально от максимума до нуля. Падение напряжения на резике как раз таки и является выходным. Его величину можно определить по формулеUвых = U0e-t/τ. Величинаτназываетсяпостоянной времени цепии соответствует изменению выходного напряжения на 63% от исходного (e-1= 0.37). Очевидно, что время изменения выходного напряжения зависит от сопротивления резистора и емкости конденсатора и, соответственно, постоянная времени цепи пропорциональна этим значениям, т. е.τ = RC. Если емкость в Фарадах, сопротивление в Омах, то τ в секундах.

поменять местами резистор и конденсатор, как показано на рисунке 2, то получиминтегрирующую цепьилиудлиняющую цепь.


Интегрирующая цепь
Интегрирующая цепочка и формы напряжения на входе и выходе

Рис. 2 Интегрирующая цепочка и формы напряжения на входе и выходе

Выходным напряжением в интегрирующей цепи является напряжение на кондере. Естественно, если кондер разряжен, оно равно нулю. При подаче импульса напряжения на вход цепи кондер начнет накапливать заряд, и накопление будет происходить по экспоненциальному закону, соответственно, и напряжение на нем будет нарастать по экспоненте от нуля до своего максимального значения. Его значение можно определить по формулеUвых = U0(1 - e-t/τ). Постоянная времени цепи определяется по такой же формуле, как и для дифференцирующей цепи и имеет тот же смысл.

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

Если после дифференцирующей цепи влепить инвертор, то наблюдается следующая картина. В исходном состоянии на входе инвертора лог. 0 (резик сидит на корпусе). На его выходе лог. 1. При подаче скачка напряжения в течении некоторого времени на входе инвертора будет присутствовать логическая единица, затем спустя какое-то время напряжение на входе уменьшится до значения, меньше порогового (т. е. до лог. 0), в результате чего на выходе инвертора сначала напряжение упадет до лог. 0, затем опять поднимется до лог. 1, т. е. будет сформирован импульс. Дифференцирующие и интегрирующие цепи не раз будут встречаться в дальнейшем.

 

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

Триггер- это устройство, обладающее двумя состояниями устойчивого равновесия. Триггер еще можно назвать устройством с обратными связями. На рисунке изображена схема триггера на логических элементах ИЛИ-НЕ.


RS-триггер на логических элементах

Рис. 1 Схема простейшего RS-триггера

Такая схема называется асинхронным RS-триггером. Первый (сверху) выход называется прямым, второй - инверсным. Если на оба входа (R и S) подать лог. нули, то состояние выходов определить невозможно. Триггер установится как ему заблагорассудится, т. е. в произвольное состояние. Допустим, на выходе Q присутствует лог. 1, тогда на выходе не Q (Q с инверсией) обязательно будет лог. 0. И наоборот. Чтобы установить триггер в нулевое состояние (когда на прямом выходе лог. 0, на инверсном - лог. 1) достаточно на вход R подать напряжение высокого уровня (про уровни напряжений). Если высокий уровень подать на вход S, то это переведет его в состояние 1, или как говорят, в единичное состояние (на прямом выходе лог. 1, на инверсном - лог. 0). И в том, и в другом случаях напряжение соответствующего уровня может быть очень коротким импульсом - на грани физического быстродействия микросхемы. То есть, триггер обладает двумя устоячивыми состояниями, причем эти состояния зависят от ранее воздействующих сигналов, что позволяет сделать следующий вывод -триггер является простейшим элементом памяти. Буквы R и S по-буржуйски set - установка, reset - сброс (предустановка). На рис. 2 RS-триггер показан в "микросхемном исполнении".


RS-триггер в интегральном исполнении

Рис. 2 RS-триггер в интегральном исполнении

RS-триггер можно соорудить и на элементах И-НЕ, как показано на рисунке 3. Такая конструкция встречается довольно часто.


RS-триггер на логических элементах И-НЕ

Рис. 3 RS-триггер на логических элементах И-НЕ

Принцип работы такой же, как у триггера на элементах ИЛИ-НЕ, за исключением инверсии управляющих сигналов, т. е. установка и сброс триггера производится не лог. 1, а лог. 0. Другими словами, входы такого триггераинверсные. В описанных триггерах изменение состояния происходит сразу после изменения состояния на входах R и S. Поэтому такие триггеры называютсяасинхронными.

Если схему асинхронного триггера немного дополнить, то получим вот такое:


Синхронный RS-триггер на логических элементах И-НЕ

Рис. 4 Синхронный RS-триггер на логических элементах И-НЕ

В таком триггере вводится дополнительный вход С, называемыйтактовымилисинхронизирующим. Изменение состояний триггера происходит при подаче сигналов лог. 1 на входы R и S и последующим воздействием на вход С тактового (синхронизирующего) импульса. Если на тактовый вход импульс не воздействует, то состояние триггера не изменится. Другими словами, изменение состояния триггера происходит под действием синхроимпульса, поэтому такие триггеры называютсясинхронными.

D-триггер отличается от синхронного RS-триггера тем, что у него только один информационный вход D. D-триггер показан на рисунке 5.


D-триггер на логических элементах И-НЕ

Рис. 5 D-триггер на логических элементах И-НЕ

Если на вход D подать логическую единицу, затем на вход С подать импульс, то на выходе Q (прямой выход) установится лог. 1. Если на вход D подать лог. 0, на С импульс, то на Q установится лог. 0. Т. е. D-триггер осуществляет задержку информации, поступающей на вход D. При чем эта информация хранится в D-триггере, пока не придет следующий бит (0 или 1) информации. По сути это ячейка памяти.

Если вход D замкнуть с инверсным выходом, то останется только один вход С. При подаче на вход С импульса триггер переключится, т. е. если на выходе был лог. 0, то станет лог. 1. При следующем импульсе триггер снова переключится, т. е. лог. 1 сменится лог. 0. Таким образом, триггер осуществляет деление частоты входных импульсов на 2 (ведь уровень сигнала на выходе меняется в два раза реже). В таком режиме D-триггер называютсчетнымилиТ-триггером. Этот режим (режим деления частоты) используется довольно широко.

Нетрудно заметить, что для RS-триггера (рис. 1) существует запрещенная комбинация, когда на оба входа поданы лог. 1, на его выходах также устанавливаются лог. 1 и триггер перестает выполнять свои функции (зависает). Поэтому придумали так называемыйJK-триггер. У него три входа - J, K, C. Вход J вместо R, вход К вместо S, С так и остается - синхронизацией. Если на вход J подана лог. 1, на К - лог. 0 или наоборот, то он работает как синхронный RS-триггер, если на оба входа J и К поданы лог. 1, то он работает как счетный Т-триггер.

Триггер Шмидта

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


Триггер Шмидта
Графики, поясняющие принцип работы триггера Шмидта

Рис. 6 Триггер Шмидта и графики, поясняющие принцип его работы

Если на вход триггера Шмидта подавать нарастающее напряжение (нижний график), то при некотором уровне Uп1в момент t1напряжение на выходе скачком переходит из состояния 0 в состояние 1. Если уменьшать напряжение на входе до некоторого напряжения Uп2в момент t2напряжение на выходе скачком переходит из состояния 1 в состояние 0. Явление несовпадения уровней Uп1и Uп2называетсягистерезисом. Соответственно, передаточная характеристика триггера Шмидта обладает гистерезисным характером. Триггер Шмидта, в отличие от других триггеров, не обладает памятью и используется для формирования прямоугольных импульсов из напряжения произвольной формы.

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


Генератор одиночного импульса

Рис. 7 Генератор одиночного импульса

В исходном состоянии на выходе Q микросхемы DD1 высокий уровень напряжения (триггер установлен в единичное состояние). При нажатии на кнопусик SB1 триггер обнуляется. При отпускании кнопусика триггер переходит в прежнее состояние (на выходе Q лог. 1). Суть работы заключается в устранении дребезга контактов кнопусика SB1. Следует помнить, что RS-триггеры в ТТЛ-микросхемах (серии 133, 155, 1533, 531 и пр.) управляются лог. 0, в КМОП-микросхемах (серии 176, 561, 564, 1564 и пр.) - лог. 1.

 

Цифровой счетчик импульсов- это цифровой узел, который осуществляет счет поступающих на его вход импульсов. Результат счета формируется счетчиком в заданном коде и может храниться требуемое время. Счетчики строятся на триггерах, при этом количество импульсов, которое может подсчитать счетчик определяется из выраженияN = 2n - 1, гдеn- число триггеров, а минус один, потому что в цифровой технике за начало отсчета принимается 0. Счетчики бываютсуммирующие, когда счет идет на увеличение, ивычитающие- счет на уменьшение. Если счетчик может переключаться в процессе работы с суммирования на вычитание и наоборот, то он называетсяреверсивным. Коль счетчики строят на триггерах, посмотрим, как все это работает:


Схема счетчика на Т-триггерах
Графики, поясняющие принцип работы счетчика

Рис. 1 - Схема счетчика с последовательным переносом на Т-триггерах и графики, поясняющие принцип его работы

В качестве исходного состояния принят нулевой уровень на всех выходах триггеров (Q1- Q3), т. е. цифровой код 000. При этом старшим разрядом является выход Q3. Для перевода всех триггеров в нулевое состояние входы R триггеров объединены и на них подается необходимый уровень напряжения (т. е. импульс, обнуляющий триггеры). По сути это сброс. На вход С поступают тактовые импульсы, которые увеличивают цифровой код на единицу, т. е. после прихода первого импульса первый триггер переключается в состояние 1 (код 001), после прихода второго импульса второй триггер переключается в состояние 1, а первый - в состояние 0 (код 010), потом третий и т. д. В результате подобное устройство может досчитать до 7 (код 111), поскольку 23- 1 = 7. Когда на всех выходах триггеров установились единицы, говорят, что счетчикпереполнен. После прихода следующего (девятого) импульса счетчик обнулится и начнется все с начала. На графиках изменение состояний триггеров происходит с некоторой задержкой tз. На третьем разряде задержка уже утроенная. Увеличивающаяся с увеличением числа разрядов задержка является недостатком счетчиков с последовательным переносом, что, несмотря на простоту, ограничивает их применение в устройствах с небольшим числом разрядов.

Счетчики с параллельным переносом

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


Счетчик с параллельным переносом
Графики, поясняющие принцип работы счетчика с параллельным переносом

Рис. 2 - Счетчик с параллельным переносом и графики, поясняющие его работу

С первым триггером все понятно. На вход второго триггера тактовый импульс пройдет только тогда, когда на выходе первого триггера будет лог. 1 (особенность), а на вход третьего - когда на выходах первых двух будет лог. 1 и т. д. Задержка срабатывания на третьем триггере такая же, как и на первом. Такой счетчик называетсясчетчиком с параллельным переносом. Как видно из схемы, с увеличением числа разрядов увеличивается число лог. элементов И, причем чем выше разряд, тем больше входов у элемента. Это является недостатком таких счетчиков.

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


Реверсивный счетчик

Рис. 3 - Реверсивный счетчик

Для счетных импульсов предусмотрены два входа: "+1" - на увеличение, "-1" - на уменьшение. Соответствующий вход (+1 или -1)подключается ко входу С. Это можно сделать схемой ИЛИ, если влепить ее перед первым триггером (выход элемента ко входу первого триггера, входы - к шинам +1 и -1). Непонятная фигня между триггерами (DD2 и DD4) называетсяэлементом И-ИЛИ. Этот элемент составлен из двух элементов И и одного элемента ИЛИ, объединенных в одном корпусе. Сначала входные сигналы на этом элементе логически перемножаются, потом результат логически складывается.

Число входов элемента И-ИЛИ соответствует номеру разряда, т. е. если третий разряд, то три входа, четвертый - четыре и т. д. Логическая схема является двухпозиционным переключателем, управляемым прямым или инверсным выходом предыдущего триггера. При лог. 1 на прямом выходе счетчик отсчитывает импульсы с шины "+1" (если они, конечно, поступает), при лог. 1 на инверсном выходе - с шины "-1". Элементы И (DD6.1 и DD6.2) формируют сигналы переноса. На выходе >7 сигнал формируется при коде 111 (число 7) и наличии тактового импульса на шине +1, на выходе <0 сигнал формируется при коде 000 и наличии тактового импульса на шине -1.

Все это, конечно, интересно, но красивей смотрится в микросхемном исполнении:


Двоичный четырехразрядный счетчик

Рис. 4 Четырехразрядный двоичный счетчик

Вот типичный счетчик с предустановкой. СТ2 означает, что счетчик двоичный, если он десятичный, то ставится СТ10, если двоично-десятичный - СТ2/10. Входы D0 - D3 называются информационными входами и служат для записи в счетчик какого-либо двоичного состояния. Это состояние отобразится на его выходах и от него будет производится начало отсчета. Другими словами, это входы предварительной установки или просто предустановки. Вход V служит для разрешения записи кода по входам D0 - D3, или, как говорят, разрешения предустановки. Этот вход может обозначаться и другими буквами. Предварительная запись в счетчик производится при подаче сигнала разрешения записи в момент прихода импульса на вход С. Вход С тактовый. Сюда запихивают импульсы. Треугольник означает, что счетчик срабатывает по спаду импульса. Если треугольник повернут на 180 градусов, т. е. задницей к букве С, значит он срабатывает по фронту импульса. Вход R служит для обнуления счетчика, т. е. при подаче импульса на этот вход на всех выходах счетчика устанавливаются лог. 0. Вход PI называется входом переноса. Выход p называется выходом переноса. На этом выходе формируется сигнал при переполнении счетчика (когда на всех выходах устанавливаются лог. 1). Этот сигнал можно подать на вход переноса следующего счетчика. Тогда при переполнении первого счетчика второй будет переключаться в следующее состояние. Выходы 1, 2, 4, 8 просто выходы. На них формируется двоичный код, соответствующий числу поступивших на вход счетчика импульсов. Если выводы с кружочками, что бывает намного чаще, значит они инверсные, т. е. вместо лог. 1 подается лог. 0 и наоборот. Более подробно работа счетчиков совместно с другими устройствами будет рассматриваться в дальнейшем.

 

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

Шифратор (кодер)- это устройство, представляющее собой преобразователь позиционного кода в двоичный. В позиционном коде число определяется позицией единиц в серии нулей, или позицией нуля в серии единиц. Например, если в серии десять нулей, имеется вот такой код 0001000000, то это эквивалентно числу 7 (счет ведется справа налево от нуля). Такой код служит для включения объектов или передачи данных на них. Для преобразования позиционного кода в двоичный составим малюхонькою табличку:

 

Позиционный код Двоичный код
8 7 6 5 4 3 2 1 22 21 20
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 1
0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 1 0 1
0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 0 1 1 1

 

Для наглядности, единицы, как видно, располагаются по диагонали. Если приглядимся к младшему разряду (20), то видно, что единице соответствуют единицы в позиционном коде, соответствующие числам 2, 4, 6, 8 (разрядам). Следовательно, эти разряды объединяются через схему ИЛИ. Аналогичные операции проходят над старшими разрядами. В результате получим вот такую схемку:


Реализация шифратора на логических элементах

Рис. 1 - Реализация шифратора на логических элементах

Ахтунг:разряд 1 так и висит в воздухе, как на схеме. Согласно таблице, ей соответствует код 000.

Объяснять эту схему, пожалуй, не нужно. Все понятно.

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


Реализация дешифратора на логических элементах

Рис. 2 - Реализация дешифратора на логических элементах

На схеме показаны всего четыре логических элемента И, хотя их должно быть восемь. Три инвертора создают инверсии переменных. Палки, спускающиеся в никуда на самом деле подводят сигналы прямого и инверсного кода к остальным четырем элементам И. Понятное дело, что нефиг их все рисовать. Если разрядов будет четыре, то элементы будут четырехвходовыми, понадобится четыре инвертора и 16 элементов И.

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

 

Цифра Двоичный код Семисегментный код
8 4 2 1 a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1

 

Во, блин. Ну, в общем, на логике показывать не буду. Поскольку счетчик нам уже

, посмотрим на работу его совместно с дешифратором. Схема реальная, т. е. можно повторить.

 


Счетчик импульсов с индикацией

Как видно, ничего сложного, все элементы схемы нам

. На элементах DD1.1, DD1.2 (К561ЛА7) собран генератор тактовых импульсов. Резистор R1 и кондер С1 задают частоту следования импульсов. Формулу определения частоты следования я не помню, вспомню, напишу. Можно, если не в лом, определить эту самую частоту методом "научного тыка". В любом случае, если вместо постоянного резика воткнуть переменный, то частоту можно будет регулировать в некоторых пределах. С выхода генератора импульсы поступают на счетчик, выполненный на DD2. Это реверсивный двоично-десятичный счетчик с предустановкой. Вход ±1 определяет напрвление счета, вход 2/10 - режим (двоичный или десятичный). Вход V предназначен для разрешения записи в счетчик состояния информационных входов D0 - D3. Конкретно этому счетчику (561ИЕ14, 564ИЕ14) надо подать уровень лог. 1. Резик R2 и кондер C2 образуют дифференцирующую цепь. При включении питания короткий импульс на входе V, формируемый дифференцирующей цепью, разрешает запись в счетчик состояния входов D0 - D3. Поскольку эти выводы соединены с общим проводом, в счетчик записывается 0000, т. е. он обнуляется. Тактовый генератор фигачит импульсы, счетчик их считает и с его выходов 1-2-4-8 результат счета поступает на вход дешифратора DD3 (514ИД1). Это дешифратор двоичного кода в семисегментный. С выходов дешифратора сигналы (согласно второй таблице) поступают на входы семисегментного индикатора HL1, который кажет эту инфу, т. е. ряд цифр от 0 до 9. Внутри микрухи DD3 стоит DC. Это от буржуйского Decoder – по-нашински дешифратор. На выходе переноса p (выв. 7) счетчика DD2 при его переполнении формируется сигнал. Если взять следующие узлы: DD2, DD3, HL1 и влепить их снизу счетчика DD2, аналогично соединить соответствующие входы, кроме С, выход переноса (выв. 7) предыдущего счетчика соединить со входом С следующего, то получим многозначный индикатор. После отсчета 10 импульсов первым счетчиком, второй переключится на 1. Через следующие 10 импульсов второй счетчик увеличится еще на 1 и так далее. По такому принципу деления частоты работают, например, часы. Единственное, что там коэффициент пересчета другой (не 10, а 6), все-таки в минуте 60 сек. Этот счетчик тоже можно заставить считать до 6. Берем лог. элемент И, его входы соединяем с выходами 2-4 (выв. 11 и 14), а выход подключаем к дифференцирующей цепочке R2C2. Тогда при достижении числа 6 (0110) уровень лог. 1 на выходе элемента И сформирует не без помощи цепи R2C2 импульс, который запишет в счетчик 0000. И еще, увеличивая частоту генератора цифири будут бежать быстрее, например вот так:

 


То же, что и предыдущий рисунок

Мультиплексор- это устройство, которое осуществляет выборку одного из нескольких входов и подключает его к своему выходу, в зависимости от состояния двоичного кода. Другими словами, мультиплексор - переключатель сигналов, управляемый двоичным кодом и имеющий несколько входов и один выход. К выходу подключается тот вход, чей номер соответствует двоичному коду. Ну и навороченное определение:мультиплексор- это устройство, преобразующее параллельный код в последовательный.

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


Структура мультиплексора

Рис. 1 - Структура мультиплексора

Самая большая хренотень есть не что иное, как элемент И-ИЛИ. Конкретно здесь элемент 4-х входовый. Ну а квадратики с единичками внутри, если кто не помнит, инверторы. Разберем выводы. Те, что слева, а именно D0-D3, называются информационными входами. На них чего-нибудь подают. Входы посередке, а именно А0-А1, называются адресными входами. Вот сюда именно и подается двоичный код, от которого зависит, какой из входов D0-D3 будет подключен к выходу, на этой схеме обозначенному как Y. Вход С, черт его знает, нафига он здесь. Вроде бы как разрешение работы, а может просто для понта. Ну его в баню. На схеме еще есть входы адреса с инверсией. Так вот они тоже показаны здесь для понта. На этом рисунке показан четырехвходовой, или как еще его называют, 4Х1 мультиплексор. Потому и адресных входов всего 2. Как нам известно, максимальное число переменных определяется как 2n, где n - разряд кода. Здесь мы видим, что переменных четыре штуки, а значит разряд будет равен 2 (22= 4). Для пояснения принципа работы этой схемы посмотрим на табличку истинности:

 

A1 A0 Y
0 0 D0
0 1 D1
1 0 D2
1 1 D3

 

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

Микросхемой мультик обозначается вот так:


Мультиплексор

Рис. 2 - Мультиплексор

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

Демультиплексор. Демультиплексор - устройство, обратное мультиплексору. Т. е., у демультиплексора один вход и куча выходов. Двоичный код определяет, какой выход будет подключен ко входу. Другими словами, демультиплексор - это устройство, которое осуществляет выборку одного из нескольких выходов и подключает его к своему входу или, это переключатель сигналов, управляемый двоичным кодом и имеющий один вход и несколько выходов. Ко входу подключается тот выход, чей номер соответствует состоянию двоичного кода. И навороченное определение:демультиплексор- это устройство, которое преобразует последовательный код в параллельный.

Обычно в качестве демультиплексора используютдвоичного кода в позиционный, в которых вводят дополнительный вход стробирования. Из-за схожести структур мультиплексора и демультиплексора в КМОП сериях есть микросхемы, которые одновременно являются мультиплексорром и демультиплексором, смотря с какой стороны подавать сигналы, например, К561КП1, работающая как переключатель 8х1 и переключатель 1х8 (то бишь, как мультиплексор и демультиплексор с восемью входами или выходами). Кроме того, в КМОП микросхемах помимо переключения цифровых сигналов (лог. 0 или 1) существует возможность переключения аналоговых. Другими словами, это переключатель аналоговых сигналов, управляемый цифровым кодом. Такие микросхемы называются коммутаторами. К примеру, с помощью коммутатора можно переключать сигналы, поступающие на вход усилителя (селектор входов). Вот напоследок простенькую схемку селектора входов УМЗЧ мы и рассмотрим. Построим ее, ну скажем, с использованием триггеров и.


Селектор сигналов

Рис. 3 - Селектор входных сигналов

Вот такая нехитрая схемка. Итак, разберем работу и деталюшки. На триггерах микросхемы DD1 собран кольцевойнажатий кнопки разрядностью 2 (два триггера - 2 разряда). Двухразрядныйпоступает на адресные входы D0-D1 микросхемы DD2. Микросхема DD2 представляет собой сдвоенный четырехканальный коммутатор. В соответствии с двоичным кодом к выходам микросхемы А и В подключаются входы А0-А3 и В0-В3 соответственно. Элементы R1, R2, C1 устраняют дребезг контактов кнопки.R3C2 устанавливает триггеры в нулевое состояние при включении питания, при этом к выходу подключается первый вход. При нажатии на кнопку триггер DD1.1 переключается в состояние лог. 1 и к выходу подключается второй вход и т. д. Перебор входов идет по кольцу, начиная с первого.

С одной стороны просто, с другой немного неудобно. Черт его знает, сколько раз нажали на кнопку после включения и какой вход подключен к выходу. Хорошо бы поставить индикатор подключенного входа. Вот тут-то и пригодится. Нажимаем ссылочку, вспоминаем семисегментный дешифратор и смотрим на схемку (там, где циферки бегут). Берем дешифратор и индикатор, обрубаем счетчик и другую галиматью, переносим дешифратор с индикатором на схему коммутатора и первые два входа дешифратора (на схеме обозначен как DD3), т. е. 1 и 2 (выв. 7 и 1) подключаем к прямым выходам триггеров DD1.1 DD1.2 (выв. 1 и 13). Входы дешифратора 4 и 8 (выв. 2 и 6) кидаем на корпус (т. е. подаем лог. 0). Все! Индикатор будет показывать состояние кольцевого счетчика, а именно циферки от 0 до 3. Цифиря 0 соответствует первому входу, 1 - 2-му и т. д.

Регистр (от буржуйского to register - регистрировать) - это цифровой узел, предназначенный для записи и хранения числа. Некоторые регистры могут преобразовывать информацию из последовательной формы в параллельную и наоборот. Для начала рассмотрим регистр хранения.

 

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

По способу занесения информации в ПЗУ (программирования) их делят на 3 группы:

  • Однократно программируемые изготовителем, называемыемасочными(заказными) или сокращенно ПЗУМ, а по буржуйски ROM.
  • Однократно программируемые пользователем (обычно способом пережигания плавких перемычек на кристалле) или ППЗУ, а по буржуйски PROM.
  • Многократно программируемые пользователем (репрограммируемые) или РПЗУ. По-буржуйски EPROM.

В однократно программируемых ПЗУ вместо элемента памяти, как в ОЗУ, ставится перемычка между шинами в виде пленочных проводников, диодов, транзисторов. Наличие перемычки соответствует лог. 1, ее отсутствие - лог. 0 или наоборот. Процесс программирования таких ПЗУ заключается в пережигании ненужных перемычек и поэтому в дальнейшем ПЗУ такого рода программировать нельзя.

Масочное ПЗУ

Посмотрим на структуру масочного ПЗУ с матрицей 32х32 на биполярных транзисторах:


Структура масочного ПЗУ (32х32)

Рис. 1 - Структура масочного ПЗУ (32х32)

Матрица состоит из 32-х транзисторов по числу строк (0-i-32), каждый из которых имеет 32 эмиттера по числу столбцов. Коллекторы всех транзисторов соединены с шиной питания (Ucc). Базы транзисторов образуют строки матрицы. Эмиттеры либо имеют соединение с разрядной шиной (цифиря 1 и черный кружочек), либо не имеют (0 и пустой кружок). Разрядные шины разделены на 4 группы по 8 (4х8=32). Каждая из 4-х групп замыкается на селектор MS1-MS4, который под управлением сигналов с выходов дешифраторов столбцов (DCY) выбирает из 8-ми одну и коммутирует ее на выходы. Выходные усилители считывания стробируются сигналами CS1, CS2. Выборку 4-х разрядного слова осуществляется 8-ми разрядным кодом адреса. Выбранное слово поступает на выход при CS1=CS2=0. Поскольку схема соединений и пороговые напряжения транзисторов не зависят от режима работы микросхемы, она обладает свойством энергонезависимости. Информация, находящаяся в ПЗУ называетсяпрошивкой.

Программируемое ПЗУ

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

Для программирования ППЗУ, у которых в исходном состоянии записаны лог. 0, необходимо подвести код адреса программируемого элемента и подать на выход, к которому этот элемент памяти относится, одиночный импульс напряжения. При этом через перемычку протекает ток, достаточный для ее пережигания. Пережигать одновременно можно только одну перемычку. На остальные выводы микросхемы ППЗУ должны быть поданы уровни лог. 0. Далее задается следующий адрес и процесс повторяется. Это обобщенный вид процесса программирования.

Для программирования микросхем ППЗУ, у которых в исходном состоянии записаны лог. 1, необходимо на выводы подать лог. 1, а на выход, к которому относится элемент памяти, подать лог. 0.

Программируемая логическая матрица

Программируемые логические матрицы (ПЛМ) являются разновидностью ППЗУ. Микросхема ПЛМ включает в себя операционную часть из матрицы И, матрицы ИЛИ, входных и выходных усилителей, программирующую часть из адресных формирователей и программируемого дешифратора. Матрица И выполняет операции логического умножения над входными переменными и их инверсными значениями. Требуемые логические произведения формируются путем пережигания ненужных перемычек между строками и столбцами. Аналогично формируется матрица ИЛИ.

Репрограммируемые ПЗУ разделяются на два класса:

  • С режимом записи и стирания электрическим сигналом.
  • С режимом записи электрическим сигналом и стиранием ультрафиолетовым излучением.

Микросхемы РПЗУ допускают возможность многократного программирования (от сотен до тысяч циклов), способны сохранять информацию при отсутствии питания несколько тысяч часов, требуют значительного времени на перепрограммирование (что исключает возможность использовать в качестве ОЗУ), имеют сравнительно большое время считывания.

Элементом памяти в РПЗУ является полевой транзистор со структурой МНОП или МОП с плавающим затвором или ЛИЗМОП - МОП транзистор с лавинной инжекцией заряда. Эти транзисторы под воздействием программирующего напряжения способны записать электрический заряд под затвором и сохранять его много тысяч часов без напряжения питания. Для того, чтобы перепрограммировать такое ПЗУ необходимо сначала стереть записанную ранее информацию. В РПЗУ на МНОП транзисторах стирание производится электрическим сигналом, который вытесняет накопленный под затвором заряд. В РПЗУ на ЛИЗМОП транзисторах стирание записанной информации происходит под воздействием ультрафиолетового (УФ) излучения, которое облучает кристалл через специальное окно в корпусе микросхемы.

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

 

 

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


Одноразрядный цифровой сумматор

Рис. 1 - Одноразрядный цифровой сумматор

Сумматор имеет входы А и В - слагаемые, С - вход переноса, S - выход суммы, Р - выход переноса. Табличка истинности:

 

Входы Выходы
Слагаемые Вход переноса Сумма Выход переноса
А B C S P
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1

 

На выходе S представляется сумма сложения трех переменных - А, В, С. При переполнении сумматора, т. е. когда в результате сложения формируется единица в старшем разряде выходного числа, на выходе переноса Р формируется уровень лог. 1, который подается на вход переноса С следующего сумматора. В принципе, старшим разрядом суммы является выход переноса Р. В целом работу сумматора полностью иллюстрирует таблица. Из таких одноразрядных сумматоров составляются многоразрядные сумматоры (обычно 4-х разрядные), которые бывают последовательного и параллельного действия. Сумматоры последовательного действия обладают более низким быстродействием.

Вычитатель

Со сложением двоичных чисел все понятно. Как же осуществить на микросхемах-сумматорах операции вычитания двоичных чисел? Допустим необходимо выполнить вычитание: 11 - 5 = 6. В двоичных эквивалентах произведем операцию сложения числа 1011 (число 11) иобратныйкод числа 5, равный 1010 (прямой код 0101). Итак:


Если отбросить единицу в старшем (пятом) разряде, то получится код 0101, который соответствует числу 5. Но это не число 6. Значит к результату необходимо прибавить единицу. Кстати, операция увеличения какого-либо числа на единицу называетсяинкрементом, уменьшения на единицу -декрементом. На рисунке 2 показана схема четырехразрядного вычитателя.


4-х разрядный вычитатель

Рис. 2 - 4-х разрядное устройство вычитания

Инверторы микросхемы DD1 формируют обратный код числа В. Число А поступает на входы А1-А4 сумматора DD2, обратный код числа В - на входы В1-В4 сумматора. На вход переноса Р0 подан уровень лог. 1, что обеспечивает прибавление к результату сложения единицы (т. е. инкремент результата). На выходах S1-S4 сумматора в итоге получается разность между числами А и В.

Десятичный сумматор

Чаще приходится суммировать десятичные числа. Ниже на рисунке приведена схема сумматора двоично-десятичных чисел на основе двоичных сумматоров.


Сумматор двоично-десятичных чисел

Рис. 3 - Сумматор двоично-десятичных чисел

Операцию сложения выполняет сумматор DD1. При сумме большей или равной десяти на выходе микросхемы DD2, которая является схемой сравнения входов, формируется сигнал переноса Р10. На второй вход (Y1-Y4) микросхемы DD2 подается двоичный эквивалент числа 9 (1001). Сумматор DD3 осуществляет десятичную коррекцию результата суммирования. При отсутствии сигнала переноса на выходе микросхемы DD3 повторяется код числа, который был на выходе DD1, поскольку на входы В поданы лог. 0. При наличии сигнала переноса Р10=1 на входах В2-В3 устанавливаются лог. 1, что соответствует коду числа 6. Допустим есть числа А=8 и В=4. На выходе сумматора DD1 появляется код числа 12 (8+4=12). На выходе DD2 формируется сигнал переноса, сумматор DD3 выполняет операцию 12+6=18. Числу 18 соответствует код 10010. На выходах S сумматора DD3 устанавливается код 0010 (собственный перенос микросхемы DD3 не учитывается). Поскольку на выходе Р10 число 10, на выходах сумматора число 2 (0010), то в результате получается число 12.

Интересными свойствами обладает сумматор-накопитель, показанный на рисунке 4.


Сумматор-накопитель

Рис. 4 - Сумматор-накопитель

На рисунке показан простейший сумматор-накопитель. На один вход сумматора подается число К, а на второй - число с выхода регистра. В начале работы регистр обнуляется (сброс). Если на входы В сумматора DD1 подать некоторое число К, то при подаче импульса на вход С регистра (такт) в него запишется число К (в начальный момент на выходе регистра лог.0). Это же число К попадет на входы А сумматора и по следующему такту в регистр запишется уже число 2К, которое опять попадет на входы А сумматора. На выходе сумматора появится число 3К и по следующему такту запишется в регистр и т. д. То есть, в сумматоре-накопителе постепенно нарастает число. Когда в сумматоре-накопителе накопленное число превышает его объем, равный 2n-1, на выходе переноса появляется сигнал лог. 1, а на выходах S число nK-2n.

Применение таких сумматоров весьма разнообразно. Если вместо регистра установить ОЗУ (это делается в многоканальных системах), тогда такой узел становится важнейшей частью микропроцессора. Посмотрим на эти свойства сумматора-накопителя. Поскольку сигнал переноса сумматора появляется черезW=2n/Kтактовых импульсов, то такой сумматор являетсяобратным преобразователемвходного числа К в число W. Это число можно подсчитать на. Ну а если выразить частоту появления имульсов переноса через число К, получится вот это:


Это значит, что получается преобразователь кода числа К в частоту импульсов. Такой преобразователь можно использовать в электронных музыкальных инструментах (ЭМИ), всяких звонках и т. п.

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

 

Арифметико-логическое устройство (АЛУ) - это многофункциональное устройство, которое выполняет над входными числами различные арифметические и логические операции. Схемотехнически АЛУ представляется вот так:


Арифметико-логическое устройство

Рис. 1 - Арифметико-логическое устройство

АЛУ имеет входы чисел А0-А3 и В0-В3, входы управления S0-S3, М, вход переноса С0, выход результата F0-F3, выход переноса С4, выход равенства кодов К, выходы Р и G для схемы быстрого переноса. Работа АЛУ поясняется таблицей функционирования, изображенной ниже. Вход М определяет вид выполняемых операций (при М=1 над А и В выполняется 16 лог. операций, при М=0 выполняются арифметические операции). Знаком \/ обозначается лог. сложение, арифметическое сложение обозначается плюсиком (+), умножение (только логическое) - знаком "х", А1 - число А, сдвинутое на один разряд вправо.

 

№ операции Состояние входов S Состояние входа М
S3 S2 S1 S0 M=1 M=0 (С=0)
1 0 0 0 0 А А\/1
2 0 0 0 1 А+B (А+B)\/1
3 0 0 1 0 А+B (А+B)\/1
4 0 0 1 1 0 0
5 0 1 0 0 А+B (А\/A)x(B\/1)
6 0 1 0 1 B (А+B)\/A(B\/1)
7 0 1 1 0 АxB\/AxB A-B
8 0 1 1 1 AxB AxB
9 1 0 0 0 A+B A\/AxB\/1
10 1 0 0 1 AxB+AxB A\/B\/1
11 1 0 1 0 B (A+B)\/AxB\/1
12 1 0 1 1 AxB AxB
13 1 1 0 0 1 A\/A\/1
14 1 1 0 1 A+B (A+B)\/A1\/1
15 1 1 1 0 A+B (A+B)\/A\/1
16 1 1 1 1 А A

 

АЛУ могёт выполнять следующие операции:

  • Арифметическое суммирование чисел (при М=0 операция №10).
  • Арифметическое вычитание чисел (при М=0 операция №7).
  • Сравнение чисел - операция №7 при С0=1. Если А=В, то К=1, если A>B, то С4=0, если A<B, то С4=1.
  • Формирование модуля числа А. При М=1 на входы S3-S0 параллельно подается знак числа А равный 1 при положительном числе А. Если А отрицательно - 0. Для S=1 выполняется 16-я операция, S=0 - 1-я. Также для числа В (11-я и 6-я операции соответственно), но нужно иметь знак и его инверсию.
  • Мультиплексирование чисел А и В. При М=1 и 16-й операции на выход поступает число А, 11-я операция - число В. 1-я и 6-я операции выполняют мультиплексирование с инверсией.
  • Увеличение числа А в 1,5 раза - 13 операция.

Довольно неплохо для какой-то "железки" в пластмассовом корпусе.

Наращивание разрядности АЛУ делается также, как и в , т. е. выход переноса С4 АЛУ младших разрядов подключается ко входу переноса С0 АЛУ старших разрядов. Но при большом числе разрядов время выполнения операций увеличивается из-за большого числа переносов из разряда в разряд. Для ускорения этого процесса используются спешиал микросхемы, которые зовут схемами ускоренного переноса (555ИП4, 564ИП4). Одна такая микросхемка обслуживает до 4-х АЛУ. Выходы G и Р АЛУ втыкаем на аналогичные входы G и Р схемы ускоренного переноса, а выходы переноса последней втыкаем на входы переноса АЛУ. Вход переноса АЛУ младшего разряда подключается к входу переноса микросхемы переноса. При этом объединяются входы М всех АЛУ. Получается 16-ти разрядное АЛУ.

 

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

Еще в первом разделе указывалось, насколько проста операция умножения в двоичных кодах: множимое либо передается на сумматор, если в данном разряде множителя находится "1", либо не передается ("0"). Поэтому в функциональную схему устройства умножения (рис. 1) введен мультиплексор MS, с помощью которого проводится анализ множителя А2


Функциональная схема устройства умножения

Рис. 1 - Функциональная схема устройства умножения

По импульсу «Сброс» множитель А1 записывается в регистр RG1, а счетчик СТ2 и регистр RG2 обнуляются. На выход Q мультиплексора MS передается младший разряд множителя А2. Если он равен «1», то элемент И пропускает на свой выход тактовый импульс, по которому в RG2 записывается значение множимого А1 (в сумматоре SM А1 суммируется с нулем с выхода RG2). Через элемент задержки t тактовый импульс поступает на вход сдвига С регистра RG1 и сдвигает множимое А1 на один разряд вверх, код счетчика СТ2 увеличивается на единицу, на выход мультиплексора MS передается второй разряд множителя А2. Если он, например, равен «0», то элемент И закрыт и в регистр RG2 с выхода сумматора SM ничего не записывается. Устройство работает до тех пор, пока не будут перебраны все разряды множителя. Количество тактовых импульсов должно быть на один меньше, чем количество разрядов множителя. Если множимое имеетnразрядов, а множительmразрядов, то, очевидно, что регистр RG1, сумматор SM и регистр RG2 должны иметь n + m разрядов.

Ранее рассказывалось о построении устройств умножения на ПЗУ. Эти устройства имеют большое быстродействие, но требуют программирования ПЗУ, что не всегда можно осуществить. Поэтому, выпускается большая номенклатура микросхем умножителей. Например, микросхема К555ИП8 выполняет умножение двух разрядов множителя на четыре разряда множимого. Однако для умножения 8-разрядных чисел потребуется не только 8 таких микросхем, но еще и 16 микросхем сумматоров, что довольно громоздко. В серии К1802 (ТТЛШ) выпускаются микросхемы более сложных умножителей: 8 x 8 разрядов (К1802ВРЗ), 12 х 12 разрядов (К1802ВР4) и даже 16 х 16 разрядов (К1802ВР5).

Построение устройств деления сложнее. Рассмотрим пример деления чисел в двоичных кодах: число 56 (двоичный код 111000) разделим на 8 (двоичный код 1000).

 

111000 1000
1000 111
1100
1000
1000
1000
0000

 

Как видим, в результате получилось число 111 (т.е. 7). Алгоритм деления выглядит так. Из старших разрядов делимого вычитается делитель, если разность больше нуля, в результат заносится «0» делитель сдвигается на один разряд вниз (если разность меньше нуля, в результат заносится «0»), В принципе (в отличие от умножения), этот процесс может продолжаться бесконечно (вспомним бесконечные дроби). Но в аппаратуре процесс нужно ограничивать.

На рис. 2 показана функциональная схема устройства деления. Основным элементом его является вычитающее устройство DTR. Мультиплексор MS является переключателем с двух входов ни один выход. При подаче импульса «Загрузка» мультиплексор MS включается в положение, когда на его выход поступает делимое А1, поэтому делимое поступает на вход А вычитателя DTR (в остальное время на выход мультиплексора MS поступает разность из регистра хранения RG2). Одновременно в регистр RG1 по старшим разрядам записывается целитель А2, который поступает на входы В вычитателя DTR.


Функциональная схема устройства деления

Рис. 2 - Функциональная схема устройства деления

На выходе F вычитателя DTR образуется разность. Если эта разность больше нуля, то на выходе Р находится "1", которая по тактовому импульсу заносится в регистр RG3. Если имеется переполнение (разность меньше нуля), то на выходе Р находится "0", который и заносится в регистр RG3. С каждым тактом работы последовательно сдвигается делитель А2 на один разряд вниз в регистре RG1, а результат на один разряд вверх в регистре RG3. Число тактов работы определяется разрядностью результата, но при этом нужно помнить, что разрядность регистров RG1, RG2 и вычитателя DTR определяется как сумма числа разрядов делимого и числа разрядов результата.

Так же, как и для умножения, ПЗУ можно использовать для деления чисел. Если половину входов ПЗУ отвести под делимое, а половину - под делитель, то его можно запрограммировать под таблицу деления.

Очевидно, что разрядность делимого и делителя при этом небольшая (как и для умножения). На рис. 3 показано, как можно удвоить число разрядов делимого и делителя. Делимое представляется в виде (а2n + b), а делитель в виде (c2n + d). Дробь можно приближенно представить в виде:


Поэтому в схеме 3 имеются ПЗУ для формирования дробей а/с, b/c и d/c и ПЗУ для формировании произведений ad/c2и bd/c2


Удвоение числа разрядов делимого и делителя

Рис. 3 - Удвоение числа разрядов делимого и делителя

Схема рис. 3 неудобна из-за большого числа ПЗУ, В схеме рис. 4 ПЗУ только одно — в нем определяется величина обратная делителю А2. А затем выполняется поразрядное сложение этой величины в зависимости от разрядов делимого A1. Например, старший разряд а, равен «1», тогда элементы &n1 открыты и число 1/А2 поступает на сумматор. По сути в этой схеме реализуется операция умножения числа А1 на число обратное А2, т.е. операция деления А1/А2.


Схема деления на ПЗУ

Рис. 4 - Схема деления на ПЗУ

 

 

 

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


Параллельная схема суммирования токов

Рис. 1 - Параллельная схема суммирования токов

Ключи S переключаются при уровне лог. 1, тем самым подключая резики к источнику опорного напряжения. Через резики протекает соответствующий весу разряда ток. Сопротивление резиков прогрессивно изменяется в два раза от разряда к разряду.

При высокой разрядности сопротивления резиков должны быть согласованы с высокой точностью. Особо жесткие требования предъявляются к резикам старших разрядов, поскольку разброс тока в них не должен превышать тока младшего разряда. Вообще же, разброс сопротивления в n-м разряде должен быть меньше, чем:

Δ R / R = 2-n

Отсюда следует, что разброс сопротивления, к примеру, в третьем разряде не должен превышать 12,5%, в 10-м разряде - уже 0,098%.

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

Не теряя времени даром, умные люди придумали несколько иную структуру, в которой устранены указанные выше недостатки. Это реализовано в схеме ЦАП AD7520, разработанном фирмой Analog Devices в 1973 г., по крайней мере так считают буржуи, ну и черт с ними. Отечественным аналогом является небезызвестная 572ПА1. В настоящее время по этой схеме строят большинство ЦАПов. Сруктура приведена на рисунке 2.


Последовательная схема суммирования токов

Рис. 2 - Последовательная схема суммирования токов

В такой схеме задание весовых коэффициентов осуществляется с помощью резистивной матрицы постоянного сопротивления. Основным элементом матрицы является делитель R-2R, показанный на рис. 3. При этом должно выполняться условие: если делитель нагружен на сопротивление нагрузки, то его входное сопротивление также должно быть равно сопротивлению нагрузки.


Элемент матрицы постоянного сопротивления

Рис. 3 - Элемент матрицы постоянного сопротивления

Поскольку ключи S соединяют нижние выводы резиков с общей шиной питания, источник опорного напряжения работает на постоянную нагрузку, следовательно, его значение стабильно и не изменяется при любом входном коде ЦАП, в отличие от предыдущей схемы. Кроме того, резики 2R соединяются с общей шиной через низкое сопротивление замкнутых ключей S, напряжения на ключах небольшие (в пределах нескольких милливольт), что значительно упрощает построение ключей и схем управления ими, а также использовать опорное напряжение в широком диапазоне да еще и разнополярное. В качестве ключей используются МОП-транзисторы. Поскольку выходной ток в таком преобразователе изменяется линейно, то имеется возможность умножения аналогового сигнала на цифровой код, если вместо опорного напряжения использовать аналоговый сигнал. Такие ЦАП называютсяперемножающими(по-буржуйски MDAC). Примером применения перемножающего ЦАП может служить элементарный цифровой регулятор громкости, скажем, на 572ПА1. Вместо опорного напряжения подается входной сигнал.

Для последовательной схемы требования к точности резиков намного меньше, чем для параллельной. Для ЦАП, имеющих высокую разрядность, необходимо согласовывать сопротивления ключей с разрядными токами. Особенно это важно для старших разрядов. Сие обстоятельство снижает точность. Кроме того, такие ЦАП имеют низкое быстродействие из-за нехилой емкости МОП-ключей.

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

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

 

Аналого-цифровые преобразователи (АЦП) предназначены для преобразования аналоговой величины в цифровой код. Другими словами, АЦП - это устройства, которые принимают аналоговые сигналы и генерируют соответствующие им цифровые.

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

Сама суть преобразования аналоговых величин заключается в представлении некой непрерывной функции (например, напряжения) от времени в последовательность чисел, отнесенных к некимфиксированныммоментам времени. Если говорить простым языком, то пусть, к примеру, есть какой-то сигнал (непрерывный) и для преобразования его в цифровой необходимо этот самый сигнал представить в виде последовательности определенных чисел, каждое из которых относится к определенному моменту времени. Для преобразования аналогового (непрерывного) сигнала в цифровой необходимо выполнить три операции:дискретизация,квантованиеикодирование. Во многих умных книжках последняя операция исключается. Об этом немного ниже. Итак, разберем пока непонятные понятия.

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


Принцип дискретизации

Рис. 1 - Принцип дискретизации

На рисунке показана наиболее распространенная равномерная дискретизация. Сначала имеется непрерывный сигнал S(t). Затем он подвергается разбиению на равные промежутки времени Δt. Вот эти промежутки "дельта тэ" и есть дискретные отсчеты, называемые периодами дискретизации. В результате получается последовательность отсчетов (дискретных) с шагом в Δt. По сути в основе дискретизации непрерывных сигналов лежит возможность представления их, т. е. сигналов в виде взвешенных сумм некоторых коэффициентов, обозначим их как ai, иначе называемых отсчетами, и набора элементарных функций, обозначим их как fi(t), используемых при восстановлении сигнала по его отсчетам.

Период дискретизации выбирается из условия:

Δt = 1/2Fв,

где Fв- максимальная частота спектра сигнала. Это выражение есть не что иное, как теорема Котельникова, которая гласит:Любой непрерывный сигнал можно абсолютно точно восстановить на выходе идеального полосового фильтра (ПФ) с полосой Fв, если дискретные отсчеты взяты через интервал Δt = 1 / 2Fв. А это значит, что частота дискретизации должна быть вдвое больше максимальной частоты сигнала. На практике, например, это хорошо иллюстрирует обычный компакт диск (КД или CD) или, как его называют, AudioCD. КД записывают с частотой дискретизации 44,1 кГц. А это значит, что максимальная верхняя частота будет равна 22 кГц, что, как считается, вполне достаточно для уха человека (помните, частотный диапазон для уха человека равен 20...20 000 Гц). Про компакт диски будет отдельная глава.

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


Квантование

Рис. 2 - Квантование

На рисунке изображено равномерное квантование. Одним из основных параметров являетсяδ- шаг квантования. Соответственно, при равномерном квантовании шаг квантования одинаков. Итак, согласно определению запихиваем отсчеты в подготовленную сетку. Первый (слева направо) отсчет находится ближе к уровню 3 (уровни квантования - по вертикальной оси). Второй - к 5-му уровню и т. п. Таким образом, вместо последовательности отсчетов получаем последовательность чисел, соответствующих уровням квантования.

При равномерном квантовании динамический диапазон получается довольно большим, а это не есть гуд. Поэтому придумали так называемое неравномерное квантование, при котором динамический диапазон уменьшается. Ну понятно, наверное, что шаг квантования δ будет различным при различных уровнях. При малых уровнях сигнала шаг небольшой, при больших он увеличивается. На практике же неравномерное квантование практически не используется. Вместо этого применяют компрессоры, причем америкосы используют μ-компрессоры, европейцы - А-компрессоры (грэческая буковка μ читается "мю"). Характеристика компрессора показана на рисунке 3.


Амплитудная характеристика компрессора

Рис. 3 - Амплитудная характеристика компрессора

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

Кодирование- это сопоставление элементов сигнала с некоторой кодовой комбинацией символов. Широко используетсякод.

Ну а теперь перейдем собственно к АЦП. АЦП бывают последовательные и параллельные. Начнем с параллельных.

Чаще всего в качестве пороговых устройств параллельного АЦП используются интегральные компараторы. Схема типичного АЦП параллельного типа приведена на рисунке 4.


Параллельный АЦП

Рис. 4 - АЦП параллельного типа

Довольно простая схема. Число компараторов DA выбирается с учетом разрядности кода. Например, для двух разрядов понадобится три компаратора, для трех - семь, для 4-х - 15. Опорные напряжения задаются с помощью резистивного делителя. Входное напряжение Uвхподается вход компараторов и сравнивается с набором опорных напряжений, снимаемых с делителя. На выходе компаратора, где входное напряжение больше соответствующего опорного, будет лог. 1, на остальных - лог. 0. Естественно, пир входном напряжении равном 0 на выходах компараторов будут нули. При максимальном входном напряжении на выходах компараторов будут лог. 1. Шифратор предназначен для преобразования полученной группы нулей и единиц в "нормальный" двоичный код.

Параллельный АЦП является самым быстродействующим из всех, поскольку компараторы работают одновременно. Но есть весьма существенный недостаток. Как было сказано выше, разрядность такого АЦП определяется числом компараторов (ну и резиков, конечно). При малой разрядности это еще не так хреново. А когда разрядов 10-12. Для 10-ти разрядного АЦП понадобится 210 - 1 = 1023 штук. Вот это уже не хорошо. Отсюда вытекает высокая стоимость параллельных АЦП. Кстати, подбором сопротивлений резиков можно выбрать закон преобразования - линейный, логарифмический.

Последовательные АЦП бывают последовательного счета и последовательного приближения. Типичная схема АЦП последовательного счета приведена на рисунке 5.


АЦП последовательного счета

Рис. 5 - АЦП последовательного счета

На схеме буквами и символами обозначены следующие элементы:К- компаратор,&- схема "И",ГТИ- генератор тактовых импульсов,СТ- счетчик,#/A- ЦАП. На один вход компаратора подается входное напряжение, на второй - напряжение с выхода ЦАП. В начале работы счетчик устанавливается в нулевое состояние, напряжение на выходе ЦАП при этом равно нулю, а на выходе компаратора устанавливается лог. 1. При подаче импульса разрешения "Строб" счетчик начинает считать импульсы от генератора тактовых импульсов, проходящих через открытый элемент "И". Напряжение на выходе ЦАП при этом линейно нарастает, пока не станет равным входному. При этом компаратор переключается в состояние лог. 0 и счет импульсов прекращается. Число, установившееся на выходе счетчика и есть пропорциональный входному напряжению цифровой код. Выходной код остается неизменным пока длится импульс "Строб", после снятия которого счетчик устанавливается в нулевое состояние и процесс преобразования повторяется.

Такие АЦП имеют низкое быстродействие. Достоинством является сравнительная простота построения.

Более быстродействующим являются АЦП последовательного приближения, называемый такжеАЦП с поразрядным уравновешиванием. АЦП последовательного приближения показан на рисунке 6. В основе работы таких преобразователей лежит принципдихотомии- последовательного сравнения измеряемой величины с ½, ¼, ⅛ и т. п. от возможного ее максимального значения.


АЦП последовательного приближения

Рис. 6 - АЦП последовательного приближения

В таком АЦП используется спешиал регистр -. При подаче импульса "Пуск" на выходе старшего разряда регистра появляется лог. 1, а на выходе ЦАП напряжение U1. Если это напряжение меньше входного, то в следующем по счету разряде регистра записывается еще лог. 1. Если же входное напряжение меньше, то лог. 1 в старшем разряде отменяется. Таким образом, методом проб перебираются все разряды - от старшего до младшего. На всю операцию преобразования требуется импульсов ГТИ всего в два раза больше количества разрядов. То есть АЦП последовательных приближений намного шустрее АЦП последовательного счета.

Последовательно-параллельные АЦП - это компромисс между параллельными и последовательными АЦП, т. е. желание получить максимально возможное быстродействие при минимальных затратах и сложности.

На рисунке 7 показан для примерадвухступенчатый АЦП. В многоступенчатых преобразователях процесс преобразования разделен в пространстве.


Двухступенчатый АЦП

Рис. 7 - Двухступенчатый АЦП

Для примера на рисунке изображен двухступенчатый АЦП. АЦП1 (верхний) осуществляет "грубое" преобразование входного сигнала в старшие разряды. Сигналы с выхода первого АЦП поступают на выходной регистр и одновременно на вход быстродействующего ЦАП. Кружочек с плюсиком - это сумматор, но в данном случае вычитатель. Цифровой код преобразуется ЦАП в напряжение, которое вычитается из входного в этом самом кружочке с плюсиком. Разность напряжений преобразуется с помощью АЦП2 в коды младших разрядов. Регистр для упрощения можно выкинуть. В таких схемах ЦАП чаще всего выполняется по схеме суммирования токов с помощью дифференциальных переключателей, но могут быть построены по схеме суммирования напряжений.

Требования к точности АЦП1 выше, нежели ко второму. Оба АЦП параллельного типа. Допустим, и тот, и другой 4-х разрядные, в каждом используется по 16 компараторов. В итоге получается 8-ми разрядный АЦП всего на 32 компараторах, тогда как при построении по параллельной схеме понадобилось бы 28 - 1 = 255 шт. Быстродействие примерно раза в два хуже. Помимо этого бывают многотактные последовательно-параллельные и конвейерные АЦП. У них несколько иная структура. К примеру, многотактные преобразователи работают с различным шагом квантования, т. е. в преобразователе процесс преобразования разделен во времени. В один момент времени формируются старшие разряды, в другой момент времени шаг квантования уменьшается и формируются младшие разряды.

Большое распространение получил способ с использованием так называемого сигма-дельта модулятора. Про это будет отдельная глава.

 

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

Преимущества ЦФ перед аналоговыми следующие:

  • стабильность характеристик, связанная с тем, что частота дискретизации задается кварцевыми генераторами;
  • простота перестройки частотной характеристики (обычно либо перестраивают частоту дискретизации, либо вводят новые значения каких-либо цифровых кодов);
  • возможность в одном устройстве выполнить сразу несколько ЦФ (либо с одинаковыми частотными характеристиками для многоканальных систем, либо даже с разными характеристиками - гребенки фильтров).

ЦФ можно использовать для высококаКчественной обработки сигналов в устройствах звуковоспроизведения и магнитной записи, при синтезе и анализе речевых сигналов, в электронных музыкальных инструментах (ЭМИ) и т. д.

На рис. 1 показана схема простейшего ЦФ, состоящего из сумматора и устройства задержки во времени (которое можно реализовать на запоминающем устройстве). Если входной сигнал ЦФ - синусоидальный с частотой f, а задержка во времени составляет половину периода этого сигнала, то на сумматоре сигналы вычитаются и входной сигнал ЦФ равен нулю. То же самое будет, если задержка составит 1,5 периода, 2,5 периода и т. д. Если задержка будет равна нулю или целому числу периодов сигнала, то на сумматоре будет чистое суммирование, на выходе ЦФ амплитуда будет равна удвоенной входной амплитуде. На рис. 2 сплошной линией показана частотная характеристика простейшего ЦФ. Если вместо сумматора установить вычитатель, то образуется частотная характеристика, показанная на рис. 2 пунктирной линией.


Простейший цифровой фильтр

Рис. 1 - Простейший цифровой фильтр


Частотная характеристика простейшего цифрового фильтра

Рис. 2 - Частотная характеристика простейшего цифрового фильтра

В более общем случае ЦФ состоит из набора устройств задержки и сумматора, причем сдвинутые во времени сигналы суммируются с различными коэффициентами передачи (весами) a0, a1, a2... (рис. 3). Говорят, что импульсная характеристика ЦФ состоит из набора сдвинутых во времени отсчетов входного сигнала, а поскольку количество этих отсчетов определяется количеством устройств задержки, то импульсная характеристика ограничена во времени. Поэтому такие фильтры называютфильтрами с конечной импульсной характеристикойилиКИХ-фильтрами.


Структура КИХ-фильтра

Рис. 3 - Структура КИХ-фильтра

КИХ-фильтры

На рис. 4.а показано, как изменяется частотная характеристика КИХ-фильтра при суммировании двух отсчетов с равными весами (то же, что на рис. 2 сплошная линия) и при суммировании шести отсчетов (рис 4.б), у которых весовые коэффициенты изменяются по закону, показанному на рис. 4.г, где а0 = 1; а1 = 0,83; а2 = 0,41; а3 = 0; а4 = -0,2; а5 = -0,16.Для сравнения на рис. 4.в показаны отсчеты с единичным весом.


Частотная характеристика КИХ-фильтра при равновесном (а, в) и разновесном (б, г) суммировании

Рис. 4 - Частотная характеристика КИХ-фильтра при равновесном (а, в) и разновесном (б, г) суммировании

Как видно, характеристика становится более прямоугольной и исчезают пульсации. Но при этом основной дефект КИХ-фильтров - чатотная характеристика повторяется через интервал частот f = 1/tз.

От этого недостатка свободныЦФ с бесконечной импульсной характеристикой - БИХ-фильтры

БИХ-фильтры

Структура такого фильтра показана на рис. 5. Если на вход БИХ-фильтра подать отсчет единичной амплитуды, то выходные отсчеты будут формироваться как сумма задержанных отсчетов с различными весами а1, а2, ..., которые снова через сумматор подаются на устройства задержки. Процесс этот длится бесконечно, откуда название ЦФ. Следует отметить, что все весовые коэффициенты должны быть меньше единицы, иначе процесс на выходе ЦФ будет бесконечно нарастать по амплитуде.


Структура БИХ-фильтра

Рис. 5 - Структура БИХ-фильтра

На рис. 6 сплошной линией показана частотная характеристика БИХ-фильтра, у которого только один весовой коэффициент а1 = 0,875. Но уже с двумя весовыми коэффициентами (а1 = 0,875, а2 = -0,02) частотная характеристика фильтра нижних частот получается гораздо более прямоугольной (на рис. 6 - штриховая линия).


Частотные характеристики БИХ-фильтра

Рис. 6 - Частотные характеристики БИХ-фильтра

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

Расчет ЦФ с различными частотными характеристиками - сложная математическая задача, которой посвящен ряд специальных руководств.

Разновидностью БИХ-фильтра является синхронный цифровой фильтр. Аналоговый вариант синхронного фильтра (рис. 7.а) представляет собой цепочку с одним резистором и набором конденсаторов С1-С4, подключаемых через ключи К1-К4 по очереди с помощью импульсов U1-U4 (рис. 7.б). Если частота входного сигнала совпадает с частотой коммутации кондеров fк, то выходное напряжение достигает максимального значения, что соответствует резонансу. При перестройке частоты коммутации перестраивается и частота резонанса. Ширина полосы частот определяется постоянной времени RC.


Аналоговый вариает синхронного фильтра (а) и импульсы управления (б)

Рис. 7 - Аналоговый вариант синхронного фильтра (а) и импульсы управления (б)

Цифровой вариант синхронного фильтра показан на рис. 8.


Цифровой вариант синхронного фильтра

Рис. 8 - Цифровой вариант синхронного фильтра

Аналоговый входной сигнал Uвхпоступает на аналого-цифровой преобразователь, с выхода которого цифровые коды сигнала с частотой дискретизации fдпоступают на сумматор SM, на второй вход которого поступают коды с выхода регистра RG (вспомним, что сумматор с регистром образуют). Но после сумматора включено арифметико-логическое устройство ALU, работающее в режиме вычитания, причем на второй вход подана часть того, что подано на первый вход. В результате получается процедура 1 - 1/n = (n - 1)/n. Например, n=8, тогда 1-1/8=7/8=0,875, т. е. амплитуда сигнала несколько уменьшается. При n=8 достаточно код сигнала на втором входе сдвинуть на три разряда вниз.

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

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

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

 

В предыдущей главе мы рассмотрели Цф с реализацией во времени. Другой класс ЦФ - это ЦФ с частотной реализацией. В отличие от временных методов, где анализируется каждый отсчет сигнала, в ЦФ с частотной реализацией анализируется набор из n отсчетов. Существуют различные алгоритмы обработки этих n отсчетов, из которых наиболее часто применяют алгоритмдискретного преобразования Фурье (ДПФ)ибыстрого преобразования Фурье (БПФ).

ДПФ-фильтры

Алгоритм ДПФ состоит в умножении значений входных отсчетов на значения опорного сигнала синусоидальной формы заданной частоты и накоплении суммы этих произведений. Поскольку входной сигнал дискретизирован, то и опорный сигнал представляется в виде m дискретных значений на периоде (m-точечное ДПФ). Минимальное число m=2, при этом опорный сигнал принимает всего два значения (+1 и -1), и умножение на такой сигнал сводится к перемене знака отсчета входного сигнала. На рис. 1 этот процесс показан для n=8. Если входной сигнал имеет ту же частоту, что и опорный, то результат накопления зависит от взаимной фазировки входного и опорного сигналов. Чтобы устранить эту зависимость, ЦФ делают двухканальным - в одном канале опорный сигнал сдвигают по фазе на 90° по отношению к опорному сигналу в другом канале.


Диаграммы сигналов при алгоритме ДПФ

Рис. 1 - Диаграммы сигналов при алгоритме ДПФ

Общая схема ДПФ фильтра показана на рис. 2.



Рис. 2 - Схема ДПФ-фильтра


Частотная характеристика ДПФ-фильтра

Рис. 3 - Частотная характеристика ДПФ-фильтра

Входной сигнал поступает на аналого-цифровой преобразователь, а с него на два блока схем ИСКЛЮЧАЮЩЕЕ-ИЛИ. На двух триггерах и элементе ИСКЛЮЧАЮЩЕЕ-ИЛИ собран генератор двух опорных сигналов, сдвинутых на 90°. Один из них поступает на первый блок схем ИСКЛЮЧАЮЩЕЕ-ИЛИ, а другой - на второй.

В этих блоках производится умножение на +1 или -1 (т. е. передача с инверсией или без неё). Сумматор и регистр в каждом канале образуют сумматор-накопитель, который накапливает сумму по каждому импульсу частоты дискретизации fд. Через n тактов накопления результаты заносятся в функциональный преобразователь X/Y, который выполняет операцию (X2 + Y2)1/2, где X и Y - результаты суммирования на выходах сумматоров-накопителей. С выхода функционального преобразователя цифровой код поступает на цифро-аналоговый преобразователь, на выходе которого образуется аналоговый сигнал.

Частотная характеристика ДПФ-фильтра показана на рис. 3. Ширина полосы пропускания определяется примерно как fд/n, а резонансная частота fрез = fт/4 (поскольку тактовая частота fтделится триггерами в 4 раза). У такого ЦФ имеются побочные резонансы на частотах 3fрез, 5fрез, 7fрез, ... с относительными уровнями 1/3, 1/5, 1/7, ... Для получения более приемлимой формы частотной характеристики устанавливают несколько ДПФ-фильтров со сдвинутыми друг относительно друга частотами fти результаты их вычислений объединяют на сумматоре. В этом случае общая частотная характеристика определяется как сумма частотных характеристик (рис. 3).

БПФ-фильтры

Алгоритм БПФ состоит из р этапов, на каждом из которых n входных отсчетов (а затем и их промежуточных результатов) умножаются на комплексные коэффициенты Wk. Эти коэффициенты можно определить так:

Wk = cos(360°k/n) + jsin(360°k/n),

где k = 0, 1, 2, ..., n-1.

Например, при n=8 W0=1; W1=0,7+j0,7; W2=j; W3=-0,7+j0,7; W4=-1; W5=-0,7-j0,7; W6=-j; W7=0,7-j0,7.

Базовая операция БПФ имеет вид X=A+WkB; Y=A-WkB, где А, В - значения входного сигнала. Операции над значениями входного сигнала проводятся в p=log2n этапов (например, при n=8, р=3). На рис. 4 показана схема выполнения операций при 8-точечном БПФ. На первом этапе из значений входного сигнала А0...А7 образуются комбинации:

B0 = A0 + W0A4;
B1 = A1 + W0A5,...

На втором этапе из полученных значений В0...В7 формируются комбинации:

C0 = B0 + W0B2;
C1 = B1 + W0B3,...

И, наконец, на третьем этапе формируются комбинации:

D0 = C0 + W0C1;
D1 = С0 + W0C1 и т. д.


Схема выполнения операций при БПФ

Рис. 4 - Схема выполнения операций при БПФ

Числа D0...D7 являются выходными числами БПФ-фильтра - отсчетами спектра сигнала.

В данном случае БПФ-фильтр является блоком из 8 фильтров. Аппаратурная реализация БПФ-фильтров довольно сложна. Чаще всего их реализуют в микропроцессорном исполнении. Общая структура вычислителя БПФ на микропроцессоре показана на рис. 5.


Структура вычислителя БПФ

Рис. 5 - Структура вычислителя БПФ

Аналоговый сигнал, который необходимо анализировать, поступает на аналого-цифровой преобразователь (АЦП), с которого записывается в ОЗУ данных. Микропроцессор (МП) производит операции вычисления по программе, записанной в ПЗУ. Для ускорения вычисления можно использовать специализированное арифметическое устройство (АУ). Выдача результатов вычислений потребителю (ЭВМ, устройство отображения) производится через устройство ввода-вывода (УВВ). При обработке сигналов работа вычислителя состоит из трех этапов: прием входной информации, выполнение БПФ, выдача обработанной информации.

 

DRAM (Dynamic Random Access Memory) - динамическое запоминающее устройство с произвольным порядком выборки.

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

Транзистор каждого регистра используется для чтения состояния смежного конденсатора. Конденсатор заряжен - значит в ячейке записана 1, нет - значит 0. Все просто. Но есть неприятная тема: заряды постепенно с конденсаторов стекают и память должна постоянно регенерироваться. Если хотя бы на долю секунды питание прекратиться или заглючит система регенерации - все, данных нет!

Динамическое ОЗУ со времени своего появления прошло несколько стадий роста, и процесс ее совершенствования не останавливается. За свою десятилетнюю историю DRAM меняла свой вид несколько раз. Вначале микросхемы динамического ОЗУ производились в DIP-корпусах. Затем их сменили модули, состоящие из нескольких микросхем: SIPP, SIMM и, наконец, DIMM и RIMM.

DIP- корпус —это исторически самая древняя реализация DRAM. DIP-корпус соответствует стандарту IC. Обычно это маленький черный корпус из пластмассы, по обеим сторонам которого располагаются металлические контакты

Микросхемы (по-другому, чипы) динамического ОЗУ устанавливаются так называемыми банками. Банки бывают на 64, 256 Кбайт, 1 и 4 Мбайт. Каждый банк состоит из девяти отдельных одинаковых чипов. Из них восемь чипов предназначены для хранения информации, а девятый чип служит для проверки четности остальных восьми микросхем этого банка.

Чипы памяти бывают одно и четырехразрядными, и иметь емкость 64 Кбит, 256 Кбит, 1 и 4 Мбит.

Следует отметить, что памятью с DIP-корпусами комплектовались персональные компьютеры с микропроцессорами i8086/88, i80286 и, частично, i80386SX/DX. Установка и замена этого вида памяти была нетривиальной задачей. Мало того, что приходилось подбирать чипы для банков памяти одинаковой разрядности и емкости. Приходилось прилагать усилия и смекалку, чтобы чипы правильно устанавливались в разъемы. К тому же необходимо было не разрушить контакты механически, не повредить их инструментом, статическим электричеством, грязью и т.п. Поэтому уже в компьютерах с процессором i80386DX эти микросхемы стали заменять памяти SIPP и SIMM.

Одной из незаслуженно забытых конструкций модулей памяти являются SIPP-модули. Эти модули представляют собой маленькие платы с несколькими напаянными микросхемами DRAM.

SIPP происходит от буржуйских слов Single Inline Package. SIPP-модули соединяются с системной платой с помощью контактных штырьков. Под контактной колодкой находятся 30 маленьких штырьков (рис. 1), которые вставляются в соответствующую панель системной платы.

Модули SIPP имели определенные вырезы, которые не позволяли вставить их в разъемы неправильным образом. По некоторым мнениям, этот вид модулей лидировал по простоте их установки на системную плату


Модуль SIPP

Рис. 1 - Модуль SIPP

SIMM-модули

Аббревиатура SIMM расшифровывается как Single Inline Memory Module (Модуль памяти с однорядным расположением выводов.) Он включает в себя все то, что для DIP называлось банком

Модули SIMM могут иметь объем 256 Кбайт, 1, 2, 4, 8, 16 и 32 Мбайт. Соединение SIMM-модулей с системной платой осуществляется с помощью колодок

Модуль вставляется в пластмассовую колодку под углом 70 градусов, а потом зажимается пластмассовым держателем. При этом плата встает вертикально. Специальные вырезы на модуле памяти не позволяют поставить их неправильным образом. Модули SIMM для соединения с системной платой имеют не штырьки, а позолоченные полоски (так называемые pin, пины, см. рис. 2).


SIMM-модуль памяти 30 pin

Рис. 2 - Модуль памяти SIMM

SIMM-модули в своем развитии прошли два этапа. Первыми представителями SIMM-модулей были 30-пиновые SIMM FPM DRAM. Их максимальная частота работы — 29 МГц. Стандартным же временем доступа к памяти считалось 70 нс. Эти модули уже с трудом работали на компьютерах с микропроцессорами i80486DX2, и были вытеснены сначала 72-пиновыми FPM DRAM, а затем EDO RAM.

FPM - расслоение. Здесь используется два отдельных банка памяти. В них распределяются четные и нечетные байты. Когда происходит обращение к одному банку, в другом выбираются строка и столбец. И наоборот. При этом происходит сокращение времени на ожидание, ведь постоянно из одного банка что-то передается, а в другом что-то ищется. Но есть один нюанс. Все это хорошо работает для 32-х разрядных запоминающих устройств 486х процессоров, а вот для Pentium мало подходит, т. к. они используют 64-х разрядную память. Устанавливать "линейки" памяти в обоих случаях надо обязательно парно (не путать с порно).

Начиная с 1995 года появился новый тип памяти - EDO (Extended Data Out). В принципе это усовершенствование FPM. Разработано фирмой Micron Technology. Память EDO учитывает перекрытие синхронизации между поочередными операциями доступа. В отличие от FPM в EDO драйверы ввода данных не выключаются, когда контроллер памяти удаляет столбец адреса в начале следующего цикла.

Не смотря на небольшие конструктивные различия, и FPM, и EDO RAM делаются по одной и той же технологии, поэтому скорость работы должна быть одна и та же. Действительно, и FPM, и EDO RAM имеют одинаковое время считывания первой ячейки — 60—70 нс. Однако в EDO RAM применен метод считывания последовательных ячеек. При обращении к EDO RAM активизируется не только первая, но и последующие ячейки в цепочке. Поэтому, имея то же время при обращении к одной ячейке, EDO RAM обращается к следующим ячейкам в цепочке значительно быстрее. Поскольку обращение к последовательно следующим друг за другом областям памяти происходит чаще, чем к ее различным участкам (если отсутствует фрагментация памяти), то выигрыш в суммарной скорости обращения к памяти значителен. Однако даже для EDO RAM существует предел частоты, на которой она может работать. Несмотря ни на какие ухищрения, модули SIMM не могут работать на частоте локальной шины PCI, превышающей 66 МГц. С появлением в 1996 году процессора Intel Pentium II и чипсета Intel 4 0BX частота локальной шины возросла до 100 МГц, что заставило производителей динамического ОЗУ перейти на другие технологии, прежде всего DIMM SDRAM.

DIMM

Аббревиатура DIMM расшифровывается как Dual Inline Memory Module (Модуль памяти с двойным расположением выводов). В модуле DIMM имеется 168 контактов, которые расположены с двух сторон платы и разделены изолятором. Также изменились и разъемы для DIMM-модулей.

Следует отметить, что разъем DIMM имеют много разновидностей DRAM. К тому же вплоть до последнего времени модули DIMM не имели средств самоконфигурирования (в отличие от SIMM-модулей). Поэтому для облегчения выбора нужного модуля пользователям на материнских платах разные типы DIMM имеют от одного до трех вырезов на модуле памяти. Они предотвращают от неправильного выбора и неправильной установки модулей памяти.

SDRAM

Аббревиатура SDRAM расшифровывается как Synchronic DRAM (динамическое ОЗУ с синхронным интерфейсом). Этим они отличаются от FPM и EDO DRAM, работающих по асинхронному интерфейсу (рис. 3).


Модуль памяти SDRAM

Рис. 3 - Модуль памяти SDRAM

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

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

Хотя SDRAM появилась уже давно, использование ее тормозилось высокой (на 33%) ценой по сравнению с EDO RAM. "Звездный час" SDRAM настал в 1997 году, после появления чипсета 440BX, работающего на частоте 100 МГц. Вследствие этого доля рынка SDRAM за год выросла в два раза

ESDRAM

Следующим оригинальным решением, увеличившим частоту работы SDRAM, явилось создание кэша SRAM на самом модуле динамического ОЗУ. Так появилась спецификация Enhanced SDRAM (ESDRAM). Это позволило поднять частоту работы модуля до 200 МГц. Назначение кэша на модуле точно такое же, что и кэш второго уровня процессора — хранение наиболее часто используемых данных.

SDRAM II

Спецификация SDRAM II (или DDR SDRAM) не имеет полной совместимости с SDRAM. Эта спецификация позволяет увеличить частоту работы SDRAM за счет работы на обеих границах тактового сигнала, то есть на подъеме и спаде. Однако SDRAM II использует тот же 168-ми контактный разъем DIMM.


Модуль памяти SDRAM II

Рис. 4 - Модуль памяти SDRAM II

SLDRAM

Как и SDRAM II, эта спецификация использует обе границы тактового сигнала и имеет в себе SRAM. Однако благодаря протоколу SynchLink Interface эта память способна работать на частоте до 400 МГц.

RDRAM, RIMM

RDRAM представляет собой спецификацию, созданную и запатентованную фирмой Rambus, Inc. За счет использования обоих границ сигнала достигается частота работы памяти в 800 МГц.


Модуль памяти RDRAM (RIMM)

Рис. 5 - Модуль памяти RDRAM (RIMM)

Подсистема памяти Direct Rambus включает в себя следующие компоненты

  • Direct Rambus Controller;
  • Direct Rambus Channel;
  • Direct Rambus Connector;
  • Direct Rambus RIMM(tm);
  • Direct Rambus DRAMs.

Рассмотрим эти компоненты поподробнее:

  1. Контроллер Direct Rambus — это главная шина подсистемы памяти. Он помещается на чипе логики, как и PC-чипсет, микропроцессор, графический контроллер. Физически можно поместить до четырех Direct Rambus—контроллеров на одном чипе логики. Контроллер — это интерфейс между чипом логики и памятью Rambus, и в его обязанности входит генерация запросов, управление потоком данных, и ряд других функций.
  2. Direct Rambus Channel создает электрические соединения между Rambus Controller и чипами Direct RIMM. Работа канала основана на 30-ти сигналах, составляющих высокоскоростную шину. Эта шина работает на частоте 400 МГц и, за счет передачи данных на обеих границах тактового сигнала, позволяет передавать данные на 800 МГц. Два канала данных (шириной в байт каждый) позволяет получать пиковую пропускную способность в 1,6 Гбайт/с. Канал соответствует форм-фактору SDRAM.
  3. Разъем Direct Rambus — это разъем со 168 контактами. Контакты расположены на двух сторонах модуля, по 84 с каждой стороны. Разъем представляет собой низкоиндуктивный интерфейс между каналом на модуле RIMM и каналом на материнской плате.
  4. Модуль RIMM — это модуль памяти, который включает в себя один или более чипов и организует непрерывность канала. По существу, RIMM образует непрерывный канал на пути от одного разъема к другому. Поэтому оставлять свободные разъемы недопустимо
  5. Существуют специальные модули только с каналом, называемые continuity modules. Они не содержат чипов памяти и предназначены для заполнения свободных посадочных мест. Модули RIMM имеют размеры, сходные с геометрическими размерами SDRAM DIMMs. Модули RIMM поддерживают SPD, которые используются на DIMM'ах SDRAM. В отличие от SDRAM DIMM, Direct Rambus может содержать любое целое число чипов Direct RDRAM (до максимально возможного). Один канал Direct Rambus максимум может поддерживать 32 чипа DRDRAM. На материнской плате может использоваться до трех RIMM модулей. Используются 64 Мбит, 128 Мбит и 256 Мбит устройства. Чтобы расширить память сверх 32-х устройств, могут использоваться два чипа повторителя. С одним повторителем канал может поддерживать 64 устройства с 6-ю RIMM модулями, а с двумя — 128 устройств на 12 модулях.
  6. Чипы DRDRAM. Чипы DRDRAM составляют часть подсистемы Rambus, запоминающие данные. Все устройства в системе электрически расположены в канале между контроллером и терминатором. Устройства Direct Rambus могут только отвечать на запросы контроллера, который делает их шину подчиненной или отвечающей. Устройства включают в себя статическое и динамическое ОЗУ.