This page uses frames, but your browser doesn't support them.


4. ЦАП И АЦП

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

4.1 ЦАП С МАТРИЦЕЙ РЕЗИСТОРОВ R-2R

В ЦАП используется метод суммирования токов, пропорциональных весовым коэффициентам двоичных разрядов. К входу матрицы подключается прецизионный источник опорного напряжения Uo с током потребления Iвх = Io * 2n.

r2r.gif (3135 bytes)

Эквивалентное сопротивление цепи справа от "сечения 0" равно Rэ0 = 2R. Сопротивление цепи справа от "сечения 1" равно Rэ1 = R + 2R||Rэ0 = 2R. Значком || обозначено параллельное соединение двух сопротивлений. Рассуждая таким образом найдем, что Rэn-1 = R + 2R||Rэn-2 = 2R и полное сопротивление цепи со стороны входа, на который подается напряжение Uo, равно Rэ = 2R||Rэn-1 = R, т.е.равно номиналу R независимо от числа звеньев матрицы. Теперь можно найти величину тока

Io*2n = Uo/R (1)

Нетрудно подсчитать, что ток в узле n-1 делится пополам, одна половина ответвляется в сопротивление 2R, а другая в сопротивление Rэn-1 тоже равное 2R. Половина попадающая в узел n-2 также делится пополам и т.д. Величина тока в каждой "ветке" равна Io*2i, т.е. пропорциональна весовому коэффициенту 2i. Суммирование токов осуществляется с помощью операционного усилителя (ОУ), включенного по схеме сумматора (см. рис.64). Часть схемы, слева от ОУ, выпускается промышленно в виде микросхем, например К572ПА1,2 и 1108ПА1.

r2rou.gif (4010 bytes)

Электронные ключи Кл управляются входными сигналами di цифрового кода. Левое положение ключа на рисунке эквивалентно нулевому значению i-го разряда, а правое - единичному. Относительно ОУ необходимо сделать известные допущения:

1)Коэффициент усиления ОУ без ОС стремится к бесконечности,

2)Rвх обоих входов тоже бесконечно велико.

Отсюда следует, что во-первых разность потенциалов dUвх на входах ОУ близка к нулю, т.к dUвх = Uцап / (К = бесконечности) и следовательно потенциал инверсного входа ОУ тоже близок к нулю и,во-вторых,током каждого входа ОУ можно пренебречь. Сумма токов втекающих в узел (*) и вытекающих из него равна нулю, поэтому можно записать: Ioc + сумма(Io * 2i * di) = 0 или сумма(Io * 2i * di) = -Iос. Подставляя в последнее выражение значение Io из формулы (1) получим: -Iос = (Uо/(R * 2n)) * (сумма(di*2i)). В свою очередь, Uцап = Iос * Rос. Подставляя сюда значение Iос и учитывая, что Rос = R получим окончательную формулу напряжения на выходе ЦАП:

                  n-1
                  ___
              Uо  \                  Uо*D
    Uцап = - ----  > (2i * di) =   - ---- ,      (2)
              2n  /__                 2n
                  i=0

где D = сумма(2i * di) - десятичный эквивалент цифрового кода на входах ЦАП. Пусть число разрядов n = 10 и Uо = -10.24В, тогда Uцап = (10.24/1024)*D и находится в пределах (0, 0.01, 0.02 ... 10.22, 10.23)В. Передаточная характеристика такого ЦАП показана на рисунке.

unipolar.gif (8548 bytes)

Верхний квадрант относится к -Uо, а нижний к +Uо.

На рисунке внизу показано применение униполярного ЦАП для формирования пилообразного напряжения.

daprimer.gif (3171 bytes)

4.2 БИПОЛЯРНЫЙ ЦАП

bipolar.gif (9571 bytes)

4.3 ЧЕТЫРЕХКВАДРАНТНЫЙ ЦАП

Недостаток биполярного ЦАП - ненулевое значение входного кода при нулевом выходном напряжении. Преодолеть этот недостаток можно, если договориться какие-то двоичные числа считать положительными, а другие - отрицательными. Одним из двоичных кодов для чисел со знаком является "дополнительный до двух" код, в котором число с противоположным знаком находится инверсией исходного числа и увеличением результата на единицу. Причем старший бит обозначает знак числа. Если он равен единице, число отрицательное, если равен нулю - положительное. Минимальное отрицательное 10-ти разрядное число 10..00(BIN) = - 512(DEC). Максимальное положительное 01..11(BIN) = 511. Максимальное отрицательное 10-ти разрядное число 11..11(BIN) = -1(DEC). Минимальное положительное 00..01(BIN) = 1(DEC). Проинвертировав старший бит, получим передаточную характеристику расположенную в зависимости от знака Uо в четырех квадрантах, с нулем посередине. Такой ЦАП называется четырехквадрантным.

4.4 АЦП ПОРАЗРЯДНОГО УРАВНОВЕШИВАНИЯ (ПОСЛЕДОВАТЕЛЬНЫХ ПРИБЛИЖЕНИЙ)

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

ad-vesy.gif (2975 bytes)

Пусть число разрядов АЦП равно 10 (см. рисунок внизу). ЦАП начинает цикл преобразования с приходом "положительного" импульса на вход R. Высоким уровнем этого сигнала регистр RG1 обнуляется, а переход сигнала R к нулю запускает внутренний генератор и схему управления.

adporaz.gif (4834 bytes)

В момент t0 в старший разряд регистра RG1 записывается лог."1" (гиря с наибольшим весом). На выходах регистра RG1 появляется код 10..00(BIN) = 2^(n-1) = 512. ЦАП генерирует напряжение Uцап(n-1) = Uо * 2^(n-1) / 2^n = Uо / 2. Аналоговый компаратор сравнивает напряжения, и если Uцап(n-1) <= Uвх, то единица в старшем разряде сохраняется, если Uцап(n-1) > Uвх, в старший разряд записывается ноль.

В момент t1 единица записывается в предпоследний разряд (n-2) и на выходах регистра RG1 появится код: Qn-1,1,0,0,..,0 равный сумме двух кодов: (Qn-1) * 2^(n-1) - значения старшего бита, полученного в предыдущем такте, и 2^(n-2) = 0100..0(BIN) = 256 - цифрового кода с уменьшенным в два раза "весом". Выходное напряжение Uцап(n-2) = Uцап(n-1) * Q(n-1) + Uо *2^(n-2) / 2^n = (Uo / 2) * Q(n-1) + Uо / 4 опять сравнивается с входным. Если Uцап(n-2) <= Uвх, то единица в предпоследнем разряде сохраняется, если Uцап(n-2) > Uвх, в (n-2)-ой разряд записывается ноль.

Описанный процесс производится в общей сложности n-раз. В конце цикла преобразования схема управления вырабатывает импульс готовности ~RDY, который записывает полученный код в выходной регистр. Этот же импульс выводится наружу, для оповещения. Время преобразования Tпреобр = tclk*n. где tclk = t(i+1)-ti период повторения тактовых импульсов внутреннего генератора. Временные диаграммы и условное обозначение АЦП приведены рисунке.

da-vrem.gif (5147 bytes)

По этому принципу действия выпускаются преобразователи типов 572ПВ1 и 1113ПВ1(А..В). Зависимость прямого двоичного кода D от входного напряжения: D = |(Uвх * 2^n)| / Uo, где D десятичный эквивалент кода на входе АЦП.

4.5 АЦП ПАРАЛЛЕЛЬНОГО ТИПА

В таком АЦП весь диапазон входного напряжения разбивается на 2^n интервалов. Каждому интервалу соответствует опорное напряжение Uо(i), снимаемое с делителя напряжения, и свой аналоговый компаратор, сравнивающий Uвх с Uо(i).

da-paral.gif (8954 bytes)

Для любого входного напряжения в диапазоне (0 .. ¦Uo¦)В найдется такой i-ый компаратор, входное напряжение на котором будет больше или равно опорному U(i). В этом случае на выходе этого компаратора напряжений и на выходах всех компараторов с номерами меньшими i появится "1", а на выходах остальных "0". Приоритетный шифратор сформирует двоичный код, равный наивысшему номеру входа на котором еще присутствует единица. Полученный код через управляемые инверторы/повторители, выполненные на элементах равнозначности, защелкивается в выходном регистре.Учитывая логику работы шифратора, заключающуюся в том, что если на его входах с 1-го по (n-1)-ый одни нули, то единица обязательно должна быть на нулевом входе, можно сэкономить на нулевом компараторе. В этом случае нулевой вход шифратора постоянно подключен к "1", и если входное напряжение находится в пределах 0 <= ¦Uвх¦ < ¦U(1)¦, то нулевой код на выходе генерируется автоматически. Элементы ИСКЛЮЧАЮЩЕЕ-ИЛИ-НЕ при значении Mi = 0 инвертируют выходной сигнал шифратора, а при Mi = 1 повторяют его. Зависимость выходного кода от режима дана ниже:

        M1 M0         Выходной код
        1  1          прямой
        0  0          обратный
        0  1          дополнительный прямой
        1  0          дополнительный обратный.

Быстродействие достигается, как за счет параллельного принципа работы, так и за счет конвейерного передвижения информации внутри АЦП (см.рисунок).

diagr.gif (1518 bytes)

В момент t0 положительным фронтом сигнала C происходит защелкивание кода от предыдущего цикла преобразования. В момент t1 компараторы открываются и начинается сравнение входного напряжения с опорным в текущем цикле. Когда тактовый сигнал C станет равным нулю (момент t2), шифратор отпирается по входу C и начинает преобразование текущего значения Uвх в код. Следующий цикл преобразования начинается в момент t3, когда производится запоминание в регистре текущего кода и его появление на выходах в момент t4, одновременно с началом сравнения на входах компараторов следующего значения напряжения. Время преобразования Tпр = Tclk, т.е. примерно на порядок меньше, чем у АЦП последовательных приближений. По такой схеме выполняются преобразователи типа 1107ПВ1,..5.

4.6 ЗАДАЧИ И УПРАЖНЕНИЯ

На входы цифроаналогового преобразователя поданы следующие сигналы: D3D2D1D0 = 0100 , Uo = -8v. Укажите абсолютное значение напряжения на выходе ЦАП.

dac1.gif (1473 bytes)

Пояснения к решению :1) Вспомним, что Uвых = - (Uo / 2^n) * D, где n- число разрядов ЦАП ( из условия задачи видно, что n = 4 ). 2) D - десятичный эквивалент двоичного кода на входе ЦАП = 0100(BIN) = 4(DEC).

Поэтому ответом будет: 2 вольта.

Напряжение Uo цифроаналогового преобразователя равно 16 вольт. Укажите число разрядов n ЦАП, если при увеличении двоичного кода на цифровых входах ЦАП на единицу, Uвых изменилось с -1,5в до -1,75в.

da.gif (1597 bytes)

Пояснения к решению : 1) Уравнение Uвых = - (Uo/2^n)*D, где n- число разрядов ЦАП, необходимо решить относительно n при известных D и Uвых.

Ответ: 6 разрядов.

На входы АЦП поданы следующие сигналы: Uвх = 2.5v, Uo = 8v. Укажите двоичный код D3D2D1D0 на выходе АЦП.

adc1.gif (1448 bytes)

Пояснения : Уравнение для ЦАП необходимо решить относительно выходного кода. D = (Uвх * 2^n) / Uo , далее все просто..

К входам D3D2D1D0 счетчика приложены сигналы 0111. Uo = -8v. Укажите значение напряжения на выходе ЦАП с учетом знака после прихода 3-го импульса на входе C.

ct-dac1.gif (2830 bytes)

Пояснения : 1)Из рисунка видно, что счетчик суммирующий (+1). 2)Сигналом L=1 в счетчик записывается BIN-код = 0111 = 7(DEC). 3)С приходом 3-го счетного импульса код на входе ЦАП станет равным 4)Остается найти напряжение на выходе ЦАП по приведенной ранее формуле (не забыв про знак).

Ответ: 5 вольт.

На вход C счетчика поступило 2 импульса. Вычислите напряжение на выходе униполярного ЦАП в момент времени отмеченный знаком +, с учетом значений на входах Di и временных диаграмм L,C. Внизу рисунка приведено содержимое памяти.

crd1.gif (3798 bytes)

 Адрес : 0 1 2 3 4 5 6 7 8 9 a b c d e f
 Код   : 1 8 e f b 6 9 2 7 c a d 4 0 5 3

Пояснения : 1)Сигналом (L)oad производится загрузка кода Q3Q2Q1Q0 = D3D2D1D0 = 0100(BIN) = 4(DEC). 2)Отмечаем, что счетчик вычитающий (-1), поэтому 2 импульса уменьшат код на его выходах до двух. 3)Из схемы видно, что выход Q0 соединен с входом A1,..,Q2 c A0,.. и.т.д то есть код на входах A3..A0 памяти будет другим (=4). 4)Находим код Y3Y2Y1Y0, соответствующий полученному адресу A3A2A1A0 и преобразуем его в BIN код (b = 1011). 5)Переставляем биты этого кода Y0 -> X2 , Y1 -> X3 , Y2 -> X0 , Y3 -> X1. 6)Полученный код 1110 преобразуем обратно в десятичное число, подставляем в формулу ЦАП и получаем ответ, не забывая про знак.

Ответ: U = -14 вольт


9. ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ

cif-plata.gif (37892 bytes)

9.1 АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ.

Язык программирования наиболее полно учитывающий особенности "родного" микропроцессора и содержащий мнемонические обозначения машинных команд называется Ассемблером. Программа, написанная на Ассемблере называется исходной программой. Далее остановимся на версии, называемой Турбо Ассемблер.

Разработка программы на Ассемблере состоит из следующих этапов:

  • 1) Составление алгоритма в виде блок-схемы или структурного описания,
  • 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов. Имя PROG может быть произвольным, а расширение ASM - обязательно,
  • 3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пп.2 и 3,
  • 4) Преобразование с помощью программы TLINK.EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM.
  • 5) Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки.

assm.gif (4712 bytes)

Текст программы на Ассемблере содержит следующие операции:

  • а) команды или инструкции,
  • б) директивы или псевдооператоры,
  • в) операторы,
  • г) предопределенные имена.

Действия обусловленные операциями перечисленными в пп.б,в,г выполняются на этапе трансляции, т.е. являются командами Ассемблеру. Операции, называемые командами или инструкциями выполняются во время выполнения программы, т.е. являются командами микропроцессору.

9.2 ФОРМАТ КОМАНД И ИХ КЛАССИФИКАЦИЯ

Инструкция записывается на отдельной строке и включает до четырех полей, необязательные из которых выделены [ ]:

[метка:] мнемоника_команды [операнд(ы)] [;комментарий]

Метка или символический адрес содержит до 31 символа из букв цифр и знаков ? @ . _ $. Причем цифра не должна стоять первой, а точка, если есть должна быть первой.

Мнемоника - сокращенное обозначение кода операции (КОП) команды, например мнемоника ADD обозначает сложение (addition).

Операндами могут быть явно или неявно задаваемые двоичные наборы, над которыми производятся операции.Операнды приводятся в одной из четырех систем счисления и должны оканчиваться символом b(B), o(O), d(D), h(H) для 2, 8, 10 или 16-ной СС. К шестнадцатиричному числу добавляется слева ноль, если оно начинается с буквы.

Система команд может быть классифицирована по трем основным признакам -

  • длина команды или число занимаемых ею байтов,
  • функциональное назначение и
  • способ адресации.

Для МП 1810ВМ86 (8086) команда занимает от одного до шести байтов. Первым байтом команды всегда является код операции, например код команды INT XXh равен CD(HEX).

По функциональному признаку инструкции можно разбить на пять больших групп:

  • 1) команды пересылки данных,
  • 2) арифметические команды,
  • 3) логические команды,
  • 4) команды переходов и
  • 5) команды управления.

Существует пять основных способов адресации:

  • регистровая,
  • непосредственная,
  • прямая,
  • косвенная и
  • стековая.

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

В первом случае операнд(ы) располагаются в регистрах микропроцессора (МП), например по команде MOV AX,CX пересылается содержимое CX в AX.

При непосредственной адресации операнд располагается в памяти непосредственно за КОП, инструкция MOV AL,0f5h записывает число 245(f5) в регистр AL.

В случае прямой адресации за КОП следует не сам операнд, а адрес ячейки памяти или внешнего устройства, например команда IN AL,40h вводит байт данных из внешнего устройства с адресом 40h.

Косвенная адресация отличается от регистровой тем, что в регистре хранится адрес операнда, т.е. по команде MOV AL,[BX] в аккумулятор al будет записано число из ячейки памяти с адресом, хранящимся в регистре BX.

Стековая адресация производится к операндам расположенным в области памяти, называемой стек.

9.3 НЕКОТОРЫЕ ОПЕРАТОРЫ, ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА, ДИРЕКТИВЫ И КОМАНДЫ АССЕМБЛЕРА 80X86(8088)

9.3.1 ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА

1. $ - программный счетчик. Этот символ отмечает текущий адрес в текущем сегменте. Полезен при определении длины цепочек байтов или строк.

text  DB 'This string has NN letters'
NN = $ - text;  NN = длине строки text (количеству байтов
в этой строке). Не путать часть строки '..NN..' и константу NN!

2. @data - адрес начала сегмента данных.

....

mov ax,@data

mov ds,ax;

в сегментном регистре DS теперь адрес сегмента данных.

3. ??date, ??time, ??filename - эти имена во время трансляции заменяются, соответственно на текущие дату, время и имя файла в формате ASCII.

9.3.2 ОПЕРАТОРЫ

1. () - скобки, определяют порядок вычислений

2. [] - например [BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации.

3. +, -, *, / - операторы сложения, вычитания, умножения и деления.

mov ax, (2 * 3 + 8 / 2) - 2; в регистр ax будет помещено число 8.

4. MOD - деление по модулю. Даёт остаток.

5. SHL,SHR - сдвиг операнда влево, вправо.

mov si, 01010101b SHR 3; в регистр SI будет загружено число 0Ah (00001010).

6. NOT - побитовая инверсия.

7. AND,OR,XOR - операции "И","ИЛИ","ИСКЛ.ИЛИ".

mov dl, (10d OR 5d) XOR 7d; (dl) будет равно 8.

8. : - переназначение сегмента.

mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение).

9. OFFSET - оператор получения смещения адреса относительно начала сегмента (то есть количества байтов от начала сегмента до идентификатора адреса).

mov bx, OFFSET table

9.3.3 ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ)

1. : - определяет близкую метку (в пределах сегмента).

      jmp lbl .... ....
lbl:  ....

2 . = - присваивает символическому имени значение выражения.

videoram = 0B800h; присвоение videoram = 0B000h;

3. .CODE - определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы.

4. .DATA - определяет начало сегмента данных.

5. DB,DW - директивы резервирующие один или несколько байтов: DB, или одно или несколько слов: DW.

      ....
      .DATA
fibs  DB 1,1,2,3,5,8,13
rus   DB 'Турбо Ассемблер'
buf   DB 80 DUP(0);резервируется 80 байтов,каждый обнуляется
int   DW 65535;в двух байтах располагается число FFFFh.
Array DW 100 DUP (0);резервируется 100 слов

6. END - обозначает конец программы.

      ....
      .CODE
MyPROG:....; точка входа (начало программы).
       ....; команды программы
       ....
       END MyPROG

7. ENDM - окончание блока или макроопределения

8. ENDP - обозначает конец подпрограммы.

9. EQU - присваивает символическому имени или строке значение выражения.

BlkSize EQU 512
BufBlks EQU 4
BufSize EQU BlkSize * BufBlks

10. LABEL - определяет метку соответствующего типа.

       ....
       .DATA
m_byte LABEL BYTE;метка m_byte типа BYTE позволяет теперь
m_word DW 0;иметь доступ отдельно к каждому байту данных
       .CODE;m_word типа WORD
       ....
       mov [m_word],0204h
       add [m_byte],'0';теперь в m_word хранится код
       add [m_byte+1],'0';3234h,ASCII код '0' равен 30h

11. LOCAL - определяет метки внутри макроопределений как локальные и в каждом макрорасширении вместо них ассемблер вставляет уникальные метки: ??XXXX, где XXXX = (0000...FFFF)h. Почему ??XXXX ? Да потому что никому не должно прийти в голову начинать символическое имя с ??, и транслятор смело может генерировать метки не боясь совпадений.

12. MACRO - задает макроопределение.

Swap   MACRO a,b; a,b - параметры макро (ячейки памяти)
       mov ax,b;данное макрооопределение позволяет делать
       mov bx,a;обмен данными между ячейками памяти, в
       mov a,ax;отличие от команды xchg ;
       mov b,bx;нельзя mov a,b;
       ENDM

Вызов этого макроса производится командой: Swap m,n

13. .MODEL - определяет размер памяти под данные и код программы.

.MODEL tiny;под программу,данные и стек отводится один общий сегмент (64 Kb).

14. PROC - определяет начало подрограммы.

Print  PROC NEAR
       ;здесь команды подпрограммы
Print  ENDP
       ....
       call Print;вызов подпрграммы.

15. .STACK - определяет размер стека.

.STACK 200h; выделяет 512 байтов для стека.

16. .RADIX base - определяет систему счисления по умолчанию, где base - основание системы счисления: 2, 8, 10, 16.

       .RADIX 8
oct    = 77; oct равно 63d.

17. ; - начало комментария.

9.3.4 КОМАНДЫ ПЕРЕСЫЛКИ

1. MOV DST,SRC; переслать (SRC) в (DST). Здесь и далее содержимое регистра, например регистра AL будет обозначаться - (AL) или (al), а пересылка в комментарии будет обозначаться знаком <-- .

    mov al,ch; (al) <-- (ch).
    mov cx,dx;
    mov bh,[mems];содержимое  ячейки памяти с символическим  адресом
       mems  переслать  в  регистр  BH. Можно: mov bh,mems.
    mov al,[bx];переслать в аккумулятор содержимое ячейки памяти
    с  адресом находящимся в регистре BX .
    mov bx,OFFSET  src;поместить  в  BX  смещение  адреса
       ячейки памяти SRC, в текущем сегменте.
    mov al,table[bx];загрузить в аккумулятор элемент таблицы байтов
       с символическим адресом первого элемента table и отстоящий
       от этого элемента на (bx)  байтов.  Другие варианты:
    mov al,[table + bx] или
      mov al,table + bx.
До выполнения команды mov al,[table + bx] | Регистр BX | Регистр AL | Адрес | Код
 | 0010 | XX | 0800 (table) | 8с
 |  |  | 08xx | xx
 |  |  | 0810 | 58
После выполнения команды mov al,[table + bx] | Регистр BX | Регистр AL | Адрес | Код
 | 0010 | 58 | 0800 (table) | 8с
 |  |  | 08xx | xx
 |  |  | 0810 | 58

2. PUSH RP; поместить на вершину стека содержимое пары регистров RP (например push bx).

3. POP RP; снять с вершины стека два байта и поместить в пару RP (например pop ax).

4. XCHG DST, SRC; поменять местами содержимое (DST) и (SRC). Оба операнда не могут быть одновременно содержимым ячеек памяти.

5. XLAT SRC; извлечь из таблицы с начальным адресом SRC байт данных имеющий номер от начала таблицы = (AL), и поместить его в AL. Адрес SRC должен находиться в регистре BX. Другой вариант: XLATB.

      ....
      .DATA
src   DB 15d,10h,00110101b,'A','B',166d
      .CODE
      ....
      mov al,2; в результате выполнения этих трех  команд
      mov bx,OFFSET src; в регистр AL будет загружен код
      xlatb; 00110101b = 35h = 53d = ASCII'5'

6. IN ACCUM, PORT; поместить в аккумулятор AL или AX байт или слово из порта с адресом PORT. Если адрес порта <= FF то адрес порта может указываться непосредственно, если адрес порта > FF, то адрес порта указывается косвенно, через содержимое регистра DX (специальная функция регистра общего назначения).

    in al,0a5h;ввести  в  AL  байт данных из ВУ с адресом порта A5h ....
    mov dx,379h;ввести в аккумулятор AL байт данных из
    in al,dx;внешнего устройства  с  адресом  порта  379h

7. OUT PORT, ACCUM; переслать из аккумулятора AL или AX байт или слово в ВУ с символическим адресом PORT.

    out 0ffh,al;
    ....
    mov dx,37Ah;переслать слово данных из AX в ВУ с адре-
    out dx,ax;сом порта 37Ah

8. LEA RP,M; загрузить в регистр RP эффективный адрес (смещение) ячейки памяти с символическим адресом M.

lea di, rus; аналог этой команды - mov di, OFFSET rus.

9.3.5 АРИФМЕТИЧЕСКИЕ КОМАНДЫ

1. ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST.

add al, [mem_byte]; mem_byte однобайтовая ячейка памяти

add [mem_word], dx; mem_word двухбайтовая ячейка памяти

add ch,10001010b;

2. INC DST; увеличить (DST) на 1 (инкремент (DST)).

    inc si; (SI) <-- (SI) + 1.
    inc count; (count) <-- (count) + 1.

3. SUB DST, SRC; вычесть (SRC) из (DST) и результат поместить в DST.

4. DEC DST; декремент (DST).

5. CMP DST, SRC; сравнить содержимое DST и SRC. Эта команда выполняет вычитание (SRC) из (DST) но разность не помещает в DST и по результату операции воздействует на флаги.

     условие                                  флаги
                                          OF  SF  ZF  CF
    DST > SRC                            0/1   0   0   0
    DST = SRC                              0   0   1   0
    DST < SRC                            0/1   1   0   1

0/1 - означает, что флаг может быть равен 0 или 1 в зависимости от значений операндов. Флаги OF и SF имеют смысл при операциях со знаковыми числами, CF для беззнаковых чисел. Флаг переполнения OF устанавливается в 1, если в результате операции сложения или вычитания значения переноса в старшиий двоичный разряд и из старшего двоичного разряда не совпадают. По другому определению OF принимает значение 1, если результат превышает диапазон представления соответствующих чисел. Пусть DST > SRC и оба являются однобайтовыми числами, тогда:

      DST:       1.   (+127)         2.    (+127)
      SRC:           -  (+2)              -  (-2)
                     -------               -------
                      (+125) (OF)=0        (+129)? (OF)=1

Во втором примере результат превышает диапазон: -128 <= x < = +127. Флаг знака SF устанавливается в '1', если старший бит результата операции равен 1, т.е. при отрицательном результате. В противном случае сбрасывается. Флаг нуля ZF устанавливается в '1' при нулевом результате (!), иначе сбрасывается. Флаг переноса CF = 1, если есть перенос из старшего разряда при сложении или есть заем в младший разряд при вычитании. Иначе флаг сбрасывается. Для первого примера SF = ZF = CF = 0, для второго: SF = 1, ZF = CF = 0.

9.3.6 ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА

1. AND DST, SRC; поразрядное логическое "И".

mov dh, 10101100b;

and dh, 0f0h;

в результате выполнения этих двух команд содержимое DH станет равно 10100000b.

2. OR DST, SRC; поразрядное логическое "ИЛИ".

or bx,dx;если (BX)=5F0Fh,а (DX)=7777h,то после операции
        ;(BX)=7F7Fh.
BX | 0101 1111 0000 1111 = 5F0F
DX | 0111 0111 0111 0111 = 7777
BX (результат) | 0111 1111 0111 1111 = 7F7F

3. XOR DST, SRC; поразрядное логическое "исключающее ИЛИ".

xor al,55h;если (AL)=5ah, то после операции (AL)=0fh.

4. NOT DST; инверсия всех битов приемника.

5. TEST DST, SRC; выполняет операцию AND над операндами, но воздействует только на флаги и не изменяет самих операндов.

6. SHR DST, CNT; логический сдвиг вправо, освобождающиеся слева биты заполняются нулем, крайний правый бит выталкивается во флаг CF. Операнд DST может быть ячейкой памяти.

    mov bl,10110010b;(CF) = x
    shr bl,1;(BL) = 01011001,(CF) = 0
до сдвига 1 0 1 1 0 0 1 0 (CF)=X
после сдвига 0---> 0 1 0 1 1 0 0 1 ------> (CF)=0

    mov cl,4;
    shr bl,cl;(BL) = 00000101,(CF) = 1.

7. SHL DST, CNT; логический сдвиг влево.

8. RLC DST, CNT; циклический сдвиг влево через перенос

9. RRC DST, CNT;циклический сдвиг вправо через перенос

10. ROR DST, CNT;циклический сдвиг влево

11. ROL DST, CNT;циклический сдвиг вправо

9.3.7 КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ

1. CALL SUBR; вызов подпрограммы с адресом SUBR;

    call delay;
    mov ....

2. RET; возврат из подпрограммы к оператору следующему непосредственно за CALL, то есть в приведенном выше примере к MOV ..

3. JMP NAME; безусловный переход к команде с символическим адресом NAME.

    jmp short name;переход к метке name, отстоящей не более
                  ;чем на -128 или +127 байтов.
    jmp near name;переход к метке name,  отстоящей не более
                  ;чем на 65535 байтов, в одном сегменте.
    jmp name;аналогично jmp near name;

4. JA NAME или JNBE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине больше источника, то перейти к метке name.

5. JB NAME или JNAE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине меньше источника, то перейти к метке name (команды п4 и п5 выполняются по результатам выполнения операций над беззнаковыми числами).

6. JZ NAME или JE NAME; перейти, если результат операции влияющей на флаг нуля - нулевой (переход по "нулю").

7. JNZ NAME или JNE NAME; переход по "не нулю". (команды п6 и п7 выполняются по результатам выполнения операций над числами cо знаком ).

9.3.8 КОМАНДЫ УПРАВЛЕНИЯ ЦИКЛАМИ

1. LOOP NAME; эта команда неявно уменьшает (CX) на 1 и осуществляет переход к ближней метке, если (CX) не равно 0.

      ....
      mov cx,64h;блок операторов от метки syc до loop syc
syc:   ....;будет выполнен 100 раз.
       ....
       loop syc

2. LOOPZ NAME или LOOPE NAME кроме того осуществляет проверку ZF флага. Поэтому цикл заканчивается по условию, когда (CX) = 0 или (ZF) = 0 или и то и другое вместе. Т.о. эта команда служит для обнаружения первого ненулевого результата.

3. LOOPNZ, LOOPNE - выход из цикла по "нулю".

       ....
       mov cx,1000d;цикл может быть завершен раньше 1000
next:  .... ;прохода,если содержимое аккумулятора
       .... ;станет равным 129,т.е. равным ASCII коду
       cmp al,'Б';буквы Б.
       loopnz next

9.3.9 КОМАНДЫ ОБРАБОТКИ СТРОК (ЦЕПОЧЕК БАЙТОВ)

1. LODSB; команда lodsb загружает байт адресованный регистром SI из сегмента данных, и увеличивает SI на 1, если перед этим была введена команда CLD (очистить флаг направления DF) и уменьшает SI на 1, если была использована команда STD (установить флаг направления).

       ....
       .DATA
string DB 'abcdefg'
       .CODE
       ....
       cld;после выполнения этих команд в AL будет
       mov si,OFFSET [string+2]; загружен ASCII код 'с'
       lodsb;причем содержимое SI будет указывать на 'd'.

2. MOVSB; эта команда перемещает один байт из ячейки памяти с адресом в регистре SI в ячейку памяти с адресом в регистре DI и увеличивает (SI) и (DI) на 1. Значение SI может находиться, как в сегменте данных DS, так и в дополнительном сегменте ES. Значение DI может находиться только в дополнительном сегменте ES.

      ....
      .DATA
 msg  DB 'Всё O.K.'
 LEN  = $ - msg;LEN равно 8
      .CODE
      ....
      cld
      lea si,msg;в SI адрес источника
      mov ax,0b800h;начало сегмента видеопамяти
      mov es,ax;поместить в дополнительный сегмент
      lea di,es:(0a0h * 3);4-я строка сверху
      mov cx,LEN;LEN - количество выводимых символов
rp:   movsb;переслать символ в текущую позицию экрана
      inc di;перешагнуть через позицию атрибута
      loop rp;повторить до исчерпания (CX)
      ....;строка 'Всё O.K.' будет выведена в 4-ю строку
          ;дисплея сверху.

