Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Скобцовы Моделирование и тестирование

.pdf
Скачиваний:
97
Добавлен:
03.03.2016
Размер:
3.61 Mб
Скачать

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

Определим базисные логические операции И, ИЛИ, НЕ для

комбинированных характеристических переменных.

Определение инверсии для характеристических переменных следует

из определения инверсии в алфавите B16 (Табл.3.3, 3.5).

xD = xD, xD= xD , x1 = x0 , x0 = x1,

xG1 = xG0 , xG0 = xG1 , xF1 = xF0 , xF0 = xF1 .

 

 

 

Рассмотрим для конъюнкции

f = (x1

x2

... xn ) характеристические

функции f G1 , f F1 , f G0 , f F0 . Покажем, что

 

 

f G1 = (x

x

2

... x

n

)G1 = xG1

xG1 ... xG1

(3.1)

1

 

 

 

1

2

n

 

Доказательство:

Докажем по индукции. Поскольку операция бинарная, то докажем

верность

представления

для

n=2,

т.е.

что

(x

x

2

)G1 = xG1

xG1

. По

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

2

 

определению 3.1 соответствующей комбинированной переменной

 

(x x

2

)G1

= (x x

2

)D (x x

2

)1 .

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Воспользовавшись формулами

f D ,

f 1

для вентиля И (табл.3.5) получаем

(x x

2

)G1

= (x x

2

)D (x x

2

)1=xD

x1

x1

xD xD xD

x1

x1

=

 

1

 

 

 

1

 

 

1

 

 

1

2

1

2

1

 

2

1

2

 

 

=xD (xD

x1 ) x1 (xD x1 ) = (xD

x1) (xD x1 ) = xG1

xG1.

 

 

1

 

2

 

 

2

 

 

1

2

2

 

1

 

1

2

2

1

 

2

 

 

 

Пусть равенство верно для n=k, то есть,

 

 

 

 

 

 

 

 

 

(x x

2

... x

k

)G1

= xG1

xG1

... xG1.

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

2

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

Покажем выполнение равенства (3.1) для n=k+1. Для этого обозначим

g = x

x

2

... x

k

.

Согласно

доказанному выше (g x

k+1

)G1

= gG1

xG1 .

 

1

 

 

 

 

 

 

 

 

 

 

 

k+1

Поскольку по предположению для n=k равенство верно, то имеем

 

(g x

k+1

)G1 = gG1

xG1

= xG1 xG1

... xG1

xG1 .

 

 

 

 

 

 

 

 

 

 

k+1

1

2

k

k+1

 

 

 

 

101

Значит, (x1 x2 ... xk xk+1)G1 = x1G1 x2G1 ... xkG1 xk+G11.

Следовательно, для любого натурального n ≥ 2 равенство (3.1) верно.

Доказательство окончено.

Для характеристических функций f F1, f G0 , f F 0 верны следующие выражения

f F1 = (x

x

2

 

... x

n

)F1 = xF1 xF1 ... xF1 ,

 

(3.2)

 

1

 

 

 

 

 

 

 

 

 

 

1

2

 

n

 

 

f G0 = (x

x

2

 

... x

n

)G0 = xG0

xG0

... xG0 ,

 

(3.3)

 

1

 

 

 

 

 

 

 

 

 

 

1

2

 

n

 

 

f F 0 = (x

x

2

... x

n

)F 0 = xF 0

xF 0

... xF 0 .

 

(3.4)

 

1

 

 

 

 

 

 

 

 

 

 

1

2

 

n

 

 

Для дизъюнкции f = x1 x2 ... xn

 

имеем следующие выражения:

 

f

G1 = (x

 

x

2

... x

n

)G1 = xG1 xG1

... xG1

,

(3.5)

 

1

 

 

 

 

 

 

 

1

2

 

n

 

 

f

F1 = (x

 

x

2

... x

n

)F1 = xF1 xF1

... xF1

,

(3.6)

 

1

 

 

 

 

 

 

 

1

2

 

n

 

 

f

G0 = (x

x

2

... x

n

)G0

= xG0 xG0

... xG0 ,

 

(3.7)

 

 

1

 

 

 

 

 

 

 

 

 

1

2

 

n

 

 

f

F 0 = (x

 

x

2

... x

n

)F 0 = xF 0 xF 0

... xF 0 .

 

(3.8)

 

1

 

 

 

 

 

 

 

 

 

1

2

 

n

 

 

Доказательства формул (3.2)-(3.8) аналогичны доказательству формулы

(3.1). Необходимо отметить, что выражения (3.1)-(3.8), определяющие

