Суматар

З пляцоўкі testwiki
Перайсці да навігацыі Перайсці да пошуку

Сума́тар — камбінацыйная схема, якая выкарыстоўваецца для знаходжання сумы дыскрэтных лікаў. Выкарыстоўваецца ва ўсіх існуючых лічбавых прыладах у якасці асноўнага будаўнічага элемента вылічальных блокаў.

Вывад схемы

Для пабудовы адвольнага n-бітнага суматара пабудуем асноўны функцыянальны блок з трыма ўваходамі (a,b,c) і двума выхадамі (s,r). Уваход a гэта біт першага ліку, b — другога, c — перанос, спалучаны з выхадам r папярэдняга блоку, або 0 калі няма папярэдняга. Выхад s гэта вынік сумы, r — 1 калі патрабуецца перанос у наступны разрад.

Пабудуем табліцу ўсіх магчымых камбінацый для выхада s:

a b c s
0 0 0 0
1 0 0 1
0 1 0 1
1 1 0 0
0 0 1 1
1 0 1 0
0 1 1 0
1 1 1 1

Запішам ДНФ:

s=a*b*c+a*b*c+a*b*c+a*b*c

=a*(b*c+b*c)+a*(b*c+b*c)

=a*((b*c+b*c))+a*(b*c+b*c)

=a(b*c+b*c)

=a(bc)

=abc

Пабудуем табліцу ўсіх магчымых камбінацый для выхада r:

a b c r
0 0 0 0
1 0 0 0
0 1 0 0
1 1 0 1
0 0 1 0
1 0 1 1
0 1 1 1
1 1 1 1

Запішам ДНФ:

r=a*b*c+a*b*c+a*b*c+a*b*c

=a*(b*c+b*c)+(b*c)*(a+a)

=a*(bc)+(b*c)

Заўважым што bc ужо падлічана для s і яго значэнне можна выкарыстаць тут. Для падліку толькі r можна скараціць выраз яшчэ больш:

r=a*(b*c+b*c)+(b*c)

=(a*b*c)+(a*b*c)+(b*c)

=b*(a*c+c)+(a*b*c)

=b*(a+c)+(a*b*c)

=a*(b+b*c)+(b*c)

=a*(b+c)+(b*c)

Прыведзеныя выразы для r цалкам эквівалентныя. Апошні выраз прасцей запамінаць без дужак:

r=a*b+b*c+c*a

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

Літаратура

Шаблон:Вонкавыя спасылкі