3. REP ;префикс повторения команды. Например окончание предыдущей программы может быть записано в виде:

      ....
      mov cx,LEN;несмотря на то,что массив'Всё O.K.'будет
rep   movsb;скопирован в область памяти B800:(A0 * 3), на
      ;экран дисплея будет выведено: ВёOK. Почему?

4. CMPSB; осуществляет сравнение байта строки источника c адресом (SI) и байта строки приемника с адресом (DI): то есть производит вычитание ((SI)) - ((DI)). Не путать с командой CMP DST, SRC в которой наоборот, производится вычитание источника из приемника. Команда CMPSB неявно уменьшает (CX) на 1 и увеличивает (SI) и (DI) на 1, если (DF) = 0.

5. REPZ или REPE; префикс повторения. Выполнение команды завершается, когда (CX) = 0 или (ZF) = 0.

     ....
     .DATA
src  DB 'To be, or not to be'
dst  DB 'To be ,or not to be'
len  = $ - dst;len равно 19
     .CODE
     ....
     cld; (DF) = 0
     push ds;совместить адреса
     pop es;сегментов ds и es
     mov cx,len;длину строки dst переслать в cx
     lea di,dst;загрузить адрес(смещение) строки dst в DI
     lea si,src
repe cmpsb;сравнивать побайтно
     je equal;если все байты совпали, то перейти к метке
     not cx;если нет - вычислить номер несовпадающих байт
     add cx,len;
     jmp notequal;
equal:    ....
          ....
notequal: ....

В конце этого примера номер первого несовпадающего байта (CX) = 5.

9.3.10 КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ

1. CLC; сбросить флаг переноса (CF) = 0.

2. STC; установить флаг переноса (CF) = 1.

3. CMC; инвертировать флаг пнреноса.

4. CLD; очистить флаг направления (DF) = 0, в этом случае операции над строками (цепочками байтов) будут производиться от младшего адреса к старшему.

5. STD; установить флаг направления (DF) = 1,обработка цепочек байтов производится от старшего адреса к младшему.

6. STI; установить флаг прерываний (IF) = 1, разрешить прерывания от внешних устройств.

7.CLI; очистить флаг прерываний.

8. NOP; холостая операция.

9.3.11 КОМАНДЫ ПРЕРЫВАНИЙ

1. INT INUM; эта команда вызывает программное прерывание, то есть переход к ячейке памяти с адресом хранящимся в четырех байтах, начиная с адреса INUM * 4, где INUM = (0...255). Это 4-х байтовое число является указателем подпрограммы обработчика данного прерывания, и иначе называется вектором прерывания.Таким образом первый килобайт памяти 256 * 4 отводится под векторы прерываний.

Операции инициируемые программными прываниями определяются кодом в регистре AH, например:

    ....
    mov ah,14d;функция вывода символа на дисплей,с последующимм
    mov al,31h;продвижением курсора на одну позицию вправо.
    int 10h;на  экран будет выведена цифра '1'(ASCII код 31h).
       ....
       .DATA
privet DB 'Добрый morning !','$';
       .CODE
       ....
       lea dx,privet;специальная функция регистра DX
       mov ah,9;9 - функция вывода на экран дисплея
       int 21h;будет выведено приветствие ....

9.3.12 ВЛИЯНИЕ КОМАНД НА ФЛАГИ

В таблицу включены только те инструкции, которые влияют на флаги.

flags.gif (9925 bytes)

"+" - обозначает, что команда влияет на флаг, "-" - не влияет, "1" - флаг устанавливается в 1, "0" - флаг устанавливается в 0 (сбрасывается), "#" - инверсия флага, "?" - не определенное значение флага, >1 - одиночный сдвиг, >n - многоразрядный сдвиг.

9.3.13 ШАБЛОНЫ ДЛЯ ПРОГРАМ

1) тип EXE

       .MODEL tiny
       .STACK 200h; можно и меньше
       .DATA
        .....;здесь располагаются ваши данные
       .CODE
       mov ax,@data
       mov ds,ax
       ..... ;здесь располагаются
       ..... ;команды вашей программы
       mov ah,4ch;две команды для возврата
       int 21h; в DOS
       END

2) тип COM

       .MODEL tiny
       .CODE
       ORG 100h
 main: ..... ;здесь располагаются
       ..... ;команды вашей программы
       mov ah,4ch;две команды для возврата
       int 21h; в DOS
       ..... ;здесь располагаются ваши данные
       END main

9.3.14 ПРИМЕЧАНИЯ

    1. R1,R2 - одно- или двухбайтные регистры.
    2. RP - двухбайтные регистры.
    3. SRC,DST -источник,приемник (регистр или ячейка  па-
       мяти)
    4. M,M1,M2 -ячейки памяти с символическими адресами M,
       M1 и M2.
    5. CNT - счетчик,регистр CL или CX.
    6. SUBR,NAME  -  символический  адрес  (метка  начала
       подпрограммы или блока операторов).
    7. Во всех  командах  условных  переходов  метка  NAME
       должна отстоять от команды перехода не более,чем на  -128
       или +127 байтов.
    8. INUM - номер прерывания.


1. Логические функции и элементы

1.1 ОСНОВНЫЕ ПОЛОЖЕНИЯ АЛГЕБРЫ ЛОГИКИ

В отличие от аналоговых электронных устройств, в цифровых устройствах (ЦУ) входные и выходные сигналы могут принимать ограниченное количество состояний. В соответствии с логическим соглашением (ГОСТ 2.743-82), в зависимости от конкретной физической реализации элементов ЦУ, более положительному значению физической величины, "H" - уровень, соответствует состояние "логическая 1", а менее положительному значению ,"L - уровень" - "логический 0". Такое соглашение называется положительной логикой. Обратное соотношение называется отрицательной логикой. В ГОСТ'е 19480 - 89 даны наименования, определения и условные обозначения основных параметров и характеристик цифровых микросхем.

Теоретической основой проектирования ЦУ является алгебра-логики или булева алгебра, оперирующая логическими переменными. Для логических переменных, принимающих только два значения,существуют 4 основных операции. Операция логическое "И" (AND) конъюнкция или логическое умножение, обозначается * или /\. Операция логическое "ИЛИ" (OR), дизъюнкция или логическое сложение, обозначается + или \/ . Операция логическое "НЕ" (NOT), изменение значения, инверсия или отрицание, обозначается чертой над логическим выражением. Инверсия иногда будет в тексте обозначаться знаком " ~ ". Операция эквивалентности обозначается "=" . Следующие соотношения являются аксиомами.

(1) | 0 + 0 = 0 | 1 * 1 = 1 | (1')
(2) | 1 + 1 = 1 | 0 * 0 = 0 | (2')
(3) | 1 + 0 = 0 + 1 = 1 | 0 * 1 = 1 * 0 = 0 | (3')
(4) | ~1 = 0 | ~0 = 1 | (4')

Из (1, 2) и (1',2') следует: x + x = x и x * x = x. (5)

Из (1, 3) и (2',3') следует: x + 0 = x и 0 * x = 0. (6)

Из (2, 3) и (1',3') следует: 1 + x = 1 и x * 1 = x. (7)

Из (3) и (3') следует: x +~x = 1 и~x * x = 0. (8)

Из (4) и (4') следует: ~(~x) = x. (9)

И, наконец, из (1,1'), (2,2'), (3,3') и (4,4') следует:

~( x0+x1 ) = ~x0 * ~x1 и ~( x0 * x1) = ~x0 + ~x1 . (10)

Последние выражения (10) называют принципом двойственности или теоремой Де Моргана (инверсия логической суммы равна логическому произведению инверсий и наоборот). Соотношения двойственности для n переменных, часто записывают в виде:

~(x1 + .. + xn) = ~x1 * . .* ~xn и

~(x1 * .. * xn) = ~x1 + .. + ~xn (11)

На функции И и ИЛИ распространяются обычные алгебраические законы - переместительный, сочетательный и распределительный, которые легко доказываются методом перебора: x1 op x0 = x0 op x1 - переместительный, x2 op x1 op x0 = (x2 op x1) op x0 - сочетательный и x2*(x1+x0) = (x2*x1) + (x2*x0) и x2 + (x1*x0) = (x2+x1) * (x2+x0) - распределительный, где операция op может быть, либо И, либо ИЛИ. Наряду с тремя основными логическими функциями, называемыми также переключательными, существуют и другие.

1.2 ПЕРЕКЛЮЧАТЕЛЬНЫЕ ФУНКЦИИ

Для n - логических переменных (аргументов) существует 2n их комбинаций или двоичных наборов. На каждом таком наборе может быть определено значение функции 0 или 1. Если значения функции отличаются хотя бы на одном наборе, функции - разные. Общее число переключательных функций (ПФ) от n аргументов равно N=22n. Для n=2, N=16. При n=3, N=256 и далее очень быстро растет. Практическое значение имеют 16 функций от 2-х переменных, т.к. любое сложное выражение можно рассматривать как композицию из простейших. В таблице 1 приведены некоторые из ПФ для n=2. i-номер набора входных переменных x1 и x0.

tbl-per.gif (6091 bytes)

ЗАПОМНИТЕ СЛЕДУЮЩИЕ ОПРЕДЕЛЕНИЯ. Функция "И" равна единице, если равны единице ВСЕ ее аргументы. Функция "ИЛИ" равна единице, если равен единице ХОТЯ БЫ один аргумент. Функция "ИСКЛЮЧАЮЩЕЕ ИЛИ" (XOR) равна единице, если равен единице ТОЛЬКО один ее аргумент.

1.3 УСЛОВНЫЕ ОБОЗНАЧЕНИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ НА СХЕМАХ

uslovobz.gif (7485 bytes)

Количество входов логического элемента, участвующих в формировании логической функции, называется коэффициентом объединения - Коб ( не путать с коэффициентом разветвления). У всех выше приведенных схем, за исключением инвертора, коэффициент объединения равен двум. Промышленностью выпускаются схемы с Коб=2,3,4,8. Для получения схем с другим числом входов основные элементы можно объединять. Например, если требуется пятивходовая схема И, то ее можно получить, используя сочетательный закон следующим способом: x0 * x1 * x2 * x3 * x4 = (x0*x1) * (x2*x3*x4) = (x0*x1) * x2 * x3 * x4, т.е. требуются две двухвходовые и одна трехвходовая схемы И, для первого варианта, либо одна двухвходовая и одна четырехвходовая - для второго (рис.1).

ris1.gif (2519 bytes)

Можно использовать и восьмивходовую схему И, подав на незадействованные входы "1", либо некоторые из переменных, в соответствии с выражениями (5) или (7).

1.4 СПОСОБЫ ПРЕДСТАВЛЕНИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ

Целью проектирования цифрового устройства является получение его логической функции (ЛФ) и соответствующей ей схемной реализации. ЛФ могут иметь различные формы представления: 1) словесное, 2) графическое, 3) табличное, 4) алгебраическое, 5) на алгоритмическом языке (например VHDL) и 6) схемное. В качестве примера, рассмотрим функцию Y от двух переменных x1 и x0, заданную словесным описанием: Y=1, если переменные НЕ РАВНЫ и Y=0, если x1=x0. Такую ЛФ удобно назвать функцией НЕРАВНОЗНАЧНОСТИ. Переходим к табличному представлению Y (таблица 2).

tabl2.gif (3213 bytes)

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

Выражение (12) называется совершенной дизъюнктивной нормальной формой ЛФ (СДНФ). mi - минтерм или логическое произведение всех переменных i-го двоичного набора, входящих в прямом виде, если значение этой переменной в наборе равно 1, и в инверсном виде, если ее значение равно 0. fi - значение ЛФ на i - ом наборе. Доказательство (12) базируется на теореме разложения, в соответствии с которой любую ЛФ f(..) от n-переменных можно разложить по переменной xi в виде: f(x(n-1),...,xi,. ..,x0) = ~xi*f(x(n-1),...,0,..,x0) + xi*f(x(n-1),..,1,..,x0). Это выражение для xi=0 равно ~0*f(x(n-1),...,0,..,x0) + 0*f(x(n-1),..,1,..,x0) = f(x(n-1),...,0,..,x0). При xi=1 оно будет равно ~1*f(x(n-1),..,1,..,x0) + 1*f(x(n-1),..,1,..,x0) = f(x(n-1),...,1,..,x0), т.е. при любых значениях xi теорема разложения справедлива. Теорему разложения можно применить n раз и тогда ЛФ будет разложена по всем своим переменным.

В виде примера рассмотрим функцию F=f(x1,x0) от двух переменных. Разложение этой функции по переменной x1 даст: F= ~x1*f(0,x0) + x1*f(1,x0) . Продолжая эту операцию для переменной x0, получим:

F =~x1*(~x0*(f(0,0) + x0*(f(0,1)) + x1*(~x0*(f(1,0) + x0*(f(1,1)) = ~x1*~x0*f(0,0) + ~x1*x0*f(0,1) + x1*~x0*f(1,0) + x1*x0*f(1,1). (12.1)

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

Рассмотрим разложение функций F7-"ИЛИ" и F1-"И", для чего необходимо обратиться к соответствующим строчкам таблицы 1. Функция И на двоичных наборах входных переменных x1 и x0 (00,01,10,11) принимает значения 0,0,0,1. Записывая выражение (12.1) для этих значений получим: F1(x1,x0 ) = ~x1*~x0*0 + ~x1*x0*0 + x1*~x0*0 + x1*x0*1 = x1*x0, что соогласуется с ее определением. Таким же образом, находим алгебраическое выражение функции F7-"ИЛИ", которая, соответственно, на тех же входных наборах принимает значения: 0,1,1,1. Тогда, в соответствии с (12.1), F7(x1,x0) = ~x1*~x0*0 + ~x1*x0*1 + x1*~x0*1 + x1*x0*1. Вынося за скобки в двух последних слагаемых x1, получим F7 = ~x1*x0*1 + x1*(~x0*1 + x0*1). На основании аксиомы (8), выражение в скобке равно "1" и F7 = ~x1*x0*1 + x1. Применяя распределительный закон, найдем (~x1+x1) * (x0+x1) = x1+x0.

Возвращаясь к таблице 2, получим Y = 0*~x1*~x0 + 1*~x1*x0 + 1*x1*~x0 + 0*x1*x0 = ~x1*x0 + x1*~x0 = x1 (+) x0 = F6 (функцияия неравнозначности).

С помощью формулы (12) любую, сколь угодно сложную, логическую функцию можно представить в виде трех основных ЛФ: "И", "ИЛИ", "НЕ", представляющих собой логический базис.

1.5 ЛОГИЧЕСКИЙ БАЗИС

Набор простейших ЛФ, позволяющих реализовать любую другую функцию называется логическим базисом (ЛБ). Функции И, ИЛИ, НЕ не являются минимальным ЛБ, т.к. сами могут быть представлены через другие функции, например через F8(ИЛИ -НЕ) или F14(И - НЕ).

bazis.gif (5161 bytes)

Следовательно базис "И - НЕ" является минимальным. Реализацию НЕ,И,ИЛИ в базисе "ИЛИ - НЕ" произвести самостоятельно, используя перечисленные аксиомы.

1.6 СХЕМНЫЕ ОСОБЕННОСТИ ЛОГИЧЕСКИХ ЭЛЕМЕНТОВ

Приведенные выше логические элементы (ЛЭ) И, ИЛИ, НЕ, И-НЕ и другие могут иметь некоторые схемотехнические особенности.

1.6.1 БАЗОВЫЙ ЛОГИЧЕСКИЙ ЭЛЕМЕНТ

На рисунке приведена упрощенная схема И-НЕ и его условное обозначение.

base-elem.gif (3214 bytes)

Напряжения на базах транзисторов VT1 и VT2 находятся в противофазе и, если x0*x1=1, то нижний транзистор открыт, а верхний закрыт, так как ~(x0*x1)=0 . Потенциал коллектора VT2 в этом случае примерно равен нулю и следовательно y=0. При других значениях x0 и x1 нижний транзистор закрыт, а верхний открыт и на выходе схемы - высокий уровень, т.е. схема работает как элемент И-НЕ. Выходы нескольких БЛЭ категорически нельзя соединять вместе, потому что, если n-1 элементов находятся в состоянии "1", а n-ый в состоянии "0", то n-1 транзисторов VT1 будут "сливать" (sink) токи в единственный транзистор VT2 n-го элемента. Суммарный ток может превысить допустимое значение и VT2 выйдет из строя.

1.7 ЭЛЕМЕНТ С ОТКРЫТЫМ КОЛЛЕКТОРОМ

Логический элемент И-НЕ с открытым коллектором (ОК) (см.рис.2. слева) обозначается в поле элемента ромбом с чертой внизу.

ris2.gif (2946 bytes)

К открытому коллектору снаружи могут подключаться резисторы, обмотки реле и двигателей, светодиоды и т.д. Открытые коллекторы нескольких элементов в отличие от базового логического элемента могут соединяться вместе, образуя "монтажное И" (рис.2 - справа) для прямых значений переменных т.к. y=y0*y1=1 при y0=y1=1. Иногда такую схему называют "монтажное ИЛИ", потому что y = ~(x0*x1) * ~(x2*x3) в соответствии с соотношением двойственности равно ~(x0*x1 + x2*x3) (рис.2). Логический элемент И с открытым эмиттером, обозначается ромбом, но с чертой сверху.

1.8 ЭЛЕМЕНТЫ "И - ИЛИ - НЕ" И РАСШИРИТЕЛИ

Такие схемы объединяют несколько элементов И, подключенных выходами к элементу ИЛИ-НЕ (рис.3). Если количества переменных a,b,..e недостаточно, используются элементы-расширители, подключаемые к входам расширения C и E (входы для открытых коллектора и эмиттера). Символ &1 обозначает функцию И, объединяемую по ИЛИ (рис.4). Здесь и далее символом * обозначаются вспомогательные входы у логических элементов.

ris3-4.gif (4720 bytes)

В этих схемах, как и вообще в элементах ИЛИ, неиспользуемый вход ИЛИ д.б. подключен к 0. Поэтому, если одна из секций И незадействована, на один из ее входов необходимо подать 0. В противном случае Y всегда будет равен 0. Это особенность схем, выполненных по ТТЛ(Ш) технологии, т.к. неподключенный логический вход этих схем эквивалентен логической 1 (правда при этом ухудшаются некоторые характеристики микросхемы).

1.9 ТРИСТАБИЛЬНЫЕ ЭЛЕМЕНТЫ

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

ris5.gif (4078 bytes)

Если сигнал ~OE=0, транзистор VT3 закрыт и включенные встречно диоды не оказывают влияния на логические выходы элемента И. Напряжения на базах транзисторов VT1 и VT2 находятся в противофазе и, если x0*x1=1, то верхний транзистор закрыт, а нижний открыт. Потенциал коллектора VT2 примерно равен нулю и следовательно y=0. При других значениях x0 и x1 нижний транзистор заперт, а верхний открыт и на выходе схемы - высокий уровень, т.е. при ~OE=0 схема работает как обычный элемент И-НЕ. Картина существенно изменится при ~OE=1. Транзистор VT3 откроется до насыщения и на базах транзисторов VT1 и VT2 потенциал опустится примерно до нуля, запирая их. Выход "y" окажется отключенным от внутренней логической схемы. На схемах тристабильные элементы обозначаются ромбом с поперечной чертой или буквой Z.

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

  • Дополнительный инверсный вход относится к категории управляющих или функциональных. Функция входа зашифрована в его обозначении (Output Enable - разрешение выхода (~OE)),а значение активного уровня на этом входе,при котором функция выполняется, равно 1, если вход прямой, и равно 0, если вход инверсный, как на схеме.

1.10 МИНИМИЗАЦИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ

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

Рассмотрим пример. Имеется три двоичных датчика xi. Необходимо реализовать ЛФ Yмажор принимающую значение 1, когда равны 1 значения двух и более датчиков. Такая функция называется мажоритарной. Ее таблица истинности имеет вид:

tabmajor.gif (4023 bytes)

По формуле (12): Yмажор = ~x2*x1*x0 + x2*~x1*x0 + x2*x1*~x0 + x2*x1*x0. (3,5,6,7 - строчки таблицы ). Полученному выражению соответствует схема на рис.6.

ris6.gif (3031 bytes)

Схема содержит 4 трехвходовых элемента "И" и 1 четырехвходовый элемент "ИЛИ". Нахождение минимальной формы ЛФ производится методом алгебраических преобразова- ний, с помощью таблиц Карно или машинными методами для больших проектов.

1.11 ТАБЛИЦА КАРНО

Таблица Карно (ТК) это видоизмененная запись таблицы истинности. Для функции мажоритарности из последнего примера (ТК) выглядит следующим образом:

karn.gif (2741 bytes)

Правила построения ТК с ледующие: 1)Количество клеток ТК равно количеству строк таблицы истинности. 2)Слева и сверху располагаются значения аргументов. Порядок размещения аргументов таков, что в двух соседних по горизонтали и вертикали клетках отличается значение только одного аргумента (поэтому соседними считаются и клетки, находящиеся на противоположных краях таблицы). 3)В клетки заносятся соответствующие значения ЛФ. 4)Единичные клетки объединяются в прямоугольники (импликанты) по 2^i клеток. 5)Для каждого прямоугольника записывается произведение тех аргументов, которые в соседних клетках не изменяют своего значения. 6)Переменные входят в произведение в прямом виде, если их значение в соседних клетках равно 1, в противном случае в инверсном. 7)Полученные произведения складываются по ИЛИ в искомую ЛФ.

В примере имеется 3 прямоугольника - A,B,C, причем Ya = x2*x0 (x1 в соседних клетках меняет свое значение, поэтому в конъюнкцию не входит). Yb = x1*x0 и Yс = x2*x1.

Yмажор = Ya + Yb + Yc = x2*x0 + x1*x0 + x2*x1. (13)

ris7.gif (2339 bytes)

Соответствующая схема (рис.7.) проще, чем на рис.6.

1.12 ПРЕОБРАЗОВАНИЕ ЛФ К БАЗИСУ "И-НЕ" И "И-ИЛИ-НЕ"

Применяя к выражению (13) аксиому двойного отрицания (9) получим:

Yмажор =~(~( x2*x0 + x1*x0 + x2*x1)) (14)

Формуле (14) соответствует схема (рис.8,слева) в базисе И-ИЛИ-НЕ.

ris8.gif (3142 bytes)

Применяя к выражению (14) соотношение двойственности (11) получим ~( ~(x2*x0) * ~(x1*x0) * ~(x2*x1)) . Последнему выражению соответствует схема в базисе И-НЕ (рис.8, справа).

1.13 ВРЕМЕННЫЕ ПАРАМЕРЫ ЛОГИЧЕСКИХ ЭЛЕМЕНТОВ

Рассмотрим реакцию инвертора на изменение входного сигнала (рис.9). Инерционные свойства инвертора приводят к задержке сигнала при его прохождении от входа к выходу.

ris9.gif (3792 bytes)

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

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

Определения вышеуказанных величин с их отечественными и международными обозначениями приведены в разделе обозначения некоторых параметров микросхем.

Быстродействие схемы зависит также от алгебраической формы представления ЛФ. Пусть y = a*b + c*a + d = a*(b+c)+d. Первой форме (ДНФ) соответствует схема (A), а второй - схема (B) см. рис.10.

ris10.gif (3027 bytes)

Если среднее время задержки сигнала в каждом элементе одинаково, то 2tзд.р.ср. < 3tзд.р.ср. и двухъярусные схемы (СДНФ) в общем случае быстрее. Правда в записи со скобками может уменьшиться количество элементов и/или проводников (в схеме (B) на один провод меньше).

1.14 ПЕРЕХОДНЫЕ ПРОЦЕССЫ В ЛОГИЧЕСКИХ СХЕМАХ

Отличие времени задержки tзд.р. от нуля при прохождении сигнала через логическую схему может приводить к возникновению помех в выходном сигнале. Эти помехи имеют вид коротких импульсов, и в некоторых случаях приводят к серьезным сбоям в работе схем. Рассмотрим устройство на рис.11. Если элементы схемы не вносят задержки сигнала, а x0 и x1 находятся в противофазе, т.е. x0 = ~x1, то y = ~(x1 * ~x1) = 1. Если же каждый из пяти ЛЭ имеет задержку tзд.р., тогда x0' запаздывает относительно x0 на 4tзд.р. и на выходе схемы возникает незапланированный "отрицательный" импульс (интервал 1..2), сдвинутый на tзд.р. элемента И-НЕ (интервал 0..1). Процесс прохождения входных сигналов до общего выхода называется состязаниями или "гонками".

ris11.gif (2917 bytes)

Вредный эффект "гонок" может быть устранен несколькими способами, один из которых заключается в добавлении к ЛФ дополнительного слагаемого. Пусть некоторая ЛФ равна F = x1*x2 + ~x1*x0, тогда при x2=x0=1 может появиться помеха, вызванная тем, что сигнал ~x1 задержан относительно x1 на величину задержки инвертора (см. рис.12).

ris12.gif (4197 bytes)

Добавление лишнего импликанта (в таблице обведен точками) устраняет проблему, т.к.при критической ситуации, когда x2=x0=1, дополнительная составляющая x0*x2=1 и функция F = x1*x2 + ~x1*x0 + x0*x2 равна всегда 1 при x2=x0=1.

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

1.15 ЗАДАЧИ И УПРАЖНЕНИЯ

Задача 1. На входы схемы одновременно поступают несколько сигналов. Через какой промежуток времени на выходе гарантированно появится истинное значение логической функции? Задержки сигналов при прохождении через логические элементы приведены в таблице (1нсек=10-9сек). Получите задание (щелкнув по одноименной кнопке), запишите ответ в окно слева от кнопки ОТВЕТ ГОТОВ и щелкните по ней . Пример ответа 34

tзд.р.ИЛИ | tзд.р.И | tзд.р.ИСКЛ.ИЛИ | tзд.р.НЕ

zadacha_tzd.gif (1920 bytes)

Задача 2. Выберите правильный порядок следования логических элементов. Например: И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ.

cifob-zad1.gif (1678 bytes)

И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ.

ИЛИ, И, ИСКЛЮЧАЮЩЕЕ ИЛИ.

ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, И.

ИСКЛЮЧАЮЩЕЕ ИЛИ, ИЛИ, И.

И, ИСКЛЮЧАЮЩЕЕ ИЛИ, ИЛИ.

Задача 3. Укажите правильное определение.

1. Функция И равна нулю, если равен нулю только один аргумент.

2. Функция ИЛИ равна нулю, если равен нулю только один аргумент.

3. Функция И равна единице, если равен единице хотя бы один аргумент.

4. Функция И равна нулю, если равен нулю хотя бы один аргумент.

5. Функция ИЛИ равна единице, если равены единице все аргументы.

1 2 3 4 5

Задача 4. Какому уравнению соответствует таблица Карно?

k5.gif (2397 bytes)

x3*x2 + ~x1*x0 + x3*~x2

x1*x0 + ~x2*x1 + ~x0*~x3

~x0*~x2 + ~x1*~x2 + x3*~x1

~x1*~x0 + x2*~x1 + ~x3*~x0

x0*x1 + x2*x3 + x3*~x2

ИТОГИ РЕШЕНИЯ ЗАДАЧ


7. КОДИРОВАНИЕ ИНФОРМАЦИИ В ЭВМ

8bit.JPG (2629 bytes)

7.1 СИСТЕМЫ СЧИСЛЕНИЯ

Любое неотрицательное число в позиционной системе счисления (СС) может быть представлено в виде:

D = Cn-1*bn-1 + Cn-2*bn-2 + ... + C1*b1 + C0*b0 + C-1*b-1 + C-2*b-2 +..,

где D - десятичный эквивалент числа, Ci - значение i-го разряда, b - основание системы счисления,b в степени i - вес i-го разряда и n число разрядов целой части числа. В вычислительной технике ниболее распространены: двоичная (BIN), десятичная (DEC), шестнадцатиричная (HEX) и непозиционная двоично-десятичная (BCD) системы счисления. В BCD системе вес каждого разряда равен степени 10, как в десятичной системе, а каждая цифра i-го разряда кодируется 4-мя двоичными цифрами. Восьмиричная СС (OCT) применяется реже. Первые 16 чисел представлены в таблице 1.

CC-tabl.gif (6167 bytes)

Двоичное число 10010011 = 1 * 2^7 + 1 * 2^4 + 1 * 2^1 + 1 * 2^0 = 147 (DEC). Для перевода числа из двоичной системы в 16 - ную, его необходимо разбить начиная справа на группы по 4 двоичных цифры и каждую группу представить 16 - ной цифрой из таблицы. Для обратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащие нули слева отб- расываются. Двоично-десятичное число можно записывать и десятичными цифрами, например 1997, и двоичными - 0001 1001 1001 0111. Каждое десятичное число можно представить в виде BCD, например 19(DEC) = 19(BCD), но их двоичные представления не равны: 19(DEC) = 10011(BIN), а 19(BCD) = 1 1001(BIN). Не каждая запись из нулей и единиц имеет двоично-десятичный эквивалент. Например, 11001001(BIN) = ?(BCD) = C9(HEX) = 201(DEC), т.к. десятичной цифры 12 = 1100 несуществует!

7.2 МАШИННОЕ ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ

Микропроцессоры обрабатывают упорядоченные двоичные наборы. Минимальной единицей информации является один бит.

bi-by-wo.gif (3994 bytes)

Далее следуют - тетрада (4 бита), байт ( byte 8 бит), двойное слово (DoubleWord 16 бит) или длинное (LongWord 16 бит) и учетверенное слова. Младший бит обычно занимает крайнюю правую позицию.

7.3 ЧИСЛА С ФИКСИРОВАННОЙ ТОЧКОЙ

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

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

  • 1.Прямой код. Изменение знака производится просто, путем инверсии бита знака. Пусть 00001001 = 9, тогда 10001001 = -9. Если при сложении двух чисел в этом коде знаки совпадают, то трудностей нет. Если знаки различаются необходимо найти наибольшее число, вычесть из него меньшее, а результату присвоить знак наибольшего слагаемого.
  • 2.Обратный код, инверсный или дополнительный "до 1". Изменение знака производится просто - инверсией всех бит: 00001001 = 9, а 11110110 = -9. Сложение также выполняется просто, т.к. знаковые биты можно складывать. При переносе единицы из левого (старшего) бита, она должна складываться с правым (младшим). Например: 7 + (-5) = 2.

   00000111 = 7
   11111010 =-5 (инверсия 00000101 = 5)
 1 00000001
          1
   00000010 = 2

Сложение в обратном коде происходит быстрее, т.к. не требуется принятие решения, как в предыдущем случае. Однако суммирование бита переноса требует дополнительных действий. Другим недостатком этого кода является представление нуля двумя способами, т.к. инверсия 0...00 равна 1. ..11 и сумма двух разных по знаку, но равных по значению чисел дает 1...11.Например: (00001001 = 9) + (11110110 = -9) = 11111111. Кстати, из этого примера понятно почему код называется дополнительным "до 1". Этих недостатков лишен ---

  • 3.Дополнительный или дополнительный "до 2" код. Число с противоположным знаком находится инверсией исходного и добавлением к результату единицы. Например, найти код числа -9.

   00001001 = 9                 11110111 =-9
   11110110 - инверсия          00001000 - инверсия
          1                            1
   11110111 =-9                 00001001 = 9

Проблемы двух нулей нет. +0 = 00000000, -0 = 11111111 + 1 = 00000000 (перенос из старшего бита не учитывается).Сложение производится по обычным для неотрицательных чисел правилам.

   00001001 = 9
   11110111 =-9
 1 00000000

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

7.4 ДИАПАЗОН ЦЕЛЫХ ЧИСЕЛ С ФИКСИРОВАННОЙ ТОЧКОЙ

Беззнаковые числа: 0 <= D <= 2^n - 1. n - число разрядов
   Байт: 0     -   255   (DEC)  Слово: 0     - 65535
         00..0 - 11..1   (BIN)         00..0 - 11..1
         0     -    FF   (HEX)         0     - FFFF

Числа со знаком:-2^(n-1) <= D <= +2^(n-1)-1. n - число
   разрядов.
   Байт: -128  -  +127   (DEC)  Слово: -32768-+32767
         10..0 - 01..1   (BIN)         10..0 - 01..1
         80    -    7F   (HEX)         8000  - 7FFF

