Está en la página 1de 10

Aprendizaje Práctico – MANUAL DE PROCEDIMIENTO

CARRERA: ELECTRONICA Y PRÁCTICA #2: Diseño de circuitos combinacionales básicos en


AUTOMATIZACION VHDL – Nivel 1.
CÁTEDRA O MATERIA
ACCESORIOS: Software Vivado REVISIÓN N°: --
RELACIONADA
DOCENTE:
SISTEMAS DIGITALES EDICIÓN: --
Ing. Pablo Cevallos L. Msc
# ESTUDIANTES/ PRÁCTICA:
Fecha: 5/5/21
ANTHONY BRAVO, BRYAM MONTERO, DANNY CUZCO, BYRON MOROCHO

Resumen— El presente informe nos muestra el sus estructuras como cualquier otro tipo de
proceso para desarrollar un código de lenguaje lenguaje. A partir de lenguajes simples, que ya son
de descripción de hardware en el software auténticos lenguajes de descripció n de hardware
vivado. Este informe nos da a conocer (HDL), se descubrió el interés que puede tener el
diferentes tipos de circuitos combinaciones representar los circuitos directamente utilizando
básicos en VHDL. un lenguaje en vez de usar esquemas. Los esquemas
desde el punto de vista humano son má s sencillos
OBJETIVOS
de entender, pero el lenguaje siempre permite una
1.1 Objetivo general: edició n má s fá cil y rá pida.
 Diseñ ar y simular circuitos combinaciones
bá sicos en VHDL. COMPETENCIAS Y DESTREZAS
 Construye descripciones de hardware para
1.2 Objetivos específicos:
circuitos combinacionales básicos
 Construir la descripció n de hardware
 Identifica las etapas principales en el flujo de
asociada a los siguientes circuitos
diseño de un circuito digital
combinacionales.
a) Circuito multiplexor con 2 bits de  Reconoce las componentes principales del
selecció n y N-bit inputs (when.. else) lenguaje de descripción de hardware VHDL
b) Circuito selector con N-bit inputs
SUSTENTO TEÓRICO
(with.. select)
c) FlipFlop tipo D implementado con TIPOS DE DATOS
có digo concurrente
d) Buffer de 3 estados (bit y multibit) Cualquier objeto en VHDL debe tener un tipo. Aquí
e) Decodificador (generate) no existen tipos propios del lenguaje, lo que tiene
 Obtener el circuito equivalente a la son los
descripció n de hardware por medio del mecanismos para poder definir cualquier tipo.
aná lisis RTL.
Normalmente al compilar un programa, se cargan
 Realizar la simulació n de cada circuito
los tipos de datos que se encuentran en una
digital.
librería.
 Realizar los procedimientos de síntesis e
implementació n de cada circuito digital. En TIPOS ESCALARES
esta etapa, incluir la configuració n de los
pines I/O para pruebas físicas del circuito Son tipos simples que contienen algú n tipo de
en la tarjeta Nexis 4. magnitud.
 Cargar las informaciones en la tarjeta Nexis
4 y comprobar el funcionamiento Enteros: Datos cuyo contenido constituye un valor
(Opcional). numérico entero. Se definen con la palabra range.
No se dice que es un dato entero, sino que está
INTRODUCCIÓN comprendido en cierto intervalo especificando los
VHDL es verdaderamente un lenguaje, por lo que límites de dicho intervalo con valores enteros.
tiene sus elementos sintá cticos, sus tipos de datos y
1
Reales: Nú meros en punto flotante, definidos * (multiplicación). Multiplica dos nú meros de
igualmente con la palabra range. cualquier tipo numérico.
Físicos: Datos que corresponden a magnitudes / (división). Funciona con cualquier dato numérico.
físicas. Tienen un valor y unas unidades. Existe un
mod (mó dulo). Calcula el mó dulo de dos nú meros.
tipo físico predefinido en VHDL que es time. Este
tipo se utiliza para indicar retrasos y tiene los rem (resto). Calcula el resto de una divisió n entera.
submú ltiplos, desde fs femtosegundos hasta horas.
Cualquier dato físico se escribe siempre con su + (suma y signo positivo). Indica suma o signo.
valor seguido de la unidad: 10 mm, 1 us, 23 ns. - (resta y signo negativo). Indica resta y signo
TIPOS COMPUESTOS negativo.