характеристические функции f G1, f F1, f G0 , f F 0 для логических

вентилей И, ИЛИ имеют линейную сложность, что существенно упрощает вычисления при моделировании и построении тестов логических схем.

На основе комбинированных характеристических переменных получаем линейные выражения прямых характеристических функций f D, f D для вентилей И, ИЛИ, позволяющие снизить число вычислений при

генерации тестов вследствие их линейности:

( x1 x2

n

 

n

 

 

... xn ) D = V ( xiD

x Gj

1 ) .

(3.9)

 

i=

1

j = 1,j i

 

 

Доказательство:

Докажем по индукции. Докажем, что для n=2 формула (3.9) верна

102

(x1 x2 )D=x1D x2G1 x1G1x2D .

По формуле f D для вентиля И из таблицы 3.5 имеем

(x1 x2 )D = x1D x12 x11x2D x1D x2D=x1D (x2D x12 ) x2D (x1D x11) =

=x1D x2G1 x2D x1G1.

Таким образом, для n=2 выражение (3.9) характеристической функции f D

верно. Пусть представление верно для n=k, то есть,

(x1 x2

 

 

 

 

 

 

k

 

 

 

 

k

 

 

 

 

 

 

 

... xk )D = V(xiD

 

xGj 1) .

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

j =1,j i

 

 

 

 

 

Пусть n=k+1. Обозначим g=x1 x2 ...

xk , тогда x1 x2 ...

xk xk +1 = g xk +1

и (x

 

x

2

... x

k

+1

)D

= (g x

k +1

)D

. Поскольку для n=2 и n=k равенство (3.9)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

верно, то имеем

 

 

 

 

 

 

 

 

 

 

 

 

 

(x x

2

... x

k +1

)D = (g x

k +1

)D = g D xG1

gG1xD

=

 

1

 

 

 

 

 

 

 

 

 

 

k+1

k+1

 

 

k

 

 

 

 

 

k

 

 

 

xkG+11

xkD+1 (x1 x2 ... xk )G1 =

 

= (V(xiD xGj 1))

 

i=1

 

 

 

j =1,j i

 

 

 

 

 

 

 

 

 

 

 

 

 

=xD

(xG1xG1

... xG1xG1 ) xD

(xG1xG1

... xG1xG1 )

 

1

 

 

2 3

 

 

 

k k+1

 

 

 

2

 

1

3

 

k k+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k+1

k+1

... xkD (x1G1x2G1 ... xkG-11xk+G11) xk+D 1(x1G1x2G1 ... xkG1) = V(xiD xGj 1) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

j =1,j i

k+1

Таким образом, получили (x1 x2 ... xk +1)D = V(xiD

i=1

k+1

xGj 1) . j =1,j i

Поэтому для любого натурального n ≥ 2 формула (3.9) верна.

Доказательство окончено.

По аналогии получаем:

 

x2

 

n

n

 

 

 

(x1

... xn )D= V(xiD

xFj

1) ,

(3.10)

 

 

 

i=1

j =1,j i

 

 

 

 

x2

n

n

 

 

 

(x1

... xn )D = V(xiD xFj

0 ) ,

(3.11)

 

 

 

i=1

j=1,ji

 

 

 

 

 

 

 

 

 

 

103

n

(x1 x2 ... xn )D= V(xiD

i=1

n

 

 

xGj

0 ) .

(3.12)

j =1,j i

Полученные функции назовем комбинированными характеристическими функциями. Сравним характеристические функции f D, f D для вентилей И, ИЛИ в табл.3.5 и формулы (3.9)-(3.12). В разложениях, приведенных в таблице, наблюдается нелинейная зависимость количества термов, равного

2n −1, от числа переменных n. Каждый из термов соответствует пути

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

необходим перебор 2n −1 вариантов. В выражениях же (3.9)-(3.12)

количество термов сокращено до n. То есть, перебор сокращен до n

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

сложность вычислений в (3.9)-(3.12) существенно сокращается по сравнению с f D, f D , представленными в табл.3.5.

3.7Многозначные модели функционального уровня

3.7.1Многозначные функции

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

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

обобщенное

определение

многозначной

функции. В

разделе 3.1

мы

использовали

два способа

расширения

многозначного

~

из

алфавита A

исходного

А.

Соответственно рассмотрим два способа расширения

104

 

 

 

 

 

 