7.5 ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ (ВЕЩЕСТВЕННЫЕ)

Вещественные числа хранятся и используются в ЭВМ в показательной форме, т.е. в виде двух составляющих: мантиссы и порядка. Различия в способах такого представления чисел заключаются в количестве байтов отводимых под порядок и мантиссу и небольших отличиях в форме их хранения. Например в четырехбайтовом формате под мантиссу отводится 3 байта и один байт для хранения порядка (КВ - короткий вещественный формат).

D = ±M * 2^(E-127)

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

float-f.gif (2211 bytes)

в различных ЭВМ может быть разной. D - десятичный эквивалент числа , M - нормализованная мантисса, Е - смещенный порядок, SM - бит знака мантиссы.

7.6 ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННЫХ ЧИСЕЛ

У нормализованной мантиссы первая значащая цифра (единица) мысленно находится слева от запятой, а справа располагаются 23 разряда - 1,xx..xx. Поэтому Mmax = 1,111..11 = 1 +1/2 +1/4+ 1/8 +...= 2, а Mmin= 1,000..00 = 1 для положительных чисел (SM=0) и -1 и -2 для отрицательных, (SM=1). Порядок числа Emax = 11111110 = 254, а Emin = 00000001 = 1. Теперь нетрудно определить диапазон представления положительных чисел от +Dmax = Mmax * 2^(254-127) = 3,4 * 10^38 до +Dmin = Mmin * 2^(1-127) = 1,17 * 10^(-38). Точность определяется числом достоверных десятичных цифр. При 23 двоичных разрядах мантиссы 2^23 примерно равно 10^7, т.е. достоверными являются только 6-7 значащих десятичных знаков, а не 38. Необходимо отметить, что значения порядка 11111111 и 00000000 по международному стандарту IEEE 754 и 854 предназначены для кодирования денормализованных чисел, отрицательной и положительной бесконечностей, неопределенности и, так называемых Не-чисел.

7.7 ДВОИЧНО-ДЕСЯТИЧНЫЙ КОД

Двоично-десятичный код (ДДК) или Binary Coded Decimal (BCD) может быть упакованным, когда в одном байте хранятся две десятичные цифры, либо неупакованным - по одной цифре в байте.Упакованное число 1996 представляется в виде двух байтов: 0001 1001 и 1001 0110. Для знака числа отводится дополнительный байт, например в формате (ДД) девять байтов отводится для размещения 18-ти цифр, а в старшем бите десятого байта находится знак числа.

7.8 БУКВЕННО-ЦИФРОВОЙ КОД

Для вывода информации на устройства отображения, например дисплей или принтер, а также для ввода или передачи данных используются буквенно-цифровые коды. Буквы, цифры, математические символы, знаки препинания, символы для рисования линий, управляющие символы и некоторые другие кодируются однобайтовыми числами. Существует несколько разновидностей таких кодов, например: ASCII, КОИ-7, КОИ-8, альтернативный код ГОСТ, основной код ГОСТ и другие. ASCII и 7-ми битовый код для обмена информацией (КОИ-7) отображают первые 128 символов и входят в состав остальных кодировок. Дополнительные символы и русский алфавит входят в восьмибитовые расширенные коды (КОИ-8, альтернативный и основной). Общее число символов в этих кодах равно 256. Таблица некоторых кодов приведена ниже. Следует отметить, что нулевой код (NULL) не кодирует цифру ноль и вообще никак не отображается.

 Символ ¦ Код(HEX)  Символ ¦ Код(HEX)  Символ ¦ Код(HEX)
--------+---------  -------+---------  -------+---------
"ничего"¦  00         "A"  ¦  41         "А"  ¦  81
  "0"   ¦  30         "B"  ¦  42         "Б"  ¦  82
  "1"   ¦  31         "C"  ¦  43         "В"  ¦  83
   ..   ¦  ..          ..  ¦  ..          ..  ¦  ..
  "9"   ¦  39         "Z"  ¦  5A         "Я"  ¦  9F
  ":"   ¦  3A         "["  ¦  5B         "а"  ¦  A0
\_________ASCII кодировка___________/
\_______________альтернативная кодировка_______________/

В Internet для русского языка используется кодировка КОИ-8. В настоящее время разработан и используется 16-ти битовый Unicode с 65536 различными симвоволами.

7.9 ВОСЬМИСЕГМЕНТНЫЙ КОД

Служит для отображения образа BCD или HEX цифры высвечиваемой на индикаторе в виде набора 0 и 1. Может быть принято следующее соответствие между битами и сегментами:

7seg.gif (2463 bytes)

Внизу приведен битовый набор для высвечивания цифры 4. Единицы обычно соответствуют светящимся сегментам.

7.10 НЕОДНОЗНАЧНОСТЬ ПРЕДСТАВЛЕНИЯ ДВОИЧНЫХ НАБОРОВ

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

   1) двоичное число = 10000110, имеющее
     а) шестнадцатиричный эквивалент = 86(HEX),
     б) восьмиричный эквивалент = 206(OCT),
     в) десятичный эквивалент числа без знака = 134(DEC),
   2) дополнительный код отрицательного числа =-122(DEC),
   3) двоично-десятичное упакованное число = 86(BCD),
   4) альтернативный код буквы "Ж",
   4') код КОИ-8 символа "¦",
   5) восьмисегментный код цифры "1.",
   6) часть вещественного числа,
   7) реализация множества,включающего 3 элемента из 8-ми,
   8) часть адреса ячейки памяти или внешнего устройства,
   9) код операции  и т.д.

Поэтому ответственность за интерпретацию двоичных наборов возлагается на программиста. Например, попытка сложить ASCII коды "1" + "2" не даст в сумме код "3", а даст 31(HEX) + 32(HEX) = 63(HEX), что соответствует коду латинской буквы "c".


8. МИКРОПРОЦЕССОР 8086(88)

8.1 СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРА

Огромное количество микропроцессоров (МП) не позволяет рассмотреть их особенности, поэтому выбор пал на родоначальника семейства 80x86 : МП К1810ВМ86/88 (8086/8088). Такой выбор оправдан, во-первых преобладающим парком ЭВМ с этим МП, во-вторых тем, что все МП этого семейства при включении начинают работу в реальном режиме МП 8086, и в-третьих - программной совместимостью их ассемблеров снизу вверх. На рис 1. приведена структурная схема МП8086 и внешний вид типового микропроцессора.

cpu_.gif (13387 bytes)

cpu8086.gif (6093 bytes)

Устройство управления декодирует байты программы и управляет работой операционного устройства и шинного интерфейса. Операционное устройство МП состоит из 4-х шестнадцатиразрядных регистров общего назначения: РОН (AX,BX,CX,DX), из 4-х регистров указателей (адресных регистров SP,BP,SI, DI) и арифметико-логического устройства (АЛУ) с регистром признаков операций (флагов F).

РОН служат для хранения промежуточных результатов операций, т.е. операндов. Помимо общих, каждый из этих регистров имеет и некоторые специальные функции, о которых будет сказано далее. Каждый РОН может раcсматриваться, как состоящий из двух независимых 8-ми разрядных регистров AH, AL, BH, BL, CH, CL и DH, DL.

Адресные регистры хранят 16-ти битовые указатели (адреса) на области памяти. В SP (StackPointer) находится текущий адрес "вершины стека" - специально организованной области памяти, которая будет описана далее. Регистр BP(Base Pointer) хранит любой базовый адрес в области стека. Два регистра SI и DI (Source и Destination Index) адресуют области памяти, называемые источником и приемником данных.

Шинный интерфейс, на рис.1 его узлы отмечены двойной чертой, выполняет операции обмена между МП и памятью или внешними устройствами. В сегментных регистрах CS,SS,DS,ES хранятся указатели на 64-х килобайтные области памяти называемые сегментами. Значения этих указателей могут перекрываться. Адрес байта в ячейке памяти получается суммированием содержимого одного из сегментных регистров и одного из регистров (SP,SI,DI,IP). Например адрес текущего байта программы, извлекаемого из памяти определяется суммой адресов, хранящихся в регистре кодового сегмента (CS) и указателе команд (IP). В регистре IP хранится 16-битовый адрес байта в кодовом сегменте к которому микропроцессор дожен обратиться. Подробнее об этом будет сказано далее. Связь с внешними устройствами осуществляется через специальные тристабильные схемы с повышенной нагрузочной способностью и называемые буферами.

Текущий байт программы направляется в очередь команд: шесть однобайтовых регистров расположенных конвейером (по принципу "первым вошел - первым вышел" или FIFO ). Конвейер позволяет одновременно выполнять команду из очереди и загружать следующую, повышая производительность МП. Буферные тристабильные элементы увеличивают мощность сигналов до стандартных значений ТТЛ.

8.2 РЕГИСТР ФЛАГОВ

По результатам операций АЛУ устанавливает либо сбрасывает отдельные биты в регистре флагов F.

cpu2fl.gif (1829 bytes)

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

  • ZF - флаг/признак нулевого результата (Zero), устанавливается в 1, если получен нулевой результат, иначе (ZF)=0.
  • CF - флаг переноса (Carry) устанавливается, если в результате выполнения операции из старшего бита переносится или занимается 1 при сложении или вычитании, иначе (CF)=0. На CF влияют также команды сдвига и умножения.
  • SF - флаг знака результата (Sign) равен единице, если результат отрицательный, т.е. он дублирует старший знаковый бит результата.
  • PF - флаг четности (Parity). (PF)=1, если сумма по модулю два всех битов результата равна нулю (число единичных битов - четное).
  • AF - флаг дополнительного переноса (Auxiliary) устанавливается, если есть перенос из старшего бита младшей тетрады (бит D3) в младший бит старшей тетрады (бит D4). Используется в операциях над упакованными BCD числами.
  • OF - флаг переполнения (Overflow) устанавливается, когда результат операции превысит одно- или двухбайтовый диапазон чисел со ЗНАКОМ, а также в некоторых других случаях. Другое определение: (OF)=1, если перенос/заем в старший бит результата не равен переносу/заему из старшего бита.

Рассмотрим в качестве примера сложение двух однобайтовых чисел: 125 + 4 = 129 выходит за пределы -128.. ..+127 чисел со знаком (для беззнаковых чисел 129 - корректный результат).

   0 1 1 1 1 1 0 1 = +125
   0 0 0 0 0 1 0 0 = +4
   1 0 0 0 0 0 0 1 = +129 > +128 (или -127 ???)
  / / :
 0 1  :

Перенос в бит D7 равен 1, а из бита D7 = 0, в результате сложения чисел (OF) = 1, (CF) = 0, (ZF) = 0, (SF) = 1, (PF) = 0, (AF) = 1. Остальные три флага будут рассмотрены далее. Содержимое регистра признаков называется также словом состояния процессора(программы) и обозначается PSW.

8.3 ОРГАНИЗАЦИЯ ПАМЯТИ И ВЫЧИСЛЕНИЕ АДРЕСА

МП 8086 имеет 20-ти разрядную шину адреса ША, позволяющую обращаться к 2^20 или примерно к одному миллиону ячеек памяти. 16-ти битовая шина данных ШД может пересылть информацию байтами или словами. Память обычно организована в виде линейного одномерного массива байтов, причем два соседних байта могут рассматриваться как слово. Все мегабайтное пространство памяти условно делится на 16 сегментов объемом по 64Kb. Микропроцессору доступны в каждый момент четыре - кодовый сегмент, где хранится программа, стековый сегмент, сегмент данных программы и дополнительный сегмент данных. Начальные адреса этих сегментов хранятся в регистрах CS,SS,DS и ES. Так как эти регистры 16-ти битовые, а все адресное пространство 20-ти битовое, то МП начальный сегментный адрес в 20-ти битовом сумматоре сдвигает на четыре бита влево (эквивалентно умножению на 16) и складывает с содержимым одного из регистров (IP,SP,DI,SI).

Полученное число называется физическим адресом. Например, извлекая из памяти очередной байт кода программы МП формирует физический адрес по формуле: Физический адрес = (IP) + (CS) * 16, где (IP) - смещение, эффективный или исполнительный адрес, (CS) - сегментный адрес, а (CS) * 16 - называется начальным сегментным адресом. Организация памяти приведена на рис.2.

cpu3zu.gif (3421 bytes)

8.4 ПРОЦЕССОРНЫЙ БЛОК (ПБ )

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

cpu3pb.gif (9221 bytes)

Конденсатор C до включения питания разряжен. В начальный момент времени t0 подается напряжение питания на выводы (+). Начиная с этого момента времени на входе ~RES действует логический 0 до момента t1, когда напряжение на конденсаторе C достигнет порогового значения логической 1. В течение интервала t0..t1 выходной сигнал RESET имеет активный уровень лог.1. Микропроцессор переводится в исходное состояние. При этом в регистр CS записывается код FFFFh, а в регистр IP код 0000h.

Когда C зарядится и сигнал ~RES станет "1", на входе RESET микропроцессора сигнал снизится до пассивного уровня. Начинается основной цикл работы. МП извлекает из ячейки памяти с адресом FFFF:0000 первый байт команды, который чаще всего является кодом безусловного перехода к тому месту в памяти, где находится начало программы. В процессе работы можно перезапустить МП с помощью кнопки SW. Конденсатор C разряжается до нуля и процесс запуска повторяется. МП может работать в двух режимах в максимальном и минимальном. Минимальный режим ограничивает адресуемый объем памяти до 64Kb. В большинстве приложений в приборостроении такого объема достаточно, поэтому сигнал ~MX/MN = 1. Формирователи сигналов ШУ,ША и ШД (шины управления адреса и данных), выполнены на элементах ИЛИ, регистрах и шинных формирователях и служат также для увеличения мощности этих сигналов.

Генератор G формирует последовательность импульсов CLK, называемых тактовыми. Выполнение команды производится в течение интервалов времени, называемых циклами. Если в цикле есть обращение к памяти или к внешним устройствам, то он называется циклом шины. Цикл шины содержит 4 обязательных такта T1 ... T4.

cpu-clk.gif (2153 bytes)

В такте T1 микропроцессор передает по совмещенной шине адрес/данные адрес ячейки памяти или внешнего устройства (ВУ), подключенного к шинам ШУ,ША и ШД. В такте T2 производится выбор направления обмена данными с памятью или ВУ, а в тактах T3,T4 - передача данных. Если ЗУ (запоминающее устройство) или ВУ медленные, то на вход готовности RDY посылается сигнал RDY = 0, по которому МП вставляет циклы ожидания TW, до тех пор, пока не будет установлена готовность ВУ или ЗУ (RDY = 1). Если в цикле нет обращения к шине, то МП формирует холостые циклы TI.

Для разделения сигналов совмещенной шины адрес/данные ШАД(AD15..0) их необходимо "демультиплексировать" с помощью регистра защелки адреса RG и двунаправленного буфера BD. При обращении к памяти (в том числе при выборке команды) микропроцессор передает по ШАД адрес ячейки памяти. Этот адрес записывается в D-триггеры регистра RG сигналом ALE генерируемым микрпроцессором в этот момент и поступающим на синхровходы D-триггеров. Адрес в регистре сохраняется на время последующей передачи данных. Следом по ШАД передаются, либо данные от микропроцессора к ВУ или ЗУ, либо в обратном направлении. МП должен, во-первых, обеспечить правильное направление передачи буфера BD и , во-вторых, открыть (разрешить) тристабильные элементы буфера для передачи данных. Первую задачу решает сигнал МП ~DT/R (~DT/R=0 передача данных от МП - Transmit, ~DT/R=1 прием данных МП - Receive).

Вторая задача решается генерацией МП сигнала ~DEN (Data Enable). Чтение или ввод данных в один из регистров МП осуществляется с помощью инверсных сигналов шины управления (ШУ): ~MEMR (чтение из памяти),~IOR (ввод из ВУ), называемыми еще стробами чтения. Запись или вывод данных из МП по шине данных сопровождается стробами записи ~MEMW (запись в память (ЗУ)), или ~IOW (вывод во внешнее устройство (ВУ)). Четверка стробов, которые являются основными сигналами шины управления, формируется из сигналов чтения, записи (~RD,~WR) и сигнала M/~IO, определяющего к чему производится обращение : к ЗУ или ВУ. Формирование этих сигналов производится с помощью простой комбинационной схемы, содержащей 4 элемента ИЛИ и один инвертор.

8.5 МИКРОПРОЦЕССОРНАЯ СИСТЕМА С ТРЕМЯ ШИНАМИ

Работой всех устройств подключаемых к процессорному блоку управляет дешифратор DC, к входам которого подводятся линии шины адреса. Обычно дешифраторов бывает несколько. Если используется не все адресное пространство для памяти и ВУ, то на дешифратор заводятся не все линии адреса, чаще всего несколько старших разрядов ША. Например, если на DC завести 4 линии A19..A16, то все адресное пространство будет разбито на неперекрывающиеся блоки по 2^20 / 2^4 = 64Кб, принадлежащие каждому из 16-ти (2^4 = 16) устройств ЗУ или ВУ, подключенных к шинам (на рис.4 показаны 7 устройств). Часть из них могут использовать все отводимое им адресное пространство, например ПЗУ и ОЗУ, другие только несколько адресов.

cpu4bus.gif (10483 bytes)

Mcb520.gif (33674 bytes)

Типовая МПС, показанная на схеме содержит:

микросхему программируемого периферийного интерфейса ППИ (PPI или IOP), к которой через три 8-битовых независимых канала PA,PB и PC можно подключать периферийные устройства, например принтер, клавиатуру, 8-ми сегментный дисплей или ЦАП и АЦП. Через ППИ может производиться обмен данными с другими МПС или ЭВМ.

Ввод с клавиатуры и вывод на дисплей могут производиться специальными микросхемами.

Связь с удаленными устройствами или абонентами сетей может осуществляться с помощью универсального асинхронного последовательного приемо-передатчика УАПП-UART (программируемый связной интерфейс ПСИ-PCI или IOS). К выводам RxD - приемник и TxD - передатчик через линию связи подключаются передатчик и приемник другого абонента или устройства. Если связь производится через модем, то доступны любые сети.

Для формирования точных, различных по частоте и длительности сигналов, в т.ч. и звукового диапазона используется программируемый интервальный таймер ПИТ-PIT, имеющий три независимых 16-ти разрядных двоичных счетчика. Задержка, длительность или частота выходного сигнала каждого счетчика кратна 3..65535 периодам входного сигнала.

Если в системе используется режим прерывания выполнения основной программы внешними устройствами, требующими безотлагательного вмешательства микропроцессора, то может применяться программируемый контроллер прерываний ПКП - PIC (устройство собирающее заявки на обслуживание от ВУ с входов IRi). Подробно прерывания будут рассмотрены ниже.

Обмен данными между МП и ЗУ или одним из ВУ возможен только при появлении на выходе дешифратора DC единственного сигнала ~CS = 0, поступающего на то устройство с которым будет производиться запись или чтение байта данных. Остальные (невыбранные) устройства будут в пассивном состоянии, т.к. их сигналы ~CS = 1. Байт информации на ШД считывается ВУ, ЗУ или МП в строго ограниченном интервале времени во время действия одного из управляющих сигналов чтения/записи (~MEMR, ~MEMW) из памяти или в память, или во время действия одного из сигналов управления вводом/выводом (~IOR, ~IOW) в/из ВУ.

Быстрый обмен данными может производиться с помощью устройства прямого доступа к памяти ПДП (DMA).

8.6 СТЕК

Область памяти с упрощенной схемой адресации, к которой МП обращается по принципу "последним вошел - первым вышел" (LIFO). Байты программы в оперативной памяти располагаются последовательно по нарастающим адресам. Стек заполняется по последовательно убывающим адресам. Во избежание перекрытия этих двух областей памяти стек обычно располагается в старших адресах. Начальный адрес стека, называемый дном (bottom) записывается в регистр SP командой MOV SP,0fffeh. Вместо 0fffeh - адрес предпоследнего байта сегмента, может быть другое значение, но выравненное по двухбайтовым, т. е. четным адресам. Текущее значение содержимого SP называется, также адресом вершины стека (top). Если адрес вершины совпадает с адресом дна - стек считается пустым. Рассмотрим механизм помещения в стек и извлечения из него данных на примере команд PUSH AX и POP BX. Пусть начальное значение аккумулятора AX равно 874c.

cpu7stck.gif (4944 bytes)

Команда PUSH выполняется в четыре этапа:

  • Адрес в SP уменьшается на 1: (SP) <-- (SP) - 1.
  • По этому адресу помещается старший байт 87: ((SP)) <-- (AH).
  • Содержимое SP снова уменьшается на 1: (SP) <-- (SP) - 1.
  • По полученному адресу загружается младший байт 4c: ((SP)) <-- (AL).

Действие команды POP аналогично описанному процессу, но в происходит в обратном порядке:

  • (BL) <- ((SP)),
  • (SP) <- (SP) + 1,
  • (BH) <- ((SP)),
  • (SP) <- (SP) + 1.

Байты в стек помещаются по правилу "старший байт по старшему адресу" . На рис.7 показан пустой стек до выполнения команды PUSH AX и после ее выполнения, а на рис.8 после выполнения команды POP BX.

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

1) сохранения и извлечения адреса возврата из подпрограмм командами ассемблера CALL и RET (IRET),

2) хранения локальных переменных,

3) передачи фактических параметров подпрограммам (трансляторами с языков высокого уровня),

4) временного хранения содержимого регистров фоновой программы при ее прерывании.

8.7 СПОСОБЫ ВВОДА-ВЫВОДА

Обмен данными между ЭВМ и ВУ или ЗУ называется вводом-выводом (ВВ). Существует четыре основных способа ВВ.

  • Программный ВВ
  • ВВ по прерываниям
  • Прямой доступ к памяти (ПДП) или DMA
  • Транзакции (MCS-96)

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

8.7.1 ПРОГРАММНЫЙ ВВОД-ВЫВОД

Для внешних устрйств выделяеся адресное пространство, либо не входящее в состав ЗУ, либо являющееся его частью. Следовательно программный ВВ может быть двух типов:

  • с помощью команд ассемблера ввод (IN) и вывод (OUT)
  • с использованием всех команд пересылки ассемблера (MOV, LODSB,..).

В пределах 64K блока карта распределения памяти для первого случая показана на рис.5 слева.

cpu5io.gif (3175 bytes)

В пределах интервала 0000 ...XXXX адреса ВУ и ЗУ пересекаются. Поэтому для однозначного обращения к ячейкам памяти или ВУ в процессорном блоке формируются управляющие пересылкой стробирующие импульсы - ~IOR,~IOW для ввода или вывода данных во внешнее устройство и ~MEMR,~MEMW для чтения или записи в память.Емкость ЗУ для размещения программ и данных не уменьшается.

Карта распределения памяти для второго случая показана на рис.5 справа. Под внешние устройства выделяется часть адресного пространства ЗУ. Емкость ЗУ уменьшается на количество адресов отводимых для ВУ. Второй способ позволяет адресоваться к ВУ с помощью всех команд оперирующих с памятью. Основное достоинство программного ВВ в простоте. Но при выполнении ввода, например с клавиатуры, МП затрачивает до 99,99..% времени на ожидание, не выполняя при этом другой полезной работы. Избавиться от этого недостатка позволяет ВВ по прерываниям.

8.7.2 ВВОД-ВЫВОД ПО ПРЕРЫВАНИЯЮ

В общем случае прерывания могут вызываться

  • внешнними устройствами (внешние прерывания),
  • командами прерываний (программные прерывания)
  • автоматически самим МП (внутренние прерывания), например при попытке деления на 0.

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

1. ВУ самостоятельно, либо через контроллер прерываний посылает сигнал прерывания INT(R) на одноименный вход МП;

2. МП завершает выполнение текущей команды и,если преывания разрешены командой ассемблера STI(EI для 8085), то подтверждает разрешение сигналом ШУ -INTA;

3. В МП по ШД передается тип(номер) прерывания - N;

4. Содержимое PSW, а также CS,IP (адрес возврата), скорректированное с учетом сброса очереди помещается в стек;

5. Сбрасываются флаги IF (флаг разрешения прерываний) и TF (флаг трассировки), причем т.к. (IF) = 0 дальнейшие прерывания запрещаются;

6. В IP загружается содержимое двух байтов с начальным адресом 4*N, а в CS - содержимое следующих двух байтов . Эти 4 байта называются вектором (указателем) прерывания.

7. Начинает выполняться подпрограмма - обработчик прерывания.

   INT_SUBR:
        STI
        PUSH AX
        ....;     здесь
        ....;     команды
        MOV AL,5; обработчика
    ....;	  прерывания
    ....
        POP AX
        IRET

Если допускаются вложенные прерывания, то вначале помещается команда STI- разрешение преываний, запрещенных в п.5. Инструкции push и pop сохраняют и восстанавливают содержимое регистров фоновой задачи, если эти же регистры используются и обработчиком прерывания (в примере регистр AX).

8. Команда IRET извлекает из стека адрес возврата - IP,CS и содержимое PSW;

9. МП прдолжает работу с адреса возврата. При выполнении программных прерываний по команде INT N действия выполняются с п.3. N находится в пределах 0 <= N <= 255, поэтому четырехбайтовые вектора прерываний занимают первые 1024 байта памяти.

8.7.3 ПРЯМОЙ ДОСТУП К ПАМЯТИ (ПДП) И ТРАНЗАКЦИИ

Обмен большим количеством байтов, между ВУ (например дисковым накопителем) и памятью с помощью предыдущих двух методов малоэффективен, т.к. обмен происходит по цепочке: ВУ - аккумулятор (AX или AL) - память или наоборот. В режиме ПДП при поступлении запроса от ВУ на вход HOLD, МП разрешает обмен выходным сигналом HLDA. Микропроцессор на время обмена отключается от ШУ,ШД и ША переводя их в третье состояние по входам ~OE буферных элементов сигналом ~BUSEN = 1 .Специальная микросхема (контроллер ПДП) использует освободившиеся шины для высокоскоростного прямого обмена ВУ - память. Скорость обмена достигает многих мегабит/сек.

cpu6io.gif (2864 bytes)

На рис.6 показан процесс выполнения основной (фоновой) программы - интервалы времени (начало..t1, t2..конец) и выполнение процедуры передачи массива данных, на рисунке этот отрезок времени обозначен двойной линией. На диаграмме (А) ЭВМ задействована только для передачи (отрезок t1..t2), в остальное время компьютер бездействует. Во втором варианте - диаграмма (Б), код программы передачи жестко встроен в фоновую задачу. В третьем варианте (В) передача массива оформлена в виде подпрограммы прерывания, причем если запроса на прерывание не поступит,то суммарное время на выполнение фоновой программы уменьшится на t2-t1. При использовании режима ПДП сохраняются преимущества метода прерывания, время на передачу сокращается - диаграмма (Г), но фоновая задача по прежнему прерывается. В последнем случае передача данных производится почти без нарушения хода программы параллельно во времени (Д). Транзакции реализованы в некоторых семействах однокристальных микроЭВМ например в MCS-96.

ЗАДАЧИ И УПРАЖНЕНИЯ

Одна подпрограмма вызывает другую.Укажите короткий адрес возврата из вложенной прoцедуры.

st1.gif (2723 bytes)

Пояснение : Вложенная подпрограмма это подпрограмма, которая вызывается из другой подпрограммы. Вызов подпрограммы сопровождается помещением в стек адреса возврата. Стек заполняется начиная с дна. Короткий адрес - двухбайтовый адрес в пределах одного кодового сегмента. Байты в стек помещаются по правилу "старший байт по старшему адресу". Теперь нетрудно ответить на предложенный вопрос: 4dba.

В тексте программы следуют подряд команды: PUSH AX; PUSH CX; POP DX; POP BX. Чему будет равно содержимое регистра BH? Рисунок стека соответствует промежуточному состоянию (до выполнения команд POP).

st1.gif (2723 bytes)

Пояснение : В стек дважды что-то помещается и дважды что-то извлекается, причем последние два байта помещаются в регистр BX. Перефразируя правило "последним вошел - первым вышел" в "последним вышел - первым вошел", придем к выводу, что содержимое AX засылается в регистр BX. Команда PUSH AX помещает два байта в стек по правилу "старшая половина двухбайтового регистра - по старшему адресу". Ответ: c9

В тексте программы следуют подряд команды: POP AX; POP DX. Чему будет равно содержимое регистра DL?

st.gif (2169 bytes)

Ответ: 4c

На временных диаграммах внизу приведены управляющие сигналы на выходах микропроцессора (без сохpанения точных вpеменных пpопоpций). Что осуществляется в момент времени отмеченный знаком + ? Чтение данных из памяти, запись данных в память вывод данных в порт, ввод данных из порта, ничего из указанного выше.

w1.gif (1863 bytes)

Пояснения : Если ~DEN=0 (разрешение данных) возможно 4 случая (для приведенных диаграмм): 1) M/~IO = 0, ~RD = 0 активны сигналы ввод/вывод (~IO) и чтение-ввод (~RD). 2) M/~IO = 0, ~WR = 0 активны сигналы ввод/вывод (~IO) и запись-вывод(~WR). 3) M/~IO = 1, ~RD = 0 активны сигналы обращения к памяти(M) и чтение-ввод(~RD). 4) M/~IO = 1, ~WR = 0 активны сигналы обращения к памяти(M) и запись-вывод(~WR).

Ответ: Вывод данных в порт.


3.3 СЧЕТЧИКИ

Счетчик (Сч) - последовательностная схема, преобразующая поступающие на вход импульсы в код Q, пропорциональный их количеству. Большинство счетчиков снабжено выходом переноса CR. Для двоичного и двоично-десятичного кода, как впрочем и для других систем счисления, справедливы следующие соотношения:

Q = (D + SUM(C)) mod M

CR = (D + SUM(C)) \ M

В этих формулах: Q - код на выходах счетчика, D - начальное значение записанное в счетчик, SUM(C) - сумма импульсов поступивших на вход в процессе счета и M - модуль счета или число различных состояний счетчика (число импульсов поступивших на счетный вход, после которых счетчик возвращается в исходное состояние), CR - число импульсов переноса, возникающих при возврате счетчика в исходное состояние на одноименном выходе, mod - операция нахождения остатка при делении на M, \ - операция целочисленного деления . Если D = 0 и SUM(C) < M, то очевидно, что Q = SUM(C) и CR = 0. C приходом каждого M-ного импульса счетчик возвращается в исходное состояние. Пример: пусть D =17, SUM(C) = 9, M = 8, тогда Q = 26 mod 8 = 2, а CR = 3.

Счетчики выполняются на триггерах со счетным входом (T-триггерах). По способу счета Сч могут быть суммирующие, вычитающие и реверсивные, т.е. изменяющие направление счета. По способу переключения триггеров делятся на асинхронные и синхронные. В асинхронных счетчиках триггеры переключаются последовательно (асинхронно) от разряда к разряду, а в синхронных одновременно. Один Т-триггер обеспечивает модуль счета М = 2, а n триггеров дадут М = 2^n. При суммировании импульсов необходимо формировать перенос из i-го в (i+1)-ый разряд по следующему правилу.

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

        Q  i+1 i..0             Q  i+1 i..0
            0  9999                 0  1111   1--->|
    DEC    +      1        BIN     +      1        |  отрицательный
           --------                --------        |  перепад
            1  0000                 1  0000        |--->0

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

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

3.3.1 АСИНХРОННЫЙ СЧЕТЧИК C ПОСЛЕДОВАТЕЛЬНЫМ ПЕРЕНОСОМ

В качестве примера возьмем четырехразрядный счетчик.Четыре двоичных разряда счетчика обеспечивают М = 16 состояний. Ниже приведена схема и условное обозначение такого счетчика, выполненная на JK-триггерах с инверсными динамическими входами

i-ct-1.gif (5086 bytes)

По правилу 2 сигналы переносов должны сниматься с прямых выходов триггеров, которые переключаются последовательно друг за другом, т.е. асинхронно. Триггеры поставлены в режим счета (J = K = 1). Счетчик дополнен схемой формирования ускоренного переноса CR (Carry), выход которой может быть подключен к счетному входу C следующего такого же счетчика. Входы ~R всех триггеров объединены, а на входы ~S подана "лог.1", что позволяет "сбрасывать" счетчик сигналом ~R = 0. Счетный вход суммирующего счетчика обозначается "+1". Временные диаграммы схемы, без учета задержки сигнала даны на рисунке.

