Skip to content
АЦУ · Тема 19 · Логиката

Калкулаторът – 6 + 7 с „едно наум“

Калкулаторът събира като нас на хартия – разряд по разряд, отдясно наляво, с „едно наум“. Разликата е, че всяко „наум“ е сигнал, който пътува през логически елементи и закъснява. В урока строим суматор от елементи, гледаме как преносът пълзи и как се прави да прескача, а накрая сравняваме числа с цифров компаратор.

≈ 6 мин четене∿ 3 живи уредаСамопроверка: 5 въпроса

Полусуматор и пълен суматор ​

Да съберем 0110 (6) и 0111 (7) на хартия. Тръгваме отдясно:

  • разряд 0: 0 + 1 = 1;
  • разряд 1: 1 + 1 = 10 – пишем 0, едно наум;
  • разряд 2: 1 + 1 + 1 (наум) = 11 – пишем 1, едно наум;
  • разряд 3: 0 + 0 + 1 (наум) = 1.

Резултатът е 1101 = 13. Във всеки разряд правим едно и също: събираме три бита (aᵢ, bᵢ и преноса отдясно) и даваме два: сумата Sᵢ и преноса наляво Cᵢ₊₁.

  • Полусуматорът събира само два бита: S = a ⊕ b (1, ако са различни), C = a·b (пренос, ако и двата са 1). Става само за най-младшия разряд.
  • Пълният суматор (ПС) събира и преноса: Sᵢ = aᵢ ⊕ bᵢ ⊕ cᵢ, Cᵢ₊₁ = aᵢbᵢ + cᵢ(aᵢ ⊕ bᵢ). Това са два полусуматора и едно ИЛИ.
Пълен суматор
ABCвх=1a⊕b=1S&ab&c(a⊕b)≥1Cизх
Фигура 1.

Горното XOR дава a ⊕ b, а второто добавя преноса: S светва при нечетен брой единици. Преносът навън светва, ако поне две от трите са 1: или a и b (ab), или едно от тях и входящият пренос (c(a⊕b)).

Преносът пълзи: последователен и паралелен пренос ​

Четири пълни суматора един до друг правят 4-битов суматор. Най-простият начин е последователният пренос: изходът Cᵢ₊₁ на всеки ПС отива на входа на следващия. Евтино е, но бавно. Последният разряд чака преноса да мине през всички предишни. Всеки ПС добавя по две стъпала (И и ИЛИ), затова при n бита закъснението е около 2n·tзад.

Паралелният (ускорен) пренос не чака. За всеки разряд се смятат gᵢ = aᵢbᵢ („тук се ражда пренос“) и pᵢ = aᵢ ⊕ bᵢ („тук преносът минава“). После всеки cᵢ се разписва докрай, например c₂ = g₁ + p₁g₀ + p₁p₀c₀, и се смята наведнъж от отделна схема за бърз пренос. Елементите стават повече, но стъпалата са едни и същи за всяко n.

Тук смятаме A = 6 + B = 7, т.е. 0110 + 0111. Суматорът дава S = 1101, пренос навън C4 = 0, т.е. 13. Всичко се успокоява за 30 ns след смяната на входовете.

4-битов суматор
050100C1C2C3C4S0S1S2S3t – време, nsнови A, B
C1 C2 C3 C4 S0 S1 S2 S3
Фигура 2.

С 15 + 1 при последователен пренос се вижда как C1, C2, C3, C4 светват един след друг, стъпало по стъпало. Сумата (синьо) е вярна чак след 80 ns. При паралелен пренос всички C идват почти заедно и всичко е готово за 40 ns. При 6 + 7 преносите се раждат направо там, където трябват (разряди 1 и 2), и не пътуват. Затова и двата суматора са готови за 30 ns. Закъснението зависи от числата, а схемата трябва да е готова за най-лошия случай.

Изваждане. Същият суматор изважда, ако числата са в допълнителен код (тема 14): A − B = A + B̄ + 1. Битовете на B минават през XOR с 1 (управляеми инвертори – тема 15), а единицата влиза като входящ пренос c₀ = 1. Пробвай 3 − 5: изходът е 1110, а това в допълнителен код е −2. Липсата на пренос навън значи, че е имало заем.

Цифровият компаратор ​

Компараторът сравнява две числа и казва едно от трите: A > B, A = B или A < B. За един бит:

  • равенство e = ‾(a ⊕ b) (XNOR – 1, когато са еднакви);
  • a > b = a·b̄; a < b = ā·b.

За n бита се сравнява като думи в речник: от старшия разряд. Ако старшите са различни, те решават. Ако са равни, гледаме следващия. Така A > B = a₃b̄₃ + e₃·a₂b̄₂ + e₃e₂·a₁b̄₁ + …, а A = B само ако всички eᵢ = 1. Интегралният 7485 сравнява 4 бита. Има входове за разширяване IA>B, IA=B, IA<B. С тях няколко чипа се свързват последователно (просто, но бавно; на най-младшия се подава 0, 1, 0) или паралелно (бързо, с повече елементи).

Тук A = 11, B = 9:

Компаратор 4 бита
Разряд3210
A = 111011
B = 91001
eᵢ (равни?)1101

Изходите на схемата: A > B = 1, A = B = 0, A < B = 0 → A > B.

Фигура 3.

Решава разряд 1: там A има 1, а B – 0. Разрядите вдясно от него вече нямат значение. Затова всеки член на A > B съдържа eᵢ на всички по-старши разряди.

Преобразуватели на код ​

Третият вид „аритметична“ комбинационна схема е преобразувателят на код: m входа, n изхода, всеки изход е функция на входовете. Пример е BCD → 7 сегмента от тема 17: 4 входа и 7 изхода. Комбинациите 1010–1111 са забранени, затова функциите са непълно определени и се минимизират с Карно, като забранените клетки се пишат x. Така се правят и преобразувателите двоичен ↔ Грей (XOR на съседни битове) и двоичен → BCD.

Самопроверка ​

1. Събери 0110 + 0111 разряд по разряд.

Разряд 0: 0 + 1 = 1, C1 = 0; разряд 1: 1 + 1 = 0, C2 = 1; разряд 2: 1 + 1 + 1 = 1, C3 = 1; разряд 3: 0 + 0 + 1 = 1, C4 = 0 → 1101 = 13.

2. Каква е разликата между полусуматор и пълен суматор?

Полусуматорът събира два бита (S = a ⊕ b, C = ab). Пълният събира три – двата бита и входящия пренос.

3. Защо суматорът с последователен пренос е бавен?

Преносът минава през всички разряди един след друг – по две стъпала на разряд, ~2n·tзад. При паралелния пренос всички cᵢ се смятат наведнъж.

4. Как суматорът изважда?

В допълнителен код: A − B = A + B̄ + 1 – битовете на B се обръщат с XOR, а единицата влиза като входящ пренос.

5. Сравни 1011 и 1001. Кой разряд решава?

Разряд 3: 1 = 1; разряд 2: 0 = 0; разряд 1: 1 > 0 → A > B. Разряд 0 няма значение.