Son tipos de datos que está n compuestos por tipos OPERADORES DE DESPLAZAMIENTO:
escalares. sll, srl (desplazamiento lógico, a la izquierda o a
Matrices: Colecció n de elementos del mismo tipo a la derecha). Desplaza un vector un nú mero de bits
los que se accede mediante un índice. Las hay mono a izquierda o derecha rellenando con ceros los
dimensionales o multidimensionales. Pueden estar huecos libres. Ejemplo: dato sll 2, desplaza a la
enmarcadas en un rango o el índice puede ser libre izquierda dos posiciones al vector dato, es decir, lo
teniendo la matriz una dimensió n teó rica infinita. multiplica por 4.

Registros: Es equivalente al tipo registro o record sla, sra (desplazamiento aritmético a la


de otros lenguajes. Para referirse a un elemento izquierda o a la derecha). La diferencia con el
dentro del registro se utiliza la misma anterior es que este desplazamiento conserva el
nomenclatura que en Pascal, es decir, se usa un signo, es decir, conserva el valor que tiene el bit
punto entre el nombre del registro y el nombre del má s significativo del vector.
campo: rol, ror (rotación a la izquierda o a la derecha).
persona.nombre = “Carlos” Es como el desplazamiento, pero los huecos que se
forman son ocupados por los bits que van saliendo.
OPERADORES
OPERADORES RELACIONALES:
OPERADOR DE CONCATENACIÓN:
Devuelven siempre un valor de tipo booleano. Los
& (concatenación). Concatena matrices de manera tipos con los que pueden operar dependen de la
que la dimensió n de la matriz resultante es la suma operació n.
de las dimensiones de las matrices sobre las que
opera. =, /= (igualdad, desigualdad). El primero
devuelve true si los operandos son iguales y false
Algunos ejemplos:
en caso contrario. El segundo indica desigualdad,
Abs así que funciona al revés. Los operandos
Access
After deben ser del mismo tipo.
Alias <, <=, >, >= (menor, mayor) Tienen el significado
All habitual. Los tipos de datos que pueden manejar
And son escalares o matrices de una sola dimensió n de
Architecture tipos discretos.
Entre otros.
OPERADORES LÓ GICOS:
OPERADORES ARITMÉ TICOS:
Son not, and, nand, or, nor, xor y en el VHDL`93 se
** (exponencial). Eleva un nú mero a una potencia: añ adió xnor. Actú an sobre los tipos bit, bit_vector y
4**2 es 42 boolean. En un vector, las operaciones son bit a bit.
abs( ) (valor absoluto). Devuelve el valor absoluto ARQUITECTURA
de su argumento.

2
Architecture nombre_arquitectura of library IEEE;
nombre_entidad is use IEEE.STD_LOGIC_1164.ALL;
[declaraciones]
begin entity sim_multiplexor_p2 is
[sentencias concurrentes] generic (N: integer:=8);
end [architecture] [nombre]; --port()
La arquitectura se inicia mediante la palabra
reservada architecture seguida por el nombre de la
descripció n, la palabra reservada of, el nombre del
circuito y la palabra reservada is. En la parte de
declaraciones se definen los subprogramas
(funciones, procedimientos, etc.), declaraciones de
tipo, declaraciones de constantes, declaraciones de
señ ales, declaraciones de alias, declaraciones de
componentes, etc. Las asignaciones que describen
al circuito se engloban entre un begin y un end
seguido del nombre de la arquitectura.

PROCEDIMIENTO
1- Creamos un nuevo proyecto para nuestra
prá ctica.
2- Declaració n de entradas y salidas.
a- Circuito multiplexor con dos bits de
selecció n y N-bit inputs:

Fuente

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity muktiplexor_p2 is
generic (N: integer:=8);
Port ( E0 : in STD_LOGIC_VECTOR (N-1 downto 0);
E1 : in STD_LOGIC_VECTOR (N-1 downto 0);
E2 : in STD_LOGIC_VECTOR (N-1 downto 0);
E3 : in STD_LOGIC_VECTOR (N-1 downto 0);
S : in STD_LOGIC_VECTOR (1 downto 0);
Q : out STD_LOGIC_VECTOR (N-1 downto 0));
end muktiplexor_p2;

architecture Behavioral of muktiplexor_p2 is

begin
Q <= E0 when S="00" else
E1 when S="01" else
E2 when S="10" else
E3 ;

end Behavioral;

Simulació n

3
end sim_multiplexor_p2; Esquema

architecture Behavioral of sim_multiplexor_p2 is


component muktiplexor_p2
Port (E0: in STD_LOGIC_VECTOR (N-1 downto 0);
E1 : in STD_LOGIC_VECTOR (N-1 downto 0);
E2 : in STD_LOGIC_VECTOR (N-1 downto 0);
E3 : in STD_LOGIC_VECTOR (N-1 downto 0); b- Circuito selector con N-bit inputs (with..
S : in STD_LOGIC_VECTOR (1 downto 0); select)
Q : out STD_LOGIC_VECTOR (N-1 downto 0)); Fuente
end component; library IEEE;
signal E0 : STD_LOGIC_VECTOR (N-1 downto 0):= use IEEE.STD_LOGIC_1164.ALL;
(others=>'0'); --se;al de entrada entity practicaN2_selector is
signal E1 : STD_LOGIC_VECTOR (N-1 downto 0):= generic (N: integer:=8);
(others=>'0'); Port (E1: in STD_LOGIC_VECTOR (N-1 downto 0);
signal E2 : STD_LOGIC_VECTOR (N-1 downto 0):= E2 : in STD_LOGIC_VECTOR (N-1 downto 0);
(others=>'0'); E3 : in STD_LOGIC_VECTOR (N-1 downto 0);
signal E3 : STD_LOGIC_VECTOR (N-1 downto 0):= E4 : in STD_LOGIC_VECTOR (N-1 downto 0);
(others=>'0'); Sel : in STD_LOGIC_VECTOR (1 downto 0);
signal S : STD_LOGIC_VECTOR (1 downto 0):= salida : out STD_LOGIC_VECTOR (N-1 downto 0));
(others=>'0'); end practicaN2_selector;

signal Q : std_logic_vector(N-1 downto 0):= architecture Behavioral of practicaN2_selector is


(others=>'0'); --se'al de salida
begin begin
UO: muktiplexor_p2
port map ( with sel select
E0 => E0, salida <= E1 when "00",
E1 => E1, E2 when "01",
E2 => E2, E3 when "10",
E3 => E3, E4 when others;
S => S,
Q => Q end Behavioral;
);
Simulació n
process
begin library IEEE;
wait for 100ns; use IEEE.STD_LOGIC_1164.ALL;
E0 <= "00000111"; entity selector_p2_sim is
E1 <= "00100111"; generic (N: integer:=8);
E2 <= "01000111"; -- Port ( );
E3 <= "11110111"; end selector_p2_sim;
S <= "00"; architecture Behavioral of selector_p2_sim is
wait for 100ns; component practicaN2_selector
S <= "01"; Port (E1: in STD_LOGIC_VECTOR (N-1 downto 0);
wait for 100ns; E2 : in STD_LOGIC_VECTOR (N-1 downto 0);
S <= "10"; E3 : in STD_LOGIC_VECTOR (N-1 downto 0);
wait for 100ns; E4 : in STD_LOGIC_VECTOR (N-1 downto 0);
S <= "11"; Sel : in STD_LOGIC_VECTOR (1 downto 0);
wait for 100ns; salida : out STD_LOGIC_VECTOR (N-1 downto 0));
wait; end component;
end process; signal E1 : STD_LOGIC_VECTOR (N-1 downto 0):=
end Behavioral; (others=>'0'); --se;al de entrada
signal E2 : STD_LOGIC_VECTOR (N-1 downto 0):=
(others=>'0');
signal E3 : STD_LOGIC_VECTOR (N-1 downto 0):=
(others=>'0');

4
signal E4 : STD_LOGIC_VECTOR (N-1 downto 0):= Fuente
(others=>'0'); library IEEE;
signal Sel : STD_LOGIC_VECTOR (1 downto 0):= use IEEE.STD_LOGIC_1164.ALL;
(others=>'0');
entity FFtipoD_p2 is
signal salida : std_logic_vector(N-1 downto 0):= generic (N: integer:=8);
(others=>'0'); --se'al de salida Port ( IN_D : in std_logic;
begin CLK : in STD_LOGIC;
UO: practicaN2_selector Rst: in std_logic;
port map ( out_Q : out std_logic;
E1 => E1, out_Q2 : out std_logic);
E2 => E2,
E3 => E3, end FFtipoD_p2;
E4 => E4,
Sel => Sel, architecture Behavioral of FFtipoD_p2 is
salida => salida); begin
out_Q <= ‘0’ when Rst=’1’ else
process IN_D when clk=’1’;
begin
wait for 100ns; end Behavioral;
E1 <= "00000111";
E2 <= "00100111";
Simulació n
E3 <= "01000111";
E4 <= "11110111"; library IEEE;
Sel <= "11"; use IEEE.STD_LOGIC_1164.ALL;
wait for 100ns;
Sel <= "01"; entity sim_FF is
wait for 100ns;
Sel <= "10"; -- Port ( );
wait for 100ns; end sim_FF;
Sel <= "11";
wait for 100ns; architecture Behavioral of sim_FF is
wait; component FFtipoD_p2
end process; Port ( IN_D : in std_logic;
CLK : in STD_LOGIC;
end Behavioral; rst: in std_logic;
out_Q : out std_logic;
out_Q2 : out std_logic);
Esquema
end component;
signal IN_D : std_logic; --se;al de entrada
signal CLK : STD_LOGIC;
signal out_Q : std_logic; -- señal de salida
signal out_Q2 : std_logic;
signal rst : std_logic;

constant CLK_period : time := 10ms;


begin

UO:FFtipoD_p2

port map ( IN_D => IN_D,


CLK => CLK,
out_Q => out_Q,
out_Q2 => out_Q2,
rst => rst);
c- FlipFlop tipo D implementado con có digo
concurrente
5
CLK_process: process Simulació n
begin library IEEE;
CLK <= '0'; use IEEE.STD_LOGIC_1164.ALL;
wait for CLK_period/2;
CLK<= '1'; entity sim_buffer_p2 is
wait for CLK_period/2; -- Port ( );
end process; end sim_buffer_p2;

stim_proc: process architecture Behavioral of sim_buffer_p2 is


begin component buffer_p2
wait for 100ns; Port ( entrada : in STD_LOGIC;
wait for CLK_period*10; enable : in STD_LOGIC;
IN_D <= '1'; salida : out STD_LOGIC);
wait for 100ns; end component;
IN_D <= '0'; signal entrada : STD_LOGIC;
wait for 100ns; signal enable : STD_LOGIC;
IN_D <= '1'; signal salida : STD_LOGIC;
wait for 100ns;
IN_D <= '1'; begin
UO: buffer_p2
end process; port map(
end Behavioral; entrada=>entrada,
Esquema enable=> enable,
salida=>salida
);
process
begin
wait for 100ns;
entrada <= '0';
entrada <= '1';
entrada <= '1';
enable <= '1';
d- Buffer de 3 estados (bit y multibit) wait for 100ns;
Fuente enable <= '0';
library IEEE; wait for 100ns;
use IEEE.STD_LOGIC_1164.ALL; wait;
end process;
entity buffer_p2 is end Behavioral;
Port ( entrada : in STD_LOGIC;
Esquema
enable : in STD_LOGIC;
salida : out STD_LOGIC);
end buffer_p2;

architecture Behavioral of buffer_p2 is

begin
process (enable, entrada) e- Decodificador (generate)
begin Fuente
if (enable='1') then library IEEE;
salida <= entrada; use IEEE.STD_LOGIC_1164.ALL;
else entity dec_p2 is
salida <= 'Z'; Port ( in_AB : in std_logic_vector(1 downto 0);
end if; enable : in STD_LOGIC;
end process; CLK : in STD_LOGIC;
abcd : out STD_LOGIC_VECTOR (3 downto 0));
end Behavioral;

6
end dec_p2; process
begin
architecture Behavioral of dec_p2 is wait for 100ns;
in_AB <= "01";
begin in_AB <= "11";
in_AB <= "10";
process(CLK) in_AB <= "00";
begin enable <= '1';
if ( CLK'event and CLK ='1') then wait for 100ns;
if ( enable = '1') then enable <= '0';
abcd <= "0000"; wait for 100ns;
else wait;
case in_AB is end process;
when "00" => abcd <= "0001"; end Behavioral;
when "01" => abcd <= "0010"; Esquema
when "10" => abcd <= "0100";
when "11" => abcd <= "1000";
when others => abcd <= "0000";
end case;
end if;
end if;
end process;
end Behavioral;
REGISTRO DE RESULTADOS
Simulació n
a) Circuito multiplexor con 2 bits de selecció n y N-
library IEEE; bit inputs (when.. else)
use IEEE.STD_LOGIC_1164.ALL; Simulació n
entity sim_dec_p2 is Tabla de datos
-- Port ( );
E0 E1 E2 E3 S Q
end sim_dec_p2;
1 0 0 0 00 E0
0 1 0 0 01 E1
architecture Behavioral of sim_dec_p2 is
component dec_p2 0 0 1 0 10 E2
Port ( in_AB : in std_logic_vector(1 downto 0); 0 0 0 1 11 E3
enable : in STD_LOGIC;
CLK : in STD_LOGIC; b) Circuito selector con N-bit inputs (with.. select)
abcd : out STD_LOGIC_VECTOR (3 downto 0)); Simulació n
end component;
signal in_AB : std_logic_vector(1 downto 0); Tabla de datos
signal enable :STD_LOGIC; E1 E2 E3 E4 sel salida
signal CLK : STD_LOGIC; A6 65 E7 AD 00 A6
signal abcd : STD_LOGIC_VECTOR (3 downto 0); A6 65 E7 AD 01 65
begin A6 65 E7 AD 10 E7
UO: dec_p2 A6 65 E7 AD 11 AD
port map(
in_AB=>in_AB, c) FlipFlop tipo D implementado con có digo
CLK=> CLK, concurrente
abcd => abcd, Simulació n
enable => enable
); Tabla de datos
IN_D CLK Q
1 TPP 0
1 TPP 1

d) Buffer de 3 estados (bit y multibit)


Simulació n

7
Tabla de datos
enabl entrad salida
e a
65h 1 62h
0h 0 Zz
62h 0 Zz
0h 1 0h

e) Decodificador (generate)
Simulació n

Tabla de datos
In_AB abcd
000 00000001
001 00000010
010 00000100
011 00001000
100 00010000
101 00100000
110 01000000

8
CONCLUSIÓN.

BIBLIOGRAFÍA.

Solís-Sánchez, A., Hernández-Chiñas, U., Navarro-Ocaña, A., De la Mora, J., Xicohtencatl-Cortes, J. and
Eslava-Campos, C., n.d. Genetic characterization of ØVC8 lytic phage for Vibrio cholerae O1.

Solís-Sánchez, A., Hernández-Chiñas, U., Navarro-Ocaña, A., De la Mora, J., Xicohtencatl-Cortes, J. and
Eslava-Campos, C., n.d. Genetic characterization of ØVC8 lytic phage for Vibrio cholerae O1.

9
10

También podría gustarte