i-ct-2.gif (3770 bytes)

Анализ временных диаграмм позволяет сделать ряд выводов:

1) После n-го по счету входного импульса код на выходах Q = Q3Q2Q1Q0 = n, например после 5-го, код Q = 0101 = 5, а после 11-го - Q = 1011 = 11(DEC), т.е. схема действительно является счетчиком.

2) С приходом активного фронта 16-го импульса все триггеры "сбрасываются" и далее процесс повторяется, т.е. модуль счета М=16.

3) Схема также является делителем частоты входных импульсов на 2 в степени (i+1), где i - номер триггера, с которого снимается выходной сигнал.

4) Если снимать выходной код с инверсных выходов, то нетрудно заметить,что начальное значение Q = Q0Q1Q2Q3 = 1111 = 15, т.е. максимальному числу для четырех разрядов и далее, с приходом очередного импульса, код на выходах уменьшается на 1. В этом случае счетчик называют вычитающим. Такого же результата можно добиться, если снимать переносы с противоположных выходов триггеров, а код по прежнему с прямых. Убедиться в этом нетрудно, самостоятельно построив временные диаграммы. Счетный вход вычитающего счетчика обозначается "-1".

5) Важно также отметить, что задний фронт импульса переноса совпадает с моментом перехода всех триггеров из 1 в 0, для суммирующего счетчика и с моментом перехода из 0 в 1 - для вычитающего.

Скорость счета или максимальная частота входных импульсов определяется задержкой сигнала от момента прихода активного фронта счетного импульса до появления нового кода на выходе последнего триггера: tзд.р.счетчика = n * tзд.р.триггера, где n-число триггеров. Тогда Fмакс.счета < 1/tзд.р.счетчика. На рис.56. показан процесс последовательного переключения отдельных триггеров счетчика с приходом восьмого импульса.

i-ct-3.gif (2101 bytes)

Выходной код в течение интервала tзд.р.сч. принимает недопустимые значения (6,4,0). Скорость деления частоты входного сигнала не зависит от количества триггеров и определяется максимальной частотой переключения входного триггера, т.е. Fmax.деления < 1/(tзд.р.триггера + tуст) и больше Fмакс.счета.

3.3.2 СИНХРОННЫЙ СЧЕТЧИК С ПАРАЛЛЕЛЬНЫМ ПЕРЕНОСОМ

В синхронном счетчике импульсы поступают на тактовые входы всех триггеров одновременно. Ниже на рисунке ниже приведен трехразрядный счетчик с модулем счета M = 8. Справа приведено условное обозначение промышленно выпускаемого счетчика, дополненного входами Di для параллельной синхронной загрузки начального кода перепадом сигнала на входе C(+1) при ~L = 0, а также входом сброса ~R.

i-ct-4.gif (6391 bytes)

Перенос из i-го разряда в (i+1)-ый производится по формуле CRi = Qi*..*Q1*Q0*(CE*PE) с помощью элементов "И". Входы CE (разрешение счета) и PE (разрешение переноса) на данном этапе рассмотрения могут быть объединены вместе (CE = PE = 1). Входы J и K триггеров соединены, поэтому возможно только два режима их работы - память (J = K= 0) и счет (J = K = 1). Триггер "i" изменит свое состояние только тогда, когда CR(i-1) = J = K = 1, т.е. при единичных значениях выходов всех предыдущих триггеров, что отвечает правилу 1. Во всех остальных случаях CR(i-1) = J = K = 0 и значение Qi не изменится. Быстродействие синхронного счетчика значительно выше, из-за того, что триггеры переключаются одновременно и сигнал CRi появится на JK входах через интервал tзд.р.счетч. = tзд.р.триггера + tзд.р.элемента"И", который не зависит от числа триггеров. Частота счета Fmax < 1/(tзд.р.сч. + tуст). Максимальная частота деления Fmax.деления = Fmax.счета.

3.3.3 РЕВЕРСИВНЫЙ СЧЕТЧИК

Схема двухразрядного счетчика с общим входом сброса R, выходом переноса CR при суммировании и выходом переноса BR при вычитании приведена на рис. внизу.

i-ct-5.gif (4603 bytes)

Предположим, что начальное значение кода равно 2 (Q1 = 1 и Q0 = 0). Рассмотрим режим суммирования, когда на входе "-1" - действует ноль, а на вход "+1" приходит импульс. Отрицательный фронт входного импульса не пройдет через верхний канал мультиплексора "2 в 1", выполненного на элементе И-ИЛИ-НЕ, этому препятствует старое значение Q0=0. На входах нижнего канала действует конъюнкция единицы (~Q0 = 1) и нуля. Поэтому сигнал на выходе мультиплексора равен нулю и триггер T1 сохраняет старое значение.Через время, равное задержке элемента ИЛИ отрицательный фронт поступит на счетный вход триггера T0, и еще через время задержки триггера на его выходах установится новое значение Q0 = 1 (~Q0 = 0). При этом верхний канал открывается для прохождения отрицательного фронта счетного импульса, но т.к. длительность фронта t1,0 значительно меньше суммарного времени задержки tзд = tзд.р.ИЛИ + tзд.р.триггера, на входах "+1" и "-1" к этому времени действуют нули и выходной сигнал мультиплексора по прежнему равен 0. Триггер T1 остается в прежнем состоянии. Новый код на выходах счетчика увеличился на 1 и стал равен Q1Q0 = 11 = 3, до следующего импульса.

Рассмотрим режим вычитания, когда на входе "+1" - действует ноль, а на вход "-1" приходит импульс. Отрицательный фронт входного импульса беспрепятственно пройдет через нижний канал мультиплексора, т.к. ~Q0 = 1 и переключит триггер T1. Спустя время tзд новый код появится и на выходах триггера T0, но отрицательный перепад c выхода ~Q0 не пройдет на счетный вход триггера T1, по причине того, что сигнал на входе "-1" к этому времени уже равен нулю. Старый код 10 на выходах счетчика сменился кодом 01, т.е. уменьшился на 1.

Примерно так выполнены счетчики типа 1533ИЕ6 и 1533ИЕ7, с дополнительным асинхронным входом ~L параллельной записи начального кода. Их обозначения приведены на рисунке.

i-ct-6.gif (3823 bytes)

В некоторых счетчиках предпочтительней иметь один тактовый вход и вход управления направлением счета. Для этого к входам "+1" и "-1" подключают демультиплексор "1 в 2". В этом случае, если управляющий сигнал U/~D = (Up/~Down) = 1, тактовые импульсы C поступают на вход суммирования, а если он равен нулю - на вход вычитания. Счетчик такого типа приведен на рисунке внизу.

i-ct-7.gif (2496 bytes)

3.3.4 КАСКАДНОЕ ВКЛЮЧЕНИЕ СЧЕТЧИКОВ

Рассмотрим последовательное включение n - счетчиков с различными модулями счета Mi. Возможна постановка двух задач.

В первой необходимо определить частоту сигнала на выходе переноса CRi каждого счетчика при частоте входного сигнала Fвх.

Во второй - какой код будет зафиксирован на выходах QQ каждого счетчика после подачи Nвх импульсов?

i-ct-8.gif (2475 bytes)

Для решения воспользуемся формулами счетчика.

Тогда в первой задаче на выход переноса первого счетчика пройдет CR1 = (D1 + Fвх) \ M1 - импульсов за единицу времени (1 сек). Раскрывая скобки и учитывая, что D < M, найдем CR1 = Fвх2 = Fвх \ M1. Аналогично найдем, что на выход переноса второго счетчика пройдет CR2 = Fвх3 = Fвх2 \ M2 = Fвх \ (M1* M2) импульсов. Окончательное решение даст CRn = Fвых = Fвх\(M1*M2*...*Mn).

Во второй задаче код на выходе 1-го счетчика QQ1 = (D1 + Nвх) mod M1, код на выходе второго счетчика QQ2 = (D2 + CR1) mod M2, и так далее до QQn = (Dn + CR(n-1)) mod Mn, причем величины CRi вычислены в первой задаче.

3.3.5 СЧЕТЧИК - ТАЙМЕР

Служит для формирования временных отрезков заданной длительности.Таймер может выполняться на вычитающих счетчиках или, в некоторых случаях, на суммирующих.Общим для этих схем является параллельная загрузка начального кода и остановка счета в момент переполнения счетчика. При этом интервал времени отсчитывается от активного фронта первого счетного импульса до заднего фронта сигнала переноса. Если требуется сформировать задержку в D секунд при tclk = 1сек., то начальный код N, загружаемый в вычитающий счетчик равен D. В суммирующий счетчик требуется записать N=M-1-D (число M-1 = 11..1). Как видно из диаграммы и в том, и в другом случае требуется D+1 импульсов, для перехода всех триггеров из одного состояния в другое и Tтайм = tclk * D, т.к. D - 0 = M - 1 - (M - 1 - D) = D.

i-ct-11.gif (4239 bytes)

3.3.6 ПРИМЕНЕНИЕ СЧЕТЧИКОВ В ИЗМЕРИТЕЛЬНОЙ ТЕХНИКЕ

На рисунке внизу последовательно включены 6 счетчиков с модулем 10 (двоично - десятичные). Информационные выходы Qi каждого каскада через преобразователь BCD кода подключены к семисегментному индикатору.

В целом устройство может решать три задачи: считать количество импульсов, измерять их частоту следования и длительность.

i-ct-9.gif (3792 bytes)

Перед любыми измерениями необходимо очистить счетчики, подав на вход R импульс сброса. 1) Для подсчета количества импульсов необходимо подать их на оба входа схемы И (или только на один, а на другой 1). Пусть на эти входы поступило N=1997 импульсов.Тогда на выходах младшего счетчика останется код QQ0 = 1997 mod 10 = 7. На выход переноса пройдет CR0 =1997 \ 10 = 199 импульсов, и далее QQ1 = (199 mod 10) = 9 и CR1 = 199 \ 10 = 19. В конце счета на выходах счетчиков будет зафиксирован BCD код = 0000 0000 0001 1001 1001 0111, а на индикаторах высветится число 001997. Внимание! У счетчиков на схемах младший разряд находится слева, а в числах - справа. В общем виде десятичный эквивалент BCD кода на выходах будет иметь вид: N = QQ(n-1) * 10^(n-1) + ... + QQ1 * 10^1 + QQ0 * 10^0. Из этого выражения следует, что N находится в диапазоне: 1 < = N <= 999999.

2) При измерении частоты входных импульсов, их необходимо подвести к входу "a", а на вход "b" подать импульс калиброванной длительности T равной 10^i (i =..-1,0,1,..), например T = 1сек, как на рисунке внизу.

i-ct-10.gif (1637 bytes)

Частота повторения импульсов на входе "a" равна по определению: F = 1/dt. Из диаграмм "b" и "c" можно найти период повторения dt = T / N, с погрешностью dt / T.Тогда F = N / T и при T = 1с частота F = N. Диапазон измерения находится в пределах: (1...(10^6)-1)Гц. Для измерения длительности импульса на вход "a" необходимо подать сигнал с частотой F = 10^i (i=2,3,..), например F =10^6[Гц]. Длительность импульса T = N * dt = N / F и диапазон ее измерения равен (1..999999)мксек.

3.3.7 ЗАДАЧИ И УПРАЖНЕНИЯ

На входы реверсивного счетчика импульсов подаются приведенные внизу послед вательности импульсов. Какая шестнадцатиричная цифра будет высвечена на семисегментном индикаторе в момент времени отмеченный знаком + ?

c1.gif (3328 bytes)

Пояснения : 1) Так как вход (R)eset имеет наивысший приоритет, то при ~R = 0 счетчик обнуляется, независимо от состояния остальных входов. 2) При U/~D = 0 (Down - вниз) счетчик работает на вычитание, а при U/~D = 1 (Up - вверх) - на сложение. 3) Счетчик имеет прямой динамический вход (срабатывает по положительному перепаду, об этом свидетельствует стрелка внутрь у входа C), поэтому необходимо подсчитать отдельно количество положительных перепадов для режимов суммирования (4) и вычитания (1) и получить ответ : цифра 3.

Какой десятичный код будет зафиксирован на выходах Q3Q2Q1Q0 счетчика при поступлении на его вход 4 импульсов и начальных значениях на выходах Q3Q2Q1Q0 = 1100 ?

cnt2.gif (1367 bytes)

Пояснения : 1) Находим десятичный (DEC) эквивалент двоичного кода 1100(BIN) = 12(DEC) . 2) Обращаем внимание, что счетчик вычитающий (вход C "-1"). 3) Очевидно, что ответом будет код = 8.

Два счетчика включены последовательно. Определить десятичный эквивалент выходного кода Q2Q1Q0 второго счетчика. Число импульсов, поступивших на вход C равно 94.

count8.gif (2623 bytes)

Пояснения : 1) Обращаем внимание, что оба счетчика - суммирующие и перед поступлением импульсов обнуляются импульсом R=1. 2) Число импульсов прошедших на выход переноса CR первого счетчика равно CR = (0 + SUM(C)) \ M = 94\4 = 3. 3)Выходной код второго счетчика равен остатку от деления Q = 3 mod 5 = 3.

На входы реверсивного счетчика импульсов подаются приведенные внизу последовательности импульсов. Какая шестнадцатиричная цифра (0..9AbCdEF) будет высвечена на семисегментном индикаторе в момент времени отмеченный знаком + ?Ниже приведены содержимое памяти и рисунок схемы.
АДРЕС: 0 1 2 3 4 5 6 7 8 ...
КОД : 07 39 4f 6f 7d 77 7c 06 07 ...

c-r1.gif (3834 bytes)

Пояснения : 1) Реверсивный счетчик c прямым динамическим входом С (-->). 2)Импульсом ~R=0 счетчик обнуляется 3)Подсчитайте число активных перепадов импульсов C для режима сложения (U/~D=1) и вычитания (U/~D=0). 4)Найдите результирующий код на адресных входах микросхемы памяти. 5)Найдите в памяти HEX код хранящийся по этому адресу.6)Распишите этот код в двоичном виде, например 06 = 00000110 (BIN) т.е. светиться будет цифра 1(сегменты C и B). сегменты = GFEDCBA.

Ответ: цифра A.


2. КОМБИНАЦИОННЫЕ СХЕМЫ

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

При описании многих цифровых устройств невозможно обойтись без упорядоченных двоичных наборов входных и выходных сигналов. Эти наборы удобно представлять в тех или иных системах счисления (СС).

2.1 НЕКОТОРЫЕ СИСТЕМЫ СЧИСЛЕНИЯ

В позиционных СС "вес" каждого разряда зависит от его позиции в числе. К числу непозиционных относится "римская" СС, например число - XVII.

Любое неотрицательное n-разрядное целое число C(n-1), C(n-2), ... ,C1,C0 в позиционной системе счисления может быть представлено в виде:

D = Cn-1*bn-1 + Cn-2*bn-2 + ... + C1*b1 + C0*b0 (15)

где D - десятичный эквивалент числа, Ci - значение i-го разряда, b - основание системы счисления, b в степени i - вес (весовой коэффициент) i-го разряда и n число разрядов целой части числа. В цифровой и вычислительной технике наиболее распространены двоичная (BIN), десятичная (DEC), шестнадцатиричная (HEX) и непозиционная двоично-десятичная (BCD) системы счисления. В BCD системе вес каждого разряда равен степени 10, как в десятичной системе, а каждая цифра i-го разряда кодируется 4-мя двоичными цифрами. Восьмиричная СС(OCT) применяется реже. В 16-ной системе счисления цифры от 0 до 9 совпадают с десятичными, а для ЦИФР болше 10 используются буквы латинского алфавита : A(a) = цифра 10, B(b) = 11, C(c) =12, D(d) = 13, E(e) =14. Двоичное число преобразуется в десятичное беззнаковое число по формуле (15), например 10010011 = 1*27 + 1*24 + 1*21 + 1*20 = 147 (DEC). Для перевода числа из двоичной системы в 16 - ную, его необходимо разбить начиная справа на группы по 4 двоичных цифры и в каждой четверке просуммировать веса (8,4,2,1) соответствующие единичным значениям Ci. Для обратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащие нули слева, если они есть, отбрасываются.

Примеры преобразований:

Найдите десятичное число без знака соответствующее двоичному числу 00111011.
Пояснение:           номер разряда     7   6   5   4   3   2   1   0
                       вес разряда    128  64  32  16  8   4   2   1
                  значение разряда     0   0   1   1   1   0   1   1
ОТВЕТ :      десятичный эквивалент     0 + 0 + 32+ 16+ 8 + 0 + 2 + 1 = 59(DEC)

Найти (HEX)16-ный код приведенного выше двоичного числа 00111011.
Пояснение:   номер разряда     3   2   1   0       3   2   1   0
               вес разряда     8   4   2   1       8   4   2   1
          значение разряда     0   0   1   1       1   0   1   1
ОТВЕТ :  16-ный эквивалент     0 + 0 + 2 + 1 (3)   8 + 0 + 2 + 1 (11) = 3B(HEX)
так как в HEX коде цифра 11 записывается с помощью буквы B.

Двоично-десятичное число можно записывать и десятичными цифрами, например 1998, и двоичными - 0001 1001 1001 1000. Каждое десятичное число можно представить в виде BCD, например 19(DEC) = 19(BCD), но их двоичные представления не равны: 10011(19DEC) не равно 1 1001(19BCD). Не каждая запись из нулей и единиц имеет двоично-десятичный эквивалент. Например, 11001001(BIN) = [C9(HEX),201(DEC)] = ?(BCD), т.к. десятичной цифры 1100=12 не существует.

2.2 ДЕШИФРАТОР

Дешифратор (ДШ) преобразует двоичный код на входах в активный сигнал на том выходе, номер которого равен десятичному эквиваленту двоичного кода на входах. В полном дешифраторе количество выходов m = 2n, где n - число входов. В неполном ДШ m < 2n. По определению полный ДШ должен генерировать 2n выходных ЛФ, определенных на всех наборах из n - входных переменных, т.е. минтермов. Рассмотрим ДШ с n=2 и m=4, называемый также дешифратором "2 в 4" и дополним его входом разрешения выходов OE. Активным уровнем сигнала на прямых входах/выходах будет 1, а на инверсных - 0. По этому определению заполним таблицу истинности, где величина x может принимать любые значения.

tabl-dc.gif (4484 bytes)

Таблица Карно для выхода y0 и 3-х входных переменных будет иметь вид:

karno-dc.gif (1826 bytes)

Прямоугольник, составленный из 1-ных клеток содержит только одну такую клетку, поэтому логическая функция выхода y0 будет иметь вид: y0 = OE*~a1*~a0. Аналогично получены остальные три уравнения. Преобразуем полученные для yi уравнения с помощью аксиомы двойного отрицания к базису И-НЕ: y0 = ~(~(OE*~a1*~a0)). Решению соответствует схема на рис.13.

Схема обведенная "..." имеет условное обозначение (A), а схема в запятых - обозначение (Б). Возможны также еще 2 комбинации прямых и инверсных входов и выходов В и Г.

  ris13.gif (11304 bytes)

Пояснить работу ДШ можно с помощью временных диаграмм для схемы (Б). Во время действия сигнала ~OE=1 на нижних входах элементов И-НЕ(0..3) присутствует OE=0, и независимо от значений a0,a1, выходные значения ~yi=1, а yi=0, что и видно из рис.13. В эти отрезки времени t0..t1 и t2..t3 выходы "запрещены", т.е. на прямых выходах yi устанавливается пассивный уровень "0", а на инверсных выходах пассивная "1". В интервале t1..t2 сигнал ~OE=0(OE=1) и значения yi зависят только от переменных a1,a0. Если код на входах A1A0=10, что соответствует десятичной двойке, на входах второго элемента И-НЕ соберутся 3 логических "1". Сигнал ~y2=0, а y2=1, что видно на диаграмме y2. Вместо инвертора OE,может применяться более сложная схема,показанная на рис.14. Здесь OE=1 в случае,когда ~OE1 = ~OE2 = 0 и OE3 = 1.

ris14-15.gif (3022 bytes)

Такая схема применяется в дешифраторе "3 в 8" типа 1533ИД7(555ИД7), условное обозначение которого приведено на рис.15. Дешифраторы широко применяются в вычислительной технике, как часть больших интегральных схем, для выбора одного из нескольких внешних устройств (ВУ) при обмене данными между ним и микропроцессором. В этом случае на входы ai подаются сигналы, называемые адресом ВУ, а входы называются адресными.

2.3 ДЕМУЛЬТИПЛЕКСОР

Устройство передающее сигнал с информационного входа на один из выходов, причем номер этого выхода равен десятичному эквиваленту двоичного кода на адресных входах, называется демультиплексором (ДМ). В качестве ДМ может использоваться дешифратор, у которого вместо сигнала OE подается информационный сигнал x. Например, если на входы подать код a1a0=10(BIN)=2(DEC), то сигнал x появится на выходе y2, а на остальных выходах yi=0. На рис.16. даны условное обозначение ДМ "1 в 4" и его механический аналог.

ris16.gif (2212 bytes)

2.4 УВЕЛИЧЕНИЕ РАЗРЯДНОСТИ ДЕШИФРАТОРОВ И ДЕМУЛЬТИПЛЕКСОРОВ

На рис.17 показано соединение двух ДШ "3 в 8" для получения одного ДШ "4 в 16", или двух демультиплексоров "1 в 8" для получения одного "1 в 16".

ris17.gif (4836 bytes)

При пассивном значении ~OE=1 сигнал OE=0 (рис.14) и на всех выходах yi будет "1", независимо от значений сигналов ai. Если ~OE=0 (активный уровень), то какой из дешифраторов работает зависит только от сигнала a3. Так если a3=0, то на всех разрешающих входах ДШ (A) будут активные уровни, а на прямом разрешающем входе OE дешифратора (B) сигнал a3 равный нулю переведет все выходы в состояние 1 (см. табл.4), т.е. работоспособным будет ДШ (A). Когда a3=1, наоборот работоспособным становится дешифратор (B), потому что для инверсного входа ~OE дешифратора (A) этот сигнал запрещает его выходы. Комбинации сигналов a3 и a2..a0, это видно из первых колонок таблицы, образуют последовательность двоичного кода 0000 ... 0111 (0 ... 7) для дешифратора (A) и последовательность 1000 ... 1111 (8 ... 15) для ДШ (B). Поэтому нумерация выходов yi, получившегося ДШ "4 в 16" сквозная от 0 до 15. На рис.17, справа приведено условное обозначение, получившегося дешифратора - демультиплексора (в справочниках они так часто и называются и помещаются в один раздел).

tabl4.gif (5562 bytes)

2.5 МУЛЬТИПЛЕКСОР

Мультиплексор передает сигнал с одного из информационных входов xi на единственный выход y, причем номер этого входа равен десятичному эквиваленту двоичного кода на адресных входах ai. Если имеется вход разрешения выхода OE, то "0" на этом входе должен перевести выход в пассивное состояние (последняя строчка таблицы.5). Рассмотрим мультиплексор "4 в 1", имеющий 4 информационных входа и log4 = 2 адресных входов.

tabl5.gif (4454 bytes)

Величина x может принимать любые значения. Количество входных переменных равно 7, и таблица истинности должна иметь 128 строк. В табл.5 в 4-x основных строках упаковано 64 исходных (с учетом значений x0 ... x3) и в последней строке, остальные 64 строчки. Анализ 0 строки, приводит к выводу,что y=x0, если a1=0 И a0=0 И OE=1, независимо от переменных x1 ... x3. Поэтому для этого входного набора можно записать: y=x0*OE*~a1*~a0. Аналогично записывается y для остальных трех наборов переменных. Общее решение тогда будет иметь вид:

       y = OE(x0*~a1*~a0 + x1*~a1*a0 + x2*a1*~a0 + x3*a1*a0). (16)

Применяя аксиомы двойного отрицания и двойственности к правой части уравнения получим:

      ------------------------------------
 y = ~(OE*x0*~a1*~a0)+ ... +~(OE*x0*a1*a0).(17)

Выражению (17) соответствует схема,приведенная на рис.18,

ris18-19.gif (4944 bytes)

а ее условное обозначение и механический аналог на рис.19. Если на адресные входы подать комбинацию a1a0 = 11(BIN) = 3(DEC), то к выходу y будет подключен вход D3, при условии, если OE=1. Мультиплекcор может иметь инверсный выход, а также третье состояние этого выхода, которое отмечается на схеме ромбом с поперечной чертой.

Мультиплексоры находят широкое применение в вычислительной технике, например многие выводы у микропроцессоров "мультиплексированы", т.е. к одному выходу подключается несколько внутренних источников различных сигналов. Это могут быть сигналы линий шины данных и шины адреса, передаваемые последовательно во времени, что позволяет сократить общее число выводов микропроцессора. Если сравнить выражения (16) и (12), то можно увидеть их тождественность, при fi = xi и OE = 1. Следовательно, с помощью мультиплексора с "n" адресными входами можно реализовать любую ЛФ с "n" переменными, подавая на инфрмационные входы мультиплексора значения fi.

2.6 ШИФРАТОР

Шифратор (Ш) может быть неприоритетным, если допускается подача только одного активного сигнала и может быть приоритетным, если допускается подача одновременно нескольких активных сигналов на входы. Неприоритетный Ш осуществляет преобразование десятичного номера активного входа в двоичный эквивалент этого номера. Для неприоритетного шифратора "4 в 2" таблица истинности имеет вид (рис.20):

ris20-21.gif (4289 bytes)

В приоритетном Ш производится преобразование максимального десятичного номера активного входа в двоичный эквивалент этого номера. Для такого Ш входные сигналы, лежащие снизу от единичной диагонали, по определению не известны ("x" может быть 0 или 1). Следовательно полная таблица истинности, вместо нижних трех строчек должна содержать еще 2+4+8=14 строк см. рис.21. Комбинация 0000 на входах не определена.

Для синтеза схемы неприоритетного Ш для каждого выхода составим таблицу Карно. Четыре входных переменных дают 24=16 комбинаций из которых по определению заданы в таблице только 4. Остальные 12 неопределенных (запрещенных) комбинаций в таблицах Карно отметим символом d. Так как появление этих комбинаций на входах не предусмотрено (по определению), то в соответствующие клетки т.Карно можно подставлять любые значения, в том числе такие, которые позволяют наиболее полно минимизировать ЛФ. Два из четырех вариантов приведены на рис.22. В обоих случаях две величины d доопределены до 1.

  ris22.gif (4762 bytes)

Из приведенных таблиц находим y1 и y0:

      -- --   -------          -- --   -------
 y1 = x0*x1 = x0 + x1  и  y0 = x0*x2 = x0 + x2.

  ris23.gif (3094 bytes)

Реализация и условное обозначение неприоритетного Ш приведены на рис.23. Переменная x3 оказалась "обделенной", но это произошло из-за того, что если нет сигнала ни на одном из первых трех входов, то он неизбежно должен присутствовать, по определению, на оставшемся, т.е. на третьем. Переменная x3, вместе с остальными может быть использована для формирования функции x0 + x1 + x2 + x3 равной 0, когда не активен ни один из входов, что может сигнализировать, например о неисправности источников сигналов.

Шифраторы применяются в контроллерах прерываний работы микропроцессора внешними устройствами, в параллельном преобразователе напряжения в код и для кодирования номера клавиши. Последнее применение показано на рисунке. Если нажата клавиша кл3, то на выходе ей будет соответствовать код 11(BIN) = 3(DEC).


Логические функции и элементы

1.1 Основные положения алгебры логики

1.2 Переключательные функции

1.3 Условные обозначения логических функций

1.4 Способы представления логических функций (ЛФ)

1.5 Логический базис

1.6 Схемные особенности логических элементов.

1.7 Элемент с открытым коллектором

1.8 Элементы И-ИЛИ-НЕ и расширители

1.9 Тристабильные элементы

1.10 Минимизация логических функций

1.11 Таблица Карно

1.12 Преобразование ЛФ к базису И-НЕ и И-ИЛИ-НЕ

1.13 Временные параметры логических элементов

1.14 Переходные процессы в логических схемах

1.15 Задачи и упражнения

Комбинационные логические схемы

2.1 Некоторые системы счисления

2.2 Дешифратор

2.3 Демультиплексор

2.4 Увеличение разрядности дешифраторов и демультиплексоров

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

2.6 Шифратор

2.7 Преобразователи кода

2.8 Сумматор

2.9 Схема сравнения кодов

2.10 Схема контроля четности (нечетности)

2.11 Задачи и упражнения

Последовательностные схемы

3.1 Триггеры

3.1.1 Асинхронный RS-триггер

3.1.2 Синхронный RS-триггер

3.1.3 D-триггер со статическим управлением

3.1.4 D-триггер с динамическим управлением

3.1.5 Универсальный JK-триггер

3.1.6 T-триггер

3.1.7 Взаимные преобразования триггеров

3.2 Регистры

3.2.1 Параллельные и последовательные регистры

3.2.2 Реверсивный регистр сдвига

3.2.3 Синхронный и асинхронный способы загрузки параллельного кода

3.3 Счетчики

3.3.1 Асинхронный счетчик с последовательным переносом

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

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

3.3.4 Каскадное включение счетчиков

3.3.5 Счетчик-таймер

3.3.6 Применение счетчиков в измерительной технике

3.3.7 Задачи и упражнения

ЦАП и АЦП

4.1 ЦАП с матрицей резисторов типа R-2R

4.2 Биполярный ЦАП

4.3 Четырехквадрантный ЦАП

4.4 АЦП поразрядного уравновешивания

4.5 АЦП параллельного типа

4.6 Задачи и упражнения

Запоминающие устройства

5.1 ОЗУ статического типа (SRAM)

5.2 ОЗУ динамического типа (DRAM)

5.3 Репрограммируемое ПЗУ (EPROM,EEPROM)

5.4 Однократно программируемое ПЗУ (OTP,PROM)

5.5 Энергонезаваисимая память (NVRAM)

5.6 Увеличение разрядности ячейки памяти

5.7 Увеличение количества ячеек памяти

5.8 Программируемые цифровые ИС (PLD)

5.9 Задачи и упражнения

Разное

6.1 Передаточная характеристика

6.2 Сравнительные характеристики некоторых серий ИМС

6.3 Коэффициент разветвления (Краз,N)

6.4 Сопряжение различных серий ИМС

6.5 Управление логическими схемами от компараторов и операционных усилителей

6.6 Определения некоторых параметров ИМС по ГОСТ 2.743-82, ГОСТ 19480-89

Кодирование информации в ЭВМ

7.1 Системы счисления

7.2 Машинное представление информации

7.3 Числа с фиксированной точкой

7.4 Диапазон целых чисел с фиксированной точкой

7.5 Числа с плавающей точкой (вещественные)

7.6 Диапазон представления вещественных чисел

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

7.8 Буквенно-цифровой код

7.9 Восьмисегментный код

7.10 Неоднозначность представления двоичных наборов

Микропроцессор 8086(88)

8.1 Структурная схема микропроцессора

8.2 Регистр флагов

8.3 Организация памяти и вычисление адреса

8.4 Процессорный блок

8.5 Микропроцессорная система с тремя шинами

8.6 Стек

8.7 Способы ввода-вывода (ВВ)

8.7.1 Программный ВВ

8.7.2 ВВ по прерыванию

8.7.3 Прямой доступ к памяти (ПДП) и транзакции

Программирование на ассемблере

9.1 Ассемблер. Этапы разработки программы.

9.2 Формат команд и их классификация

9.3 Некоторые предопределенные имена, операторы, директивы и команды ассемблера

9.3.1 Предопределенные имена

9.3.2 Операторы

9.3.3 Директивы (псевдооператоры)

9.3.4 Команды пересылки

9.3.5 Арифметические команды

9.3.6 Логические команды и команды сдвига

9.3.7 Команды передачи управления

9.3.8 Команды управления циклами

9.3.9 Команды обработки строк (цепочек байтов)

9.3.10 Команды управления микропроцессором

9.3.11 Команды прерываний

9.3.12 Влияние команд на флаги

9.3.13 Шаблоны для программ

9.3.14 Примечания

Программируемые большие интегральные схемы.

10.1 Программируемый периферийный интерфейс

10.1.1 Подключение к ППИ ЦАП и АЦП

