Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
0 0 0 0 1 0 1 0 1 1 1 0
binario
octal
tipos de representaciones
hexadecimal
3 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
4 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
5 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
6 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
Representación Decimal + Decimal - Binario + Binario -
Señal y magnitud: 0001 0111 1001 0111
Complemento 1: 23 -23 0001 0111 1110 1000
Complemento 2: 0001 0111 1110 1001
7 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
Adición y sustracción:
Señal y magnitud en 4-bit
4 = 0100 -4 = 1100
+ 3 = + 0011 + (- 3) = + 1011
7 0111 -7 (1)0111
8 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
Adición y sustracción:
Complemento a uno en 4-bit; el end-around carry debe ser sumado al final.
4 0100 -4 1011
+3 + 0011 + (-3) + 1100
7 0111 -7 1 0111
1000
9 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binaria
Adición y sustracción:
Complemento a dos en 4-bit; el carry-out es ignorado al final.
4 0100 -4 1100
+3 + 0011 + (-3) + 1101
7 0111 -7 1 1001
10 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binária
Overflow:
Sobrepaso de representación
Ejemplo: palabras de 4-bit y la operación 𝟓 + 𝟒 = − 𝟕
11 giovani.bolzan@utec.edu.uy 28/08/2019
Aritmética binária
Operaciones:
Adición: 0010 + 0100 = 0110
Sustracción: 0110 − 0100 = 0010
Multiplicación: 1000 × 0011 = 0001 1000
División*: 0010 0010 ÷ 0000 0010 = 0001 0001
12 giovani.bolzan@utec.edu.uy 28/08/2019
Half Adder
Half Adder:
2-inputs 2-outputs adder, non considera un bit de carry-in.
Full Adder:
3-inputs 2-outputs adder, considera un bit de carry-in.
13 giovani.bolzan@utec.edu.uy 28/08/2019
Full Adder
4-bit adder/subtractor:
14 giovani.bolzan@utec.edu.uy 28/08/2019
Full Adder
Ripple carry:
El concepto de carry es cargar adelante el dato.
Utilizado cuando se propaga dato oriundo de bloques de mismo tipo.
El próximo bloque necesita la información de carry-out del bloque
anterior para hacer la suma correctamente.
15 giovani.bolzan@utec.edu.uy 28/08/2019
Full Adder
Carry lookahead:
En contrapartida, su propósito es diminuir el tiempo de propagación.
El delay de ripple carry en un 4-bit adder se da en 8 unidades de
tiempo en cuanto la suma S3 se hace en 7:
16 giovani.bolzan@utec.edu.uy 28/08/2019
Full Adder
Carry lookahead:
Se hace un circuito que calcula el valor de carry-in previamente.
Carry generate: 𝐺𝑖 = 𝐴𝑖 ∙ 𝐵𝑖
Carry generate: 𝑃𝑖 = 𝐴𝑖 ⊕𝐵𝑖
𝐶1 = 𝐺0 + 𝑃0 𝐶0
𝐶2 = 𝐺1 + 𝑃1 𝐶1 = 𝐺1 + 𝑃1 𝐺0 + 𝑃1 𝑃0 𝐶0
𝐶3 = 𝐺2 + 𝑃2 𝐶2 = 𝐺2 + 𝑃2 𝐺1 + 𝑃2 𝑃1 𝐺0 + 𝑃2 𝑃1 𝑃0 𝐶0
𝐶4 = 𝐺3 + 𝑃3 𝐶3 = 𝐺3 + 𝑃3 𝐺2 + 𝑃3 𝑃2 𝐺1 + 𝑃3 𝑃2 𝑃1 𝐺0 + 𝑃3 𝑃2 𝑃1 𝑃0 𝐶0
17 giovani.bolzan@utec.edu.uy 28/08/2019
Full Adder
Carry lookahead:
18 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
Arithmetic Logic Unity
19 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
Operaciones aritméticas:
Add: A y B son sumados y propagados a las salidasY y carry-out.
Add con carry: A, B y carry-in son sumados y propagados a las salidas Y y carry-
out.
Sub: B es sustraído de A (o vice-versa) y la diferencia va a Y and carry-out
(borrow-out). También puede ser utilizada para verificar señal y/o magnitud de
las entradas.
Sub con borrow: : B es sustraído de A (o vice-versa) y con el carry-in (borrow-in).
La diferencia va aY and carry-out (borrow-out).
2's complement: A (o B) é sustraído de zero y la salida é propagada a Y.
Increment: A (o B) es incrementado por 1 y la salida é propagada a Y.
Decrement: A (o B) es decrementado por 1 y la salida é propagada a Y.
Pass through: todos bits de A (o B) son propagados a Y. Esta operación es
comúnmente utilizada para determinar la paridad del operando o si es zero o
negativo.
20 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
Operaciones lógicas:
AND: (A and B) Y
OR: (A or B) Y
XOR: (A xor B) Y
1’s complement: !(A) Y o !(B) Y
21 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
22 giovani.bolzan@utec.edu.uy 28/08/2019
Bit shift examples for an eight-bit ALU
Type Left shift Right shift
Arithmetic
Logical
Rotate
23 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
entity alu is
port ( -- the alu connections to external circuitry:
A : in signed(7 downto 0); -- operand A
B : in signed(7 downto 0); -- operand B
OP : in unsigned(2 downto 0); -- opcode
Y : out signed(7 downto 0)); -- operation result
end alu;
architecture behavioral of alu is
begin
process(A, B, OP)
begin
case OP is -- decode the opcode and perform the operation:
when "000" => Y <= A + B; -- add
when "001" => Y <= A - B; -- subtract
when "010" => Y <= A - 1; -- decrement
when "011" => Y <= A + 1; -- increment
when "100" => Y <= not A; -- 1's complement
when "101" => Y <= A and B; -- bitwise AND
when "110" => Y <= A or B; -- bitwise OR
when "111" => Y <= A xor B; -- bitwise XOR
when others => NULL;
end case;
end process;
end behavioral;
24 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
CI 74181 implementa 4-bit ALU
Y para un multiplicador?
25 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
En una multiplicación M x N, se pude sumarse el operando M en N veces.
Por ejemplo: 3 x 4 = 3 + 3 + 3 + 3 = 12; 5 x 6 = 6 + 6 + 6 + 6 + 6 = 30
Como hacer esto en una ALU utilizando instrucciones de RM, LM, ADD y
complemento de 2?
26 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
Acumulación parcial de producto: circuito combinatorio (sin registradores) que
implementan la multiplicación entera.
27 giovani.bolzan@utec.edu.uy 28/08/2019
ALU
Cada término AND es un producto parcial. La multiplicación, como con
decimales, se hace con el acúmulo de los términos en columnas, pero se consideran
los carry-in de los términos a la izquierda (menos significativos).
28 giovani.bolzan@utec.edu.uy 28/08/2019