~ = ~ ~ f x1 & x2
~ = U f ({0 1},{1}) { f (0,1)

многозначных функций из А на

~

Пусть

 

f F -

m-местная функция

A .

 

f (x1,x2 ,..., xm ) ,

определенная

на

алфавите

 

А.

При

первом

способе

расширения А на

~

 

(

~

- подмножество декартового произведения)

A An

A

функция f

 

 

 

 

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

 

 

 

распространяется на алфавит A следующим образом [51]:

 

~

~

~

 

 

~

 

 

 

 

, a21

,..., am1 ),

 

 

 

 

 

 

 

 

 

 

 

 

f

(a1

, a2

,..., am ) = ( f (a11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (a12 , a22 ,..., am2 ),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (a1n , a2n ,..., amn )) ,

 

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

~

 

 

 

A для 1 ≤ i n .

 

 

 

 

 

 

 

где ai = (ai1, ai1,..., ain ) A и aij

 

 

 

 

 

 

 

 

Например,

в алфавите

 

2

для многозначной функции

~

 

~

~

 

B2

f

= x1

& x2

при значениях

~

1

~

=

1

имеем

 

 

1,1

 

 

f (1,1)

1

 

 

x

=

,

x

2

 

 

f =

 

=

 

=

. При

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

0

 

 

 

 

 

1,0

 

f (1,0)

0

 

 

втором

способе

расширения

 

алфавита

 

 

~

 

образует

некоторое

 

А

( A

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

f (x ,x

 

,..., x

 

) распространяется на новый

подмножество A 2A ) функция

2

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

алфавит A следующим образом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~

~

~

 

 

~

 

 

 

 

, a21

,..., am1) U f (a12 , a21,..., am1) U...

 

 

 

 

 

f (a1

, a2

,..., am ) = { f (a11

 

 

 

 

U f (amn , a21,..., am1) U f (a11, a22 ,..., am1 ) U f (a11, a21,..., am1 ) U...

 

 

 

f (a1n , a2n

,..., amn )},

где

~

= {ai1 U ai2

U...aim } A и

~

A

для

 

 

a j

aij

 

 

 

 

1

 

2

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

i =

 

,

j =

 

. Очевидно,

здесь в правой части содержатся ni

 

1,m

1,n

значений

i=1

f для всевозможных значений аргументов. Например, в алфавите Ез для

при x1 = u, x2 = 1 имеем

f (1,1)} = {0,1} = u .

~

В том случае, когда новый алфавит A получается из исходного А путем комбинирования двух рассмотренных способов расширения

105

алфавитов,

~ ~

~

~

также строится с помощью

функция f (x1

, x2

,..., xm )

комбинации приведенных выше методов построения функций. Например,

в алфавите Е5 который, как было показано выше, образуется из В2

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

~

 

~

~

 

при значениях

~

~

 

 

 

 

 

 

 

для f

= x1

& x2

x1 =1, x2 = E :

 

 

 

 

 

 

 

~

 

 

~

1 0 0 1

=

f (1,0)

 

f (1,0)

 

f (1,1)

 

=

 

f (1, E) =

f

, ,

,

 

 

U

 

U

 

 

 

 

 

 

 

1 0

1 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (1,0)

 

f (1,1)

 