10.2 Программируемый интервальный таймер

10.2.1 Пример использования ПИТ

10.3 Программируемый связной интерфейс.

anim_butt1.gif (902 bytes) Примеры решения типовых задач из прилагаемого задачника.

  • Отсюда Вы можете скачать

Вопросы по курсу "Цифровая техника"

Вопросы по курсу "Микропроцессорная техника"

Автор принимает замечания и пожелания по адресу:

kit@freemail.ru

Примечание. Некоторые задачи и упражнения (см. например п.1.15 ), приведенные в этом учебнике включают код написанный на VBScript, который Netscape Navigator "не понимает" (но это проблемы NN, а не Ваши). Поэтому пользуйтесь Internet Explorer'ом.


10. ПРОГРАММИРУЕМЫЕ БОЛЬШИЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ

10.1 ПРОГРАММИРУЕМЫЙ ПЕРИФЕРИЙНЫЙ ИНТЕРФЕЙС (PPI)

На рисунке внизу приведены условное обозначение ППИ и одна из возможных схем его включения в микропроцессорную систему. PPI имеет три двунаправленных 8-ми битных канала связи с внешними устройствами, называемых обычно портами - PA,PB,PC. Порт PC отличается от остальных тем, что его можно "расчленить" на два независимых 4-х битных порта - старшую половину D7..D4 и младшую D3..D0. ppi.gif (4245 bytes) ППИ, называемый иногда параллельным интерфейсом (IOP), подключается к шине данных с помощью двунаправленных тристабильных выводов D7..D0. Входы A1,A0 осуществляют выбор одного из четырех каналов обмена данными: трех портов PA,PB,PC или внутреннего регистра управления/состояния (РУС или CSR - Control and Status Register).

A1 | A0 | КАНАЛ
0 | 0 | PA
0 | 1 | PB
1 | 0 | PC
1 | 1 | CSR

PPI переводится в рабочее состояние активным значением сигнала на инверсном входе "выбор микросхемы" (Chip Select, Crystall Select, CS) ~CS = 0, снимаемым с выхода дешифратора адреса ( на рисунке приведен неполный дешифратор - элемент И-НЕ). Логический ноль на выходе элемента И-НЕ появится, если ВСЕ сигналы на его входах равны "1" (A7=A6=A5=A4=1). Так как выбор того или иного канала производится с помощью входов A1,A0 подключенных к аналогичным линиям шины адреса (ША), то с учетом входов дешифратора возможны следующие комбинации сигналов на ША.

ЛИНИИ ШИНЫ АДРЕСА |  |  |  |  |  |  |  | КАНАЛ/ПОРТ | АДРЕС (HEX)
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
1 | 1 | 1 | 1 | x | x | 0 | 0 | PA | F0
1 | 1 | 1 | 1 | x | x | 0 | 1 | PB | F1
1 | 1 | 1 | 1 | x | x | 1 | 0 | PC | F2
1 | 1 | 1 | 1 | x | x | 1 | 1 | CSR | F3

Линии A3,A2 шины адреса в схеме не задействованы, поэтому их значения в таблице обозначены (x - Don't Care Bits). При вычислении 16-ного адреса программист в качестве значения этих бит может подставлять любые значения, в том числе нули, как это и сделано в таблице. Например, для порта PB двоичный код 1111xx01 = 11110001(BIN) = F1(HEX).

Обмен байтами данных между МП (CPU) и внешними устройствами (ВУ), подключенными к портам PPI может производиться по командам ассемблера IN..... и OUT.... например : in al,XX и out XX,al.

Выполнение команд IN и OUT производится в два этапа (без учета тактов и циклов, зависящих от конкретной архитектуры микропроцессора). Пример : выполнение инструкций IN AL,0F1h и OUT 0F1h,AL.

  • 1 этап) Микропроцессор помещает адрес (например F1) на ША, где он дешифрируется (в нашем примере элемент И-НЕ). С выхода дешифратора активный уровень (0) поступает на инверсный вход ~CS и переводит PPI в рабочее состояние.
  • 2 этап) а) Команда OUT. В следующий момент времени МП помещает байт, находящийся в регистре AL на шину данных и одновременно вырабатывает строб записи ~IOW поступающий на вход управления записью ~WR. Импульс ~IOW защелкивает байт данных в выходном регистре соответствующего порта ( в нашем примере в порте PB). б) Команда IN. Микропроцессор посылает на вход управления чтением ~RD строб чтения ~IOR , которым считывается в аккумулятор AL по ШД байт данных из порта PB.

Тип операций выполняемых PPI (режим работы) зависит от информации записанной в его регистр управления. Эта информация называется управляющим байтом или иногда приказом. Подробная информация по режимам приведена, например в справочнике : Микропроцессоры и микроЭВМ, под редакцией Хвощ С.Т. Ниже приведен формат байта управления в одном из наиболее популярных режимов - режиме "0", о чем свидетельствуют нули в битах D6,D5,D2:

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
1 | 0 | 0 | PA | PCh | 0 | PB | PCl

Биты PA,PB,PCh,PCl определяют направление передачи данных через порты ( если порт настроен, например, на вывод, то ввести данные через него в МП командой IN не удастся !).

Если один из перечисленных четырех битов установлен (в него записана 1), то соответствующий порт будет настроен на ввод (МП <----- ВУ), если бит сброшен (в него записан 0), то порт будет настроен на вывод ( МП -----> ВУ).

10.1.1 ПОДКЛЮЧЕНИЕ К PPI ЦАП И АЦП

Ниже на рисунке приведен пример подключения двух внешних устройств, в качестве которых выступают ЦАП и АЦП. ppi-adda.gif (7168 bytes) Аналого-цифровой преобразователь последовательных приближений (наиболее распространенный в микропроцессорных системах) подключен цифровыми выходами к порту PA ( может быть и другой порт). Вход сброса/запуска R подключен к одной из линий порта PC (на рисунке PC0), а выход готовности преобразователя соединен с линией PC7. ЦАП входами связан с портом PB.

Как это видно из рисунка порт PA должен быть настроен на ввод кода пропорционального входному напряжению Uвх, а порт PB - на вывод кода. Поэтому бит D4 (PA) управляющего

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
1 | 0 | 0 | 1 | PCh | 0 | 0 | PCl

байта должен быть установлен, а бит D1(PB) - сброшен. Далее обращаем внимание, что линия PC0 ( а вместе с ней и вся младшая половина порта PCl) должна быть настроена на вывод, а линия PC7(PCh) - на ввод, поэтому окончательно управляющий байт для приведенного ВАРИАНТА подключения АЦП и ЦАП будет выглядеть следующим образом:

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 98

Теперь приведем типовые фрагменты программы управления работой ЦАП и АЦП, с учетом временных диаграмм АЦП.

ad-vrem.gif (2058 bytes)

Преобразователь активизируется при поступлении импульса R = 1 ( происходит обнуление регистров). Отрицательным перепадом сигнала R запускается процесс преобразования и через время Tпреобр. новый код появляется на выходах преобразователя. В этот момент на выходе готовности АЦП появляется сигнал ~RDY = 0, свидетельствующий об окончании очередного цикла пребразования.

;  ++++++++ подготовка PPI к работе ++++++++

   mov al,98h ; запись управляющего байта 98
   out 0f3h,al; в регистр управления с адресом F3
   ...........

;  ++++++++ запуск АЦП и считывание кода ++++++++

   mov al,01  ; формирование на линии PC0
   out 0f2h,al; импульса запуска  (R = 1)
   mov al,00  ; преобразователя
   out 0f2h,al; (R = 0)
w: in al,0f2h ; ввести в аккумулятор (AL) байт из порта PC
   test al,80h; отселектировать бит готовности PC7 (маска 80h),
   jnz w      ; если он не равен нулю - повторить ввод снова,
   in al,0f0h ; если АЦП готов (~RDY=0), то ввести код из порта PA
   ...........; с адресом F0 (выход АЦП) в аккумулятор.
;  терерь код напряжения, например, можно вывести на дисплей и т.д.

;  ++++++++  вывод кода в ЦАП  ++++++++

   mov al,XXh ; запись в аккумулятор требуемого значения XX
   out 0f1h,al; и вывод его на ЦАП через порт PB с адресом F1.
   ...........

10.2 ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР (PIT)

Содержит три независимых шестнадцатиразрядных синхронных вычитающих счетчика CTi с синхронной загрузкой кода pit-cpu.gif (5087 bytes) На рисунке внизу приведена типичная схема включения ПИТ в микропроцессорную систему. Левая часть схемы тождественна предыдущей схеме подключения ППИ за исключением того, что в качестве дешифратора используется популярная м/с ИД7.

Назначение выводов счетчиков: CLKi - вход сигнала тактовой частоты. G(ATE)i - вход управления запуском/остановом счета. OUTi - выход сигнала.

Входы A1,A0 осуществляют выбор одного из трех счетчиков или регистра управления.

A1 | A0 | СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ
0 | 0 | CT0
0 | 1 | CT1
1 | 0 | CT2
1 | 1 | CSR

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

В приведенной конкретной схеме вход Chip Select соединен с 0-м выходом дешифратора адреса. В соответствии с логикой работы DC при обращении CPU к PIT на управляющих входах OE должны быть активные уровни: A7=1,A6=A5=0. На адресных входах дешифратора для активизации 0-го выхода должен быть помещен двоичный код A4=A2=A1=0. С учетом приведенных ранее битов A1,A0 таймер имеет следующие адреса:

ЛИНИИ ШИНЫ АДРЕСА |  |  |  |  |  |  |  | СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ | АДРЕС (HEX)
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | CT0 | 80
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | CT1 | 81
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | CT2 | 82
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | CSR | 83

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

D7 D6 D5 D4 D3 D2

D1

D0

D7 | D6 | Номер счетчика | Способ загрузки Ni в счетчик | D5 | D4
0 | 0 | Счетчик 0 (CT0) | Фиксация Ni | 0 | 0
0 | 1 | Счетчик 1 (CT1) | Загрузка Ni одним младшим байтом | 0 | 1
1 | 0 | Счетчик 2 (CT2) | Загрузка Ni одним старшим байтом | 1 | 0
1 | 1 | Запрет | Загрузка Ni двумя байтами | 1 | 1
D3 | D2 | D1 |  | Формат записи Ni в счетчик | D0
0 | 0 | 0 | Режим 0 | Запись Ni двоичным кодом | 0
0 | 0 | 1 | Режим 1 | Запись Ni двоично-десятичным кодом | 1
x | 1 | 0 | Режим 2 |
x | 1 | 1 | Режим 3
1 | 0 | 0 | Режим 4
1 | 0 | 1 | Режим 5

Два старших бита D7,D6 байта управления определяют номер регистра управления соответствующего счетчика.

Биты D5,D4 задают способ записи модуля счета Ni i-го счетчика.

  • Если 3 <= Ni <=255, то коэффициент деления i-го счетчика МОЖНО программно загрузить одним младшим байтом, старший байт значение, которого равно 0 будет записан таймером в счетчик автоматически (D5=0,D4=1).]

  • Если 256 <= Ni <216 и кратно 256, то коэффициент деления i-го счетчика МОЖНО программно загрузить одним старшим байтом, младший байт значение, которого равно 0 будет записан таймером в счетчик автоматически (D5=1,D4=0).

  • И наконец, если 256 < Ni <216 и не кратно 256, то коэффициент деления i-го счетчика НУЖНО загружать двумя байтами (D5=1,D4=1).

Биты D3,D2,D1 определяют форму выходного сигнала. В режимах 0,2,3,4 счет разрешается при GATE=1 и останавливается при GATE=0. В режимах 1 и 5 для начала счета на вход GATE необходимо подать положительный перепад.

  • Режим 0. Программируемая задержка времени. На выходе OUTi формируется положительный перепад через время Tвых = Tвх * (Ni + 1). Tвх - период повторения импульсов на входе CLKi.

pit-regim0.gif (1739 bytes)

  • Режим 1. Генератор одиночного импульса заданной длительности. Длительность отрицательного импульса определяется следующим соотношением: Tвых = Tвх * Ni.

pit-regim1.gif (1742 bytes)

  • Режим 2. Генератор периодической последовательности импульсов со скважностью Q>2. Частота следования импульсов на выходе счетчика: Fвых = Fвх / Ni. Fвых = 1 / Tвых и Fвх = 1 / Tвх. Скважность - отношение периода повторения к длительности импульса ( Tвых/Tи).

pit-regim2.gif (1835 bytes)

  • Режим 3. Генератор периодической последовательности импульсов со скважностью Q=2 (меандр). Частота следования импульсов на выходе счетчика такая же, как и во втором режиме.

pit-regim3.gif (1856 bytes)

  • Режимы 4 и 5. Программно и аппаратно управляемый строб-импульс. В режиме 4 формируется короткий импульс длительностью Tвх с задержкой Tвых = Tвх*(N +1). А в режиме 5 формируется такой же импульс с задержкой Tвых = Tвх*N.

pit-regim4-5.gif (1726 bytes)

Бит D0 регламентирует формат записи кода Ni в счетчик. Если D0=0, загружаемый код трактуется счетчиком, как двоичный - в противном случае, как двоично-десятичный.

10.2.1 ПРИМЕР ИСПОЛЬЗОВАНИЯ PIT

На рисунке внизу приведена одна из множества схем применения ПИТ в качестве таймера с программируемой длительностью временного интервала T1, подачей звуковых отметок с периодом T2 и сигнализацией с частотой F0 спустя время T1.

PIT-budilnik.gif (4835 bytes)

Исходные данные для проектирования:

  • 1.Длительность интервала временной задержки T1 = 15сек.

  • 2.Частота входного сигнала Fclk = 2МГц.

  • 3.Частота звуковых отметок F2 = 1Гц.

  • 4.Частота сигнала F0 = 100Гц.

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

  • Счетчик CT0. Биты управляющего байта D7,D6 = 00 для счетчика CT0. Для формирования на его выходе сигнала с частотой 100Гц подходят режимы 2 и 3. Однако в режиме 2 высокая скважность Q импульсов (длительность импульса мала по сравнению с периодом повторения) снижает мощность сигнала в Q/2 раз. Поэтому выбираем режим 3 и биты D3,D2,D1 = x11 = (011 или 111). Коэффициент деления CT0 в режиме 3 N0 = 2000000Гц / 100Гц = 20000(DEC) = 4E20(HEX). Так как 256 < N0(20000) <216 и не делится на 256, то загрузка кода N0 в счетчик должна производиться двумя байтами 4E и 20. Следовательно биты D5,D4 = 11. Осталось найти значение бита D0. Двоично-десятичным кодом значение N0 = 20000 (пять десятичных цифр) невозможно загрузить в 16-ти битовый счетчик (четыре полубайта - четыре десятичных цифры), поэтому D0 = 0 (загрузка N0 в двоичном коде). Таким образом управляющий байт для CT0 будет равен 36(3E):

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код
0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 36
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 3E

  • Счетчик CT2. Биты управляющего байта счетчика CT2 D7,D6 = 10. Для формирования на его выходе сигнала с частотой 1Гц также подходят режимы 2 и 3. Однако, в режиме 3 при скважности Q=2 пьезокерамические пластины верхнего динамика будут издавать звук при каждом перепаде на выходе CT2, т.е. отметки времени будут звучать с двойной частотой, что естественно не планировалось. Поэтому выбираем режим 2 и биты управляющего байта D3,D2,D1 = x10 = (010 или 110). Модуль счета N2 счетчика CT2 равен F0 / F2 = 100(DEC) = 64(HEX) и находится в пределах 3<=N2<=255. Из этого следует, что N2 можно записать в счетчик одним младшим байтом, т.е. биты D5,D4 = 01. Однобайтовое значение N2 содержит две тетрады, в которых невозможно разместить три десятичных цифры, поэтому запись N2 должна производиться не двоично-десятичным кодом, а двоичным и бит D0 = 0. Суммируя сказанное получим два возможных значения управляющего байта CT2.

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 94
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 9C

  • Счетчик CT1. Биты управляющего байта счетчика CT2 D7,D6 = 01. Временная задержка на его выходе может быть сформирована режимами 0 или 1. В режиме 1 требуется запуск счетчика положительным перепадом на входе GATE. В режиме 0 для работы счетчика на этом входе должен быть сигнал GATE1 = 1, а биты D3,D2,D1 = 000. Коэффициент деления в режиме 0: N1 = (T1 / T2) - 1 = 15/1 -1 = 14(DEC) = E(HEX). Это число также может быть загружено в CT1 одним младшим байтом, поэтому биты D5,D4 = 01. Модуль счета N1 = 14 можно записать, либо шестнадцатиричным кодом 0E(00001110 BIN), либо двоично-десятичным кодом 14(00010100 BCD). Это число (временная задержка) является тем параметром, который потребитель самостоятельно вводит в таймер и знание шестнадцатиричной системы счисления не входит в круг его обязанностей. Поэтому разработчику таймера желательно предусмотреть установку пользователем числа N1 десятичными цифрами и следовательно бит D0 управляющего байта равен 1. Окончательно, управляющий байт для CT1 будет равен:

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 51

Программа запуска приведенной схемы таймера:

;#### подготовка счетчиков таймера к работе в выбранных режимах
mov al,51h; загрузка управляющего байта CT1
out 83h,al; по адресу 83
mov al,9ch ; загрузка управляющего байта CT2
out 83h,al; по адресу 83
mov al,3eh ; загрузка управляющего байта CT0
out 83h,al; по адресу 83

;#### запись коэффициентов деления Ni в счетчики
;#### в режимах 0,2,3 счетчики при записи в них последнего
;#### (единственного) байта Ni начинают счет импульсов CLKi
mov al,14h ; запись N1=14(BCD !) в счетчик CT1
out 81h,al; по адресу 81
mov al,64h ; запись N2=100(DEC) в счетчик CT2
out 82h,al; по адресу 82
mov al,20h ; запись младшего байта N0=20000(DEC)=4e20(HEX)
out 80h,al; в счетчик CT0 по адресу 80
mov al,4eh ; а теперь - старшего байта N0
out 80h,al; по тому же адресу
;#### таймер начал отсчет времени.

10.3 ПРОГРАММИРУЕМЫЙ СВЯЗНОЙ ИНТЕРФЕЙС (PCI)

Программируемый связной интерфейс или универсальный (синхронно-)асинхронный приемо-передатчик (У(С)АПП или U(S)ART) предназначен для организации обмена данными между МП и удаленными ВУ в последовательном формате. По этой причине УСАПП называют также последовательным интерфейсом (IOS).В качестве передатчика УСАПП преобразует параллельный код в последовательный и отправляет его в линию связи, а в качестве приемника осуществляет обратное преобразование. УСАПП может обмениваться данными с удаленными устройствами в симплексном (движение информации в одном направлении) , полудуплексном (информация передается и принимается в обоих направлениях, но поочередно) и дуплексном режимах (обмен данными в обоих направлениях одновременно).

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

Назначение некоторых выводов: TxD - выход передатчика, RxD - вход приемника, CLK - вход частоты синхронизации, TxC - вход синхросигнала передатчика, RxC - вход синхросигнала приемника, ~CTS - инверсный вход готовности приемника терминала (удаленного устройства или модема). В простых системах связи вход ~CTS можно жестко связать с "землей", уведомляя передатчик, что приемник "всегда готов", а его действительная готовность к приему - это забота программиста! Если используется стандартный протокол связи, например RS-232C, то вход ~CTS должен быть отсоединен от нулевого провода. C/~D - функциональный вход "управление/данные". Если C/~D = 0 , то МП и УСАПП обмениваются байтом данных, если C/~D = 1, то происходит запись байта управления или чтение байта состояния. Назначение остальных выводов PCI аналогично назначению соответствующих выводов PPI. Приведенных на рисунке выводов достаточно для реализации связи с не очень удаленными объектами, например с компъютером или с другими МП.

ios.gif (8836 bytes)

Из приведенного рисунка нетрудно вычислить адреса PCI. Для нулевого выхода дешифратора, подключенного к входу таймеру "выбор микросхемы"адреса уже найдены. Активизация инверсного входа ~CS УСАПП производится подачей сигналов A4,A3,A2 = 111(BIN) = 7(DEC) и разрешающих работу дешифратора сигналов A7,A6,A5 = 100(BIN). В таблице приведены два из четырех возможных адресов PCI (A1 = 0).

ЛИНИИ ШИНЫ АДРЕСА |  |  |  |  |  |  |  | ДАННЫЕ / РЕГИСТР УПРАВЛЕНИЯ (CSR) | АДРЕС (HEX)
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
1 | 0 | 0 | 1 | 1 | 1 | x | 0 | Адрес порта данных | 9С
1 | 0 | 0 | 1 | 1 | 1 | x | 1 | Адрес порта CSR | 9D

Одним из наиболее распространенных режимов работы УСАПП является асинхронный режим. В этом режиме каждый передаваемый символ (кадр) содержит следующие поля:

  • обязательный стартовый бит, на рисунке обозначен ST, всегда равен нулю,

  • 5..8 информационных бит,

  • необязательный бит контроля четности/нечетности PB,

  • 1..2 стоп-бита SP.

Кадры следуют непрерывно или отделяются паузами. Инфомационные биты передаются начиная со старших разрядов. На рисунке передается/принимается код 01011001, а не 10011010.

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

  • инструкция режима,

  • команда управления.

ФОРМАТ ИНСТРУКЦИИ РЕЖИМА

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

D7 D6 D5 D4 D3 D2 D1 D0

D7 | D6 | Число стоп-бит | Вид контроля | D5 | D4
0 | 0 | Запрет | Нет контроля | 0 | 0
0 | 1 | 1 стоп-бит | Контроль нечетности | 0 | 1
1 | 0 | "полтора" стоп-бита | Нет контроля | 1 | 0
1 | 1 | 2 стоп-бита | Контроль четности | 1 | 1
D3 | D2 | Число информационных бит | Частота синхронизации | D1 | D0
0 | 0 | 5 | fTxC(RxC) / 1 | 0 | 1
0 | 1 | 6 | fTxC(RxC) / 16 | 1 | 0
1 | 0 | 7 | fTxC(RxC) / 64 | 1 | 1
1 | 1 | 8 |

  • Биты D7,D6 определяют число стоп-бит в каждом кадре, причем "полтора бита" обозначают длительность в полтора тактовых интервала. Обычно для экономии времени используется один стоп-бит.

  • Длительность тактового интервала (fTxC(RxC)/x)-1сек задают биты D1,D0. Частота fTxC или fRxC - частота сигнала на одноименных входах TxC и RxC приемопередатчика должна быть меньше или равной fCLK/(4.5). Внутри УСАПП может быть дополнительно поделена в 16 или 64 раза. Частота fTxC(RxC)/x определяет скорость передачи в Бодах (baud) или битах в секунду (bps). Для УСАПП обе скорости совпадают. В асинхронном режиме комбинация D1,D0 = 01 недопустима. Максимальную скорость обмена данными нетрудно вычислить. Пусть fCLKmax = 2МГц, тогда fTxC(RxC) = fCLK/4.5 =444444,44Гц. В асинхронном режиме дополнительный коэффициент деления должен быть не менее 16-ти (см. инструкцию режима). Поэтому максимальная скорость обмена равна 444444,44Гц / 16 = 27777 бит в секунду.

  • Число информационных бит в кадре определяется битами D3,D2 инструкции режима.

  • Биты D5,D4 задают вид контроля за правильностью передачи. Если производится контроль четности, то УСАПП-передатчик вычисляет "сумму по модулю два" информационных бит и полученный бит суммы вставляет в передаваемый кадр в качестве бита контроля четности. УСАПП-приемник снова вычисляет сумму "сумму по модулю два" информационных бит и если значение принятого и вычисленного бита контроля совпадают - делается вывод об отсутствии искажений при передаче по линии связи. Этот метод позволяет выявлять только нечетное число искажений бит информации и самого бита контроля, поэтому обычно контроль четности/нечетности не применяется и длина кадра уменьшается на один тактовый интервал. В современных устройствах связи применяются более сложные методы контроля за правильностью передачи (CRC-контроль, передача с подтверждением приема и др.).

ФОРМАТ КОМАНДЫ УПРАВЛЕНИЯ

Ниже в таблице приведены некоторые биты команды управления.

Разряд | Обозначение | НАЗНАЧЕНИЕ КОМАНДЫ
D0 | TxEN | Разрешение работы УСАПП в качестве передатчика, D0=1
D2 | RxEN | Разрешение работы УСАПП в качестве приемника, D2=1
D4 | ER | Сброс в ''0" флагов ошибок, D4=1
D6 | RESET | Программный сброс УСАПП в исходное состояние, D6=1

ФОРМАТ БАЙТА СОСТОЯНИЯ

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

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
 |  | FE | OE | PE |  | RxRDY | TxRDY

Биты D5,D4,D3, называемые также флагами, устанавливаются/сбрасываются приемником УСАПП сигнализируя:

  • PE=1 (Parity Error), если УСАПП зафиксировал ошибку при контроле четности/нечетности,

  • OE=1(Overrun Error), если была попытка считать в микропрцессор передаваемый из линии в приемник код, до завершения его полной передачи,

  • FE=1(Frame Error), если приемник не обнаружил стоп-бит(ы).

Бит RxRDY (Готовность приемника), если RxRDY=0, то приемник еще не преобразовал последовательный код в параллельный и считывать его в микропроцессор бессмысленно.

Бит TxRDY (Готовность передатчика) - если TxRDY=0, то передатчик еще не преобразовал параллельный код в последовательный и загрузка следующего кода из МП в передатчик исказит текущее передаваемое значение.

Ниже приводится фрагмент программы передачи массива байтов, хранящихся в памяти. RAM-ios.gif (2410 bytes) Начальный адрес массива символов - 8007(HEX). Передается 8 байтов: fd,87,9c,88,40,55,8a,b8. Адреса таймера 80,83 и УСАПП 9c,9d были получены ранее. Коэффициент деления частоты fCLK(N0=5)>4.5.

;#### настройка и запуск делителя частоты

     mov al,1eh; CT0,1 мл.байт, режим 3, код BIN
     out 83h,al; вывод байта упр. 1e в порт 83
     mov al,5  ; коэфф. деления частоты Fclk N0=5
     out 80h,al; и запись его в CT0 по адресу 80

;#### настройка УСАПП
     ...........

     mov al,40h;программный сброс D6=1
     out 9dh,al;

     mov al,0cfh;инструкция режима: 2 стоп-бита,
     out 9dh,al ;нет контроля,8 инф. бит, fTxC(RxC) / 64

     mov al,01h;разрешение передачи TxEN=1
     out 9dh,al;
;#### передача массива символов
     mov cl, 8; число передаваемых символов
     mov bx,8007h; начальный адрес блока
nxt: mov al,[bx]; переслать текущий байт в AL
     out 9ch,al; и вывести его в УСАПП
wt:  in al,9dh; чтение байта состояния
     shr al,1; символ передан в линию? (TxRDY=1?),
     jnc wt; если нет,то подождать,
     inc bx; если да, перейти к адресу след. байта
     dec cl; переданы все байты?
     jnz nxt; если нет,то повторить вывод след. байта
     ........; если да,то выйти из цикла.

10.4 КОНТРОЛЛЕР КЛАВИАТУРЫ И ДИСПЛЕЯ

РАЗДЕЛ В СТАДИИ ОФОРМЛЕНИЯ !

8279.gif (8381 bytes)

8279key.gif (2400 bytes)


КОНСПЕКТ ПО КУРСУ "ЭЛЕКТРОНИКА И МП" - ЦИФРОВЫЕ И МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА. КИТАЕВ Ю.В.


2.7 ПРЕОБРАЗОВАТЕЛИ КОДА

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

ris24.gif (3634 bytes)

Такой преобразователь должен иметь четыре входа, т.к. для кодирования десятичных цифр от 0 до 9 достаточно четырех двоичных, и семь выходов, по одному на каждый сегмент.Таблица истинности преобразователя, она же таблица, в соответствии с которой, например в цифре 0 должны светиться все сегменты за исключением сегмента G. В цифре 1 светятся только два сегмента B и C и т.д. Весовые коэффициенты bi двоично-десятичных разрядов равны 2i (8,4,2 и 1). На рис.25 слева дана таблица истинности. В таблице заполнена только колонка для сегмента A. Нули в ней проставлены для тех цифр, в которых сегмент A не светится.

ris25.gif (5020 bytes)

В общем случае для синтеза этого ПК требуется составить семь уравнений. Найдем одно, для сегмента A, заполнив сначала для него таблицу Карно. Слева, на рис.25-1 приведена ТК прямого значения функции сегмента A. Когда в таблице нулевых клеток значительно меньше и они компактно сгруппированы, полезнее искать алгебраическое выражение инверсной логической функции, т.е. ~Ya, ее таблица дана справа. Функция при этом может получиться значительно проще, т.е. содержать меньше переменных и слагаемых. Шесть двоичных наборов начиная с 1010 в таблице не определены из-за отсутствия десятичных цифр больших девятки, поэтому для минимизации выгоднее считать некоторые из них единицами. Из таблицы найдем: ~Ya = x2*~x1*~x0 + ~x3*~x2*~x1*x0.

ris25-1.gif (4517 bytes)

Тогда искомое выражение будет иметь вид: Ya = ~(x2*~x1*~x0 + ~x3*~x2*~x1*x0). Соответствующая ему реализация на элементе И-ИЛИ-НЕ типа 1533ЛР4 будет одной из самых простых (рис.25.справа). Промышленность выпускает микросхемы преобразователей 514ИД2 с открытым коллектором и 514ИД1 с открытым эмиттером.

2.8 СУММАТОРЫ

Сумматор осуществляет арифметическое суммирование n-разрядных кодов X=(x(n-1),..,x0) и Y=(y(n-1),..,y0). Правила сложения двух одноразрядных двоичных чисел:

0 (+) 0 = 0
0 (+) 1 = 1 (+) 0 = 1
1 (+) 1 = 0 и перенос 1 в старший разряд.

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

0 (+) 0 (+) 0 = 0
0 (+) 0 (+) 1 = 1
0 (+) 1 (+) 1 = 0 и перенос 1 в старший разряд
1 (+) 1 (+) 1 = 1 и перенос 1 в старший разряд.

Устройство реализующее эти правила называется одноразрядным полным сумматором (ОПС) и имеет три входа и два выхода. Таблица истинности ОПС приведена на рис.26, слева.

ris26.gif (4407 bytes)

xi,yi - одноименные двоичные разряды чисел X и Y, ci - перенос из предыдущего разряда, si - частичная сумма по модулю два и c(i+1) - перенос в следующий разряд. Значения c(i+1) совпадают со значениями функции мажоритарности , поэтому воспользуемся готовым решением:

c(i+1) = xi*yi + xi*ci + yi*ci. (18)

Таблица Карно для si приведена на рис.26 справа. Из таблицы находим: si = xi*~yi*~ci + ~xi*~yi*ci + xi*yi*ci+ ~xi*yi*~ci = ~yi(xi*~ci + ~xi*ci) + yi(xi*ci + ~xi*~ci) = ~yi(xi (+) ci) + yi(xi*ci + ~xi*~ci). Выражение в последней скобке необходимо преобразовать, используя соотношение двойственности.

                   -------------------     ------------------

xi*ci + ~xi*~ci = ~(xi*ci) * ~(~xi*~ci) = (~xi+~ci) * (xi+ci) =

---------------------------------   ---------------

~xi*xi + ~xi*ci + ~ci*xi + ~ci*ci = ~xi*ci + xi*~ci =
~(xi (+) ci) = ~F6 = F9.

С учетом последнего выражения

si = ~yi(xi (+) ci) + yi~(xi (+) ci) =
yi (+) (xi (+) ci) = yi (+) xi (+) ci.     (19)

Схема одноразрядного полного сумматора соответствующая уравнениям (18) и (19) и ее условное обозначение приведены на рис.27.

ris27.gif (4069 bytes)

Сумматор с последовательным переносом для сложения n- разрядных двоичных чисел показан на схеме (рис.28.). К его недостатку относится большое время задержки, в наихудшем случае, когда от сложения x0,y0 возникает сквозной перенос через все разряды до выхода s(n-1). При двухъярусной схеме одноразрядного сумматора, задержка сигнала от входов до выходов составит 2tзд.р., если считать задержку в каждом ярусе одинаковой. Суммарная величина задержки будет равна:

