Автор: Пользователь скрыл имя, 23 Ноября 2012 в 10:03, курс лекций
Конечные автоматы и такие связанные с ними конструкции как линейные грамматики и регулярные выражения относятся к важнейшим понятиям информатики. Различные варианты конечных автоматов и близкие им математические объекты служат для описания и анализа технических устройств, различных систем и процессов, программ и алгоритмов. Теория автоматов является одним из старейших разделов теоретической информатики.
В читаемом курсе рассматриваются цифровые автоматы как теоретическая основа проектирования аппаратных средств ЭВМ последовательного типа. В этом случае принято рассматривать цифровой автомат как совокупность операционного автомата (исполнительного устройства) и управляющего автомата (собственно конечного автомата), образующих операционное устройство.
Теория автоматов. Введение.
Теория автоматов. Арифметика ЦВМ
Теория автоматов. Системы счисления
Теория автоматов. Конечные цифровые автоматы.
Ответ: [C]д=1.0011 0001. Четыре старших разряда произведения находятся в сумматоре, а четыре младших – в РгВ.
Схема Горнера в этом случае имеет вид
[C]o=[A]o´(b12-1+b22-2+…+bn2-n – SgB + SgB2-n)=
=SgB[`A]o+2-1(b1 [A]o+2-1 (b2[A]o+…+2-1(bn [A]o+SgB[A]o+0))…),
(7)
При сложении в обратном коде единица, спадающая со знакового разряда подсуммируется в младший разряд произведения в том же такте. Поэтому в этой схеме требуется двойная точность сумматора и РгА. Рассмотрим пример умножения, приняв следующие значения операндов: А=-0.1101, В=-0.1011. В соответствии с изложенным выше, коды операндов имеют вид:
[A]o=11.0010 1111, [B]o=1.0100. Процедура умножения в соответствии с алгоритмом (7) приведена в таблице 4.
Таблица 4 Умножение на ДСОК, схема 2
СМ |
РгВ |
СТ |
Комментарии |
11.1111 1111 + 11.0010 1111 11.0010 1110 + 1 11.0010 1111 |
1.0100 |
4 |
СМ:=0, РгА:=[A]om|1111, РгВ:=[B]o, СТ:=4, |
SgB=1? Да Выполняем первую коррекцию. СМ:=СМ+РгА, | |||
11.1001 0111 |
1 1.010 |
3 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1, |
11.1100 1011 + 11.0010 1111 10.1111 1010 + 1 10.1111 1011 |
11 1.01 |
2 |
СТ=0? НЕТ РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1, |
СТ=0? НЕТ РгВ[4]=1? ДА СМ:=СМ+РгА, | |||
11.0111 1101 |
111 1.0 |
1 |
Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1, |
11.1011 1110 +00.1101 0000 00.1000 1110 + 1 00.1000 1111 |
1111 1. |
0 |
СТ=0? ДА Проверяем значение знака РгВ. РгВ[4]=1? ДА Выполняем коррекцию СМ:=СМ+Рг`А, |
Ответ: [C]o=00.1000 1111.
Примечания.
Схема Горнера в этом случае имеет вид:
[C]д = [A]д (b12-1+b22-2+…+bn2-n-1)=( [A]д *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=
=[A ‘]д* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=
=SgB([ `A ‘]д+b1([A ‘]д 2n-1)+b2([A ‘]д 2n-2 )+…+bn-1([A ‘]д 2)+bn [A ‘]д
(8)
Из выражения (8) следует, что
Пример. Пусть А=0,1101, В=-0,1011. С учетом сказанного выше. РгА после сдвига на n-4 разряда влево содержит число 0,0000 1101, [B]д =1.0101. Процедура выполнения умножения приведена в таблице 5.
Таблица 5 Умножение на ДСДК, схема 3
СМ |
РгА |
РгВ |
СТ |
Комментарии |
0.0000.0000 |
0.0000.1101 |
1.0101 |
4 |
СМ:=0, РгА:= [A ‘]д, РгВ:= [В]д, СТ:=4, |
+0.0000.1101 0.0000.1101 |
РгВ[4]=1? ДА СМ:=СМ+РгА, | |||
0.0001 1010 |
-1.010 |
3 |
СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
0.0011 0100 |
--1.01 |
2 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика. | |
0.0000 1101 +0.0011 0100 0.0100 0001 |
РгВ[4]=1? ДА СМ:=СМ+РгА, | |||
0.0110 1000 |
---1.0 |
1 |
СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
0.1101 0000 |
----1. |
0 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика. | |
0.0100 0001 +1.0011 0000 1.0111 0001 |
СТ=0? ДА Проверяем значение знака В. Так как SgB=1, выполняем коррекцию. СМ:=СМ+Рг`А, |
Ответ: [C]д=1.0111 0001. Или в естественной записи С=-0.1000 1111.
Схема Горнера в этом случае имеет вид:
[C]о = [A]о (b12-1+b22-2+…+bn2-n-SgB +SgB 2-n)=
( [A]o *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=
=[A ‘]o* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=
=SgB([ `A ‘]o 2n + b1([A ‘]o 2n-1)+b2([A ‘]o 2n-2 )+…+bn-1([A ‘]o 2)+bn [A ‘]o +SgB [A]o.
(9)
Из (9) заключаем, что в этом случае вначале выполняется коррекция +SgB[A]o, а затем все происходит так же, как в предыдущем примере. Пример выполнения умножения приведен в таблице 6.
Таблица 6 Умножение двоичных чисел на ДСОК, схема 3
СМ |
РгА |
РгВ |
СТ |
Комментарии |
1.1111 1111 +1.1111 0010 1.1111 0001 + 1 1.1111 0010 |
1.1111 0010 |
1.0100 |
4 |
СМ:=0, РгА:= [A’]o, РгВ:=[B]o, СТ:=4, |
SgB=1?ДА Выполняем первую коррекцию. СМ:=СМ+РгА, | ||||
1.1110 0101 |
-1.010 |
3 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
1.1100 1011 |
--1.01 |
2 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
1.1111 0010 +1.1100 1011 1.1011 1110 |
РгВ[4]=1? ДА СМ:=СМ+РгА, здесь уже подсуммирована единица, спадающая со знакового разряда. | |||
1.1001 0111 |
---1.0 |
1 |
СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
1.0010 1111 |
----1. |
0 |
РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1, | |
1.1011 1110 +0.1101 0000 0.1000 1111 |
СТ=0? ДА РгВ[4]=1 ДА Выполняем вторую коррекцию СМ:=СМ+Рг`А, Конец. В сумматоре находится результат умножения. |
Схема Горнера в этом случае имеет вид:
[C]д = [A]д (b12-1+b22-2+…+bn2-n-1)=( [A]д *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=
=[A ‘]д* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=
=bn[A’]д + 2(bn-1[A’]д + … + 2(b1[A’]д + 2(SgB [`A’]д + 0))…)
(10)
Пример. Пусть А=-0.1101, В= - 0.1011. Процесс вычислений приведен в таблице 7.
Таблица 7 Умножение двоичных чисел с фиксированной запятой на ДСДК, схема 4
СМ |
РгВ |
СТ |
Комментарии |
0.0000 0000 +0.0000 1101 0.0000 1101 |
1.0101 |
4 |
СМ:=0, РгА:=[A’]д , РгВ:=[B]д, СТ:=4, |
SgB=1? ДА Коррекция: СМ:=СМ+Рг`А, | |||
0.0001 1010 |
0101 1. |
СМ:= R(1) CM, РгВ:=СдвЦ L(1) РгВ, (циклический сдвиг), | |
0.0011 0100 |
101 1.0 |
3 |
РгВ[0]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ СМ:= R(1) CM, РгВ:=СдвЦ L(1) РгВ, (циклический сдвиг), СТ:=СТ-1, |
0.0011 0100 +1.1111 0011 0.0010 0111 |
РгВ[0]=1 ДА СМ:=СМ+РгА, | ||
0.0100 1110 |
01 1.01 |
2 |
РгВ[0]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ СМ:= R(1) CM, РгВ:=СдвЦ L(1) РгВ, (циклический сдвиг), СТ:=СТ-1, |
0.1001 1100 +1.1111 0011 0.1000 1111 |
1 1.010 |
1 |
РгВ[0]=1 ДА СМ:=СМ+РгА, |
0 |
СТ:=СТ-1, | ||
СТ=0? ДА Выход из цикла. Результат умножения на сумматоре, С=0.1000 1111. |
Схема Горнера в этом случае имеет вид:
[C]о = [A]о (b12-1+b22-2+…+bn2-n-SgB +SgB 2-n)=
( [A]o *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=
=[A ‘]o* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=
= SgB [A’]o +bn[A’]o+2(bn-1[A’]o+…+2(b1[A’
(11)
Пример Примем А=-0.1101, В=-0.1011. Тогда [A’]o=1.1111 0010, [B]o=1.0100. Микрооперации, выполняемые при умножении, представлены в таблице 8.