f (1,1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

0

0 1

= E.

 

 

 

 

 

 

 

 

 

 

 

U

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1 1

 

 

 

 

 

 

 

 

 

 

 

 

 

Фактически

 

здесь

вычисляется функция

f для

всевозможных

двоичных значений, порождаемых многозначными аргументами. Можно

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

функций дает те же результаты в алфавите В16, что и рассмотренное в предыдущем разделе представление многозначных функций с помощью компонент f 0 , f D, f D , f 1 , приведенных в таблице 3.5.

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

Рассмотрим пример вычисления арифметической суммы S=А+В в

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

В, и затем проанализировать результаты.

~

 

1 0

0

1

1 0 1

Пусть A = 1u01

=

U

U

U и

 

 

1 0

1

0

1 0 1

~

= 01E0

0 1 0

0

1 0

B

=

U

1

U .

 

 

0 1 0

1 0

106

Генерируя всевозможные двоичные операнды для А и В (путем

выбора различных столбцов для значений ai

 

и bi,

равных

 

Е, Н,

u),

получаем:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S =

~

~

= 1u01+

01E0 =

1 0 0 1 1 0 1 0 1 0 0 1 0

=

A

+ B

 

U

U U

 

+

U

U

 

 

 

 

 

 

 

 

 

1 0 1 0 1 0 1 0 1 0 1 1 0

 

 

 

 

 

 

 

 

 

0 1 0 0

1 0 0 1

 

0 1 0 0

 

1 0 0 1

 

 

 

 

=

 

 

 

 

+

 

 

U

 

 

 

 

+

 

 

 

U

 

 

1 0 0 1

 

 

0 1 0 0

 

1 0 0 1

 

0 1 1 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0 1

+

0 1 1 0

 

 

1 0 0 1

 

 

0 1 0 0

 

 

 

U

 

 

 

 

 

U

 

 

 

+

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0 1

 

 

0 1 1 0

 

 

1 1 0 1

 

 

0 1 0 0

 

 

 

1 0 0 1

+

0 1 0 0

1 0 0 1

 

0 1 1 0

 

 

 

U

 

 

 

 

 

 

U

 

 

 

+

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 0 1

 

 

0 1 1 0

 

 

1 1 0 1

 

0 1 1 0

 

 

 

 

1 1 0 1

 

 

0 1 0 0

1 1 0 1

+

0 1 0 0

 

U

 

 

 

+

 

 

 

U

 

 

 

 

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 1 0 0

 

 

0 1 0 0

1 0 0 1

 

 

0 1 1 0

 

 

1 1 0 1

+

0 1 1 0

 

 

1 1 0 1

+

 

0 1 0 0

 

 

U

 

 

 

 

 

U

 

 

 

 

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0 1

 

 

0 1 1 0

 

 

1 1 0 1

 

 

 

0 1 0 0

 

 

1 1 0 1

 

 

0 1 0 0

 

 

1 1 0 1

+

 

0 1 1 0

 

 

 

U

 

 

 

 

+

 

U

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 0 1

 

 

0 1 0 0

 

 

1 1 0 1

 

 

 

0 1 1 0

 

 

 

 

 

Выполним сложение для каждой пары слагаемых отдельно для

верхней и нижней строк

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S =

~

~

1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1

 

A

+ B

=

 

 

 

 

U

 

 

 

U

 

 

 

 

 

U

 

 

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1

 

1 1 0 1

 

 

 

1 1 1 1

 

 

0 0 0 1

 

0 0 0 1

 

 

 

 

U

 

 

U

 

U

 

 

U

 

 

 

 

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 1 1

 

 

 

0 0 1 1

 

 

1 0 0 0

 

1 1 1 1

 

 

 

 

0 0 0 1

0 0 1 1

0 0 0 1 0 0 0 1

0 0 1 1

 

 

 

U

 

 

 

 

U

 

 

 

U

 

 

 

 

 

 

U

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1

0 0 1 1

Сравниваем полученные комбинации в разрядах сумм

107

 

~

~

0 0 1 1 0 0 1 1 0 0 1 1

= uuE1.

 

S = A

+ B

=

U

U

U U

U

U

U

U

 

 

 

 

 

0 1 0 1 0 1 0 1 0 1 1 1

 

 

 

 

В качестве второго примера рассмотрим n 2n

дешифратор С = DEC(Y)

со входами Y = Yn1Yn2...Y0

и выходами C = C2n 1C2n 2...C0 .

Для того,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~

 

~ ~

в алфавите

чтобы вычислить значения выходов дешифраторов C

= C(Y )

 

~

B16 ) , так же, как и в предыдущем случае, можно найти различные