tзд.р.посл.сумматора = n*2tзд.р. (20)

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

ris28.gif (2964 bytes)

В ЭВМ сумматор является центральным узлом арифметико-логического устройства (АЛУ) и от его быстродействия зависит производительность компъютера. Поэтому применяются сумматоры с параллельной схемой переноса. Выражение (18) для младшего разряда можно преобразовать, используя тождество для для функции ИЛИ: x + y = ~x*y + x*~y + xy. В правой части равенства СДНФ ф-ии ИЛИ. Тогда

c1 = x0*y0 + x0*c0 + y0*c0 = x0*y0 + c0(x0 + y0) =

x0*y0 + c0(~x0*y0 + x0*~y0 + x0*y0) =

x0*y0(с0 +1) + c0(~x0*y0 + x0*~y0) =

x0*y0 + с0(x0 (+) y0). (21)

Уравнениям (19) и (21) соответствует схема на рис.29.

ris29.gif (3267 bytes)

Если в каждом разряде сумматора использовать такой одноразрядный сумматор, то никакого выигрыша в скорости не будет. Узел обведенный точками называется узлом переноса (УП), а функции gi и pi называются функциями генерации переноса и распространения переноса. С учетом этого можно записать:

c1 = g0 + p0*c0, с2 = g1 + p1*c1 = (22)

= g1 + p1*g0 + p1*p0*c0, (23)

с3 = g2 + p2*c2 = (24)

= g2 + p2*g1 + p2*p1*g0 + p2*p1*p0*c0, (25)

......, и так далее. Выражения (22,24) - это еще последовательный сумматор, т.к. c3 зависит от c2,c2 зависит от c1, а c1 зависит от c0. Выражения (23,25) соответствуют уже параллельному, т.к. величина ci снимается с выхода предыдущего разряда, в котором она формируется параллельно из всех первичных переменных. Схемы узлов переноса УП1 и УП2 приведены на рис.30.

ris30.gif (3585 bytes)

Из рис.29 и 30 видно, что узел сложения в каждом разряде остается неизменным, а изменяется только узел переноса, причем задержка сигнала от входов xi, yi до c(i+1) остается неизменной и для 3-ярусной схемы равна 3tзд.р.. Суммарная задержка в каждом разряде увеличится на время прохождения сигнала от входа ci до si, т.е. на величину tзд.р., и составит: tзд.р.паралл.сумматора = 4tзд.р. независимо от количества разрядов. За это приходится платить усложнением узла переноса от разряда к разряду.

2.9 СХЕМА СРАВНЕНИЯ КОДОВ

Два кода X и Y считаются равными, если попарно равны их одноименные разряды. Можно ввести функцию F(X==Y), которая равна 1, если xi=yi для всех i, иначе ее значение равно нулю. В качестве примера возьмем два двухбитовых числа X=(x1,x0) и Y=(y1,y0).Таблица Карно для этих чисел приведена на рис.31, справа.

ris31-32.gif (6379 bytes)

F(X==Y) = ~y1*~x1*~y0*~x0 + ~y1*~x1*y0*x0 + y1*x1*~y0*~x0 + y1*x1*y0*x0 = ~y1*~x1(~y0*~x0 + y0*x0) + y1*x1(~y0*~x0 + y0*x0) = ~(x0 (+) y0)*~(x1 (+) y1) =
F9(x0,y0)*F9(x1,y1) = ~(F6(x0,y0)+F6(x1,y1)). Преобразования в последних двух строчках сделаны с учетом, того что ~F6(x,y) = F9(x,y) и наоборот (см.раздел сумматоры). Одна из
возможных реализаций приведена на рис.31,слева. Практические схемы дополняются функциями "больше/меньше", как например в микросхеме 555СП1, которая сравнивает два четырехразрядных числа. На рис.32 показано соединение двух таких схем, для увеличения разрядности сравниваемых чисел до восьми. Для правильного результата сравнения чисел X = (x7,x6,...,x0) и Y=(y7,y6,...,y0) на вход X = необходимо подать 1. Схема сравнения входит в состав АЛУ микропроцессора и часто называется цифровым компаратором.

2.10 СХЕМА КОНТРОЛЯ ЧЕТНОСТИ (НЕЧЕТНОСТИ)

Схема применяется для выявления одиночных ошибок, вызванных помехами в линии связи или в блоках памяти. Метод основан на подсчете числа единиц в передаваемой в линию или направляемой в память на хранение порции информации, причем если число единиц четное - функция четности P(arity) равна нулю. Для четырехразрядного двоичного числа таблица Карно, схемная реализация и условное обозначение приведены на рис.33.

ris33.gif (3691 bytes)

Символом M2 обозначена операция - "сумма по модулю два". Четыре строки таблицы Карно
дают 4 составляющих: P = ~x3*~x2*F6(x1,x0) + ~x3*x2*~F6(x1,x0) + x3*x2*F6(x1,x0) + x3*~x2*~F6(x1,x0) = F6(F6(x3,x2),F6(x1,x0)) = (x3 (+) x2) (+) (x1 (+) x0). Рассмотрим пример на рис.34.

ris34.gif (2738 bytes)

Пусть по n-проводной линии связи передается параллельный двоичный код x(n-1),
x(n-2),...,x1,x0, а принимается код x'(n-1),x'(n-2),..., x'1,x'0. Тогда величина P1 = x0 (+) x1 (+) .. (+) x(n-1) .

На приемном конце линии связи P2 = x'0(+) x'1(+) ... (+) x'(n-1) (+) P1. Подставляя в последнюю формулу выражение для P1 и группируя переменные в одноименные пары, получим: P2 = (x0 (+) x'0) (+) (x1 (+) x'1) (+) (x2 (+) x'2)(+)... Из последнего выражения следует, что если передача прошла без искажений, то xi=x'i и xi (+) x'i =0, а P2=0! При искажении одного и в общем случае нечетного числа бит функция P2=1. Аналогично протекает процесс контроля и при последовательной передаче по одной линии связи n-бит и одного бита четности.

2.11 ЗАДАЧИ И УПРАЖНЕНИЯ

Задача 1. Нажмите на кнопку "ЗАДАНИЕ", преобразуйте HEX код в двоичный эквивалент, введите ответ в правое окно и нажмите кнопку "ОТВЕТ ГОТОВ". Например:

ЗАДАНИЕ 5C ОТВЕТ ГОТОВ 01011100

Задача 2. Внимательно проработайте пример.

zad1dc.gif (13774 bytes)

А теперь нажмите кнопку ЗАДАНИЕ и найдите код на выходах y7y6..y1y0 при заданных значениях a2,a1,a0 и OE3=1,~OE2=0,OE1=1. Пример ответа 00010000

Введите ответ и нажмите на кнопку "ОТВЕТ ГОТОВ".

Задача 3. Разберите следующий пример.

zad0cd.gif (5101 bytes)

ПОЯСНЕНИЯ: Из текста к рисунку видно, что активизирован вход X5=1, следовательно на выходе должен появиться двоичный код 101. ( 101(BIN) = 5(DEC)).

А теперь найдите код на выходах y2,..y1,y0 при заданных значениях x7,..x1,x0. Пример ответа 110

Введите ответ и нажмите на кнопку "ОТВЕТ ГОТОВ".

Задача 4.

  zad0cdpr.gif (5366 bytes)

ПОЯСНЕНИЯ: Из рисунка видно, что активизированы входы X6=1, X5=1, X4=1, X2=1, следовательно на выходе должен появиться двоичный код 110. (Максимальный номер активного входа = 110(BIN) = 6(DEC)).

А теперь найдите код на выходах y2,..y1,y0 при заданных значениях x7,..x1,x0. Пример ответа 010

Введите ответ и нажмите на кнопку "ОТВЕТ ГОТОВ".

Задача 5.

zad0mux.gif (8649 bytes)

ПОЯСНЕНИЯ: Из рисунка видно, что мультиплексор имеет инверсный вход разрешения ~OE, и следовательно информация с информационных входов Xi будет передаваться на выход когда ~OE=0, т.е. в первые четыре временных интервала. Отмечаем также, что и выход MUX'a инверсный. Для интервала "1" A2,A1,A0 = 100(BIN) = 4(DEC), следовательно к выходу будет подключен сигнал X4=1, что после инверсии даст на выходе Y=0. Аналогично находим, что в моменты 2,3,4 на выходе будут 111. Далее видим, что выход мультиплексора имеет третье состояние (ромб с поперечной чертой). Для интервалов 5,6 замечаем, что сигнал ~OE=1 и выход Y станет пассивным ( для указанной схемы перейдет в третье состояние), поэтому две последние позиции отмечаем буквой z.

Введите ответ и нажмите на кнопку "ОТВЕТ ГОТОВ".


3. ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ

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

3.1 ТРИГГЕРЫ

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

- триггер с раздельной установкой состояний (RS-триггер),

- триггер "защелка" (D - триггер),

- универсальный триггер (JK - триггер),

- триггер со счетным входом (T - триггер).

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

3.1.1 АСИНХРОННЫЙ RS - ТРИГГЕР

Асинхронный триггер имеет два входа S(et) - установка и R(eset) - сброс и два выхода прямой - Q и инверсный - ~Q. Триггер переходит из текущего состояния X на выходе к состоянию 0, при подаче на вход S нуля и на вход R единицы, а при поступлении на вход S единицы и на вход R нуля триггер переходит к состоянию 1. При нулевых значениях, когда S=R=0 триггер должен сохранять старое значение. Комбинация сигналов S=R=1 не определена. В соответствии с описанием составим таблицу состояний триггера (таблица 6).

tabl6.gif (4308 bytes)

Q и X - могут принимать любые значения, но Q в пределах одной строки, неизменно. Значения d будут доопределены на этапе минимизации. Входных переменных три - S,R и текущее состояние выхода Qt, поэтому всего должно быть восемь состояний при различных значениях Q и X. Последующее состояние выходов отделено от текущего временем задержки сигнала dt. Таблица Карно функции Q(t+dt) с учетом всех возможных состояний приведена на рис.35, слева.

ris35.gif (3252 bytes)

Доопределяем значения d единицей и находим характеристическое уравнение RS - триггера:

Q(t+dt) = S + ~R*Qt = ~(~S * ~(~R*Q)). (26)

Этому уравнению соответствует схема на рис.35, справа. Учитывая,что Qt и Q(t+dt) сигналы на одном и том же выходе, но в разные моменты времени, свяжем их. Окончательно схема триггера и его условное обозначение будет выглядеть, как на рис.36.

ris36.gif (3386 bytes)

Условное обозначение B соответствует части рисунка, обведенной точками, т.е. RS триггеру с инверсными входами, а обозначение A - всему рисунку, или RS триггеру с прямыми входами.

Если на триггер с прямыми входами подать сигналы R=S=1 или на входы инверсного - нули, то оба выхода Q и ~Q будут установлены в 1, что противоречит аксиоме Q*~Q = 0. Поэтому такой режим, иногда называют запрещенным. Однако ничто не мешает разработчику использовать его, например для сигнализации об одновременном и нежелательном поступлении единичных сигналов на RS входы, введением дополнительной схемы И.

Временные диаграммы RS триггера с инверсными входами приведены на рис.37. Через время tзд.р.,обозначенное "-", от поступления сигнала ~S = 0 на вход элемента И-НЕ с номером 3, выход Q переключится первым, а следом через такой же промежуток времени переключится и выход ~Q. Спустя интервал времени t2 - t0 = dt на выходах установятся новые значения. Также протекает процесс при ~R = 0, но выход ~Q переключится первым. Отсюда вытекает, что изменение входных сигналов не должно происходить быстрее времени dt.

ris37.gif (2240 bytes)

Одним из применений RS триггера с инверсными входами служит схема подавления "дребезга" контактов клавиатуры. Процесс многократного размыкания и замыкания контактов при их переключении называется дребезгом. Схема и диаграммы показаны на рис.38.

ris38.gif (3189 bytes)

В момент t0 нажатия на клавишу, начинаются соударения верхнего и среднего контактов.До момента t1 сигналы ~S,~R поочередно принимают значения 1,1 и 0,1 что соответствует режимам памяти и установки в 1. При этом, естественно начальное значение Q = 1 не изменится, что и требуется. В интервале t1..t2 средний контакт находится в "свободном по- лете". Первое его касание нижнего контакта в момент t2 сбросит триггер (~S = 1, ~R = 0). До момента t3 сигналы ~S,~R поочередно принимают значения 1,0 и 1,1 что соответствует режимам сброса и памяти, т.е. Q = 0. При отпускании клавиши (момент t3) развивается обратный процесс. В результате действия схемы выходной сигнал чист от импульсных помех.

3.1.2 СИНХРОННЫЙ RS - ТРИГГЕР

Если незадействованные входы элементов И-НЕ 1 и 2 соединить вместе (рис. 36), получится синхронный RS - триггер со статическим управлением (синхронизируемый уровнем). Схема и условное обозначение приведены на рис.39.

ris39.gif (2873 bytes)

Нетрудно убедиться,что при C=0 сигнал Q=~(~Q*1)=Q, а ~Q=~(Q*1)=~Q, т.е. независимо от значений S и R, выходы сохраняют старые значения и триггер находится в режиме памяти. При C=1 он функционирует, как асинхронный RS-триггер. Триггеры со статическим управлением называют, также "прозрачными", т.к. при активном уровне синхросигнала C, информация с входов беспрепятственно проходит на выходы. Временные диаграммы приведены на рис.40.

ris40.gif (2822 bytes)

До момента времени t4 сигнал C = 1 и выходное значение определяется комбинациями сигналов R и S. В течение интервала времени t0...t1 на входе R действует 1, а сигнал S = 0, поэтому Q тоже равно 0. Начиная с момента t1 и до момента t2 R = S = 0 и действует режим памяти (Q не изменяется). В момент t2 R = 0,а S = 1 и триггер устанавливается (Q = 1). С момента окончания импульса S и до момента t3 триггер хранит эту единицу, а в момент t3 сбрасывается, т.к.R = 0, а S = 1. Аналогично можно проанализировать и все остальные состояния выхода.

3.1.3 D - ТРИГГЕР СО СТАТИЧЕСКИМ УПРАВЛЕНИЕМ

D - триггер имеет два входа: информационный вход D(аtа) и вход управления записью/запоминанием (защелкиванием) L(oad)/L(atch) - отсюда его второе имя : "защелка". Последний вход часто обозначают символом C(lock). Выходной сигнал Q принимает значение равное входному D при L = 1 и сохраняет предыдущее значение Q(t+dt) = Qt при L = 0. Таблица состояний триггера имеет вид:

ris40-1.gif (3768 bytes)

Q и X - могут принимать любые значения, но Q в пределах одной строки, неизменно. Таблица Карно дана на рис.41. Связующий импликант добавлен для получения схемы свободной от "гонок" (см. раздел - переходные процессы) и от инверсии входных величин. Q(t+dt) = ~L*Qt + L*D + D*Qt = L*D + Qt(~L + D) = L*D + Qt((~L + D)*(~L + L)) = L*D + Qt*((~L + D*~L) + D*L) = L*D + Qt*(~L + D*L) = ~(~(L*D) * ~(Qt*(D*L + ~L))) = ~(~(L*D) * ~(Qt*~(~(D*L) * L))).

Этой формуле соответствует схема и условное обозначение на рис.41, в центре и справа.

ris41.gif (4273 bytes)

Если в уравнение вместо ~(D*L) * L подставить ~(D*L) * L = (~D + ~L)*L = ~D*L получится реализация D-триггера с использованием RS- триггера, но появляется дополнительный инвертор. На рис.42 приведена схема такого триггера, дополненная асинхронными инверсными входами установки и сброса ~S и ~R (эти две перекрестные связи показаны двойными линиями).

ris42.gif (3987 bytes)

Если на вход ~S подать активный сигнал 0, а на вход ~R единицу, то Q=1 независимо от сигналов на остальных входах элемента 3. На выходе 2-го элемента по той же причине тоже единица. Три единицы встречаясь на входах элемента 4, дают на его выходе ноль, который попадая на вход 3-го элемента подтверждает его состояние. Триггер устанавливается в единицу. Причем сигналы D и L не влияют на этот процесс. В силу этого, асинхронные входы (~S и ~R) имеют наивысший приоритет. Вследствие симметричности асинхронных связей, аналогично протекает процесс при ~S=1 и ~R=0, но триггер, естественно сбрасывается (Q = 0). Уравнение синхронного D-триггера с асинхронными входами сброса/установки ~S и ~R записыватся в следующем виде:

Q(t+dt) = S + ~R * (~L*Qt + L*D + D*Qt). (27)

В этом выражении до скобок записано уравнение асинхронного RS-триггера, а в скобках уравнение D-триггера. Нетрудно увидеть, что при ~S = 0 (S = 1) и ~R = 1 все выражение равно единице (установка триггера в "1"), а при ~S = ~R = 1, RS-триггер "отключается" и схема функционирует, как D-триггер. Временные диаграммы работы триггера приведены ниже.

ris42-1.gif (3085 bytes)

С момента времени t0 до момента t1 сигнал загрузки L = 1 (на входах ~R и ~S пассивный уровень) и данные с входа D беспрепятственно проходят на выход Q (свойство прозрачности D-триггера со статическим управлением видно особенно наглядно). В момент t1 триггер становится непрозрачным, информация защелкивается и последнее значение на выходе будет храниться до прихода нулевого уровня на вход ~R в момент t2. Состояние Q = 0 не изменится даже при L = D = 1 в момент t3. Триггер установится только в момент t4 по сигналу ~S = 0. Если вернуться к рис.41 и убрать из условного обозначения триггера вход C, получится повторитель и инвертор, как на приведенном рисунке, и эта схема не будет обладать свойствами памяти.

ris42-2.gif (1448 bytes)

Поэтому асинхронных D -триггеров в природе не существует и определение "синхронный" по отношению к D-триггеру является избыточным.

3.1.4 D - ТРИГГЕР С ДИНАМИЧЕСКИМ УПРАВЛЕНИЕМ

Отличается от cтатического D-триггера свойствами L(C) входа. Запись информации происходит только в момент перехода тактового сигнала L из 0 в 1. При постоянном значении L=0, L=1 или отрицательном перепаде триггер хранит предыдущую информацию, т.е. не обладает свойством прозрачности (см.таблицу состояний 7). Промышленно выпускаемые триггеры дополняются асинхронными инверсными входами установки и сброса ~S и ~R (рис.43).

ris42-3.gif (5822 bytes)

Q и X - принимают любое значение, но Q в пределах одной строки, неизменно. На схемах прямые динамические входы D- триггера обозначаются наклонной чертой "слева - снизу - вправо - вверх" или стрелкой внутрь.

ris43.gif (2398 bytes)

Временные диаграммы триггеров с динамическим входом существенно изменяются. Действие асинхронных входов такое же, как в D-триггере со статическим управлением, поэтому на временных диаграммах они не указаны (рис.44).

ris44.gif (1988 bytes)

3.1.5 УНИВЕРСАЛЬНЫЙ JK-ТРИГГЕР

JK-триггер имеет два информационных входа J и K, тактовый динамический вход, чаще инверсный, и два асинхронных входа установки и сброса. Его таблица состояний имеет вид:

ris44-1.gif (6827 bytes)

Q и X - принимают любые значения, но Q в пределах одной строки, неизменно.Запись информации, при пассивных уровнях сигналов сброса (~R) и установки (~S), осуществляется только в моменты перехода сигнала C из 1 в 0, за исключением триггера типа ТВ15, который переключается положительным фронтом, т.е. JK -триггеры являются непрозрачными.Уравнение JK-триггера с асинхронными входами ~R и ~S:

Q(t+dt) = S + ~R ( J*~Qt + ~K*Qt ). (27.1)

Условные обозначения JK-триггера с инверсным динамическим входом приведено на рис.45. Наклонная черта "смотрит слева - направо - сверху - вниз", а стрелка повернута наружу. Универсальность JK -триггера будет продемонстрирована далее.

ris45.gif (2599 bytes)

Вторая,третья и четвертая строчки таблицы состояний идентичны соответствующим строчкам RS-триггера, если вход J уподобить входу S, а вход K - входу R. Отличие в том , что комбинация J = K = 1 определена и триггер в этом режиме приобретает очень полезное свойство (см.таблицу 8), при поступлении каждого отрицательного фронта на вход C, меняет значение сигнала на выходе, как показано на рис.46.

ris46.gif (1804 bytes)

3.1.6 T - ТРИГГЕР

Анализ временной диаграммы при J = K = 1 (рис. 46) позволяет сделать два важных вывода. Во-первых , период повторения выходных импульсов увеличился в два раза, значит триггер в этом режиме делит частоту входных импульсов на два. Во-вторых, с приходом четного импульса выходной сигнал равен 0, а с приходом нечетного равен 1, т.е. триггер является счетчиком по модулю два. Триггер со счетным входом или T - триггер промышленностью не выпускается, а реализуется с помощью динамического D , или JK - триггеров.

3.1.7 ВЗАИМНЫЕ ПРЕОБРАЗОВАНИЯ ТРИГГЕРОВ

JK триггер преобразуется в динамический D - триггер подключением инвертора к входу K (рис.47-1), при этом из четырех комбинаций сигналов: J=K=0, J=K=1, J=0 K=1, J=1 K=0 осуществлены будут две последних, т.е. синхронные установка и сброс. Если необходим прямой синхровход, к входу C подключается еще один инвертор. На рис.47-2 JK триггер включен по схеме T - триггера со счетным входом (J=K=1). Счет можно прервать, подав на один из асинхронных входов 0.

ris47.gif (2703 bytes)

D-триггер с динамическим управлением также преобразуется в T-триггер, путем введения обратной связи с инверсного выхода на вход D. Тогда Q(t+dt) = D, но D в свою очередь равно D = ~Qt и, следовательно Q(t+dt) = ~Qt, т.е. новое значение на выходе триггера является инверсией старого с каждым поступлением положительного перепада тактового импульса C (рис.48-1,2).

ris48.gif (3617 bytes)

И, наконец, любой из перечисленных триггеров может быть использован в качестве асинхронного RS-триггера с инверсными входами (рис.48-3), невзирая на остальные сигналы, что объясняется наивысшим приоритетом входов ~S и ~R.

Схема на рис.48-1 позволяет оценить максимальную частоту входных импульсов Fmax на тактовом входе D-триггера в счетном режиме. В справочниках приводится задержка активного фронта сигнала от входа C до момента установления нового значения сигнала на выходе триггера tзд.р.тр. = tba (рис.48-4). Реже приводится время опережения установки tуст = tab информационным сигналом на входе D, активного фронта сигнала C. Новый активный фронт должен поступить не ранее окончания интервала времени равного сумме этих двух временных параметров. Отсюда следует, что максимальное значение Fмакс.деления < 1 / (tзд.р.тр. + tуст). Существует еще один параметр th - время удержания (hold) информационного сигнала относительного тактового (синхронизирующего), однако этим временем обычно можно пренебречь.

3.2 РЕГИСТРЫ

Последовательностные схемы с различными комбинациями последовательного и параллельного способов записи и считывания информации. Выполняются на основе триггеров.

3.2.1 ПАРАЛЛЕЛЬНЫЕ И ПОСЛЕДОВАТЕЛЬНЫЕ РЕГИСТРЫ

Регистры с параллельной записью называются, также регистрами памяти. В них могут использоваться, как прозрачные "защелки", так и триггеры с динамическим управлением. На рис.49 приведена схема 8-ми разрядного регистра памяти с общим входом управления записью информацией и ее условное обозначение. Высокий уровень на входе C переписывает информацию с входа на выход (Qi=Di), а низкий уровень - защелкивает данные.

ris49.gif (3081 bytes)

Последовательные регистры или, как их еще называют, регистры сдвига (рис. 50) выполняются на основе триггеров с динамическим синхровходом, ( справедливо для регистров с одним тактирующим сигналом). В двухтактных можно использовать и прозрачные регистры - "защелки". Функция записи в n-разрядном регистре сдвига на D-триггерах задается в виде условий: D0=DS=x, Di=Q(i-1), где i=1,2,...,n-1. DS - вход для последовательной записи.

ris50.gif (4039 bytes)

С приходом очередного положительного фронта синхроимпульса C , сигнал с входа i-го триггера через время tзд.р. окажется на его выходе и поступит на вход следующего (i+1)-го триггера. Однако на его выход эта информация не перепишется, т.к. длительность активного фронта t0,1 меньше tзд.р. На этом процесс сдвига данных на один разряд закончится до прихода следующего положительного фронта тактового сигнала. Отсюда понятно, почему нельзя использовать триггеры со статическим управлением. Каждый раз при C = 1 вся цепочка окажется прозрачной от входа DS до выхода Q7 и значение DS = x будет записано во все триггеры.

В обозначениях регистров сдвига направление стрелки, указывающей сдвиг, условно. В разных справочниках, ее направление различно.Условно принимается, что сдвиг производится от младшего разряда к старшему. Практические схемы регистров дополняются схемами, подключаемыми к каждому триггеру и имеющими вход параллельной записи Di, общий вход разрешения записи L и общий асинхронный вход сброса ~R всех триггеров. Эти схемы подключаются к незадействованным входам ~Ri, ~Si триггеров. Данному описанию соответствует таблица истинности 9.

ris50-1.gif (3611 bytes)

Di и X - могут принимать любые значения, но Di в пределах одной строки, неизменно. Минимизируя логические функции ~Ri и ~Si с помощью таблиц Карно получим: ~Si = ~(L*Di*~R) и ~Ri = ~R*(~L + Di). Этой паре уравнений соответствует схема, показанная на рис.51, где приведено также условное обозначение регистра сдвига выполненного по такой схеме.

ris51.gif (3818 bytes)

Вход ~R обладает наивысшим приоритетом, если ~R=0, то ~Ri=0, а ~Si=1 и все триггеры обнуляются, независимо от сигналов L,Di и C. Меньшим приоритетом обладют входы L и Di. Если ~R = 1, то при L = 1, производится параллельная запись информации и Qi = Di независимо от сигнала C. И, наконец, если на входах ~R и L пассивные уровни, то ~Ri = ~Si = 1, тоже пассивный уровень и регистр хранит информацию, либо производит ее сдвиг.

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

ris52.gif (2250 bytes)

Такая схема применяется в коммуникационных портах ЭВМ (COM-порты), в микросхеме К580ИК51, а также в модемах.

3.2.2 РЕВЕРСИВНЫЙ РЕГИСТР СДВИГА

Название указывает, что сдвиг данных от разряда к разряду может производиться, как в одну сторону, так и в другую.Одна из возможных схем трехразрядного реверсивного регистра с двумя последовательными информационными входами, для сдвига информации влево DSL, и вправо DSR, с параллельными входами записи (D0..D2), синхровходом C, входом ~R установки в 0 всех триггеров и двумя входами выбора режима M1,M0, приведена на рис.53.

ris53.gif (6067 bytes)

К D-входу любого разряда, за исключением крайних, подключены, через входы 1 и 2 мультиплексора, выходы и левого и правого соседних триггеров. Если M1=0, а M0=1, то к входам D подключены первые входы мультиплексоров и информация в каждый триггер, кроме нулевого записывается от левого соседа (происходит сдвиг вправо). Вход DSR служит в этом режиме для последовательного ввода информации. Если M1=1, M0=0, то к входам D подключены вторые входы мультиплексоров и информация в каждый триггер, кроме последнего записывается от правого соседа (происходит сдвиг влево). Для последовательного ввода данных в этом режиме используется вход DSL. При M1=M0=1 происходит параллельная запись Qi=Di положительным фронтом тактового сигнала. Для хранения информации необходимо подать комбинацию M1=M0=0. В этом случае к D-входам триггеров подключатся нулевые входы мультиплексоров (на схеме не показаны). Чтобы не произошло несанкционированной записи схема ИЛИ-И запрещает в этом режиме прохождение синхроимпульсов. По такой схеме выполнен 8-разрядный регистр 1533ИР13. Реверсивный регистр может использоваться для быстрого (всего за n тактов) деления и умножения двоичных чисел на 2^n, где n-число сдвигов. Например вместо числа 5, после сдвига влево на 2 разряда, стало число 20.

ris53-1.gif (2157 bytes)

3.2.3 СИНХРОННЫЙ И АСИНХРОННЫЙ СПОСОБЫ ЗАГРУЗКИ ПАРАЛЛЕЛЬНОГО КОДА

Устройства (в том числе регистры), в которых для записи входного параллельного кода Di используется сигнал разрешения записи L, а тактовый сигнал C не используется, называются устройствами с асинхронной параллельной записью кода.

syn-asyn-load.gif (2316 bytes)

Устройства (в том числе регистры), в которых для записи входного параллельного кода Di необходим, во-первых, сигнал разрешения записи L и, во-вторых, перепад синхросигнала на тактовом входе C - называются устройствами с синхронной параллельной записью кода.

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


6. РАЗНОЕ

6.1 ПЕРЕДАТОЧНАЯ ХАРАКТЕРИСТИКА

В зависимости от схемотехники и технологии основного (базового) логического элемента (ЛЭ) существует несколько типов микросхем:

- ТТЛ(Ш) - транзисторно-транзисторная логика с диодами Шоттки или без них;

- КМОП / n-МОП - с комплементарными или n-МОП транзисторами;

- ЭСЛ - эмиттерно-связанная логика;

- МОПТШ - логика на арсенид-галлиевых МОП структурах с диодами Шоттки.

Важнейшей характеристикой базового ЛЭ, в литературе называемого также вентилем, является передаточная характеристика инвертора Uвых = f(Uвх).

Uo-Ui.gif (4144 bytes)

Uвых1/Uoh - напряжение на выходе ЛЭ, соответствующее логической единице -"1". Uвых1пор/Uoht - пороговое напряжение на выходе ЛЭ, еще соответствующее - "1". Uвых0/Uol - напряжение на выходе ЛЭ, соответствующее логическому нулю - "0". Uвых0пор/Uolt - пороговое напряжение на выходе ЛЭ, еще соответствующее - "0". Uвх1/Uih - напряжение на входе ЛЭ, соответствующее логической единице - "1". Uвх1пор/Uiht - пороговое напряжение на входе ЛЭ, еще соответствующее - "1". Uвх0/Uil - напряжение на входе ЛЭ, соответствующее логическому нулю - "0". Uвх0пор/Uilt - пороговое напряжение на выходе ЛЭ, еще соответствующее - "0". Ucc - напряжение источника питания ЛЭ.

Чем больше разница между вых/вх сигналами и соответствующими им пороговыми значениями, тем выше помехоустойчивость ЛЭ.

6.2 СРАВНИТЕЛЬНЫЕ ХАРАКТЕРИСТИКИ НЕКОТОРЫХ ТИПОВ МИКРОСХЕМ

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

tabl-p.gif (14964 bytes)

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

6.3 КОЭФФИЦИЕНТ РАЗВЕТВЛЕНИЯ (Краз,N)

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

krazv.gif (3437 bytes)

Для определения N находят отдельно две суммы входных токов для логического 0 и 1 на j-выходе. Минимальная сумма и будет Краз. m,n - целые значения.

6.4 СОПРЯЖЕНИЕ РАЗЛИЧНЫХ СЕРИЙ МИКРОСХЕМ

Внизу дана таблица соответствия некоторых отечественных и зарубежных серий микросхем, выполненных по двум наиболее распространенным технологиям КМОП и ТТЛ. В новых разработках рекомендуется применять серии КМОП (например 1554,1564,1594 и др.) и 1533 (AC, HC,ACT,HCT,FCT и ALS). Преимуществом обладают КМОП серии, число которых превышает 25 наименований по сравнению с ТТЛ(Ш) - около восьми.

   КМОП                              ТТЛ
   отеч         заруб    +Uп,В       отеч  заруб  +Uп,В
   164,176     4000(74C)  3..15;9    155   74       5
   561,564     4000A      3..15      158   74L      5
   1561        4000B      3..18      131   74H      5
   1554        74AC       2..6       555   74LS     5
   1564        54/74HC    2..6       531   74S      5
   1594           ACT     2..6       1533  74ALS    5
     -            FCT     2..6       1531  74F      5
     -         ACQ/ACTQ   2..6        -    FASTr    5
     -         FCTx/FCTxT 2..6        -    BCT      5
