Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD PROFESIONAL
INTERDISCIPLINARIA EN INGENIERÍA Y
TECNOLOGÍAS AVANZADAS
PRÁCTICAS DE LABORATORIO DE
CIRCUITOS LÓGICOS
PRIMERA VERSIÓN
2017
Prácticas de Laboratorio de Circuitos Lógicos .
Práctica No. 4.
Circuitos combinacionales aritméticos y lógicos.
Arithmetic and logic combinatorial circuits.
Unidad Temática: III
Competencia Específica:
Implementa los circuitos combinacionales (aritméticos y lógicos) en los CPLD o FPGA
mediante HDL.
Pre-reporte cuatro.
Desarrollar los siguientes puntos como trabajo previo para el buen progreso de la práctica
[máximo 4 cuartillas si se entrega impreso (Letra Times New Roman de 12ptos, interlineado
sencillo)]:
2
Prácticas de Laboratorio de Circuitos Lógicos .
sistema de desarrollo o dispositivo con el que trabaja. Si se utiliza una tarjeta de desarrollo,
revisar como viene conectada ya que el ánodo puede activarse con lógica positiva o negativa.
Figura 4.3. Diagrama de bloque para el multiplicador de 2 bits con decodificador de siete
segmentos y los números a representar en el display.
4. Escribir en HDL (VHDL y Verilog) un codificador de prioridad, para un teclado que tiene
ocho teclas, cuatro para la entrada uno (TA) y cuatro para la entrada dos (TB). Los valores
de las teclas son 0, 1, 2 y 3, las cuales al presionarse generarán un ‘0’ lógico (activas en bajo),
el cual se codificará a su correspondiente valor binario, que va conectado a las entradas del
multiplicador de 2x2, como se muestra en la figura 4.4. La tecla con valor cero es la que tiene
mayor prioridad y la tecla que vale tres es el de menor prioridad. Sintetizar hasta generar el
archivo de programación para el sistema de desarrollo o dispositivo con el que trabaja.
3
Prácticas de Laboratorio de Circuitos Lógicos .
5. (Opcional) Escribir en HDL (VHDL y Verilog) un circuito que realice las operaciones
aritméticas de suma, resta, multiplicación y división, utilizando el teclado con prioridad,
salida al display y un selector de operación que encienda un led rojo para la suma, uno verde
para la resta, un amarillo para la multiplicación y uno azul para la división. Sintetizar hasta
generar el archivo de programación para el sistema de desarrollo o dispositivo con el que
trabaja. Nota: Si se realiza este circuito, se sustituye por los puntos del sumador-restador y el
multiplicador.
Material y Equipo.
Dispositivos discretos (i.e. SPLD o CPLD o FPGA, con hojas de datos, especificaciones y
programador).
Elementos discretos: resistencias 330 a ½ W, Leds de diferentes colores (rojo, verde,
amarillo, naranja, ámbar, azul, etc.), interruptores SPST y dip switch de 8 interruptores,
display de 7-segmentos.
Tarjeta de desarrollo: Cool Runner II, Basys 2, Nexys 2 ó 3 ó 4, DE2, etc.
Pinzas de punta y de corte.
Protoboard necesarios para tener armados los circuitos que no tenga la tarjeta de desarrollo.
Cables para conexión, cables con conectores (header macho, header hembra, caimán, etc.).
Termofit.
Fuente de alimentación regulada si se conecta de forma externa algún circuito.
Punta lógica o analizador de estados lógicos.
Multímetro con puntas.
Osciloscopio con puntas.
4
Prácticas de Laboratorio de Circuitos Lógicos .
Nota: las cantidades de componentes dependen de los diseños que se realicen, además de
corroborar los componentes que se tengan en una tarjeta de desarrollo.
Introducción.
Los circuitos digitales también realizan operaciones aritméticas y lógicas, siendo las primeras
muy aplicadas en procesos de cálculo, desde una calculadora hasta una supercomputadora.
Los sistemas encargados de realizarlas se encuentran incluidos en las unidades aritmético-
lógicas (ALUs) de los microprocesadores (P) y microcontroladores (C), aunque no son
sus únicas aplicaciones posibles dentro de éstos.
Una operación simple es la suma que se realiza entre dos bits, dando como resultado lo que
se conoce como un medio sumador, y la operaciones entre tres bits que se le conoce con el
nombre de sumador completo. Y es precisamente esta celda de sumador completo la que se
utiliza para realizar sumadores, restadores, multiplicadores, etc. de n bits, como se muestran
en las figuras 4.5 y 4.6.
La operación de multiplicación entre los números binarios se realiza igual que la de números
decimales, multiplicando bit a bit, comenzando por el menos significativo y formando un
producto parcial. Dichos productos se desplazan una posición a la izquierda y el producto
final se obtiene sumando los productos parciales, como se muestra a continuación en la
multiplicación binaria de dos bits por dos bits.
5
Prácticas de Laboratorio de Circuitos Lógicos .
La operación de división entre los números binarios se realiza igual que la de números
decimales, con la única diferencia que la resta se realiza dentro de la división pero en forma
binaria.
A continuación se presentan los códigos en VHDL y Verilog para las operaciones aritméticas,
así como una simulación de un sumador restador en la figura 4.7.
VHDL
-- Sumador y restador de 4 bits con VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
begin
Salida <= ( A - B ) when sel = '0' else ( A + B );--hace la suma si sel='1'
end A_SR;--fin de la arquitectura
VHDL
-- Operaciones aritméticas
library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;-- o bien: use work.std_arith.all;
6
Prácticas de Laboratorio de Circuitos Lógicos .
use ieee.std_logic_unsigned.all;
entity op_ar is
port ( A, B: in std_logic_vector(3 downto 0);-- vectores de entrada
S: out std_logic_vector(4 downto 0);-- salida para la suma
R: out std_logic_vector(3 downto 0);-- salida para la resta
M: out std_logic_vector(7 downto 0));-- salida para la multiplicación
D: out std_logic_vector(3 downto 0);-- salida para la división
-- Si la biblioteca no tiene declarada la operación no se pone el bus ni la operación
end op_ar;
Verilog
//Sumador y restador de 4 bits con Verilog (su simulación está en la figura 4.7(a))
module SumaResta(A, B, sel, Salida);
input wire [3:0] A, B;
input wire sel;
output reg [3:0] Salida;
always @(*)
case (sel)
0: Salida = A-B;
1: Salida = A+B;
endcase
endmodule
Verilog
//Operaciones aritméticas
module op_ar (A, B, S, R, M, D);
input [3:0] A, B;//entradas
output [4:0] S;//salida de la suma A+B
output [3:0] R, D;//salidas de resta R=A-B y división D = A/B
output [7:0] M;//salida de la multiplicación
reg [4:0] S;
reg [3:0] R, D;
reg [7:0] M;
always @ (A or B)
7
Prácticas de Laboratorio de Circuitos Lógicos .
begin
S = A + B; //suma
R = A - B; //resta
M = A / 2; //división
D = A * B; //multiplicación
end
endmodule
/-----------------------------------------------------
// Design Name : pri_encoder_using_if
// File Name : pri_encoder_using_if.v
// Function : Pri Encoder using If
// Coder : Deepak Kumar Tala
//-----------------------------------------------------
module pri_encoder_using_if (
binary_out , // 4 bit binary output
encoder_in , // 16-bit input
enable // Enable for the encoder
);
output [3:0] binary_out ;
input enable ;
input [15:0] encoder_in ;
8
Prácticas de Laboratorio de Circuitos Lógicos .
endmodule
9
Prácticas de Laboratorio de Circuitos Lógicos .
Desarrollo.
Recuerde MOSTRAR sus circuitos funcionando a su profesor para la valoración del trabajo
de laboratorio (TL4).
10
Prácticas de Laboratorio de Circuitos Lógicos .
6. Diseñar con HDL un circuito que responda de acuerdo a las siguientes funciones
algebraicas: (a) y(x)=5x+12, (b) RT(T)=R0(1+α1T+α2T2) siendo α1=5, α2=-1, x y T son
enteros entre 0 y 10. Nota: para saber el valor de R0 buscar los modelos matemáticos de
los sensores de temperatura.
7. Elegir uno de los Proyectos opcionales utilizando PLDs y HDL y reportar solo el diseño.
8. Realizar sus comentarios y conclusiones. Todos los códigos van en una sola columna
con comentarios.
NOTA: Respetar la numeración de cada punto de este formato en el reporte escrito [máximo
8 cuartillas si se entrega impreso (Letra Times New Roman de 12ptos, interlineado
sencillo)].
Diseñar y construir (D&C) un sistema para multiplicar los números decimales de una
calculadora con salida de 8 dígitos.
Diseñar y construir (D&C) una ALU (Unidad Lógica Aritmética) para un microprocesador
o microcontrolador.
Diseñar y construir (D&C) un sistema para el cierre de las puertas de un elevador cuando
llegue al cupo máximo de (a) 9 personas, (b) 750 kg.
--VHDL
-- sumador restador de 3 bits con selector y salida a display
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
11
Prácticas de Laboratorio de Circuitos Lógicos .
use IEEE.STD_LOGIC_unsigned.ALL;
entity SRvhdl is
Port ( A,B : in STD_LOGIC_VECTOR (2 downto 0);--entradas de 0 a 7
s : in STD_LOGIC;--si s=0 suma si s=1 resta
AN: out STD_LOGIC_VECTOR (3 downto 0);--Ánodos
d : out STD_LOGIC_VECTOR (7 downto 0));--salida al display de ánodo común
end SRvhdl;
12
Prácticas de Laboratorio de Circuitos Lógicos .
Verilog
//sumador restador de 3bits con salida a display 7 segmentos
module SRVerilog(A, B, sel, Disp);
input wire [2:0] A, B;//entradas de 3 bits
input wire sel;//selector de suma s=0 y resta s=1
output reg [7:0] Disp;//al display de 7 segmentos y el punto
reg [3:0] Salida;//señal que almacena el resultado de la op.
always @(*)
case (sel)
0: if (A>=B) Salida = A-B;
else Salida = 4'b0000;
1: Salida = A+B;
endcase
always @(*)
case (Salida)//abcdefgP hexadecimal
0: Disp = 8'b00000011;//0 03
1: Disp = 8'b10011111;//1 9F
2: Disp = 8'b00100101;//2 25
3: Disp = 8'b00001101;//3 0D
4: Disp = 8'b10011001;//4 99
5: Disp = 8'b01001001;//5 49
6: Disp = 8'b01000001;//6 41
7: Disp = 8'b00011111;//7 1F
8: Disp = 8'b00000001;//8 01
9: Disp = 8'b00011001;//9 19
10: Disp = 8'b00000010;//0.=10 02
11: Disp = 8'b10011110;//1.=11 9E
12: Disp = 8'b00100100;//2.=12 24
13: Disp = 8'b00001100;//3.=13 0C
14: Disp = 8'b10011000;//4.=14 98
15: Disp = 8'b01001000;//5.=15 48
endcase
endmodule
13
Prácticas de Laboratorio de Circuitos Lógicos .
Referencias.
14
Prácticas de Laboratorio de Circuitos Lógicos .
Nombre de la práctica
Lab CiLo Circuitos combinacionales
Grupo Punto 1 Punto 2 Punto 3 Punto 4 aritméticos y lógicos
Multipl.
S+R-3b cPrior. Op.
Nombre mesa Empresa Verilog Verilog Opc. Lógicas comentarios TL4 R4 P4
1
1
1
2
2
2
3
3
3
4
4
4
5
5
5
Fechas 3hr. 2ó3 5ó6
Sumador restador 3bits con salida a display y selector (Verilog)
Multiplicador con codificador de prioridad y salida a display (Verilog)
Opcional + - x / con teclado prioridad y salida a display
8 operaciones lógicas
5. D. báscula => costo total = peso x precio/Kg.
6. D. func. Alg. (a) y(x)=5x+12, (b)
RT(T)=R0(1+α1T+α2T2), α1=5, α2=-1, x y T
enteros de 0 a 10. Buscar R.
7. D. un proy. Opc.
15