B16 (Yi

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

Например,

двоичные значения Y, покрываемые Y , и сравнить результаты.

рассмотрим 3 23

дешифратор со значениями входов Y=H0E. Для этого

случая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~

 

 

~

 

 

 

 

0 1 1 0 0 0 1

 

C

= DEC(Y ) = DEC(H 0E) = DEC

 

U U

 

U

U

=

 

 

 

 

 

 

 

 

 

 

0

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

1

 

 

=

 

0 0 0

1 0 0

 

 

1 0 0

 

 

0 0 0

DEC

 

 

U DEC

 

U DEC

 

 

U DEC

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 0

0 0 0

 

 

1 0 0

 

 

0 0 1

 

 

1 0 0

1 0 0

 

 

0 0 1

 

 

1 0 1

U DEC

 

U DEC

U DEC

 

 

 

U DEC

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 1

1 0 1

 

 

0 0 1

 

 

0 0 1

 

 

1

0

1

DEC(000)

DEC(100)

DEC(100)

 

U DEC

 

=

 

U

 

 

U

 

 

 

U

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

DEC(000)

DEC(000)

DEC(100)

 

 

DEC(000)

 

DEC(100)

DEC(100)

 

DEC(001)

 

DEC(101)

U

 

 

 

U

U

 

 

U

 

 

 

 

U

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DEC(001)

DEC(001)

DEC(101)

DEC(001)

 

DEC(001)

DEC(101)

 

U

 

 

 

DEC(101)

 

0 0 0 1 0

U

 

 

0

0 0 0 1

0 0 0

0

0

0

0

 

1

0 0

0

1

0

0

0

0

=

 

 

 

 

 

 

 

 

U

 

 

 

 

 

 

 

U

 

 

 

 

 

0

0

0

0

 

 

 

 

 

0

0

0

0

0

 

0 0 0

 

1

0 0

1

0

0

0

 

0

0

0

0

0

0

0 1

 

0

0

0

1 0 0 0 0

 

 

U

 

 

 

 

 

 

 

U

 

 

 

 

 

 

U

0

0

 

 

0

0

0

0

0

0

 

 

 

0

0

0

 

 

 

 

0

 

1 0

 

0 0 0 1 0

0

0

0 1 0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

1 0 0 0 0

U

 

 

 

 

U

 

 

 

 

 

 

U

 

 

U

 

0

1 0 0

0

0

 

 

0

0

0

0

0

1

 

 

0

0

 

0

0

0

0

0

0 0 0 1 0

108

0

0

1

0

0

0

0

0

=

U

 

 

 

 

 

 

 

 

0

1

0

0

0

0

 

 

0

0

 

0 0 0

 

0

1

1 0

 

1

1 0 0 0

 

1

1 0

 

0

1

1

=

=

U

U

U

 

U

U

 

U

U

 

U

U

U

 

0 0 0

 

1

0

1 0

 

0

1 0 0 0

 

0

1 0

 

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 00uH00EHu

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

3.7.2 Многозначные функции основных операторов языков регистровых передач

Операторы языков регистровых передач включают в себя логические сдвиги, отношения, арифметические и условные операторы. Для основных операторов разработаны многозначные модели в 16-значном алфавите.

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

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

так как сводится к сдвигу многозначных аргументов.

Условные операторы.

Рассмотрим сначала условный оператор IF A THEN Z ← В ELSE Z ← С,

где Z, B, C — двоичные векторные переменные и А скалярная двоичная переменная, определяющая условия пересылки. Известно, что этот оператор может быть представлен булевой функцией Z = AB AC . Тогда с помощью табличных моделей, рассмотренных ранее в разделе 3.2, можно определить векторную переменную Z. Для этого достаточно вычислить значение каждого разряда Zi = ABi ACi по таблицам элементарных функций И, ИЛИ, НЕ (Табл.3.2-3).

109

Операторы отношений.

Практически все языки регистровых передач включают в себя операторы

отношений А>В,

АВ, А<В, АВ, А=В,

 

А В.

Рассмотрим

сначала

вычисление оператора А>В в алфавите B16 при следующих значениях

операндов:

 

 

 

 

 

 

 

 

 

 

 

 

 

~

1 0

1 1 0 0

0 1 1 0

 

 

 

A = a6a5a4a3a2a1

= 1H0E10 =

 

,

,

 

 

,

,

и

 

 

 

1 0 0

1 0 0 1

1 1 0

 

 

 

~

1 0

0 1 0 0

1 1 0

0 1 1 0

0 1

B = b6b5b4b3b2b1 = 1E0HuE =

,

,

 

 

,

,

 

 

, , ,

 

, ,

.

 

1 0 1

1 0 0 0

1 0 1 0

1 0 1

1

Алгоритм вычисления А>В заключается в последовательном, слева направо (от старших разрядов к младшим), сравнении значений ai и bi . Так

для нашего примера вначале сравниваем a6 и b6. Поскольку а6 = b6

переходим к сравнению as и b5. Выполнив оператор А>В согласно общему

 

 

0

 

1

 

1

определению многозначной функции для a5

= H =

 

,

 

,

 

 

и

0

0

 

 

 

 

1

 

 

0

 

0

 

1

 

0

 

1

 

1

b5

= E =

 

,

 

,

 

 

получим значение

H =

 

,

 

,

 

 

. Так как это старший

0

1

 

0

0

 

 

 

 

1

 

 

1

разряд, в котором А и В не определены, то и для операндов А и В в целом

независимо от значений

остальных

младших разрядов f A>B = H . При

программной реализации

вычисление

f A> B для текущего разряда удобно

производить табличным способом. Можно показать, что для одного разряда f A> B = Ai & Bi . Поэтому при вычислении следует использовать многозначные табличные модели функций И, НЕ (Табл.3.2-3). Алгоритм такого вычисления оператора А>В в алфавите B16 приведен ниже на рис.3.4

в форме псевдокода, который максимально приближен к реальной программе.

Здесь в цикле while находится старший разряд, в котором а[i] или b[i]

имеют неопределенные значения. Далее с помощью многозначных таблиц,

110