.....................................................

В практике иногда встречаеся ситуация,когда в одном устройстве встречаются микросхемы раличных серий и даже технологий. Например, если входная частота сигнала равна 1024МГц, то для ее измерения не обязательно использовать только ЭСЛ микросхемы с высоким быстродействием, но и с высоким потреблением. Достаточно взять только один ЭСЛ счетчик/делитель на 16, а выходной сигнал 64МГц можно считать и обрабатывать менее быстродействующими микросхемами с меньшим энергопотреблением. Передаточные характеристики ЛЭ различных серий и технологий различаются, поэтому соединять непосредственно такие ЛЭ чаще всего нельзя - требуются дополнительные элементы (схемы) сопряжения. Количество вариантов сопряжения растет в геометрической прогрессии, поэтому остановимся на КМОП и ТТЛ м/схемах (см. таблицу). Остальные варианты см. в справочниках, например сопряжение ЭСЛ - ТТЛ (Логические ИС КР1533 и КР1554."Бином".1993г.,стр.24).

t-sopr.gif (6781 bytes)

+ : обозначает, что микросхемы сопрягаются в указанном направлении, +- : сопрягаются с ограниченным коэффициентом разветвления по выходу, OKR : применяется открытый коллектор или резистор, подключенный к +5в или промежуточный элемент HCT, R,ПУ : используется резистор, подключенный к +10в или элементы 40109,14504 или преобразователь уровней LTC1045, ПУ : должны применяться элементы 74C901/2,4049/50,14504 или LTC1045. На основе таблицы внизу даются развернутые схемы сопряжения.

sopr1.gif (5176 bytes)

sopr2.gif (4184 bytes)

6.5 УПРАВЛЕНИЕ ЛОГИЧЕСКИМИ СХЕМАМИ ОТ КОМПАРАТОРОВ И ОПЕРАЦИОННЫХ УСИЛИТЕЛЕЙ

Помимо аналого-цифровых преобразователей (АЦП), работой цифровой логики могут управлять операционные усилители (ОУ) и компараторы, преобразующие аналоговый сигнал Uвх = (U+ - U-) в перепад напряжения: Uвых = "1" при (U+ > U-) и Uвых = "0" при (U+ <= U-) для компараторов и Uвых = "-1" если (U+ <= U-) для ОУ. Ниже на рисунке приведены схемы сопряжения логических элементов с компараторами с открытым коллектором и операционными усилителями.

comp-ou.gif (3244 bytes)

В схеме (а) выходной каскад компаратора и логический элемент питаются одним напряжением, поэтому согласование уровней лог.0 и 1 выполняется автоматически. В схеме (б) напряжение на выходе ОУ может значительно превышать уровни: (Uвых-) < лог.0 а (Uвых+) > Uп, но т.к. входы КМОП микросхем защищены диодами, ограничивающими входные сигналы 0 и Uп, то дополнительных внешних ограничителей не требуется. В ТТЛ(Ш) микросхемах (в) все входы имеют диоды, ограничивающие входной сигнал снизу на уровне нуля, а для ограничения входного сигнала сверху требуется внешний диод. Резисторы служат для уменьшения входных токов ЛЭ, чтобы не пережечь ограничительные диоды. В схеме (а) резистор к тому же является нагрузкой компаратора с открытым коллектором.

6.6 ОПРЕДЕЛЕНИЯ НЕКОТОРЫХ ПАРАМЕТРОВ ИНТЕГРАЛЬНЫХ МИКРОСХЕМ

Ниже приведены некоторые параметры в отечественном по ГОСТ 19480-89 и международном обозначении .

tзд.р.1,0 / tPHL - время задержки распространения при включении. Интервал времени между входным и выходным импульсами, в течение которого выходной сигнал интегральной микросхемы (ИМС) переходит от H к L уровню, измеренный на уровне 0,5 или на других заданных значениях.

tзд.р.0,1 / tPLH - то же - от L к H уровню.

tзд.р.ср / tPAV - среднее время задержки распространения.

t1,0 / tTHL - время перехода при включении ИМС. Время, в течение которого выходное напряжение ИМС переходит от H к L уровню, измеренное на уровне 0,1 и 0,9 или на других заданных значениях.

t0,1 / tTLH - то же - от L к H уровню.

tуст / tSU - время установления входного сигнала. Интервал времени между началом сигнала на одном заданном входе и активном переходе на другом заданном входе.

tу / tH - время удержания. Время, в течение которого сигнал удерживается на заданном входе после активного перехода на другом заданном входе.

Краз / N - коэффициент разветвления по выходу. Число единичных нагрузок, которые можно подключить к выходу ИМС.

Коб / Ni - коэффициент объединения по входу. Число входов ИМС, по которым реализуется ЛФ.

Uп / Ucc - напряжение источника питания ИМС.


       ВОПРОСЫ К ЭКЗАМЕНУ ПО КУРСУ "ЦИФРОВАЯ ТЕХНИКА"
         (ЭЛЕМЕНТНАЯ БАЗА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ)
1. Основные соотношения алгебры логики.
   Переключательные ЛФ F1,F6,F7,F8,F9,F10,F14. Определение И,ИЛИ,ИСКЛ.ИЛИ.
   Условные обозначения на схемах. Коэффициент об'единения.
2. Составление ЛФ.Таблица истинности.6 форм задания цифрового устройства.СДНФ.
   Функция неравнозначности ( каким еще двум ПФ эта ф-ия тождественна при двух
   аргументах).
3. Логический базис (ЛБ).Минимальный ЛБ (назвать два МЛБ). Доказательство.
4. Базовый ЛЭ И-НЕ и ЛЭ с открытым коллектором (обозначение, монтажное И),
   И-ИЛИ-НЕ и расширители (по материалам практики). Почему нельзя соединять в
   монтажное И выходы базового ЛЭ?
5. ЛЭ с тремя состояниями (cхема). Вход разрешения выходов. Обозначение.
   Функциональные (управляющие) входы (активные уровни для прямых и
   инверсных управляющих входов).
6. Коэффициент разветвления (нагрузочная способность).
7. Минимизация ЛФ с помощью ТК (см. практику).
   Задачу на ТК требуйте у преподавателя.
8. Временные хар-ки ЛЭ. Fmax. Зависимость быстродействия ЛФ
   от формы представления ЛФ (пример). Гонки (состязания).
9. Основные СС (BIN,DEC,HEX,BCD). Формула представления числа. Весовые коэфф-ты.
   Преобразования : bin2hex, hex2bin, bin2dec.
10.Дешифратор. Полный,неполный. Таблица. Схема. Обозначение. Входы OE.
   Прямые и инверсные выходы. Временные диаграммы. Применение в компъютере
   (входы ~CS).
11.Демультиплексор. Мультиплексор.
12.Шифратор. Три применения Ш.
13.-----------
14.Преобразователь кода BCD/7s (практика). Найти ЛФ для указанного сегмента.
15.-----------
16.Сумматор.Правила сложения. Таблица для xi,yi,ci -> si,ci+1.Формулы.Схема.
   Обозначение. Время задержки.ИСКЛЮЧАЮЩЕЕ ИЛИ, ИСКЛ.ИЛИ-НЕ.
   Взаимные преобразования.
17.Схема сравнения кодов .Таблица Карно,уравнение,обозначение.Каскадирование.
   Входы/выходы X>, X=, X<.
18.Схема контроля четности (нечетности).Обозначение.Таблица Карно.
   Пример применения в связи. Доказательство условия "безошибочной" передачи.
   Почему кавычки?
19.Последовательностные схемы.Триггеры (три типа входов),синхронные/асинхронные,
   статические/динамические. Асинхронный RS-триггер. Таблица. Схемы.Обозначения.
   Показать по схеме RS триггера, что будет на его выходах при R=S=1(~R=~S=0).
20.Временная диаграмма RS триггера.Что такое "дельта тэ"?
21.Схема "подавления дребезга". Синхронный RS тр-р со статическим управлением.
22.Статический D триггер.Таблица состояний.Режимы.Схема и обозначение.
   ~R~S входы. Приоритеты. Временные диаграммы. Прозрачность.
23.Динамический D триггер. Таблица состояний.Режимы.Временные диаграммы.
   Условные обозначения прямого динамического входа (2).
24.Универсальный JK триггер.Обозначение.Таблица состояний.Режимы.
   Условные обозначения инверсного динамического входа (3).
25.T триггер на основе JK и D тр-ов. Два свойства T триггера.Преобразования
   триггеров. Зависимость максимальной частоты деления Fmax от tSU и tP.
26.Регистры. Регистр памяти (второе название).Обозначение.Схема.
27.Регистр сдвига (второе название).Ограничения на тип триггеров.Схема.
   Обозначения. Направление сдвига. Приоритеты.
28.Синхронный и асинхронный способы записи параллельного кода  в посл. схемы.
29.Реверсивный регистр сдвига.Режимы. Назначение входов. Умножение и деление.
30.Счетчики. Две формулы. Q,CR,M,sumC. Типы. Правило переноса. Два вывода.
31.Асинхронный суммирующий счетчик на JK триггерах. Обозначение.
   Два способа переделки сумм. счет-ка в вычитающий.
32.Идеальные временные диаграммы счетчика. 4 вывода из них.
33.Реальные временные диаграммы счетчика."Ложные" состояния.
   Fmax счета и  Fmax деления.
34.Синхронный счетчик с параллелным переносом. Схема.Fmax счета и Fmax деления.
   Услов. обозначение. Приоритеты входов.
35.Реверсивный счетчик, схема, обозначение выводов, 1 или 2 счетных входа.
36.Применение счетчиков в качестве регистров.
37.Счетчик с модулем счета < 2^n. --- см. практику!
38.Каскадное включение счетчиков. Две задачи. Формулы расчета. --- см. практику!
39.Применение счетчиков в измерительной технике. --- см. практику!
   Три задачи.
(40.)Самый быстрый способ переноса при каскадировании синхронных счетчиков.
   --- см. практику!
41.ЦАП с матрицей R-2R.Свойства матрицы.Схема ЦАП.
   Свойства ОУ.Завсимость U от кода.
42.Передаточная характеристика униполярного ЦАП.Биполярный ЦАП.
43.Характеристика биполярного ЦАП. 4-х квадрантный ЦАП и его хар-ка.
44.АЦП последовательных приближений(поразрядного уравновешивания).Схема.
   Временные диаграммы.Обозначение.Время преобразования.Зачем 2 регистра?
45.АЦП параллельного типа.Схема.Четвертое свойство "ИСКЛ.-ИЛИ"(три остальных
   см. ворос #2).Конвейер.Tпреобр.
46.Классификация ЗУ.ЭП,ЯП.Емкость ЗУ.2^n*m.Линейная модель.
   Число ячеек,длина слова.
47.Статическое ОЗУ. Схема с двумя DC. Три  сигнала  управления.Обозначение.
47-1. Схема отдельной ЯП RAM
48.ОЗУ динамического типа. Сравнение DRAM и SRAM. Мультиплексирование адреса.
49.OTP или PROM.
50.Многократно-программируемое ПЗУ. Схема. Отличие EPROM от EEPROM.
50-1. Энергонезависимая память - NVRAM.
51.Увеличение разрядности ЯП. Схема. Обозначение.
52.Увеличение числа  ЯП.Необходимость в дешифраторе.Почему выходы м/с памяти вы-
   полняют с тристабильными выходами или с откр. коллектором?
53.Основные типы цифровых микросхем.Передаточная характеристика инвертора.
   Назвать несколько параметров из таблицы.(Uвх,Uвых,tзд,Iвх,Iвых,..)
54.Управление логическими схемами от компараторов и ОУ.
55.Передатчики,приемники и приемопередатчики. Триггер Шмитта.


       ВОПРОСЫ К ЭКЗАМЕНУ ПО КУРСУ "МИКРОПРОЦЕССОРНАЯ ТЕХНИКА"
1. Системы счисления (bin,oct,hex,bcd).Перевод из одной СС в другую.
2. Машинный формат данных.
3. Числа с фиксированной точкой.Числа со знаком (3 способа кодирования)
   и беззнаковые. Диапазон целых чисел с фиксированной точкой.
4. Числа с плавающей точкой. Диапазон,точность КВ формата.
5. ДДК (упакованный и неупакованный).Буквенноцифрвой код (КОИ,ASCII,расширенный
   и альтернативный коды). Восьмисегментный код.
5.1. Неоднозначность представления двоичных наборов.
6. Структурная схема МП с фиксированной системой команд (регистры,ALU,FIFO).
7. Регистр флагов. Перечислить все с условиями установки/сброса.
8. Процессорный блок (CPU,BD,RG,ША,ШД,ШУ). Сигналы ~RD,~WR, M/~IO,INTA,ALE,~DEN,
   DT/~R.Мультиплексирование.
9. МП система с тремя шинами.Схема. Основные элементы (ROM,RAM,PPI,PIT,PCI,
   PIC...). Роль DC.
10. Организация ВВ данных. ВВ с отображением на память и с отдельным адресным
    пространством.
11. ВВ по прерываниям (перечислить этапы ). Назначение команд STI,PUSH,IRET.
    ПДП,транзакции.
12. Программирование на ассемблере.Формат команды. Этапы.
13. 3 способа классификации команд. 5 основных способов адресации. Примеры.
14. Стек. Организация. Команды обращения к стеку. Назначение.
15. Предопределенные имена,операторы и директивы. Макросы и подрограммы.
16. Команды пересылки. Влияние на флаги. Подробно об IN и OUT.
17. Арифметические команды. Влияние на флаги.
18. Логические команды (маска) и команды сдвига. Диаграммы. Влияние на флаги.
19. Команды переходов, прерывания и управления.
20. Влияние отдельных групп инструкций на флаги.
21. ПИТ.Назначение.Назначение выводов.Определение адреса ПИТ.Формат байта
    управления.
22. Режимы работы PIT.Временные диаграммы 4-х режимов.
23. Применение ПИТ в качестве таймера. Схема. Формирование управляющих
    байтов 3-х CT.
24. Программа запуска таймера.
25. УСАПП. 3 способа обмена данными. Формат передаваемого/принимаемого кадра.
26. Схема подключения УСАПП к МП. Назначение выводов. Определение адреса.
27. 2 типа управляющих байтов IOS(PCI),байт состояния. Перечислить
    назначение отдельных битов.
28. Программа передачи сообщения.
29. Применение ПИТ для измерения временных характеристик сигналов. Способ
    измерения частоты. Схема частотомера.
30. Схема запуска счетчика в режиме 1. Вычисление управляющих байтов. Подсчет
    числа импульсов путем инверсии конечного значения. Программа.
31. ЦАП с матрицей R-2R. Схема. Зависимость Uвых от входного кода.Передаточная
    характеристика униполярного ЦАП.
32. Биполярный ЦАП. Схема. Зависимость Uвых от входного кода.Передаточная
    характеристика ,биполярного ЦАП. Четырехквадрантный ЦАП.
33. АЦП поразрядного уравновешивания. Схема. Принцип действия. Tпреобр.
34. Параллельный АЦП. Схема. Принцип действия. Tпреобр.
35. Подключение АЦП и ЦАП к МП. Адреса. Управляющий байт ППИ. Диаграммы
    работы ^/#. Программа управления #/^ и ^/#.
36. Контроллер клавиатуры и дисплея. Схема подключения К и Д. Количество клавиш.
    Количество кодов клавиш ( формат кода нажатой клавиши). Количество
    индикаторов дисплея в зависимости от режимов работы линий SLi и линий
    DSPxx.
37. Управляющий байт. Фрагменты программы .
38. Вывод данных через параллельный порт. Схема подключения и временные
    диаграммы. Алгоритм перекодировки символов. Таблица.
39. Программа вывода данных на принтер.

    Следующие вопросы по материалам лабораторных работ.

40. ППИ.Условное обозначение.Назначение выводов.
    Байт управления.Определение адреса ППИ.
41. Управление 8-ми сегментным дисплеем с помощью ППИ.Схема.
42. Программа управления дисплеем.


ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ВНЕШНИХ УСТРОЙСТВ

ЗАДАЧА 1

fcod01.gif (9561 bytes)

РЕШЕНИЕ

a) Для ответа на первый вопрос неплохо бы иметь карту памяти с символическим именем одной из ячеек - cb. Так как этого нет, то исследуем первые две команды фрагмента программы. Содержимое cb загружается в аккумулятор AL и затем выводится командой OUT в порт с двоичным адресом xxxxxx11 (b - указывает на двоичную запись, 6 бит нам пока не известны). На рисунке присутствует только одно ВУ, а именно PPI. Два младших бита шины адреса (ША) равные A1,A0 = 11 попадают на входы PPI A1,A0 - это свидетельствует, что содержимое AL будет "истолковано" PPI, как управляющий байт. Не путайте входы PPI A1,A0 и биты ША A1,A0. В некоторых задачах входы A1,A0 микросхем могут соединяться с другими линиями ША. Для режима 0 управляющий байт PPI имеет следующий формат:

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
1 | 0 | 0 | PA | PCст | 0 | PB | PCмл

Значения битов PA, PB, PCст, PCмл определяются требуемым направлением передачи информации через один из указанных портов (половины порта PC могут настраиваться на ввод или вывод раздельно). Из рисунка следует, что порт PA предназначен для ввода кода ключа, следовательно бит PA=1. Из младшей половины порта PC задействована только линия PC3 (по ней передается сигнал от датчика "дверь открыта"), поэтому бит PCмл = 1. Анализ линий портов PB,PCст показывает, что они задействованы на вывод, то есть биты PB и PCст равны 0. Поэтому ответом на первый вопрос будет код 91(HEX) = 10010001.

б) Адрес порта PB найдем из условия, что при выполнении команд IN или OUT обращенных к PPI, сигнал на входе ~CS должен быть активным, т.е. равным 0, т.к. вход ~CS инверсный. Сигнал на этом входе задан в виде уравнения неполного дешифратора, связывающего отдельные биты шины адреса (ША) по ИЛИ. Результат ИЛИ равен нулю, если ВСЕ входные сигналы ИЛИ также равны нулю. Часть битов ША использована в уравнении в инверсном виде, поэтому значения этих битов д.б. равны 1. Кроме того для порта PB биты A1,A0 = 01.

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
X | 1 | 1 | 0 | X | 1 | 0 | 1

Незадействованные (don't care) биты заполняем любыми значениями, например нулями и находим один из вариантов ответа на второй вопрос (адрес порта PB = 01100101 = 65(HEX).

в) Какие действия выполняет PPI, узнаем анализируя остальной код фрагмента программы. Команда IN AL,PA что-то вводит в аккумулятор из порта с символическим именем PA. Нетрудно догадаться, что это имя относится к одноименному порту, и следовательно вводится набранный код ключа. В следующей команде введенный код вычитается или сравнивается (что одно и тоже) с каким-то числом. Не нужно быть Ш.Холмсом, чтобы догадаться, что это число - истинное значение кода ключа (в нашем случае оно совпадает с введенным).

В этот момент для варианта, когда коды совпадают - ответ ясен, однако рассмотрим решение подробно, т.к. в случае несовпадения кодов существует несколько альтернатив. Итак, обходим команду JNZ M2, как не соответствующую нашему случаю. Следующие две команды выводят код 10(HEX) = 00010000(BIN) в порт XX. Из восьми битов этого кода какое-то действие произведет, скорее всего, бит D4=1. Из приведенных на рисунке портов этот бит D4 может попасть только на линию PA4 (где ему делать нечего, т.к. порт PA настроен на ввод кода ключа) и на линию PC4 которая передает сигнал для открывания замка. Третьим ответом будет: 2.

ЗАДАЧА 2

fdcf02.gif (9377 bytes)

РЕШЕНИЕ

а) Ответ на первый вопрос нетрудно найти зная, что адрес XX появится на шине адреса (ША) во время выполнения команды OUT. По условию задачи этот адрес должен относиться к ВУ4 и следовательно на 4-м выходе дешифратора должен появиться активный сигнал ( в нашем случае - нулевой т.к. выходы дешифратора инверсные). В соответствии с определением дешифратора на информационных входах DC должен быть подан двоичный код активного выхода т.е. a2,a1,a0 = 100(BIN) = 4. При этом на разрешающие входы должны быть активизированы e2 * e1 * e0 = 1. Входы e1 и e0 - инверсные, поэтому сигналы на них д.б. равны 0 (~e1=~e0=0). Сигнал e2=1. Подставляя найденные значения в соответствующие биты ША и заполняя незадействованные биты чем угодно, например нулями, найдем адрес = 0A(HEX).

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
X | 0 | X | 0 | 1 | 0 | 1 | 0

б) Для ответа на второй вопрос рассмотрим фрагмент программы. Команда SUB BH,BH обнуляет старшую половину регистра BX, а следующая команда заносит в его младшую половину 0. Следовательно после выполнения первых двух команд содержимое BX равно 0. Инструкция MOV AX,[SRC+BX] пересылает два байта в регистр AX из двух последовательно расположенных ячеек памяти с адресами SRC+BX и SRC+BX+1. Содержимое BX уже известно, осталось найти значение константы с именем SRC. Директива EQU присваивает SRC значение двух числовых констант, об'единенных операцией XOR (исключающее ИЛИ). Результат XOR (как и любой другой двухоперандной логической команды) легче всего найти записав константы в двоичном виде друг под другом и произведя побитовые операции по правилу - результат XOR равен 1, если равен 1 только один аргумент.

ab19 = 1010 1011 0001 1001
9770 = 1001 0111 0111 0000
__________________________
       0011 1100 0110 1001 = 3c69 результат

Отсюда следует, что SRC+BX = 3c69+0=3c69 и по команде MOV AX,[SRC+BX] в двухбайтовый регистр AX пересылаются подряд два байта из двух ячеек памяти с адресами 3c69 и 3с6a, то есть байты 20 и 5e. Причем действует правило - байт по старшему адресу (5e) помещается в старшую половину регистра AX (AH), а байт по младшему адресу (20) - в регистр AL. Инструкция XCHG AH,AL меняет местами содержимое AH и AL, а команда OUT XX,AL выводит в ВУ4 байт 5e.

ЗАДАЧА 3

fpit04.gif (11573 bytes)

РЕШЕНИЕ

a) Ответы на 2,3 и 4 вопросы можно найти определив управляющий байт PIT. Команда OUT xxxxxx11B,AL выводит управляющий байт в PIT, о чем свидетельствуют два младших бита адреса A1,A0=11. Определим содержимое аккумулятора на момент выполнения этой команды, для чего необходимо выполнить три логические команды (OR)ИЛИ, (AND)И и снова ИЛИ.

81h = 1000 0001 (al)
04h = 0000 0100 (bl)
_______________ OR
85h = 1000 0101 (al) новое значение

85h = 1000 0101 (al)
FEh = 1111 1110 (cl)
_______________ AND
84h = 1000 0100 (al) новое значение

84h = 1000 0100 (al)
10h = 0001 0000
_______________ OR
95h = 1001 0100 (al) новое значение (управляющий байт)

Отсюда находим ответ на второй вопрос: номер счетчика D7,D6=10(bin) = 2.

Так как биты D3,D2,D1=010, то счетчик работает во втором режиме (генератор периодической последовательности со скважностью Q>2) и ответом на 4-ый вопрос будет 15 ( номер временной диаграммы для этого режима).

Для второго режима выходная и входная частоты связаны соотношением Fout = Fclk/N. Коэффициент деления N в программе записывается в счетчик (во второй) в последних двух командах, причем записывается одним младшим байтом, так как биты D5,D4=01. 14 можно истолковать как 14 в двоично-десятичном коде или как 1*161 + 4*160 = 20 в 16-ном. PIT "истолкует" это число как двоичное, так как бит D0 управляющего байта = 0. Следовательно коэффициент деления N=20(DEC) и частота на выходе второго счетчика Fout2 = 1000Гц/20 = 50Гц. Это ответ на второй вопрос.

Как и в задаче 1адрес порта можно найти анализируя уравнение на входе ~CS. Биты адреса A4=A3=1, бит A7=0, для второго счетчика биты A1,A0=10(BIN)=2, остальные биты заполняем чем угодно (например нулями) и получаем один из возможных адресов второго счетчика: 1A(HEX).

ЗАДАЧА 4

fdac08.gif (8190 bytes)

РЕШЕНИЕ

a) Определяем, что устройство #/^ - есть цифро-аналоговый преобразователь, у которого Uвых = (-Uo*D)/2n, где n - число разрядов ЦАП (n=4,Uo=-48v), D- десятичный эквивалент двоичного кода на входах ЦАП. Поэтому Uвых = (3*D) вольт. Первые три команды дадут (SI)=0FE9-3=0FE6 и после инверсии (SI)=F019. Четвертая команда засылает в регистр DL значение FB(HEX)=1111 1011(BIN).

Далее отмечаем, что циклическое выполнение команд

outp: mov al,[si]
      .....
      shr dl,1
      jc outp

выполняется пока команда SHR DL,1 "выталкивает" во флаг переноса CF единицу и закончится , когда очередной сдвиг вправо содержимого DL "вытолкнет" во флаг переноса 0 и команда JC "перейти если есть перенос" не будет выполнена. Так как в коде 11111011-->CF ноль попадет в CF только при третьем проходе, то и весь цикл будет выполняться 3 раза.

Команды

outp: mov al,[si]
      inc si
      out PRT,al

выведут в порт с адресом PRT содержимое трех последовательных ячеек памяти, начиная с адреса F019, то есть 13,e7,18 (HEX). Как видно из рисунка, на входы четырехразрядного ЦАП попадут только четыре младших бита (3,7,8) через линии PX0..PX3.

Отсюда следует, что в цикле команд, начиная с метки outp, инструкцией OUT PRT,AL на выходе ЦАП будут сформированы три значения напряжения: 3*3=9 вольт при первом проходе и 3*7=21 и 3*=24 вольт при остальных проходах.

б) Адрес порта вывода известен из директивы PRT EQU 85h (1000 0101) в котором биты ША A2,A1=10(BIN). Эти биты попадают на входы A1,A0 PPI (не путать линии ША A2,A1 и входы A1,A0). Когда код на входах A1,A0=10, то активизируется порт PC и вывод идет через него.

ЗАДАЧА 5

fout11.gif (10222 bytes)

РЕШЕНИЕ

a) Найдем сначала байт управления. Цифроаналоговый преобразователь принимает код через порт PA, котороый поэтому должен быть настроен на вывод. Следовательно бит PA = 0. Дисплей отображает код, выводимый через порт PB, который также настраивается на вывод. Поэтому бит PB = 0. Слева к ППИ подключен некий прибор, который повидимому измеряет напряжение ( о чем свидетельствует "Uвх o-->"). Скорее всего порт "ДАННЫЕ" предназначен для считывания кода Uвх. Тогда младшая половина порта PC3..0 должна быть настроена на ввод и бит PCмл = 1. Относительно вывода "ПУСК" можно допустить, что прибор либо что-то через ППИ запускает в микропроцессоре, либо микропроцессор сам запускает прибор на измерение. Вторая версия явно предпочтительнее, так как опирается на конкретную схему, а не на догадки. Поэтому старшая половина порта PC должна быть настроена на вывод (бит PCст = 0) и управляющий байт = 1000 0001 = 81(HEX).

б) Анализ операнда F3(1111 0011) команды OUT показывает, что 2 младших бита адреса A1,A0 = 11, поэтому содержимое аккумулятора является для ППИ управляющим байтом. Инструкция MOV AL,[BX] извлекает его из ячейки памяти с адресом находящимся в регистре BX. Остается найти содержимое этого регистра, принимая во внимание, что BX состоит из двух половин BH,BL.

BX

BH BL

Содержимое BH на момент выполнения MOV AL,[BX] равно B6, cодержимое BL = 9C (нахождение (BH) и (BL) производится аналогичным третьей задаче способом, с учетом того, что вместо AND здесь операция XOR и порядок команд другой). Следовательно адрес =B69C.

ЗАДАЧА 6

fios12.gif (10613 bytes)

РЕШЕНИЕ

На рисунке приведена схема подключения УСАПП. Находим, что [BX] = 1770 на момент третьей команды управления, поэтому из ячейки памяти с этим адресом будет извлечен код 0100 0000 (бит D6=1), что свидетельствует о программном сбросе УСАПП. Команда ADD BX,DX складывает 1770(HEX) + 1604(HEX), на рисунке приведены начальные значения половин регистра DX (16 и 04). Результат сложения (2D74) является адресом инструкции режима (01X1XX11), о чем свидетельствует комментарий к второй команде MOV AL,[BX].

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
0 | 1 | X | 1 | X | X | 1 | 1

а) Найдем код символа. Число информационных битов указывается в битах D3,D2, но они как назло в инструкции не указаны (D3,D2=XX). Поэтому их число найдем косвенным способом. Бит D4=1, поэтому независимо от бита D5, известно, что контроль присутствует. Биты D7,D6=01 свидетельствуют, что количество стоп-битов = 1. Мысленно отбрасывая служебные биты (один крайний левый - стартовый и два крайних правых - бит контроля и стоп-бит) оставляем 6 средних информационных бит (011011). Так как на временной диаграмме они следуют "ногами вперед" слева младший, а справа старший разряд, развернем их в нормальной для текстовой записи последовательности (слева старший разряд, справа - младший). Полученный код 11 0110(BIN) = 36(HEX), является ответом на второй вопрос.

б) Далее, команда XCHG SI,DX обменивает содержимое регистров SI и DX. Начальное значение SI в задаче не приводится, но как следует из последних двух команд оно и не нужно. В момент выполнения предпоследней команды MOV AL,[SI] новое значение [SI] равно старому значению [DX], которое было равно 1604(HEX). Из ячейки памяти с этим адресом будет извлечена команда управления (000X0100). Бит D2=1 свидетельствует, что УСАПП работает в качестве приемника. Это является ответом на первый вопрос.

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

ЗАДАЧА 7

fkey13.gif (11477 bytes)

РЕШЕНИЕ

Из рисунка видно, что нажата клавиша в верхнем левом углу матрицы 4*4. В этом случае схема зафиксировала 0 в верхней строке и левом столбце матрицы. Эти нули соответственно располагаются на линиях портов PB1 и PC2. В приведенном фрагменте программы оформленном в виде подпрограммы содержатся два "бесконечных" цикла, из которых предусмотрены выходы "по условиям".

В первом цикле от метки SHIFTB: ... до комады JMP SHIFTB содержимое регистра BL проверяется командой TEST (логическое поразрядное И) с помощью маски 01(HEX)=0000 0001(BIN). При ненулевом результате выполняются остальные команды этого цикла, при нулевом (когда маска и содержимое регистра BL совпадают) инструкция JZ SHIFTC осуществляет выход из указанного цикла. Отсюда видно, что цикл будет выполняться до тех пока 0 в регистре BL не окажется в позиции занятой единицей маски (то есть один раз).

     00000001 маска
     11111101 (BL) до сдвига вправо
     -------- test
     00000001 - результат не нулевой

     00000001
     01111110 после сдвига вправо shr
     -------- test
     00000000 - результат нулевой

Таким образом, при однократном проходе первого цикла (однократное выполнение команды ADD DL,4) в регистре DL будет храниться 4.

Второй цикл SHIFTC: ... JMP SHIFTC аналогичен первому, но выполняться будет два раза.

     00000001 маска
     11111011 (CL) до сдвига вправо
     -------- test
     00000001 - результат не нулевой

     00000001
     00111110 после двух сдвигов вправо shr
     -------- test
     00000000 - результат нулевой

Таким образом, при двукратном проходе второго цикла (двукратное выполнение команды INC DL) в регистре DL будет храниться значение 4 + 2 = 6, которое и будет ответом на задачу.

ЗАДАЧА 8

fspc16.gif (12082 bytes)

РЕШЕНИЕ

а) Вычислим значение байта xx..x1. Из комментария следует, что это управляющий байт счетчика CT0. Для каждого счетчика два старших бита определяют его номер. Для CT0 биты D7,D6 = 00. Временная диаграмма на выходе OUT0 счетчика CT0 соответствует режиму 3 (генератор периодической последовательности со скважностью равной двум, то есть длительность импульса и паузы равны). Поэтому биты D3,D2,D1 для третьего режима = x11 (011 или 111). Бит D0=1 по условию (xxxxxxx1), то есть коэффициент деления N0 записывается в счетчик двоично-десятичным кодом. Загрузка коэффициента деления N0 производится, как видно из программы, одним байтом, но каким ? Если загрузка N0 производится старшим байтом, то коэффициент деления = 4000(DEC), если младшим, то = 0040(DEC). Ответ на этот вопрос получим проанализировав общий коэффициент деления N двух последовательно включенных счетчиков CT0 и CT2. N = N0*N1 = T1/(T0) = T1/(1/F0) = 0.25/(1/1280) = 320(DEC) , что значительно меньше, чем 4000. И следовательно запись N0 в CT0 должна производиться только одним младшим байтом равным 40(DEC). Поэтому биты D5,D4 управляющего байта равны 01(BIN).

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
0 | 0 | 0 | 1 | X | 1 | 1 | 1

Окончательно, находим управляющий байт: 0001 0111 = 17(HEX) или 0001 1111 = 1F(HEX).

б) YY, как следует из комментария, является коэффициентом деления N1, так как N = 320(DEC) и N0 = 40(DEC), то из N = N0*N1 находим ответ YY = N1 = 8.

в) Значение P1 в команде OUT P1,AL является адресом первого счетчика и появляется на ША в момент выполнения этой команды. Причем, естественно, на входе ~CS должен быть 0 (сигнал на линии ША A7=0), а на входах PIT A1,A0 должна быть комбинация соответствующая номеру этого счетчика, то есть 01(BIN). Следовательно биты ША A6,A5 также должны быть равны 01. Остальные незадействованные биты ША, как обычно заменяем чем угодно, например нулями.

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
0 | 0 | 1 | X | X | X | X | X

Тогда одним из возможных ответов будет P1 = 80(HEX)

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

fspc16-aux.gif (1644 bytes)

Длительность T1=0.25 сек по условию. Длительность T0 на выходе OUT0 найдем зная F0 = Fвх/N0 = 1280Гц/40 = 32Гц. То есть T0 = 1/F0 = 1/32 сек. Число импульсов на выходе ИЛИ равно T1/T0 = 0.25/(1/32) = 8 импульсов. Призма поворачивается на 0.5 градуса за один импульс, следовательно за 8 импульсов она повернется на 4 градуса.

ЗАДАЧА 9

falr22.gif (8443 bytes)

РЕШЕНИЕ

Рассмотрим первые две команды. Адрес 16(HEX) = 0001 0110(BIN) появится на ША в момент выполнения второй команды.

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
0 | 0 | 0 | 1 | 0 | 1 | 1 | 0

Так как бит A2=1, а A5=0, то будет активизирован вход ~CS программируемого интервального таймера PIT. Причем биты A4,A1 ША поступая соответственно на входы PIT A0,A1 свидетельствуют, что по команде OUT 16H,AL в ПИТ записывается управляющий байт 9E(HEX) = 1001 1110(BIN).

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
1 | 0 | 0 | 1 | 1 | 1 | 1 | 0

Расшифровка управляющего байта дает следующую информацию: D7,D6 = 10(BIN) = 2, значит для управления динамиком задействован второй счетчик (ответ на третий вопрос), запись N2 производится одним младшим байтом (D5,D4 = 01), используется третий режим (генерация периодической последовательности - D3,D2,D1 = 111) и N2 представлен двоичным кодом ( D0 = 0).

Вторые две команды выводят по адресу 61H = 0110 0001(BIN)

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1

байт 91H = 1001 0001(BIN).

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
режим 0 |  |  | PA | PCст | режим 0 | PB | PCмл
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1

Бит A2 шины адреса равен нулю, а бит A6 = 1, поэтому активизирован будет программируемый периферийный интерфейс - PPI (~CS=0). Бит PCмл управляющего байта показывает, что как и требуется в задаче линия PC2 настроена на ввод сигнала от фотоприемника.

Далее рассмотрим работу фрагмента программы:

W: IN AL,0BH;
   AND AL,04;
   JNZ W;

По-видимому этот цикл должен опрашивать состояние линии PC2 (если PC2 = 1, то луч не прерван, PC2=0 - свидетельствует о пересечении луча). Другой подходящей версии о назачении этого фрагмента придумать трудно. Тогда команда IN AL,0BH должна считывать код из порта PC (линия PC2). Рассмотрим адрес 0B(HEX) = 0000 1011(BIN).

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
0 | 0 | 0 | 0 | 1 | 0 | 1 | 1

бит A2=0, что активизирует ППИ для обращения к ней микропроцессора, но биты ША A6,A0 = 01, что соответствует чтению из порта PB, а не PC. Кроме того, бит A5 также равен 0, поэтому одновременно будет активизирован и PIT. Следовательно адрес 0B является ошибочным. Для чтения из порта PC биты ША A6,A0 должны быть равны 10(BIN). Поэтому возможным адресом порта PC вместо 0B явится адрес с битами A6=1,A5=1,A0=0,A2=0, например 60(HEX). Это первое исправление и первый ответ.

В команде AND AL,04H с помощью маски 0000 0100 проверяется бит D2, который соответствует биту PC2, то есть ошибки здесь нет. Команда JNZ W(ait) производит переход на метку W "по не нулю", то есть этот цикл повторяется до тех пор пока на линии PC2 не появится ноль, соответствующий пересечению луча. Здесь тоже нет ошибки.

Осталось рассмотреть последние две команды:

MOV AL,46H
OUT 06,AL

Переход к эти командам произойдет только если луч прервется и возникнет необходимость в подаче сигнала тревоги. Адрес 06(HEX) в команде OUT

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0

активизирует PIT, так как A5 = ~CSPIT = 0. Бит A2 = ~CSPPI = 1, то есть PPI пассивен. Биты ША A1,A4 равны битам PPI A1,A0 и равны 10(BIN) = 2 (это есть ответ на третий вопрос). Следовательно код 46(HEX) = 4*16 + 6 = 70(DEC) записывается в счетчик CT2. Так как последние две команды выполняются, как уже говорилось, только при необходимости подачи сигнала, то ничего другого как запуск второго счетчика на генерацию сигнала не придумать. Как известно в третьем режиме генерация начинается после записи коэффициента деления N2 в счетчик ( при очевидном значении сигнала GATE = 1, на рисунке поэтому даже не показанным). Следовательно N2 = 46(HEX) = 70(DEC) и есть коэффициент деления. Тогда частота сигнала на выходе динамика будет равна 200Гц/70 = 2.85Гц и услышана никем не будет. Это и есть вторая ошибка. Для ее исправления во втором ответе нобходимо привети такое значение N2, чтобы частота на выходе CT2 находилась в пределах 20Гц <= Fout2 <= 16000Гц. Например: N2 = 5 (что и является одним из возможных ответов по иправлению второй ошибки).

ЗАДАЧА 10

flin24.gif (12845 bytes)

РЕШЕНИЕ

В задаче нужно привести 6 ответов.

а) Найдем сначала XX. В команде OUT x1000x11b,AL два младших бита адреса A1,A0=11, поэтому XX является управляющим байтом. Из рисунка и справки следует, что порты PA и PB должны быть настроены на вывод,

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
режим 0 |  |  | PA | PCст | режим 0 | PB | PCмл
1 | 0 | 0 | 0 | X | 0 | 0 | 1

а порт младшая половина порта PC - на ввод. Одно из двух возможных решений (бит X=0) будет XX = 81(HEX).

Далее рассмотрим схему подключения светодиодов. Для свечения диода в строке (линейке) с номером "i" и в столбце с номером "j" необходимо на анод подать высокий потенциал, а на катод - низкий. Выходы порта PB подключены к анодам через инверторы, а выходы порта PA - к катодам через повторители, поэтомы на выходе PBj должен быть 0, а на выходе PAi также 0.

Следующие 4 команды выводят через порт PB инверсный код символа и через порт PA - логический ноль на третью линейку (на остальные линейки - единицы). Порядок вывода ( при оценке ответа ) не играет роли, поэтому примем, что команды с операндами YY,ZZ выводят код символа в порт PB, а команды с операндами VV,WW в порт PA.

б) Найдем код YY, выводимый через порт PB. ASCII код буквы Q равен 51(HEX) = 0101 0001(BIN). Как уже говорилось, перед выводом его необходимо проинвертировать - 1010 1110. Однако этого мало, так как из схемы видно, что старший бит кода PB7 выводится на крайний правый светодиод линейки, а младший PB0 - на крайний левый. Обычно (за некоторыми региональными исключениями) считываем мы код с линейки (также, как читаем) слева - направо. Поэтому в приведенной схеме в коде при выводе в линейку необходимо еще и переставить биты (зеркально отобразить). Тогда окончательно YY = 0111 0101 = 75(HEX).

в) Раз мы начали вывод с порта PC, то ZZ является его адресом. Для PB на входах A1,A0 должна быть комбинация 01, и следовательно, в момент выполнения команды OUT ZZh,AL код на линиях ША A1,A0 также равен 01. ZZ = xxxxxx01. Где взять старшие 6 битов адреса? Из второй команды фрагмента программы - OUT x1000x01,AL (два младших бита уже соответствуют порту PB). Но два бита A7,A2 по-прежнему не определены. Обращаем внимание на схему дешифратора, в которой линия A7 подключена к прямому входу разрешения OE и следовательно A7=1, а линия A2 подключена к инверсному входу разрешения OE и следовательно A2=0.

A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1

Тогда ответом будет ZZ = C1(HEX).

г) Код VV мы решили выводить через PA, поэтому на 3-ю линию этого порта необходимо вывести 0, а на остальные - 1.

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
1 | 1 | 1 | 1 | 0 | 1 | 1 | 1

Поэтому VV = F7(HEX).

д) Адрес WW - это адрес порта PA и он отличается от адреса PB, который уже найден только двумя младшими битами A1,A0 = 00. WW = C0(HEX).

е) Осталось найти номер выхода дешифратора. Для этого определим значения на линиях ША подключенных к 4-м информационным (адресным) входам дешифратора и просуммируем весовые коэффициенты соответствующих входов.

A5 | A3 | A6 | A4
8 | 4 | 2 | 1
0 | 0 | 1 | 0

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

ЗАДАЧА 11

fpic14.gif (9584 bytes)

РЕШЕНИЕ

На рисунке приведен программируемый контроллер прерываний (PIC) к которому подключены 4 источника прерываний. Как известно в ассемблере МП 580-й серии код операции CD(HEX) соответствует команде CALL. Тогда CDXXCD расшифровывается , как CALL CDXX (вызов подпрограммы с адресом CDXX - не забываем, что байты адреса в коде и в исходном тексте переставляются ). Для того, чтобы " окончательно подзапутать" решающего эту задачу старший байт адреса A15..A8 = CD(HEX) совпадает с кодом операции CD, а адреса обработчиков прерываний также имеют совпадающие байты. Ниже приведена таблица формирования контроллером младшего байта адреса XX(HEX) A7..A0 вызываемой подпрограммы. Для адресного интервала в 8 байтов между последовательно располагающимися адресами подпрограмм CALL YYXX, три старших бита команды инициализации контроллера прерываний ICW1 частично совпадают с номером ВУ подавшего запрос на прерывание.

вход запроса | Адресный интервал 4 байта |  |  |  |  |  |  |  | Адресный интервал 8 байт
 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
 | 3 старших бита ICW1 |  |  | номер ВУ |  |  |  |  | 3 старших бита ICW1 |  |  |
IR7 | A7 | A6 | A5 | 1 | 1 | 1 | 0 | 0 | A7 | A6 | 1 | 1 | 1 | 0 | 0 | 0
IRi | 1 | 0 | x | 0 | x | 0 | 0 | 0 | 1 | 0 | x | 0 | x | 0 | 0 | 0
.... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | .... | ....
IR0 | A7 | A6 | A5 | 0 | 0 | 0 | 0 | 0 | A7 | A6 | 0 | 0 | 0 | 0 | 0 | 0
 |  |  |  |  |  |  |  |  |  |  | номер ВУ |  |  |

а) Для определения адреса подпрограммы источника прерывания (3DC3, 333C, 3C33 или C33D - приведенны на рисунке) необходимо найти номер ВУ (3,7,6,4) подавшего запрос и из соответствующей этому ВУ команды JMP ZZWW извлечь адрес перехода ZZWW, который и будет ответом на первый вопрос. Адресный интервал пока не известен, поэтому попробуем расшифровать номер ВУi (i=0x0) для 4-х байтового интервала и (i=x0x) для 8-ми байтового. Комбинация битов 0x0 дает два номера 000=0 и 010=2, но ВУ с такими номерами в схеме отсутствуют. Комбинация битов x0x для 8-ми байтового интервала дает четыре номера 000=0, 001=1, 100=4 и 101=5. Только ВУ4 присутствует в схеме. Команда C3C33D перехода к обработчику прерывания (C3 - код команды JMP) или JMP 3DC3 (байты адреса переставлены) дает ответ на первый вопрос: адрес обработчика = 3DC3.

б) Формат команды ICW1 приведен ниже: биты A7,A6,A5 - три старших бита младшего байта адреса обработчика (уже найдены), F - определяет, какой интервал ипользуется 8-ми байтовый (F=0) или 4-х байтовый (F=1).

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
A7 | A6 | A5 | 1 | 0 | F | S | 0

Из решения на первый вопрос уже известно, что номер ВУ 4 для заданных начальных условий (x0x=4), может располагаться только во второй половине таблицы с адресным интервалом 8 байтов. Поэтому бит F=0. Бит S=1 свидетельствует, что используется один PIC, а S=0 - показывает, что контроллеров несколько. Из рисунка видно, что сигнал ~SP=1, следовательно PIC в схеме один и бит S=1. Тогда код ICW1 = 101 10 0 1 0 = B2(HEX).


5. ЗАПОМИНАЮЩИЕ УСТРОЙСТВА (ПАМЯТЬ)

Память может быть внутренней и внешней. Внешней называют память на магнитных, оптических дисках, лентах и т.п. Внутренняя память выполняется, чаще всего, на микросхемах. Внутренняя или основная память может быть двух типов: оперативное запоминающее устройство (ОЗУ) или ЗУ с произвольной выборкой (ЗУПВ) и постоянное ЗУ (ПЗУ). ОЗУ, кроме того, обозначается - (RAM, Random Access Memory), а ПЗУ - (ROM, Read Only Memory). Получила также распространение Флэш(Flash) память, имеющая особенности и ОЗУ и ПЗУ и энергонезависимая память (Nonvolatile - NV). Последнее название условно, так как ПЗУ и Флэш память, также энергонезависимы. В ОЗУ коды в соответствии с решаемыми задачами постоянно изменяются и полностью пропадают при выключении питания. В ПЗУ хранятся управляющие работой ЭВМ стандартные программы, константы, таблицы символов и другая информация, которая сохраняется и при выключении компъютера. ОЗУ подразделяются на статическую память (SRAM), динамическую (DRAM), регистровую (RG). ПЗУ могут быть: масочными - запрограммированными на заводе изготовителе (ROM), однократно-программируемыми пользователем ППЗУ (PROM или OTP), многократно-программируемыми (репрограммируемыми) пользователем РПЗУ с ультрафиолетовым стиранием (EPROM) или c электрическим стиранием (EEPROM,Flash). Широкое распространение нашли также программируемые логические матрицы и устройства (PLM, PML, PLA, PAL, PLD, FPGA и т.д.) с большим выбором логических элементов и устройств на одном кристалле.

В зависимости от типа ЗУ элементом памяти (ЭП) может быть: триггер, миниатюрный конденсатор, транзистор с "плавающим затвором", плавкая перемычка (или ее отсутствие). Упорядоченный набор ЭП образует ячейку памяти (ЯП). Количество элементов памяти в ячейке (длина слова) обычно кратно 2n (1,4,8,16, 32,64..), причем величины свыше 8-ми достигаются, обычно, группировкой микросхем с меньшим количеством ЭП. Количество ЭП в ЯП иногда называется длиной слова. Основными характеристиками микрсхем памяти являются: информационная емкость, быстродействие и энергопотребление. Емкость ЗУ чаще всего выражается в единицах кратных числу 210 = 1024 = 1K. Для длины слова равной биту (одному двоичному разряду) или байту (набору из восьми бит) эта единица называется килобит или килобайт и обозначается Kb или KB.

zmodel.gif (4331 bytes)

Каждой из двух в степени "n" ячеек памяти однозначно соответствует "n"- разрядное двоичное число, называемое адресом ЯП. Например, адресом 511-ой ячейки будет число 1 1111 1111(BIN) = 511(DEC) = 1FF(HEX). В программах адреса употребляются в 16-ном формате. Емкость ЗУ часто выражается произведением двух чисел 2n * m, где 2n - число ячеек памяти, а m - длина слова ячейки, например 8K * 8 (м/с 537РУ17), т.е. 8192 ячейки размером в один байт. В некоторых справочниках для этой же микросхемы приводится обозначение емкости одной цифрой 64Kбит, что никак не отражает внутреннюю организацию этой микросхемы, такую же емкость могут иметь м/с с организацией 16K * 4, 64K * 1 и т.д.

5.1 ОЗУ СТАТИЧЕСКОГО ТИПА

В качестве элемента памяти используется простейший D-триггер защелка. В микросхеме 537РУ10 каждая ЯП состоит из восьми триггеров и располагаются ячейки на кристалле в виде прямоугольной матрицы.

sram1.gif (4210 bytes)

На рисунке приведены обозначения: n-адресных входов (A0 .. An-1), DIO - двунаправленная восмиразрядная шина данных, вход разрешения выходов - ~OE, вход выбора микросхемы - ~CS и вход разрешения записи - ~WE, который часто обозначают по другому - ~WR/RD, подчеркивая этим, что при низком значении сигнала на этом входе производится запись байта, а при высоком уровне - чтение. EO, DI, WR - внутренние сигналы вырабатываемые блоком управления чтением/записью/хранением. Доступ к произвольной ЯПj производится с помощью прямоугольного дешифратора, состоящего из двух обычных дешифраторов, причем k-адресных линий заводится на дешифратор столбцов (DCc), а оставшиеся n-k линий подключены к дешифратору строк (DCr). Количество строк и столбцов будет соответственно равно 2n-k и 2k, т.е. общее количество, обслуживаемых ЯП, равно 2k * 2n-k = 2n.

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

sram2.gif (6828 bytes)

На рисунке схемы с открытым коллектором и третьим состоянием обозначены ОК и Z - соответственно. Точками выделен один (j-ый) из восьми элементов i-ой ячейки памяти. Схема И с номером i = (r * 2k + c) является одним из 2n выходных узлов прямоугольного дешифратора, где r и c - номера строк и столбцов матрицы. Инверсный вход (C)hip (S)elect - ~CS, во всех микросхемах, где он встречается, служит для приведения схемы в рабочее состояние низким уровнем сигнала на этом входе.

Если ~CS = 1 (пассивный уровень), микросхема - не выбрана и операции с ней производить невозможно. Из рис. видно, что в этом случае на L-входе D-триггера - ноль, запись невозможна и триггер хранит ранее записанный бит. Прочитать выходной код - Q тоже нельзя, т.к. на прямом входе EO разрешения выхода запрещающий нулевой сигнал и вход/выход DIOi находится в третьем состоянии.

С поступлением ~CS = 0, схемы ИЛИ-НЕ разблокируются и дальше все зависит от значений сигналов ~WE и ~OE.

В режиме записи сигнал ~WE = 0. Поэтому независимо от значения сигнала ~OE на входе схемы, внутренний сигнал EO, тоже равен 0, и чтение данных во время записи невозможно. На верхнем входе элемента Иi - единица и, если на адресных входах код An-1,An-2,...,A1,A0(BIN) = i(DEC), то сигналы на линиях Yr и Yc тоже равны 1 и триггер ij прозрачен для записи входной информации DIOj.

В режиме чтения ~WE=1, ~OE=0 и при Yr=Yc=1, выходной сигнал ~Q после инверсии элементом Иij с открытым коллектором проходит на выход DIOi.

Следует обратить внимание на то, что выходы всех 2^n j-ых элементов памяти должны подключаться к общему j-му выводу микросхемы - DIOj. Такое объединение выходов возможно с помощью схемного либо монтажного И(ИЛИ). Монтажное И(ИЛИ) не требует дополнительных схем и может выполняться на элементах с открытым коллектором или с третьим состоянием. Внутри рассматриваемой схемы j-е выходы ЭП объединены на общем резисторе Rj, служащем нагрузкой элементов И-НЕij с открытым коллектором.

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

В ЭВМ статическое ОЗУ используется в быстродействующей Cash-памяти.

5.2 ОЗУ ДИНАМИЧЕСКОГО ТИПА

В качестве элемента памяти используется микроконденсатор в интегральном исполнении, размеры которого значительно меньше D-триггера статической памяти. По этой причине, при одинаковых размерах кристалла, информационная емкость DRAM выше, чем у SRAM. Количество адресных входов и габариты должны увеличиться.Чтобы не допустить этого, адресные линии внутри микросхемы разбиваются на две группы, например старшая и младшая половина. Две одноименные k-линии каждой группы подключаются к двум выходам внутреннего k-го демультиплексора "1 в 2", а его вход соединяется с k-ым адресным входом микросхемы. Количество адресных входов, при этом уменьшается в два раза, но зато передача адреса в микросхему должна производиться, во-первых в два приема, что несколько уменьшает быстродействие, и во-вторых потребуется дополнительный внешний мультиплексор адреса.В процессе хранения бита конденсатор разряжается. Чтобы этого не допустить заряд необходимо поддерживать.

Суммируя, можно перечислить чем отличается динамическое ОЗУ от статического: 1)мультиплексированием адресных входов, 2)необходимостью регенерации хранимой информации, 3)повышенной емкостью (до нескольких Мбит), 4)более сложной схемой управления. На рисунке внизу приведено условное обозначение м/с 565РУ7 емкостью 256K*1 (218K) и способ подключения 18-ти линий адреса к девяти адресным входам с помощью 9-ти мультиплексоров "2 в 1", например трех счетверенных селекторов-мультиплексоров типа 1533КП16.

dram.gif (4007 bytes)

Элементы памяти расположены на кристалле в виде матрицы 512 * 512 = 29 * 29, управляемой двумя линейными дешифратороми строк и столбцов, каждый с 9-ю адресными входами. Если сигнал строка/столбец ~R/C на входе выбора S мультиплексора, равен нулю, то A(0..8) = Y(0..8) и в микросхему передается адрес строки. Этот адрес фиксируется отрицательным фронтом строба адреса строк ~RAS. При ~R/C = 1 на выходы мультиплексора передается адрес столбцов A(9..17), который защелкивается отрицательным перепадом строба адреса столбцов ~CAS. Вход ~WE управляет записью/ чтением. Оперативная память персональных ЭВМ - (SIMM, EDO, SDRAM..) является динамической памятью. Время обращения к ней меньше 10нс, а емкость достигает 256M в одном корпусе.

5.3 РЕПРОГРАММИРУЕМОЕ ПЗУ

Микросхемы РПЗУ допускают многократное, до сотен тысяч, циклов перепрограммирования на рабочем месте пользователя. Это свойство обеспечивается применением ЭП на МОП транзисторах с "плавающим затвором". Толщина изоляции "плавающего затвора" порядка 200 ангстрем. Информация считается стертой, если на выходах всех ЭП высокий уровень сигнала. В режиме программирования, на выбранный по адресной шине ЭП, куда необходимо записать ноль, подается импульс. Стирание осуществляется УФ-излучением (EPROM), либо электрически (EEPROM). При этом все ячейки переводятся в состояние "1". Записанная информация сохраняется в течение нескольких лет. Одной из м/с этого типа является EPROM 573РФ2 с организацией (2К * 8) и тристабильными выходами.

В Flash-памяти толщина изоляции "плавающего затвора" менее 100 ангстрем, поэтому при перепрограммировании используется туннельный эффект.

5.4 ОДНОКРАТНО ПРОГРАММИРУЕМЫЕ ПЗУ ППЗУ (PROM,OTP)

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

otp1.gif (5770 bytes)

Для любого значения адресных сигналов найдется единственный выход дешифратора "i" на котором сигнал Yi = 1, на остальных выходах будут нули. Потенциал базы j-транзистора будет зависеть в этом случае только от наличия или отсутствия перемычки fi. Если перемычка есть (fi=1), то на базе высокий уровень сигнала, транзистор открыт и выходной сигнал DOj = 0. Если перемычки нет (fi=0),то DOj=1.Пережиганием перемычек в соответствующих j-битах всех адресов, в микросхему записывается программа и/или данные. Выходной сигнал дешифратора Yi = mi, где mi-минтерм входных переменных A0..An-1.Транзистор с перемычками выполняет роль ИЛИ-НЕ, поэтому сигнал

             2^n-1                  n-1
        ~DOi =ИЛИ(fi * mi), где mi = И(/Ak).
              i=0                   k=0

причем /Ak = ~Ak, если Ak во входном наборе равна 0 и /Ak = Ak, если Ak = 1. Эти формулы соответствуют формулам СДНФ (12), поэтому с помощью ПЗУ с n-адресными входами и m-выходами можно реализовать любые m-логических функций с n-переменными (учитывая инверсию сигнала выходным каскадом).

5.5 ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ (NVSRAM)

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

  • с встроенной в микросхему литиевой батарейкой большой емкости .

  • с дополнительной EEPROM на том же кристалле, причем обмен данными между SRAM и EEPROM производится либо программно либо автоматически при падении/восстановлении напряжения

5.6 УВЕЛИЧЕНИЕ РАЗРЯДНОСТИ ЯЧЕЙКИ ПАМЯТИ (СЛОВА)

Если требуется хранить данные размером в n-бит, а длина слова ячейки памяти m-бит (n>m), то прибегают к наращиванию длины слова. Делается это путем объединения n/m - микросхем в группы, причем все одноименные входы, кроме информационных, соединяются между собой. Например, если требуется динамическая память емкостью 256K с длиной слова равной байту, то необходимо объединить 8 / 1 = 8 микросхем типа 565РУ7, как это показано на рис.

bitplus.gif (3862 bytes)

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

5.7 УВЕЛИЧЕНИЕ КОЛИЧЕСТВА ЯЧЕЕК ПАМЯТИ

Увеличение адресного пространства ЗУ в 2k раз требует столько же микросхем памяти и "k" дополнительных линий адреса, к уже имеющимся "n"линиям An+k-1, . .An+0, An-1, An-2, ... A1, A0. Дополнительные адресные линии An+k-1 .. An+0 должны разбивать требуемое адресное поле на 2k неперекрывающихся интервалов, покрываемых объемом памяти каждой отдельной микросхемы. Для решения этой задачи требуется дополнительный дешифратор "k в 2k". Например, если нужен блок ПЗУ емкостью 2K*4, то потребуется 8 микросхем 256*4 типа 541РТ1 и один дешифратор "3 в 8", как показано на рис.

byteplus.gif (4817 bytes)

Одноименные j- е выходы микросхем с открытым коллектором соединены с общим нагрузочным резистором Rj. Три старших дополнительных бита адреса A10,A9,A8 выбирают одну из восьми микросхем, а восемь младших бит адреса выводят содержимое одной из 256-ти ячеек памяти на шину данных (ШД).Пусть на шину адреса (ША) поступил код A10..A0 = 11000011010 = 61A. На всех выходах дешифратора, кроме шестого (A10..A8 = 110 =6) будет высокий уровень. Нулевой сигнал ~Y6 = 0 на входе ~OE1 шестой микросхемы разрешит прохождение записанной информации на выходы, а код 1 1010 = 1A(HEX) = 26(DEC) на адресных входах A7..A0 извлечет содержимое 26-ой ЯП и поместит его на четыре линии шины данных (ШД).

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

5.8 ПРОГРАММИРУЕМЫЕ ЦИФРОВЫЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ

Проектирование современных цифровых устройств невозможно без использования программируемых цифровых ИС (ПЦИС). Они обладают следующими преимуществами перед дискретными элементами: 1)Уменьшение габаритов устройства, 2)Увеличение быстродействия, 3)Повышение надежности, 4)Защита от копирования результатов разработки, 5)Беспрецедентная скорость разработки и модификации проекта, 6)Разработку и модификацию устройства может вести потребитель на своем рабочем столе.

СТРУКТУРА ПЦИС

Схемные характеристики большинства ПЦИС основаны на реализации диз'юнктивной нормальной формы (ДНФ) с помощью элементов И,ИЛИ,ИСКЛЮЧАЮЩЕЕ ИЛИ и инверторов. В состав ПЦИС входят также триггеры, мультиплексоры конфигурации буферы (прямые, инверсные, тристабильные) и программируемые перемычки. Потребительские свойства разрабатываемой потребителем схемы складываются, т.о. из жесткой топологии, закладываемой на заводе и из схемных особенностей проекта программируемых разработчиком (потребителем). Основой ПЦИС является набор матриц И и ИЛИ и макроячеек, включающих триггеры, буферы входов/выходов, элементы управления и обратные связи. Укрупненная структурная схема ПЦИС показана на рис.1.

pld1.gif (2523 bytes)

Входы элементов И матрицы И принято обозначать на схемах (не по ГОСТ'у между прочим) как на рис.2 слева. В середине то же по ГОСТ.

pld2.gif (2490 bytes)

В незапрограммированном виде пермычки находятся на месте. Удаляя (значок X) с помощью программатора перемычки можно получить любое логическое произведение (терм) входных переменных. На рис.2 перемычка от линии x1 до соответствующего входа И удалена. Обычно на входы матриц И заводятся не только прямые, но и инверсные значения переменных. Выходы матриц И, как и положено в ДНФ подключаются к элементам ИЛИ. Внимательно изучите рис.3 и особенно обозначение пересечений без соединения и с соединением проводников.

pld3.gif (4284 bytes)

Выход элемента ИЛИ подключен через управляемый инвертор/повторитель, выполненный на ИСКЛ.ИЛИ (=1), во-первых к входу триггера, во-вторых через мультиплексор MUX1 и управляемый тристабильный буфер к выходу.

pld4.gif (4446 bytes)

Если буфер переведен в третье состояние сигналом E, внешний вывод микросхемы "выход/вход" может служить входом. Через MUX2, также может заводиться сигнал обратной связи с выхода триггера. Cигналы от перемычек F(use)1 и F(use)2 поступают на управляющие входы мультиплексоров "2->1" обеспечивая подключение одного из двух входов к единственному выходу, каждого MUX. Программирование ПЦИС под конкретную задачу может многократно производиться конфигурированием перемычек с помощью специальных программаторов под управлением САПР.

5.9 ЗАДАЧИ И УПРАЖНЕНИЯ

Для приведенной на рисунке микросхемы памяти дайте ответ на три вопроса: а) какой тип памяти изображен на рисунке - ram или rom? б) укажите емкость памяти (количество ячеек) в) чему равна длина слова у этой микросхемы в битах?

ramz.gif (1533 bytes)

Пояснения : 1)Микросхема имеет три управляющих входа: выбор микросхемы ~CS, разрешение выходов ~OE и разрешение записи ~WR, последний вход и определяет принадлежность микросхемы к ОЗУ (ram). 2)Наличие двух адресных входов свидетельствует о 2^2 ячейках памяти. 3)Две линии данных соответствуют длине слова = 2

fromxx.gif (16626 bytes)

Найдите логическую функцию на выходе Y матрицы И,ИЛИ ПЦИС.

pldzd1.gif (1921 bytes)

Пояснения : По принятым в зарубежной литературе обозначениям пред нами две трехвходовых схемы И выходами, подключенные к двум входам ИЛИ. X - обозначает отсутствие перемычки в данном месте. Поэтому ответ: x0*x2 + x0*x1.

Найдите логическую функцию на выходе Y.

pldzd2.gif (2618 bytes)

Пояснения: На рисунке показаны только задействованные элементы И в каждой макроячейке. Выходной буфер у каждой макроячейки инвертирующий. Поэтому верхняя матрица И,ИЛИ реализует функцию Yi = ~(~b * ~c * ~d * ~e * ~f * ~g * ~h). Сигнал Yi является входным для нижней схемы И, но не поступает на вход верхней, так как сответствующая перемычка разомкнута. Далее продолжите решение самостоятельно. Не забывайте про соотношение двойственности (Де Моргана)!

Ответ: ~(b + c + d + e + f + g + h)