1.2.1.2.c Antología - SDLR I
1.2.1.2.c Antología - SDLR I
1.2.1.2.c Antología - SDLR I
Facultad de Ingeniería
Manual de Prácticas
Sistemas Digitales con Lógica Reconfigurable (SDLRI)
Ingeniero en Automatización
Presenta
Luis Ramón Olvera Córdoba
Enero 2022
Universidad Autónoma de Querétaro
Facultad de Ingeniería
Presenta:
Luis Ramón Olvera Córdoba
Dirigido por:
Dr. Juvenal Rodríguez Reséndiz
SINODALES
____________________ ___________________
Nombre y Firma Nombre y Firma
Director de la Facultad Director de Investigación y Posgrado
Centro Universitario
Querétaro, Qro.
México
Contenido
Práctica 1: Registro.
Práctica 2: Multiplexor.
Práctica 3: Sumador.
Práctica 4: Multiplicador.
Práctica 7: Reloj.
.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de un Registro
Número de Práctica 1 Número de Horas 4
Objetivo
El alumno será capaz de realizar la descripción y simulación de un registro utilizando VHDL además de
implementarlo en una FPGA.
Marco Teórico
La operación más común en un registro es la transferencia de datos según su tipo. Registro paralelo o Registro
de desplazamiento, también llamado registro serial donde el paralelo transmite todos los datos al mismo tiempo
y el serial transmite los datos bit por bit uno tras otro.
Los registros son clasificados de acuerdo a la forma en que se da salida a los datos ingresados.
Equipo y Materiales
Prerrequisitos
1. Describir qué es una Entidad, la función que desempeña y ejemplificar su declaración con dos entradas
A y B además de una salida C todos con un valor de un bit.
Una entidad (entity) es el bloque elemental de diseño en VHDL. Las entidades son todos los elementos
electrónicos (sumadores, contadores, compuertas, flip-flops, memorias, multiplexores, etc.) que
forman de manera individual o en conjunto un sistema digital. Además la integración de varios
subsistemas puede representarse mediante una entidad. Los subsistemas pueden conectarse
internamente entre sí; pero la entidad sigue identificando con claridad sus entradas y salidas generales.
Entity entidad is
Port(
A, B: in bit;
C: out bit
);
End sumador;
Una arquitectura se define como la estructura que describe el funcionamiento de una entidad, de tal
forma que permita el desarrollo de los procedimientos que se llevaran a cabo con el fin de que la
entidad cumpla las condiciones de funcionamiento deseadas.
En sistemas digitales se denomina sistema combinacional a aquel cuyas salidas dependen únicamente
del estado de sus entradas en un momento dado.
5. Describir qué es un Flip Flop, mencionar algunos de los tipos que existen.
El flip flop o celda binaria es el elemento básico de memoria en sistemas síncronos o asíncronos. La
característica principal de un flip flop es mantener o almacenar un bit de manera indefinida hasta que
a través de un pulso o una señal cambie de estado. Los flip flops más conocidos son los tipos SR, JK,
T y D.
Metodología
Datos (N:0)
Reset
Reloj
Para poder ejemplificar se presentará la descripción para un registro genérico asignado con 4 bits.
library IEEE;
use IEEE.std_logic_1164.all;
entity registro is
generic(
n:integer:=4
);
port(
rst : in std_logic;
clk : in std_logic;
D : in std_logic_vector(n-1 downto 0);
Q : out std_logic_vector(n-1 downto 0)
);
end registro;
Banco de Pruebas
library IEEE;
use IEEE.std_logic_1164.all;
entity testbench_reg is
generic
(
n: integer:=4
);
end testbench_reg;
architecture TB of testbench_reg is
signal RST : std_logic;
signal CLK : std_logic;
signal D : std_logic_vector(n-1 downto 0);
signal Q : std_logic_vector(n-1 downto 0);
begin
U1: entity work.Registro port map(RST,CLK,D,Q);
process
begin
rst <= '1';
D <= "1011";
wait for 100 nS;
rst<= '0';
D <= "1001";
wait for 100 nS;
rst<= '0';
D <= "0110";
Wait for 100ns;
En la descripción cada que hay un pulso de reloj la salida Q de cuatro bits (o n bits) toma el valor de la
entrada D del mismo número de bits. En el banco de pruebas hay un cambio de valor cada 1oo nS, sin
embargo el primer valor no es tomado en cuenta pues la señal rst está en activo.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Explicar la relación entre Flip Flops y Registros. Mencionar la relación entre las descripciones realizadas en
laboratorio y los temas vistos en clase. Proponer una implementación de registros para un proyecto.
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
Objetivo
Marco Teórico
Los multiplexores o selectores de datos binarios tienen la función de tomar una de varias entradas y enviarla
a la salida (Figura 2.1).
Un multiplexor actúa como un interruptor de posiciones múltiples controlado digitalmente, donde por medio
de un código aplicado a las entradas determina cual de estás será enrutada a la salida.
Equipo y Materiales
Prerrequisitos
Una librería o biblioteca es un lugar al que se tiene acceso para utilizar las unidades de diseño predeterminadas
por el fabricante de la herramienta (paquete) y su función es agilizar el diseño.
Describir que es un paquete en VHDL.
Un paquete es una unidad de diseño que permite desarrollar un programa en VHDL de una manera ágil,
debido a que contiene algoritmos preestablecidos (sumadores, restadores, contadores, etc.) que ya tienen
optimizado su comportamiento.
Una declaración concurrente es aquella no importa el orden en que se escriban las señales pues ya que el
resultado para determinada función sería el mismo.
Los operadores aritméticos permiten realizar operaciones del tipo aritmético, como suma, resta, ultiplicación,
división, cambios de signo, valor absoluto y concatenación. Los operadores relaciónales se usan para evaluar
la igualdad, desigualdad o la magnitud en una expresión. Los operadores lógicos son tilizados en la descripción
de funciones booleanas, son los operadores and, or, nand, xor, xnor y not.
Metodología
a(1:0)
b(1:0) o(1:0)
c(1:0)
s(1:0)
library IEEE;
use IEEE.std_logic_1164.all;
Banco de Pruebas
Library IEEE;
use IEEE.std_logic_1164.all;
entity Mux_TB is
end Mux_TB;
architecture TB of Mux_TB is
signal a,b,c: std_logic_vector(1 downto 0);
signal s: std_logic_vector(1 downto 0);
signal o: std_logic_vector(1 downto 0);
begin k
Ejercicio: Explicar la descripción de Hardware presentada en el ejemplo y el banco de pruebas por medio del
diagrama de formas de onda.
Se tienen las entradas a, b y c que pueden ser mínimo de dos bits, la entrada select que determina cual será el
dato de entrada seleccionado para presentarlo en la salida.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de un sumador
Número de Práctica 3 Número de Horas 4
Objetivo
El alumno será capaz de realizar la descripción y simulación de un sumador utilizando VHDL además de
implementarlo en una FPGA.
Marco Teórico
El sistema numérico binario es el lenguaje natural en los sistemas digitales. Es un sistema de base 2, es decir,
únicamente tiene dos dígitos. Para expresar una equivalencia decimal de un número binario esté se calcula
disponiendo los números con series de potencias con base de 2 como se muestra a continuación.
23 22 21 20
1 0 1 1
El número binario representado anteriormente se representa como falso o verdadero. Los casos de 23, 21, 20
resultan verdaderos y el caso de 22 falso, es decir que el equivalente decimal de este número binario es:
ʹଷ ʹଵ ʹ ൌ ͺ ʹ ͳ ൌ ͳͳ
Suma Binaria
Es importante para el estudiante asimilar que la suma de dos números binarios se calcula basándose en las
mismas reglas que los números decimales. Considerando el hecho de que los valores binarios solo pueden ser
0 o 1 si la suma de dos números es 1+1 está supera los valores posibles y retorna a 0 entonces se genera un
acarreo.
Ejemplos:
10110 Æ Acarreo
+ 1011 Æ Sumando
1001 Æ Sumando
10100 Æ Suma
El ejemplo anterior puede ser explicado considerando que la ecuación lógica que corresponde es la función or-
exclusiva para la suma y and para el acarreo (Figura 3.1), lo cual debe ser considerado al momento de realizar
una descripción de hardware.
AND2
XOR
01
01 0 0 0
0 0 0 0 1 0
0 1 1 1 0 0
1 0 1 1 1 1
1 1 0 Compuerta AND.
Compuerta XOR (or-exclusiva).
Ͳ Ͳ ൌ Ͳͳ
Ͳ ͳ ൌ Ͳͳ
ͳ Ͳ ൌ Ͳͳ
ͳ ͳ ൌ ͳͲ
Equipo y Materiales
Prerrequisitos
Realizar un esquema donde se represente semisumador usando las compuertas AND y XOR.
I1
IN1 O
I0 Suma
IN2
I1
O
I0 Acarreo
Metodología
IN1(N:0)
SUMA (N+1:0)
IN2(N:0)
library IEEE;
use IEEE.std_logic_1164.all;
entity sumador is
generic(
n:integer:=4
);
port(
IN1,IN2 : in std_logic_vector (n-1 downto 0);
SUMA : out std_logic_vector (n downto 0)
);
end sumador;
Banco de Pruebas
library IEEE;
use IEEE.std_logic_1164.all;
entity TB_Sumador is
generic(
n: integer:=4
);
end TB_Sumador;
architecture TB of TB_Sumador is
signal IN1,IN2 : std_logic_vector (n-1 downto 0);
signal SUMA : std_logic_vector (n downto 0);
begin
U1: entity work.Sumador port map(IN1,IN2,SUMA);
process
begin
IN1 <= "0001"; --1
IN2 <= "0010"; --2
wait for 300 nS;
IN1 <= "0011"; --3
IN2 <= "1100"; --12
wait for 300 nS;
IN1 <= "1101"; --13
IN2 <= "1001"; --9
wait for 300 nS;
std.env.stop; -- sirve para parar la simulación automaticamente
end process;
end TB;
Formas de onda
Se realiza la suma de las entradas IN1 e IN2 presentando los resultados hexadecimales 0x03, 0x0F, 0x16
mediante un sumador completo.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de una Multiplicador
Número de Práctica 4 Número de Horas 4
Objetivo
El alumno será capaz de realizar la descripción y simulación de un multiplicador utilizando VHDL además
de implementarlo en una FPGA.
Marco Teórico
La multiplicación de números binarios sigue el mismo principio de orden que la multiplicación de números
decimales, es decir, como observa en la siguiente operación.
బ బ
బ మ ఱ బ బ బ బ భ భ బ బ భ
బ భ మ బ బ బ బ బ భ భ బ బ
బ ఱ బ బ బ బ బ బ బ బ బ బ
మ ఱ బ బ బ బ బ బ బ బ బ బ
య బ బ బ బ భ భ బ బ భ బ బ
బ భ భ బ బ భ బ బ బ
బ బ బ బ బ బ బ బ బ
భ బ బ భ బ భ భ బ బ
En el ejemplo anterior se puede observar que ambos métodos son el mismo a excepción que en una
multiplicación binaria la operación realizada entre ambos elementos es por medio de una compuerta and.
And
0 0 0
0 1 0
1 0 0
1 1 1
Equipo y Materiales
Prerrequisitos
Metodología
IN A
IN B
n bits
* 2*n bits
OUT
n bits
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity mult is
generic(
n : integer:=3
);
port(
IN1,IN2 : in std_logic_vector(n-1 downto 0);
MUL : out std_logic_vector((2*n)-1 downto 0)
);
end mult;
end behavioral;
Banco de pruebas de multiplicador
entity TB_Multi is
generic(
n : integer:=3
);
end TB_Multi;
architecture TB of TB_Multi is
signal IN1,IN2 : std_logic_vector(n-1 downto 0);
signal MUL : std_logic_vector((2*n)-1 downto 0);
begin
U1: entity work.Multi port map(IN1,IN2,MUL);
process
begin
IN1<="001";
IN2<="010";
wait for 100 nS;
IN1<="100";
IN2<="010";
wait for 100 nS;
IN1<="111";
IN2<="111";
wait for 100 nS;
std.env.stop; -- Detener simulación
end process;
end TB;
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de una Maquina de Estados
Número de Práctica 5 Número de Horas 4
Objetivo
El alumno será capaz de realizar la descripción y simulación de una máquina de estados utilizando VHDL
además de implementarlo en una FPGA.
Marco Teórico
En sistemas digitales una máquina de estados finitos (FSM) se puede definir como un algoritmo consistente
en una serie de pasos que ejecutan una tarea de proceso. Estas máquinas son llamadas de estados finitos porque
el número de combinaciones lógicas posibles de los elementos del circuito son cantidades finitas, además es
importante mencionar que las FSM siempre describen circuitos secuenciales.
En la descripción de una FSM existen cuatro características fundamentales: Estados, transiciones, entradas y
salidas.
Las máquinas de estados finitos son descritas por diagramas en los cuales un estado se representa por un círculo
y las transiciones entre los estados se indican mediante líneas orientadas que conectan los círculos.
En los Autómatas de Mealy, las líneas orientadas se etiquetan con dos números binarios separados por una
barra /. El valor de la entrada durante el estado actual precede a la barra, y el siguiente valor tras la barra es el
valor de la salida durante el estado actual aplicando dicha entrada. Una línea orientada que conecta un círculo
consigo mismo indica que no se produce ningún cambio de estados.
Equipo y Materiales
Prerrequisitos
El bloque de estado representa el "estado" de una máquina secuencial y debe contener la siguiente información.
• Nombre del estado. Por lo general se utilizan números (0, 1, 2, 3,... etc.) o letras (A, B, C,... etc).
• Código del estado ("xxxx"). Se refiere al código binario asignado al estado.
• Lista de salidas. Señales de salida asignadas al estado y que sólo se encuentran activas durante el tiempo que
permanezca el sistema en ese estado.
El rombo o bloque de decisión se refiere a las variables de entrada al sistema y contienen la siguiente
información:
• Una variable de entrada. En este rombo se indica el nombre de la variable de entrada.
• Una salida verdadera.
• Una salida falsa.
El bloque de salidas condicionales se utiliza para activar señales de salida que sólo se encuentran disponibles
para ciertas condiciones de entrada. La información contenida en dicho bloque es la siguiente:
Metodología
Se describirá un semáforo.
CTR!=T
CTR!=T CTR!=T
S0
S7 CTR=T S1
CTR=T Verde
Rojo Amarillo
CTR!=T
S2
Apagado
S6
Apagado
CTR!=T CTR!=T
CTR=T
CTR=T
S5 CTR!=T
S3
Amarillo Amarillo
S4
CTR=T CTR=T
Apagado
Donde CTR es un contador y T es una variable de tiempo que determina la duración del estado, toma
diferentes valores dependiendo del estado.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity SM is
port(
rst : in std_logic;
clk : in std_logic;
sem : out std_logic_vector(2 downto 0)
);
end SM;
architecture desarrollo of SM is
constant verde : std_logic_vector (2 downto 0):="001";
constant amarillo : std_logic_vector (2 downto 0):="010";
constant rojo : std_logic_vector (2 downto 0):="100";
constant apagado : std_logic_vector (2 downto 0):="000";
signal Ea : std_logic_vector (3 downto 0);
signal Es : std_logic_vector (3 downto 0);
signal tiempo : std_logic_vector (7 downto 0);
signal ctr : std_logic_vector (7 downto 0);
begin
--FSM
maquina: process(Ea)
begin
case Ea is
when "0000" => sem <= verde;
tiempo<="01100100";
Es <= "0001";
when "0001" => sem <= amarillo;
tiempo<="00001010";
Es <= "0010";
when "0010" => sem <= apagado;
tiempo<="00001010";
Es <= "0011";
when "0011" => sem <= amarillo;
tiempo<="00001010";
Es <= "0100";
when "0100" => sem <= apagado;
tiempo<="00001010";
Es <= "0101";
when "0101" => sem <= amarillo;
tiempo<="00001010";
Es <= "0110";
when "0110" => sem <= apagado;
tiempo<="00001010";
Es <= "0111";
when "0111" => sem <= amarillo;
tiempo<="00001010";
Es <= "1000";
when "1000" => sem <= rojo;
tiempo<="01100100";
Es <= "0000";
when others => sem <="111";
Es <= "0000";
end case;
end process maquina;
--CONTADOR
contador: process(clk)
begin
if rst='1' and clk'event then
Ea <= "0000";
elsif clk='1' and clk'event then
if ctr = tiempo then
ctr<="00000000";
Ea <= Es;
else
ctr<=ctr+1;
end if;
end if;
end process contador;
end desarrollo;
Ejercicio: Explicar la descripción de Hardware presentada en el ejemplo y las formas de onda.
El semáforo comienza en verde, después en intervalos más pequeños de tiempo oscila entre amarillo y
apagado para finalizar en rojo el mismo intervalo de tiempo que el rojo.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Explicar el funcionamiento de una máquina de estados. Mencionar la relación entre las descripciones
realizadas en laboratorio y los temas vistos en clase. Proponer una implementación de una máquina de
estados para una aplicación electrónica.
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Codificador BCD a Siete Segmentos
Número de Práctica 6 Número de Horas 4
Objetivo
Marco Teórico
Decodificadores
La programación de circuitos se basa en establecer la relación entre un código binario aplicado a las entradas
del dispositivo y el nivel de salida obtenido. En esta práctica se presenta una representación decimal codificada
a binario (BCD) al ser uno de los decodificadores más representativos en sistemas digitales.
El sistema binario es el sistema numérico más natural para las computadoras, sin embargo las personas están
acostumbradas al uso del sistema decimal. La solución más evidente para establecer una interface entre un
sistema digital y un usuario humano es realizar una conversión de binario a decimal habiendo realizado todas
las operaciones en binario.
Los diez posibles dígitos en el sistema decimal pueden ser representados por bloques de cuatro bits (“0000”)
que como ya se ha visto en prácticas anteriores pueden representar hasta diez y seis valores (ʹଷ ʹଶ ʹଵ
ʹ ) donde quedan seis valores sin asignar.
Un decodificador BCD a siete segmentos es aquel que acepta códigos BCD en las en las entradas y proporciona
salidas capaces de excitar un display de siete segmentos que represente un valor decimal.
Equipo y Materiales
Prerrequisitos
Metodología
library ieee;
use ieee.std_logic_1164.all;
Entity bcdadecimal is
port (
DIN: in std_logic_vector(3 downto 0);
DOUT: out std_logic_vector(7 downto 0)
);
end bcdadecimal;
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Explicar la necesidad de un decodificador BCD. Mencionar la relación entre las descripciones realizadas en
laboratorio y los temas vistos en clase. Proponer una implementación de una máquina de estados para una
aplicación que sirva como proyecto final.
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de un reloj
Número de Práctica 7 Número de Horas 4
Objetivo
Marco Teórico
Un componente es la parte de un programa que define un elemento físico, el cual puede ser usado en otros
diseños o entidades. El primer paso consiste en describir de manera individual cada uno de los componentes
y/o unidades del circuito. Después de realizar los componentes se procede a crear una entidad principal donde
se implementan para crear una entidad más compleja.
Equipo y Materiales
Prerrequisitos
¿Qué es un contador?
Son entidades de diseño lógico que realizan operaciones de incremento o decremento provocadas por estimulos
externos de tiempo o eventos.
component componente is
port(
IN1 : in std_logic;
IN2 : in std_logic;
OUT : out std_logic
);
end component;
Realizar un Reloj
Diagrama de referencia
Generador de 1 Display
Reloj Contador 0 - 9 BCD a Display Segundos
pulso por segundo 0-9
Display
Contador 0 - 5 BCD a Display Segundos
0-5
Display
Contador 0 - 9 BCD a Display Minutos
0-9
Display
Contador 0 - 5 BCD a Display Minutos
0-5
Reset
entity segundero is
port(
RST : in std_logic;
CLK : in std_logic;
DOUT : out std_logic
);
end segundero;
end desarrollo;
Contador de 0 a 9 o 0 a 5
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity contador_10 is
port(
RST : in std_logic;
CLK : in std_logic;
EN : out std_logic;
DOUT : out std_logic_vector(3 downto 0)
);
end contador_10;
Entity bcdadecimal is
port (
DIN: in std_logic_vector(3 downto 0);
DOUT: out std_logic_vector(7 downto 0)
);
end bcdadecimal;
Entity Reloj is
port (
RST: in std_logic;
CLK: in std_logic;
DOUT0: out std_logic_vector(7 downto 0);
DOUT1: out std_logic_vector(7 downto 0);
DOUT2: out std_logic_vector(7 downto 0);
DOUT3: out std_logic_vector(7 downto 0)
);
end Reloj;
component contador_10 is
port(
RST : in std_logic;
CLK : in std_logic;
EN : out std_logic;
DOUT: out std_logic_vector(3 downto 0)
);
end component;
component contador_60 is
port(
RST : in std_logic;
CLK : in std_logic;
EN : out std_logic;
DOUT: out std_logic_vector(3 downto 0)
);
end component;
component bcdadecimal is
port (
DIN: in std_logic_vector(3 downto 0);
DOUT: out std_logic_vector(7 downto 0)
);
end component;
begin
U01 : segundero port map(RST, CLK, CLK_S0);
La descripción ésta compuesta por un divisor de frecuencia que parte de un reloj de 50 MHz
Para generar pulsos con un periodo de un segundo. A continuación se generan cuatro contadores
que funcionan consecutivamente para obtener el conteo de minutos y segundos.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Explicar el funcionamiento del reloj desde la relación entre sus componentes utilizados. Mencionar la
relación entre las descripciones realizadas en laboratorio y los temas vistos en clase. Proponer una
implementación de un sumador para una aplicación electrónica.
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de comunicación serial
Número de Práctica 8 Número de Horas 4
Objetivo
Marco Teórico
La comunicación entre dispositivos puede realizarse en serie o en paralelo. En las transferencias en paralelo
cada dato tiene su propio camino y se transmite todo el mensaje de una vez, es decir, un mensaje de n bits se
transmite en n caminos separados. En una transmisión serie cada bit del mensaje se envía en secuencia, de uno
en uno.
Transmisión Asíncrona: En las transmisiones asíncronas, cada carácter está formado por tres partes: el bit de
arranque, los bits del carácter y el bit de parada. El convenio es que el transmisor mantiene la línea a 1 cuando
no se transmiten caracteres. El primer bit, llamado bit de arranque es siempre 0 y se usa para indicar el
comienzo del carácter.
1 Bit de inicio
8 Bits de datos
1 Bit de paro
________________________
10 bits en total
LSB MSB
Inicio 0 1 3 4 5 6 7 8 Paro
B0 B1 B2 B3 B4 B5 B6 B7
El receptor puede detectar un carácter transmitido aplicando las reglas de transmisión Cuando no se envía un
carácter la línea permanece en el estado 1. La inicialización de la transmisión se detecta mediante el bit de
arranque, que es siempre 0. Los bits del carácter siempre siguen al bit de arranque. Después de que el último
bit del carácter se ha transmitido, se detecta un bit de parada cuando la línea vuelve a 1 durante al menos el
tiempo necesario para transmitir un bit. Mediante estas reglas, el receptor puede detectar el bit de arranque
cuando la línea pasa de 1 a 0. Mediante el uso de un reloj, el receptor examina la línea en los instantes de
tiempo adecuados para determinar el valor del bit. El receptor conoce la tasa de transferencia de los bits y el
número de caracteres por bit que acepta.
Transmisión síncrona: En esta transmisión para operar adecuadamente, se necesita que los relojes del
transmisor y del receptor permanezcan sincronizados todo el tiempo. La línea de comunicación solo transporta
los bits del dato, de cuya información se debe extraer la frecuencia de reloj.
Equipo y Materiales
Prerrequisitos
Metodología
Se envían ocho bits de datos desde una FPGA al puerto serial de una PC.
1-8 TX
Detector de
Datos
Paridad
1
Generador de Maquina de
9600 baudios Estados
Reloj
Restet
Generador de pulsos a 9600 Baudios
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
Entity Timer_9600 is
port(
RST : in std_logic;
CLK : in std_logic;
B : out std_logic
);
End Timer_9600;
begin
Secuencial : Process(RST,CLK)
begin
if RST='1' then
cont<=0;
elsif CLK'event and CLK='0' then
if cont=5208 then
B<='1';
cont<=0;
else
B<='0';
cont<=cont+1;
end if;
end if;
end process Secuencial;
end behavioral;
Entity MUX_TX is
port(
M : in std_logic_vector(3 downto 0);
D : in std_logic_vector(7 downto 0);
P : in std_logic;
TX : out std_logic
);
End MUX_TX;
Entity FSM_TX is
port(
RST : in std_logic;
CLK : in std_logic;
B : in std_logic;
STT : in std_logic;
EOT : out std_logic;
M : out std_logic_vector(3 downto 0)
);
end FSM_TX;
begin
Combinational : process(Qp,STT,B)
begin
case Qp is
when "0000" =>
if (STT='0') then
Qn<=Qp;
else
Qn<="0001";
end if;
EOT<='1'; --End of transmision activado
M<="1111"; --Provoca que TX sea '1'
when "0001" =>
if(B='0') then
Qn<=Qp;
else
Qn<="0010";
end if;
EOT <='0'; --Desactiva
M<="1111"; -- TX sigue en '1'
when "0010" =>
if (B='0') then
Qn<=Qp;
else
Qn<="0011";
end if;
EOT<='0';
M<="0000";
when "0011" =>
if (B='0') then
Qn<=Qp;
else
Qn<="0100";
end if;
EOT<='0';
M<="0001";
when "0100" =>
if (B='0') then
Qn<=Qp;
else
Qn<="0101";
end if;
EOT<='0';
M<="0010";
when "0101" =>
if (B='0') then
Qn<=Qp;
else
Qn<="0110";
end if;
EOT<='0';
M<="0011";
when "0110" =>
if(B='0') then
Qn<=Qp;
else
Qn<="0111";
end if;
EOT<='0';
M<="0100";
when "0111" =>
if(B='0') then
Qn<=Qp;
else
Qn<="1000";
end if;
EOT<='0';
M<="0101";
when "1000" =>
if(B='0') then
Qn<=Qp;
else
Qn<="1001";
end if;
EOT<='0';
M<="0110";
when "1001" =>
if(B='0') then
Qn<=Qp;
else
Qn<="1010";
end if;
EOT<='0';
M<="0111";
when "1010" =>
if(B='0') then
Qn<=Qp;
else
Qn<="1011";
end if;
EOT<='0';
M<="1000";
when "1011" =>
if(B='0') then
Qn<=Qp;
else
Qn<="0000";
end if;
EOT<='0';
M<="1001";
when others =>
Qn<="0000";
EOT<='0';
M<="1111";
end case;
end process Combinational;
Secuential: process(RST,CLK)
begin
if(RST='1') then
Qp<=(others=>'0');
elsif(CLK'event and CLK='0') then
Qp<=Qn;
end if;
end process Secuential;
end behavioral;
Generador de Paridad
library IEEE;
use IEEE.std_logic_1164.all;
Entity Paridad is
port(
D : in std_logic_vector(7 downto 0);
P : out std_logic
);
End Paridad;
Entity R_TX is
port(
RST : in std_logic;
CLK : in std_logic;
STT : in std_logic;
EOT : out std_logic;
D : in std_logic_vector(7 downto 0);
TX : out std_logic
);
end R_TX;
Component FSM_TX
port(
RST : in std_logic;
CLK : in std_logic;
B : in std_logic;
STT : in std_logic;
EOT : out std_logic;
M : out std_logic_vector(3 downto 0)
);
end component;
Component Timer_9600
port(
RST : in std_logic;
CLK : in std_logic;
B : out std_logic
);
End component;
Component Paridad
port(
D : in std_logic_vector(7 downto 0);
P : out std_logic
);
End Component;
Component MUX_TX
port(
M : in std_logic_vector(3 downto 0);
D : in std_logic_vector(7 downto 0);
P : in std_logic;
TX : out std_logic
);
End Component;
begin
--Instancias
U1: FSM_TX port map(RST,CLK,B,STT,EOT,M);
U2: Timer_9600 port map(RST,CLK,B);
U3: Paridad port map(D,P);
U4: MUX_TX port map(M,D,P,TX);
end behavioral;
library IEEE;
use IEEE.std_logic_1164.all;
Entity Testbench is
end Testbench;
component R_TX
port(
RST : in std_logic;
CLK : in std_logic;
STT : in std_logic;
EOT : out std_logic;
D : in std_logic_vector(7 downto 0);
TX : out std_logic
);
end component;
begin
--Reset
Reset : process
begin
RST <= '1';
wait for 100 ns;
RST <= '0';
wait for 100 ns;
end process Reset;
--Dato
Dato : process
begin
D <= "10100110";
wait for 100 ns;
end process;
--Inicio de transmisión
Inicio : process
begin
STT <= '0';
wait for 100 ns;
STT <= '1';
wait for 200 ns;
STT <= '0';
wait for 200 ns;
end process Inicio;
std.env.stop;
end behavioral;
Formas de onda de comunicación serial.
Evaluación de la Práctica
Deberá realizarse una descripción de hardware según indicaciones del profesor, está deberá ser acompañada
por el código, simulación e implementación en una FPGA así como una explicación paso a paso del
funcionamiento.
Conclusiones
Bibliografía
ROMERO TRONCOSO, René de Jesús, Electrónica Digital y Lógica Programable, 1ra. ED.
México, 2007. 567 p. ISBN: 968-864-449-8.
MAXINES, David G. y otros, VHDL El arte de programar sistemas digitales, 1ra. ed.
México, 2002. 352 p.
UNIVERSIDAD AUTÓNOMA DE QUERÉTARO
FACULTAD DE INFORMÁTICA
MANUAL DE PRÁCTICAS
DISPOSITIVOS PROGRAMABLES
OBJETIVO.
SOPORTE TEÓRICO.
MATERIAL NECESARIO
DESARROLLO
10. Enseguida, se debe crear un diseño vacío, seleccionando la opción Create an Empty
Design. Realice esta opción utilizando como referencia la siguiente imagen. Haga clic en
siguiente.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
11. En la siguiente ventana que aparece, y que se muestra a continuación, nos aseguramos
que esté seleccionada la opción Default HDL Language y a continuación Clic en Siguiente.
12. Dar nombre al diseño y clic en siguiente. Se da el mismo nombre que al espacio de trabajo,
sin embargo, pueden ser nombres diferentes.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
13. Aparece una ventana con un resumen de las características del espacio de trabajo y del
diseño que ha sido creado.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
15. Se debe agregar un archivo al diseño. Haga doble clic en Add New File.
16. A continuación aparece la siguiente ventana. Seleccionamos la opción VHDL Source Code
y damos un nombre al módulo. Debido a que se va a probar la implementación de una
compuerta AND, el nombre que se da al archivo es compuerta_AND. Enseguida clic en
Aceptar.
17. Una vez agregado el archivo, aparece en la pantalla abierto el archivo recién creado, el
cual está vacío. Escriba el código que se muestra en la siguiente figura, el cual es la
descripción de la compuerta AND.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
18. Para compilar el diseño, se puede hacer desde el icono de la barra de herramientas, o
desde el Menú Design.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
20. Para la Simulación, si la versión que está usando es la de estudiante, omita los pasos 21
y 22.
22. Asegurarse de seleccionar el editor de formas de onda de manera correcta y clic en OK.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
24. Inicialice la simulación, seleccionando del menú Simulation -> Initialize Simulation
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
28. Las señales ya tienen valor inicial. Cada que se presione la tecla correspondiente a una
señal, su valor lógico se invierte. Por ejemplo, cuando se presione la tecla “A”, la señal A
va a cambiar su valor a un ‘1’ lógico, y cuando se presione nuevamente la tecla “A”, el valor
lógico de la señal A va a ser nuevamente ‘0’. Lo mismo ocurrirá para la señal B.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
31. Se prueba otros 100 ns y se cambia los valores lógicos de las señales de entrada.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
33. Realice la simulación para las operaciones básicas OR, NAND, NOR, XOR, XNOR, NOT.
34. Obtenga las funciones lógicas de un medio sumador de dos palabras de 2 bit.
35. Obtenga las funciones lógicas de un comparador de dos palabras de 2 bit, donde las
salidas son Mayor que, Menor que, Igual que.
36. Escriba sus conclusiones de la práctica.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 2. Sintetizando la descripción de hardware.
OBJETIVO.
SOPORTE TEÓRICO.
El archivo de programación que cada Dispositivo Lógico Programable (PLD) requiere, debe
ser generado por herramientas de software que corresponden específicamente a su fabricante,
por lo que, en el caso de estas prácticas, estaremos utilizando el software de la empresa Xilinx,
llamado ISE. Este software debe ser descargado desde la página electrónica www.xilinx.com. A
este proceso se le conoce como SÍNTESIS. La síntesis consiste básicamente en la obtención de
las funciones lógicas que se requieren para poder resolver un determinado problema, y viene
acompañada del RUTEO, que consiste básicamente en la interconexión de los circuitos que de
manera interna al encapsulado van a ser utilizados, y la conexión con las terminales externas del
mismo encapsulado, para su comunicación con el exterior del encapsulado.
El software es gratuito, por lo que no debe representar para el estudiante problema alguno. El
estudiante debe registrarse en esta página, para que pueda tramitar la licencia correspondiente.
Es importante que la versión del software, y por lo tanto de la licencia, sea Webpack, que es
gratuita, y no tiene caducidad dicha licencia.
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
5. En la siguiente ventana se debe asignar las características del PLD a usar como receptor
de la descripción que se está realizando.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
dispositivo, o en su defecto, simplemente la descripción desarrollada no funcionará en el
caso de que se pueda programar el dispositivo. Cuando todo sea correcto, hacer clic en
Next.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
8. Se debe especificar el tipo de fuente y el nombre a utilizar. Seleccione VHDL Module y
como nombre utilice compuertaAND. Haga clic en Next.
9. En la siguiente ventana, puede asignar el nombre, tipo y tamaño de todas las señales que
vaya a utilizar en la descripción de hardware. Si no desea utilizarlo, simplemente haga clic
en Next, y todas las señales y sus características debe implementarlas de forma manual.
Cuando haya terminado de crear todas las señales, haga clic en Next.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
11. Abra el nuevo archivo, y observe las características del mismo. Como puede ver, el archivo
ya ha sido creado con los puertos especificados al principio.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
12. Elimine, si lo desea, los comentaros generados por la herramienta, y el código de la
descripción queda de la siguiente manera.
13. Ahora, debe asegurarse que el código del archivo compuertaAND sea tal como se muestra
a continuación.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity compuertaAND is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC);
end compuertaAND;
architecture Behavioral of compuertaAND is
begin
Y <= A and B;
end Behavioral;
14. Ya que tenemos la descripción terminada, debemos sintetizar la aplicación. Para esto,
seleccione la entidad (como se muestra en la figura) y haga doble clic en Synthesize.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
17. Aparece la siguiente ventana. Aquí se indica que es necesario el uso de un archivo de
restricción de implementación (UCF), y debe estar asociado al proyecto, por lo que
pregunta si se desea que de manera automática se cree el UCF o no. Haga clic en Yes.
18. Ahora, en la ventana siguiente, se deben asignar las señales a las terminales físicas que
correspondan al uso que se les desee dar.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
19. Se graba el archivo y se cierra el programa que fue abierto. El ISE debe seguir abierto.
20. En la ventana de diseño debe aparecer el archivo UCF asociado a la descripción que se
desea implementar.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
23. Si todo está correcto, aparecerán unas figuras de color verde a un lado de cada uno de los
procesos, como se muestra en la figura.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 3. Programación del Dispositivo Lógico
OBJETIVO.
Que el estudiante aprenda a programar los dispositivos lógicos programables, utilizando las
herramientas adecuadas, comprobando la funcionalidad y ventajas de los lenguajes descriptivos
de hardware en la implementación de un sistema digital.
SOPORTE TEÓRICO.
Esta es la última parte del proceso de diseño, y es básicamente donde podemos comprobar si
el diseño funciona correctamente o no. En este proceso, requerimos utilizar el software que la
compañía DIgilent pone a nuestra disposición, llamado Adept, y que puede ser descargado de la
siguiente dirección: www.digilentinc.com.
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 3
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 3
9. Haga clic en Browse, y seleccione el archivo que tiene extensión .bit, con el nombre
correspondiente al proyecto que desea programar en el dispositivo, y que se encuentra en
la misma carpeta que el proyecto. Haga clic en Aceptar.
10. Finalmente, haga clic en Program y su dispositivo estará programado. Debe probar la
implementación, y si hace lo que desde un principio se deseaba, felicitaciones,ya ha
realizado su primera descripción de hardware. De lo contrario, debe revisar nuevamente el
proceso desde la simulación, para encontrar y corregir el error.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 3
11. Dibuje un diagrama de flujo que describa correctamente todo el proceso de diseño de una
descripción de hardware, desde el planteamiento de la solución, hasta la programación en
el dispositivo lógico.
12. Escriba sus conclusiones personales.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 4. Implementación de una función lógica.
OBJETIVO.
Que el alumno aprenda a implementar una función lógica de manera general, utilizando el
lenguaje descriptivo de hardware, lo simule, sintetice, se realice el ruteo y finalmente se programe
el dispositivo FPGA, y compruebe que la implementación es correcta.
SOPORTE TEÓRICO.
library IEEE;
use IEEE.std_logic_1164.all;
entity funcion is
port(
a,b,c : in std_logic;
f : out std_logic
);
end funcion;
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 5. Implementación de multiplexores y demultiplexores.
OBJETIVO.
SOPORTE TEÓRICO.
Los multiplexores son circuitos combinacionales con varias entradas de datos y solamente una
salida de datos. Se requiere de una señal de control, para poder seleccionar la entrada que se
debe transmitir a la salida. Las entradas de datos pueden ser de 1 o más bit, pero todas las
entradas deben de tener el mismo tamaño en bit, así como la salida de datos; de lo contrario, no
es posible implementar el multiplexor. La señal de control debe ser de un tamaño en bit tal, que
permita el manejo de todas las señales de entrada, es decir, si tengo 4 entradas, requiero dos bit
de la señal de control; si tengo 8 entradas, requiero 3 bit de la señal de control. El número de
entradas del multiplexor depende del número de bit de la señal de control, como se muestra a
continuación.
ܰ݁ = 2
library IEEE;
use IEEE.std_logic_1164.all;
entity Mux2a1_1bit is
port(
A0, A1: in std_logic;-- Entradas
S: in std_logic;-- Selector
Y: out std_logic -- Salida del Multiplexor
);
end Mux2a1_1bit;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
A continuación, se presenta diversos multiplexores en su diagrama a bloques, su tabla de
verdad y el código respectivo.
Multiplexor 4 a 1 de 1 bit
library IEEE;
use IEEE.std_logic_1164.all;
entity Mux4a1_1bit is
port(
A : in std_logic_vector(3 downto 0); -- Entrada de 4
bit
S : in std_logic_vector(1 downto 0); -- Señal del
-- selector de 2
bit
Y : out std_logic -- Salida del Mux
);
end Mux4a1_1bit;
entity Mux4a1_3bit is
port(
A0 : in std_logic_vector(2 downto 0); -- Entrada 0 de 3
bit
A1 : in std_logic_vector(2 downto 0); -- Entrada 1 de 3
bit
A2 : in std_logic_vector(2 downto 0); -- Entrada 2 de 3
bit
A3 : in std_logic_vector(2 downto 0); -- Entrada 3 de 3
bit
S : in std_logic_vector(1 downto 0); -- Selector de 2
bit
Y : out std_logic_vector(2 downto 0) -- Salida del Mux
);
end Mux4a1_3bit;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
Multiplexor: process(A0,A1,A2,A3,S) is
begin
case S is
when "00" => Y <= A0;
when "01" => Y <= A1;
when "10" => Y <= A2;
when others => Y <= A3;
end case;
end process Multiplexor;
end Mux;
Multiplexor genérico
library IEEE;
use IEEE.std_logic_1164.all;
entity Multiplexor is
generic(
n : integer := 4; -- 4 bit de datos
m : integer := 2 -- 2 bit de selección
);
port(
A0 : in std_logic_vector(n-1 downto 0); -- Entrada 0, 3
bit
A1 : in std_logic_vector(n-1 downto 0); -- Entrada 1, 3
bit
A2 : in std_logic_vector(n-1 downto 0); -- Entrada 2, 3
bit
A3 : in std_logic_vector(n-1 downto 0); -- Entrada 3, 3
bit
S : in std_logic_vector(m-1 downto 0); -- Selector 2 bit
Y : out std_logic_vector(n-1 downto 0) -- Salida del Mux
);
end Multiplexor;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
ܰ = ݏ2
entity Demux1a2 is
port(
A : in std_logic; -- Entrada de 1 bit
S : in std_logic; -- Señal del selector de 1 bit
Y : out std_logic_vector(1 downto 0)-- Salida
);
end Demux1a2;
Demultiplexor 2 a 4 de 1 bit
library IEEE;
use IEEE.std_logic_1164.all;
entity Demux2a4 is
port(
A : in std_logic; -- Entrada de 1 bit
S : in std_logic_vector (1 downto 0); -- Selector de
-- 2 bit
Y0: out std_logic; -- Salida 0 del Demux de 1 bit
Y1: out std_logic; -- Salida 1 del Demux de 1 bit
Y2: out std_logic; -- Salida 2 del Demux de 1 bit
Y3: out std_logic -- Salida 3 del Demux de 1 bit
);
end Demux2a4;
Demultiplexor 2 a 4 de 3 bit
library IEEE;
use IEEE.std_logic_1164.all;
entity Demux2a4 is
port(
A : in std_logic_vector(2 downto 0); -- Entrada de 3 bit
S : in std_logic_vector(1 downto 0); -- Selector de 2 bit
Y0: out std_logic_vector(2 downto 0); -- Salida 0 de 3 bit
Y1: out std_logic_vector(2 downto 0); -- Salida 1 de 3 bit
Y2: out std_logic_vector(2 downto 0); -- Salida 2 de 3 bit
Y3: out std_logic_vector(2 downto 0) -- Salida 3 de 3 bit
);
end Demux2a4;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
end Demux;
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 6. Implementación de operaciones relacionales.
OBJETIVO.
SOPORTE TEÓRICO.
Estos bloques controlan el flujo de las señales, y se pueden ver también como comparadores.
Estos bloques tienen como base el uso de operadores relacionales, los cuales pueden ser: igual
(‘=’), diferente (‘/’ o ‘!’), mayor que (‘>’), menor que (‘<’), mayor o igual que (‘>=’) o menor o igual
que (‘<=’).
library IEEE;
use IEEE.std_logic_1164.all;
entity Relacional is
port(
A,B : in std_logic_vector(3 downto 0);
R : out std_logic
);
end relacional;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 6
end Rel;
MATERIAL NECESARIO
DESARROLLO
1. Para cada una de las operaciones relacionales expresadas en la sección de teoría, dibuje
el diagrama de bloque descriptivo de hardware correspondiente.
2. Simule cada una de las operaciones relacionales, dibuje el diagrama de tiempos
correspondiente a la simulación, y explique el diagrama, demostrando que efectivamente
está funcionando la descripción de hardware.
3. Implemente y pruebe cada una de las operaciones relacionales, indicando las terminales
usadas para cada una de las operaciones simuladas.
4. Diseñe desde el diagrama a bloques descriptivo de hardware genérico, hasta la
implementación, un circuito combinacional que maneje todas las operaciones relacionales
implementadas en los puntos 2 y 3, y utilizando otra señal externa, se pueda seleccionar
la operación que se desee. Muestre esta descripción funcionando al profesor.
5. Escriba sus conclusiones personales de la práctica.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 7. Codificadores.
OBJETIVO.
SOPORTE TEÓRICO.
Los codificadores son utilizados para resolver problemáticas específicas, o bien, para acoplar
la información y poder exhibirla. Como ejemplo de esto, veremos los siguientes ejemplos.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 7
library IEEE;
use IEEE.std_logic_1164.all;
entity CodigoGray is
port(
B : in std_logic_vector(3 downto 0);
G : out std_logic_vector(3 downto 0)
);
end CodigoGray;
architecture Codigo of CodigoGray is
begin
Decodificacion: process(B)
begin
case B is
when "0000" => G <= "0000";
when "0001" => G <= "0001";
when "0010" => G <= "0011";
when "0011" => G <= "0010";
when "0100" => G <= "0110";
when "0101" => G <= "0111";
when "0110" => G <= "0101";
when "0111" => G <= "0100";
when "1000" => G <= "1100";
when "1001" => G <= "1101";
when "1010" => G <= "1111";
when "1011" => G <= "1110";
when "1100" => G <= "1010";
when "1101" => G <= "1011";
when "1110" => G <= "1001";
when others => G <= "1000";
end case;
end process Decodificacion;
end Codigo;
Este es uno de los codificadores más utilizados, y se utiliza especialmente para mostrar valores
en un exhibidor de 7 segmentos. A continuación, se muestra el bloque descriptivo de hardware
respectivo.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 7
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 7
a. BCD a Exceso 3.
b. 10 entradas y 4 salidas.
c. De prioridad.
d. Hexadecimal a Gray.
e. BCD a decimal.
f. Binario a hexadecimal, mostrando el valor en el exhibidor de 7 segmentos.
g. Binario a BCD.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 8. Conversión de Binario a BCD.
OBJETIVO.
SOPORTE TEÓRICO.
BCD significa Decimal codificado en binario (Binary Code Decimal), y consiste básicamente
en convertir un formato numérico binario a un formato BCD para que pueda que el valor
equivalente en binario pueda ser representado en decimal, para que el usuario final pueda
interpretar adecuadamente los datos binarios.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
library IEEE;
use IEEE.std_logic_1164.all;
entity Codificador_BCD is
port(
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0)
);
end Codificador_BCD;
Con este codificador, podemos construir una gran variedad de convertidores de Binario a BCD,
como se va a ver a continuación.
Entonces, las señales intermedias agregadas son S1 y S2, ambas de 4 bit. A continuación, se
presenta el código VHDL.
library IEEE;
use IEEE.std_logic_1164.all;
entity Bin_BCD_4b is
port(
B : in std_logic_vector(3 downto 0);
D : out std_logic;
U : out std_logic_vector(3 downto 0)
);
end Bin_BCD_4b;
component Codificador_BCD is
port(
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0)
);
end component;
begin
S1 <= '0' & B(3 downto 1);
U <= S2(2 downto 0) & B(0);
D <= S2(3);
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
library IEEE;
use IEEE.std_logic_1164.all;
entity Bin_BCD_8bit is
port(
B : in std_logic_vector(7 downto 0);
U : out std_logic_vector(3 downto 0);
D : out std_logic_vector(3 downto 0);
C : out std_logic_vector(1 downto 0)
);
end Bin_BCD_8bit;
component CodificadorBinBCD
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
port(
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0)
);
end component;
begin
S1 <= '0' & B(7 downto 5);
Modulo_01: CodificadorBinBCD port map (S1, S2);
S3 <= S2(2 downto 0) & B(4);
Modulo_02: CodificadorBinBCD port map (S3, S4);
S5 <= S4(2 downto 0) & B(3);
Modulo_03: CodificadorBinBCD port map (S5, S6);
S7 <= '0' & S2(3) & S4(3) & S6(3);
Modulo_04: CodificadorBinBCD port map (S7, S9);
S8 <= S6(2 downto 0) & B(2);
Modulo_05: CodificadorBinBCD port map (S8, S10);
S11 <= S9(2 downto 0) & S10(3);
Modulo_07: CodificadorBinBCD port map (S11, S13);
S12 <= S10(2 downto 0) & B(1);
Modulo_06: CodificadorBinBCD port map (S12, S14);
MATERIAL NECESARIO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 9. Manejo de 4 exhibidores de 7 segmentos conectados en paralelo.
OBJETIVO.
SOPORTE TEÓRICO.
Los exhibidores de 7 segmentos son muy utilizados como interfaz de usuario, para que se
puedan mostrar mensajes o cantidades específicas. Por ejemplo, en un reloj digital, los
exhibidores son utilizados para mostrar la hora, minutos y en algunos casos, segundos.
Los exhibidores de 7 segmentos son diodos LED interconectados entre ellos, como se puede
ver en la figura 2. Los exhibidores se clasifican en ánodo común y cátodo común.
(a) (b)
Figura 2. Estructura interna de los exhibidores de 7 segmentos. (a) Cátodo común. (b) Ánodo común.
Los exhibidores de cátodo común, se caracterizan en que el común debe conectarse a nivel
lógico 0 (generalmente tierra), y los segmentos deben encender cuando se conecta un ‘1’ lógico
a cualquiera de las entradas a, b, c, …, g. En cambio, los exhibidores de ánodo común, la terminal
común debe conectarse a nivel lógico 1 (generalmente Vcc), y para que los segmentos enciendan
debe conectarse a las señales a, b, c, …, f, un ‘0’ lógico.
Para conectarse cuatro exhibidores, no es recomendable utilizar 28 terminales, una para cada
led. La técnica más utilizada, se conoce como “barrido”, donde utilizando transistores conectados
a las terminales comunes de cada exhibidor, se conecta o desconecta el común, y de esa forma,
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
se logra que solamente uno de los cuatro exhibidores esté activo en un instante de tiempo. Por
otra parte, se debe considerar que los cuatro exhibidores se encuentran conectados en paralelo,
es decir, la señal a que enciende o apaga el segmento a del exhibidor, está conectada a todos
los segmentos a de los cuatro exhibidores.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
La señal B es una señal de 4 bit, y se utiliza para activar los transistores que “encienden” (ON)
o “apagan” (OFF) un exhibidor específico. El valor lógico de la señal depende del tipo de arreglo
que se utilice para controlar el encendido/apagado de los exhibidores.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Codif_BCD_7seg is
port (
POL : in std_logic;
BCD : in std_logic_vector (3 downto 0);
S : out std_logic_vector (6 downto 0)
);
end Codif_BCD_7seg;
library IEEE;
use IEEE.std_logic_1164.all;
entity Exh_7seg is
port(
POL : in std_logic;
BCD : in std_logic_vector(3 downto 0);
S : in std_logic_vector(3 downto 0);
B : out std_logic_vector(3 downto 0);
SEG : out std_logic_vector(6 downto 0)
);
end Exh_7seg;
component Codif_BCD_7seg is
port (
POL : in std_logic;
BCD : in std_logic_vector (3 downto 0);
S : out std_logic_vector (6 downto 0)
);
end component;
begin
B <= S;
library IEEE;
use IEEE.std_logic_1164.all;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
entity Banco_Exh_7seg is
end Banco_Exh_7seg;
component Exh_7seg is
port(
POL : in std_logic;
BCD : in std_logic_vector(3 downto 0);
S : in std_logic_vector(3 downto 0);
B : out std_logic_vector(3 downto 0);
SEG : out std_logic_vector(6 downto 0)
);
end component;
begin
Modulo: Exh_7seg port map (POL, BCD, S, B, SEG);
Signal_BCD: process
begin
BCD <= "0000";
wait for 100 ns;
BCD <= "0001";
wait for 100 ns;
BCD <= "0010";
wait for 100 ns;
BCD <= "0011";
wait for 100 ns;
BCD <= "0100";
wait for 100 ns;
BCD <= "0101";
wait for 100 ns;
BCD <= "0110";
wait for 100 ns;
BCD <= "0111";
wait for 100 ns;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
BCD <= "1000";
wait for 100 ns;
BCD <= "1001";
wait for 100 ns;
BCD <= "1010";
wait for 100 ns;
BCD <= "1011";
wait for 100 ns;
BCD <= "1100";
wait for 100 ns;
BCD <= "1101";
wait for 100 ns;
BCD <= "1110";
wait for 100 ns;
BCD <= "1111";
wait for 100 ns;
end process Signal_BCD;
Signal_S: process
begin
S <= "1111";
wait for 20 ns;
S <= "1110";
wait for 20 ns;
S <= "1101";
wait for 20 ns;
S <= "1011";
wait for 20 ns;
S <= "0111";
wait for 20 ns;
end process Signal_S;
end Banco;
La gráfica de tiempos que debe obtener con el banco de pruebas debe parecerse a la gráfica
siguiente.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 10. Binario a BCD con exhibición en 7 segmentos.
OBJETIVO.
SOPORTE TEÓRICO.
El propósito de convertir un dato binario a un valor en decimal, es poder mostrar los resultados
al usuario del sistema. Por lo tanto, en esta práctica se implementa el convertidor binario a BCD,
con salida a exhibidores de 7 segmentos.
Para llevar a cabo lo anterior, veamos el siguiente ejemplo, donde se implementa el convertidor
de binario a BCD a 8 bit, con salida a exhibidor de 7 Segmentos. Observe la entidad de la figura
9.
Figura 9. Entidad para la implementación del Convertidor Binario a BCD de 8 bit con salida a los
exhibidores de 7 segmentos.
Las señales involucradas en la figura 9 se muestran en la tabla con una breve descripción de
cada una.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 11. Operaciones aritméticas.
OBJETIVO.
Que el alumno aprenda a implementar las operaciones básicas que tienen que ver con la
aritmética digital, los implemente e interprete correctamente los resultados para saber si el
resultado es el correcto o no.
SOPORTE TEÓRICO.
Las operaciones básicas son importantes en el desarrollo de aplicaciones reales de los PLD,
por lo que es importante que el estudiante aprenda a utilizarlos y a implementarlos correctamente.
A continuación se explica algunas operaciones básicas importantes.
COMPLEMENTO 2
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Complemento2 is
generic(
n : integer := 4
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
);
port(
A : in std_logic_vector(n-1 downto 0);
C2: out std_logic_vector(n-1 downto 0)
);
end Complemento2;
SUMADORES
Las entradas del sumador se representan con las señales A y B, y la salida es la señal S. las
señales pueden ser de 1 o más bit, y se debe cuidar que todas las señales sean del mismo
tamaño en bit. El código de un sumador genérico se muestra a continuación.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Sumador_n_bit is
generic(
n : integer := 4
);
port(
A : in std_logic_vector(n-1 downto 0);
B : in std_logic_vector(n-1 downto 0);
S : out std_logic_vector(n-1 downto 0)
);
end Sumador_n_bit;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
RESTADOR
El restador es similar al sumador, y debe cumplir con las mismas características en tamaños
de bit, y se puede utilizar el mismo bloque descriptivo, solamente se cambia el signo de suma ‘+’,
por el signo de resta ‘-‘, como se muestra a continuación.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Restador_n_bit is
generic(
n : integer := 4
);
port(
A : in std_logic_vector(n-1 downto 0);
B : in std_logic_vector(n-1 downto 0);
R : out std_logic_vector(n-1 downto 0)
);
end Restador_n_bit;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
begin
Operacion: process(A,B)
variable RU : unsigned(n-1 downto 0);
begin
RU := unsigned(A) - unsigned(B);
R <= std_logic_vector(RU);
end process;
end Resta;
MULTIPLICADOR
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Multiplicador_n_bit is
generic(
n : integer := 4
);
port(
A : in std_logic_vector( n-1 downto 0);
B : in std_logic_vector( n-1 downto 0);
M : out std_logic_vector(2*n-1 downto 0)
);
end Multiplicador_n_bit;
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 12. Fundamentos de Lógica Secuencial.
OBJETIVO.
SOPORTE TEÓRICO.
Elementos de memoria.
Un sistema digital tiene como base los elementos de memoria, los cuales permiten “recordar”
el estado actual, y de acuerdo a eso, tomar una decisión de la siguiente acción a realizar. La
lógica secuencial va de la mano de la electrónica combinacional, como se muestra en la figura
11.
Los elementos de memoria son conocidos como Flip-Flop (FF), y se utilizan para “almacenar”
el estado actual (p) y el próximo estado (n). En la figura se muestra un FF, con una señal de
salida (Q), así como su estado presente (Qp) y su próximo estado (Qn). Como se puede observar,
el estado presente Qp se reconoce como el valor actual Q del FF, mientras que el próximo estado
(Qn) es el valor que va a tener Q cuando se tenga la señal de cambio de estado válida.
La señal de cambio de estado se clasifica en reloj (CLK) y nivel (L). Los FF que utilizan como
señal de cambio, se conocen como “Candado” o “Latch”, mientras que los que utilizan la señal
CLK son los “Elementos de Memoria”.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
La señal de reloj (CLK) puede ser por borde positivo o borde negativo. El borde positivo se
identifica porque ocurre cuando hay un cambio de nivel lógico de ‘0’ a ‘1’. En cambio, el borde
negativo, ocurre cuando la señal CLK cambia de ‘1’ a ‘0’ lógico. Los “candados” funcionan por
nivel lógico positivo o negativo. El nivel positivo es cuando L vale ‘1’ lógico, en cambio, es negativo
cuando L = 0 lógico. Todo esto se muestra en la figura 13.
Los FF tienen su origen en un arreglo de dos compuertas nand, conectadas como se muestra
en la figura 14. Este FF es conocido como SR y la figura 14 muestra también su tabla de verdad.
Las señales S y R son las entradas al FF, Q es la salida y Q
ഥ es el complemento de la salida Q.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
La figura 17muestra la estructura básica de un FF con reloj de borde positivo, así como su
tabla de verdad. Como se puede observar en la tabla de verdad, la salida solamente es
actualizada cuando ocurre el cambio positivo en la señal CLK. En cualquier otra circunstancia, la
salida permanece sin cambio. Lo anterior también se puede apreciar en el diagrama de tiempos
de la figura 18, donde la línea punteada indica el momento en que ocurre el borde positivo de la
señal CLK, y solamente en ese momento la salida puede cambiar, de acuerdo con los valores de
las señales de entrada SR.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
Existen varios tipos de FF, de acuerdo a la arquitectura interna de cada uno, sin embargo, el
tipo de FF que se utiliza en descripción de hardware, es el FF tipo D, siendo sus bloques
descriptivos de hardware, como se muestran en la figura 19.
Figura 19. FF tipo D. (a) nivel positivo. (b) nivel negativo. (c) borde positivo. (c) borde negativo.
Los FF también cuentan con dos señales de control, borrado (clear) y pre-fijado (preset), como
se muestran en la figura. Estas señales son asíncronas y se utilizan para inicializar el valor de
salida de un FF. Cuando se activa el borrado, la salida se pone en ‘0’ lógico, y cuando se activa
el pre-fijado, la salida se pone en ‘1’ lógico. Estas señales pueden ser activas en alto (‘1’ lógico)
o en bajo (‘0’ lógico). El diseñador puede elegir el nivel que considere más adecuado; sin
embargo, se recomienda que siempre se utilice el mismo criterio, de lo contrario, es muy probable
que la descripción no funcione. La figura 20 muestra la forma general de las señales de borrado
y pre-fijado con sus niveles de activación.
Figura 20. Bloque del FF con las señales de borrado y pre-fijado y sus niveles de activación. (a) activo en
bajo. (b) activo en alto.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
En el desarrollo de las prácticas se va a utilizar el borde positivo para los FF, y los niveles de
activación para el borrado y prefijado serán en nivel alto. Ambas señales serán manejadas
utilizadas una señal llamada inicialización (reset), la cual representamos como RST.
La figura 21 muestra un FF tipo D con señal de reloj de borde positivo, así como su tabla de
verdad. En la tabla de verdad, puede observar que la salida Q va a tomar el valor que se encuentre
presente en la señal de entrada D, y su valor se toma exclusivamente en el momento en que
ocurre el borde de reloj. El triángulo que se observa en el FF indica que se trata de una entrada
de reloj.
library IEEE;
use IEEE.std_logic_1164.all;
entity FF_D is
generic(
n : integer := 4
);
port(
RST: in std_logic;
CLK: in std_logic;
D : in std_logic_vector(n-1 downto 0);
Q : out std_logic_vector(n-1 downto 0)
);
end FF_D;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
library IEEE;
use IEEE.std_logic_1164.all;
entity FF_D_H is
generic(
n : integer := 4
);
port(
RST : in std_logic;
CLK : in std_logic;
H : in std_logic;
D : in std_logic_vector(n-1 downto 0);
Q : out std_logic_vector(n-1 downto 0)
);
end FF_D_H;
Las Máquinas de Estado Finito (FSM, por sus siglas en inglés), son utilizadas para obtener
una secuencia en una salida digital, para lo cual debemos comprender los siguientes términos.
Para indicar el flujo de la secuencia, es necesario el uso de transiciones, las cuales son líneas
que terminan en flecha, con lo que se indica de qué estado se parte y a qué estado se va a llegar.
Esto se puede observar en la figura 24, donde se implementan transiciones incondicionales, es
decir, cuando ocurre el borde de reloj, siempre va a cambiar de estado. Toda máquina de estado
debe tener al menos una salida, y en la figura el grafo tiene una señal de salida llamada Q. Los
valores de la salida se encuentran dentro de los estados del grafo, numerados, debajo del nombre
del estado. En este caso, la salida Q es de dos bit.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity FSM_Incondicional is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : out STD_LOGIC_vector(1 downto 0)
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
);
end FSM_Incondicional;
En la figura 25 se muestra un grafo con transiciones, similar a la figura 24. En esta ocasión, el
grafo debe tener al menos una entrada que condicione el cambio de estado, y en esta ocasión se
utiliza la señal A como señal de control de transición. Si el valor de la señal de entrada no es
importante para alguna transición, entonces se escribe una x como se muestra en la figura. Se
puede tener cualquier cantidad de señales de entrada y de salida, pero las señales de entrada se
escriben en un renglón separadas por comas, y las salidas se escriben un renglón debajo de las
entradas, separadas por comas.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
entity FSM_Condicional is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
A : in std_logic;
Q : out STD_LOGIC_vector(1 downto 0)
);
end FSM_Condicional;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
DESARROLLO
3. Implemente la siguiente arquitectura y defina para ella una entidad. La señal H debe
detener la exhibición, dejando siempre activado un exhibidor.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
4. Modifique la máquina secuencial para que se permita apagar todos los exhibidores. Es
decir, cuando esta H señal valga ‘1’, la entidad estará exhibiendo los valores en los
exhibidores, pero una vez que su valor pase a ‘0’, todos los exhibidores deben apagarse,
hasta que finalmente se vuelva a habilitar la exhibición.
5. Debido a que la tarjeta que se está utilizando utiliza un reloj de 50 MHz, el período es de
20 ns, y se vuelve muy complicado el poder visualizar ciertos resultados en los led’s o en
los exhibidores de 7 segmentos. Debido a lo anterior, se requiere de un divisor de
frecuencia que permita manejar frecuencias más bajas para cierto tipo de casos. La entidad
para el divisor de frecuencia se muestra a continuación.
6. Donde M es el valor que debe ser programado de acuerdo al período que se desee de
acuerdo a la siguiente fórmula.
ܲ݁݀ܽ݁ݏ݁݀ ݀݅ݎ
=ܯ
ܲ݁ݎí݆݈ܴ݁ ݁݀ ݀
Por ejemplo, si deseo un pusl de reloj cada 1 ms, con períodos de reloj de 20 ns, el valor
de M es
1 ݉ݏ 1 × 10ିଷ
=ܯ = = 50,000
20 ݊ ݏ20 × 10ିଽ
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
Por lo tanto, el valor de M en binario es 1100001101010000 y dado que para representar
el valor de M se requiere de 16 bit, el valor de n entonces es 16.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
9. Ajuste el valor de M del punto 8 para que no se aprecie el parpadeo de los exhibidores.
10. Proponga una arquitectura para un divisor de frecuencia con habilitador, escriba el código
y realice la simulación para comprobar que funciona.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 13. Contadores
OBJETIVO.
SOPORTE TEÓRICO.
Los contadores se caracterizan en que la salida es igual al valor del estado lógico de la
máquina secuencial, de tal forma que no es necesaria la implementación de funciones lógicas de
la salida. Las principales definiciones que el estudiante debe conocer de un contador son las
siguientes:
x Inicialización. Se lleva a cabo por medio de una señal de inicialización, que por lo
general, vamos a llamar RST. Vamos a utilizar el reset activo en alto, es decir, cuando
RST=’1’, el contador se va a ir a un estado conocido, que generalmente va a ser el
estado 0.
x Reloj. El reloj se utiliza para sincronizar el cambio de estado, y tiene que ver con la
velocidad a la cual cambia de un estado a otro. En estas prácticas vamos a utilizar el
reloj activo en el borde positivo.
x Habilitación. Es una señal que se utiliza como un permisivo para que el contador
cambie de estado, independiente de la señal de reloj.
x Dirección. Los contadores pueden ser ascendentes o descendentes, dependiendo del
valor de una señal de control de dirección.
x Módulo. Indica el número de cuentas diferentes que puede hacer el contador, de tal
forma que, si el contador es de 4 bit, el máximo valor del módulo que se puede diseñar
es de 16.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10
El código VHDL para el contador es el siguiente.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Contador is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : out STD_LOGIC_vector(1 downto 0)
);
end Contador;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Contador_AD is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
D : in std_logic;
Q : out STD_LOGIC_vector(1 downto 0)
);
end Contador_AD;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10
if (D=’0’) then
Sn <= "01";
else
Sn <= "11";
End if;
when others =>
if (D=’0’) then
Sn <= "10";
else
Sn <= "00";
End if;
end case;
end process Conteo;
En la siguiente imagen, se muestra un contador con control de dirección y con una señal de
habilitación, H. Si H=1, en realidad no importa el borde de reloj, pues el contador está
deshabilitado, y por lo tanto, tampoco importa el valor de la entrada D. Solamente cuando H=0,
entonces el contador está habilitado, y obedecerá a las señales de reloj y D.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Contador_AD_H is
port(
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
D : in std_logic;
Q : out STD_LOGIC_vector(1 downto 0)
);
end Contador_AD_H;
MATERIAL NECESARIO
DESARROLLO
Para cada uno de los ejercicios debe mostrar el diseño de la entidad y de la arquitectura
en el diagrama a bloques.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 14. Contadores Mayores
OBJETIVO.
Que el alumno aprenda a implementar contadores que utilicen más de 5 bit, con diferentes
características, para utilizarlos en la sistemas de conteo complejos, e implementarlos en un
FPGA.
SOPORTE TEÓRICO.
En la siguiente figura se muestra la entidad de un contador de 8 bit, el cual tiene las señales
de entrada siguientes: Reset (RST), reloj (CLK) y una habilitación (H). Igualmente, maneja la
señal de salida D, donde se va a tener presente el valor del contador.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Contador_8b is
port(
RST : in STD_LOGIC;
CLK : in STD_LOGIC;
H : in std_logic;
D : out STD_LOGIC_vector(7 downto 0)
);
end Contador_8b;
MATERIAL NECESARIO
DESARROLLO
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 15. Secuenciadores.
OBJETIVO.
SOPORTE TEÓRICO.
Un secuenciador es una máquina secuencial con una estructura de grafo igual a un contador,
pero cuya salida es arbitraria, no necesariamente consecutiva, por lo que sus características son
similares a las del contador. En la figura 26 se muestra el grafo de un secuenciador, donde,
mientras el estado actual sea el estado cero, la salida Q tendrá un valor lógico de ‘1’. Por el
contrario, mientras el estado actual sea el estado Q 1 , la salida mantendrá un estado lógico de ‘0’.
Se puede observar que las transiciones son incondicionales.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 11
MATERIAL NECESARIO
DESARROLLO
Implemente una máquina secuencial para resolver los siguientes problemas, comprobando su
correcto funcionamiento en la tarjeta Nexys 2.
1. Diseñe e implemente un sistema digital que permita controlar un motor a pasos unipolar,
utilizando pasos completos en dirección de las manecillas del reloj. Agregue al sistema una
señal que permita arrancar o detener al motor, así como un contador de 12 bit ascendente
que permita llevar la cuenta de los pasos.
2. Diseñe e implemente un sistema digital que permita controlar un motor a pasos unipolar,
utilizando pasos completos en dirección contraria a las manecillas del reloj. Agregue al
sistema una señal que permita arrancar o detener al motor, así como un contador de 12
bit descendente que permita llevar la cuenta de los pasos.
3. Diseñe e implemente un sistema digital que permita controlar un motor a pasos bipolar,
utilizando pasos completos en dirección de las manecillas del reloj. Agregue al sistema una
señal que permita arrancar o detener al motor, así como un contador de 12 bit que permita
llevar la cuenta de los pasos.
4. Diseñe e implemente un sistema digital que permita controlar un motor a pasos bipolar,
utilizando pasos completos en dirección contraria a las manecillas del reloj. Agregue al
sistema una señal que permita arrancar o detener al motor, así como un contador de 12
bit que permita llevar la cuenta de los pasos.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 11
5. Diseñe e implemente un sistema digital que permita controlar las señales de un encoder
óptico, y a través de él se pueda controlar un contador ascendente/descendente de 14 bit.
Se recomienda fabricar el encoder para no gastar demasiado dinero.
6. Escriba sus conclusiones personales.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 16. Secuenciadores.
OBJETIVO.
SOPORTE TEÓRICO.
Es una máquina secuencial con una estructura de grafo igual a un contador, pero cuya salida
es arbitraria, no necesariamente consecutiva. Sin embargo, casi mantiene las mismas
características que los contadores, excepto en que la salida ahora es arbitraria, y por lo tanto,
diferente al estado presente.
MATERIAL NECESARIO
DESARROLLO
Implemente una máquina secuencial para resolver los siguientes problemas, comprobando su
correcto funcionamiento en la tarjeta Nexys 2.
7. Diseñe e implemente un sistema digital que permita controlar un motor a pasos unipolar,
utilizando pasos completos en dirección de las manecillas del reloj. Agregue al sistema una
señal que permita arrancar o detener al motor, así como un contador de 12 bit ascendente
que permita llevar la cuenta de los pasos.
8. Diseñe e implemente un sistema digital que permita controlar un motor a pasos unipolar,
utilizando pasos completos en dirección contraria a las manecillas del reloj. Agregue al
sistema una señal que permita arrancar o detener al motor, así como un contador de 12
bit descendente que permita llevar la cuenta de los pasos.
9. Diseñe e implemente un sistema digital que permita controlar un motor a pasos bipolar,
utilizando pasos completos en dirección de las manecillas del reloj. Agregue al sistema una
señal que permita arrancar o detener al motor, así como un contador de 12 bit que permita
llevar la cuenta de los pasos.
10. Diseñe e implemente un sistema digital que permita controlar un motor a pasos bipolar,
utilizando pasos completos en dirección contraria a las manecillas del reloj. Agregue al
sistema una señal que permita arrancar o detener al motor, así como un contador de 12
bit que permita llevar la cuenta de los pasos.
11. Diseñe e implemente un sistema digital que permita controlar las señales de un encoder
óptico, y a través de él se pueda controlar un contador ascendente/descendente de 14 bit.
Se recomienda fabricar el encoder para no gastar demasiado dinero.
12. Escriba sus conclusiones personales.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
RÚBRICA PARA EVALUAR EL PORTAFOLIO DE EVIDENCIAS
La secuencia de LED’s presentada, se basa en un contador binario de 8 bits, presenta un reloj que
funciona con un cristal de 50 Mhz.
De acuerdo a los 8 bits empleados, ocho LED’s en la tarjeta Spartan, se presentan 255 combinaciones
posibles. Mismos que conmutarán cada segundo, la base de tiempo implica 1 segundo entre cada
transición de combinación.
Figura 1. Sistema de secuencia de contador binario de 8 bits con base de tiempo de 1 segundo.
Sa
S5=1
Sb S5=0
S5=1
S5=1
S5=0
S5=1
S5=1 Sc
S5=1
S5=0
Figura 2. Máquina de estados. 8 bits 255 estados. Si S5=0, no hay cambio de estado. Si S5=1, hay
cambio de estado
SDLR1 – Dr. Juvenal Rodríguez
1) a0 15) xy x y
2) a0 16) x y x
3) aa 17) ( w x y z ) y
4) aa
5) a ab 18) ( x y )( x y )
6) a ab 19) w [ w ( wx )]
20) x[ x ( xy )]
7) a ( a b)
8) ab ab 21) ( x x)
9) (a b)(a b) 22) ( x x)
10) a (a b c ...) 23) w ( w x yz )
For (11),(12), (13), f (a, b, c) abc 24) w (wxyz )
11) f (a, b, ab)
25) xz x y zy
12) f (a, b, a b)
26) ( x z )( x y )( z y )
13) f [a, b, (ab)]
27) x y xy z
14) y y y
1) (a b c) d (a b c a b)
2) (d b c) (c d (a c) (c d )) (b c)
3) ( w y ) ( w y z ) ( w x y )
Karnaugh Maps are useful for finding minimal implementations of Boolean expressions
with only a few variables. However, they can be a little tricky when “don't cares” (X) are
involved. Using the following K-Maps:
ab ab
cd 00 01 11 10 cd 00 01 11 10
00 X 1 1 X 00 1 1 1 0
01 1 1 0 0 01 0 X 0 0
11 1 0 0 1 11 1 0 X 1
10 X 0 0 1 10 1 0 0 0
(1) (2)
1) (a d ) (a c)
2) a b c
3) a d a c c d
3
EN
7 D7S
INC/DEC
CLK
RST
Assessment:
U6 U1
CLK CLK
RST
EN RST
PWM GENERATOR
CLK
RST
U7
Design Unit Header
CLK TB LED
libraryieee;
use ieee.std_logic_1... RST
En EN
K(N-1:0)
V
U1 U2 U4 U5
GenericToggledBaseTime
Generics CLK S SEL output(n-1:0) A(n-1:0) C A C pwm
U6 RST CLK B(n-1:0) B
n : INTEGER := 8;
FREQ(n - 1:0) D(n-1:0) Q(n-1:0) REF(n-1:0) RST
ComparadorRef_n CompuertaAND
CLKM clk
BT_REF ContadorUp_n
RSTM rst U3
DUTY(n - 1:0) RegistroD_n D(n-1:0) Q(n-1:0)
clk
rst
RegistroD_n
Evaluación final del curso Sistemas Digitales I.
INFORMACIÓN GENERAL:
PUNTOS DE EVALUACIÓN:
- Examen oral.
Teniendo como base el funcionamiento total del proyecto se procederá a una sesión
de preguntas individuales (3 preguntas); la respuesta incorrecta a una de ellas tendrá
la penalización de un punto total sobre la calificación final.
REQUERIMIENTOS DE ENTREGA:
INGENIERÍA EN AUTOMATIZACIÓN
Evaluación final del curso Sistemas Digitales I.
- Portada.
1. Datos generales (Universidad, Facultad, Carrera y Materia).
2. Nombre del proyecto.
3. Integrantes del equipo (con Expedientes).
4. Fecha de entrega.
- Índice de contenido.
- Índice de figuras.
- Índice de tablas.
- Introducción.
1. Objetivo general.
2. Objetivos particulares.
- Marco teórico.
- Metodología.
- Resultados.
1. Resultados obtenidos.
2. Conclusión.
- Referencias.
- Anexos.
- En formato PDF.
- Grabado en un disco (junto con los códigos y aquella información que crean pertinente).
- El disco debe presentar la portada siguiente con estampa adherida al disco.
INGENIERÍA EN AUTOMATIZACIÓN
Evaluación final del curso Sistemas Digitales I.
POTADA:
INGENIERÍA EN AUTOMATIZACIÓN
SITEMAS DIGITALES I
Integrantes:
Exp.:
2019
INGENIERÍA EN AUTOMATIZACIÓN
Student’s name:
Semester: 5th.
Teacher’s name: Juvenal Rodríguez Reséndiz, Gonzalo Macias Bobadilla
Score
Topic: Digital Systems I.
1. Complete the missing entries (WHICH ARE NOT SHADED) in the Table 1. [10 pnts: 2.5 each]
Table 1
2. The timing waveforms for signals A and B shown in the Figure 1 are applied to the next circuit (Figure 2).
[25 pnts: a. 10 pnts, b. 15 pnts]
0
A
C
1 A D
B
0
B
Figure 2
TIME
Figure 1
a. Draw the timing waveform that will be obtained in the point C.
0
C
b. Fill out the Table 2 determining the logic value (0 or 1) for the signal D during each step time (ST).
Table 2
ST A B D
1
2
3
4
5
6
7
8
ഥCത + AB
a. AB ഥC + ABC =
ഥ)(A + B) =
b. (A + B
c. A + B + തതതത
AB =
ഥCD
d. C + (AB ഥ) =
തതതതതതതതതതതതതതതത
തതതത
e. തതതതതതതതത
A + BC + AB ഥ=
4. Construct the COMPLETE Truth Table of the next minterms expression, and reduce the function using
Karnaugh method. [30 pnts]
Table 3
N dec a b c d S
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
5. What do the next terms stand for? [10 pnts: 2 pnts each]
a. TTL:
b. CMOS:
c. PAL:
d. FPGA:
e. VLSI:
ÌQGLFHGHSUiFWLFDVSDUDODERUDWRULRGH“Sistemas
Digitales I”
(OWUDQVLVWRUFRPRGLVSRVLWLYRFRQPXWDGRU
&LUFXLWRFRPELQDFLRQDO$1'25\127
6XPDGRUGHELWV
)OLS)ORS-.'
'LVSOD\GHVHJXQGRVYHU/6
'(&+)$
'(&+)$
%DVHVGHWLHPSR7RJJOH\QRUPDO
%DVHVGHWLHPSR*HQpULFDV
5HORMGLJLWDOGHGtJLWRV++00
3:0PRWRU
56
$'&
Carlos Lua Morales Sistemas Digitales
184338
26 S2
-1 26 0 26
CLK
= 0
49,999,999 26 1 S3
S4 S6 RST S5
EN
Máquina de estados
Descripción de Hardware
Aplicación de la lógica tri-estado y memoria básica con circuitos secuenciales digitales
Objetivo:
Desarrollar habilidades en sistemas digitales utilizando los conceptos de: programación, lógica
secuencias, tri-estados y buses bidireccionales.
Materiales:
Procedimiento
1. Revisar las hojas de datos de los circuitos integrados, principalmente las tablas de verdad.
2. Armar el siguiente circuito digital
El protocolo de comunicación RS-232 es el que se muestra en la Figura 3, como vemos la trama tiene 8
bits de datos, uno de inicio y uno de paro, adicionalmente, se le agrega un bit de paridad para detectar
algún error en la comunicación, pero en esta ocasión esto no será implementado. El código de línea que
utiliza este protocolo es NRZ.
STR D0 D1 D2 D3 D4 D5 D6 D7 STP
end Registro;
9
2
7
3
4
5
6
8
1
0
Data(0)
Data(1)
Data(2)
Data(3)
Data(4)
Data(5)
Data(6)
Data(7)
‘1’
‘0’
ContadorMOD5208
4
STR OPD
FSM_TxD
RDY EN ÷5208
TB
CLK CLK
RST RST
S10 S3
1,0,9 1,0,0
x,1 x,1
entity Top_TxD is
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
Data: in std_logic_vector(7 downto 0);
STR: in std_logic;
RDY: out std_logic;
TxD: out std_logic );
end Top_TxD;
component contadorMOD5208
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
EN : in STD_LOGIC;
TB : out STD_LOGIC );
end component;
component FSM_TxD
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
STR : in STD_LOGIC;
TB: in STD_LOGIC;
RDY: out STD_LOGIC;
EN: out STD_LOGIC;
OPD: out STD_LOGIC_VECTOR(3 downto 0) );
end component;
entity contadorMOD5208 is
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
EN : in STD_LOGIC;
TB : out STD_LOGIC );
end contadorMOD5208;
FF: process(CLK,RST)
begin
if RST='0' then
Qp <= (others=>'0');
elsif CLK'event and CLK='1' then
Qp <= Qn;
end if;
end process FF;
end contador;
entity FSM_TxD is
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
STR : in STD_LOGIC;
TB: in STD_LOGIC;
RDY: out STD_LOGIC;
EN: out STD_LOGIC;
OPD: out STD_LOGIC_VECTOR(3 downto 0) );
end FSM_TxD;
combinacional: process(Qp,STR,TB)
begin
case Qp is
when "0000" => if STR='1' then
Qn <= "0001";
else
Qn <= Qp;
end if;
RDY <= '1';
EN <= '0';
FF: process(CLK,RST)
begin
if RST='0' then
Qp <= (others=>'0');
elsif CLK'event and CLK='1' then
Qp <= Qn;
end if;
end process FF;
end simple;
PROGRAMA PARA EL CURSO: (Sistemas Digitales con Lógica Reconfigurable I (SDLR I))
II. PRESENTACIÓN
III. INTRODUCCIÓN
x La primera unidad muestra las bases numéricas utilizadas en sistemas digitales, además
de algunas codificaciones para el entendimiento del principio de las operaciones
aritméticas y booleanas en los sistemas de cómputo.
x La segunda unidad trata de explicar la manera de simplificar expresiones booleanas.
También se muestran operaciones booleanas con el diseño basado en simbología
estándar.
x En la tercera unidad se tratan las diferentes tecnologías electrónicas actuales y sus
predecesoras. Se discuten características como tiempos de conmutación, consumo de
energía, entre otros.
1
x La cuarta unidad utiliza los componentes de Escala de Integración Mediana (o MSI, por
sus siglas en inglés) para explicar diferentes operaciones digitales para la interpretación de
datos, manejo de instrucciones y construcción de circuitos complejos por medio de
circuitos MSI.
x En la quinta unidad se muestra la operación síncrona y asíncrona utilizando MSI, y HDL
por medio de máquinas de estado finito (o FSM, por sus siglas en inglés).
x En la sexta unidad se observan los circuitos almacenadores de datos y las diferentes
tecnologías de circuitos programables.
x La séptima unidad muestra los diferentes protocolos de comunicación, al final de la unidad
se podrá implementar en HDL en FPGA una unidad de esta índole.
x En la octava unidad se muestra la unión del software y el hardware con el fin de aplicar
tareas reales y dar solución a necesidades del entorno social e industrial.
x La novena tiene los tópicos selectos para el proyecto final que es en donde se aplican los
conocimientos vistos en el curso.
V. COMPETENCIAS ESPECÍFICAS
Esta asignatura aporta al perfil del Ingeniero en Automatización, los conocimientos y las
habilidades para:
x Diseñar, analizar y construir equipos y/o sistemas electrónicos digitales para la solución de
problemas en su entorno profesional.
x Simular modelos que permitan predecir el comportamiento de sistemas electrónicos
empleando plataformas computacionales.
x Utilizar lenguaje de descripción de hardware (HDL) como una herramienta de
programación para desarrollar y diseñar sistemas digitales para su aplicación en la
solución de problemas comerciales e industriales específicos aplicados en la industria de
la Automatización actual.
4
8.1 Introducción a los lenguajes estructurados secuenciales: Visual C++, Turbo C y LabVIEW.
8.2 Tipos de datos.
8.3 Bucles y SubVIs.
8.4 Temporizadores.
8.5 Gráficos.
8.6 Interrupciones.
8.7 Controles específicos.
8.8 Tareas en paralelo.
8.9 Interfaces con otros programas
8.10 Máquinas de estado con software.
8.11 Adquisición y procesamiento de señales analógicas y digitales
I. SISTEMA DE EVALUACIÓN
x CALIFICACIÓN.
o Calificación Global
Porcentaje Criterio
20% Examen parcial 1
20% Examen parcial 2
10% Revisión final de carpeta (portafolio de evidencias)
50% Proyecto final
o Calificación del Proyecto final
El proyecto debe estar funcionando al 100% para tener derecho a la
evaluación.
Si éste presenta fallas, el equipo no tendrá derecho a calificación.
Si el proyecto no presenta fallas se tomará como calificación inicial el 10,
esto antes del examen oral: Teniendo como base el funcionamiento total
del proyecto se procederá a una sesión de preguntas individuales (3
preguntas); la respuesta incorrecta a una de ellas tendrá la penalización
de un punto total sobre la calificación final.
Requerimientos de entrega:
x Proyecto funcionando en su totalidad.
x Reporte digital del proyecto (según formato).
5
x Anexo A. Código VHDL (de todos los componentes).
x Anexo B. Interfaz de monitoreo y control en LabVIEW.
x Anexo C. Memoria fotográfica.
x Anexo D. Hojas de datos de todos los componentes eléctricos y
electrónicos utilizados.
x Anexo E. Esquemáticos electrónicos.
x Anexo F. Imagen 3D de la tarjeta electrónica.
x Anexo G. Video.
x Anexo H. Costos.
x ACREDITACIÓN.
o Debe tener el 100 % de sus prácticas de laboratorio y acreditarlo con 8.0 mínimo.
o En cuanto a la acreditación nos sujetamos a lo establecido en los artículos del 70,
71, 72 y 74.
o Tiene que cubrir el 100% de asistencias o en su caso con justificante.
x REFERENCIAS BÁSICAS
o Tocci, Ronald J., 2010, Sistemas Digitales, Principios y Aplicaciones (10° Ed.),
Prentice Hall-Pearson, USA.
o Romero-Troncoso R. de J., 2004, Sistemas Digitales con VHDL, (1° Ed.), Ediciones
Legaria, México.
x BIBLIOGRAFÍA DE CONSULTA
o John P. Hayes, 1996, Introducción al Diseño Lógico Digital (1° Ed.), Addison –
Wesley, USA.
o Wakerly, John F. Diseño Digital, Principios y Prácticas (3° Ed), Prentice hall-
Pearson, USA.
o James E. Palmer; David E. Perlman, 1995, Introducción a los Sistemas Digitales,
6
SURVEY STATEMENTS FOR ASSESSMENT OF THE PROJECT PERFORMANCE IN THE RECONFIGURABLE LOGIC DIGITAL SYSTEMS COURSE -
UAQ
THE GRADE OF SCALE ARE 1-STRONGLY DISAGREE, 2…, 5 STRONGLY AGREE
Question Score
1 The course help you to develop your technical skills related to digital
systems.
2 Other prerequisites courses are required before taking the course
3 The course helps you to have better comprehension of the prerequisite
courses.
4 The project needs more time for developing tasks
5 The project gives you more motivation to learn
6 The course satisfied your expectations and make you feel capable of
working with a specific digital system
SURVEY STATEMENTS FOR ASSESSMENT OF THE PROJECT PERFORMANCE IN THE RECONFIGURABLE LOGIC DIGITAL SYSTEMS COURSE -
UAQ
THE GRADE OF SCALE ARE 1-STRONGLY DISAGREE, 2…, 5 STRONGLY AGREE
Question Score
1 The course help you to develop your technical skills related to digital
systems.
2 Other prerequisites courses are required before taking the course
3 The course helps you to have better comprehension of the prerequisite
courses.
4 The project needs more time for developing tasks
5 The project gives you more motivation to learn
6 The course satisfied your expectations and make you feel capable of
working with a specific digital system
SURVEY STATEMENTS FOR ASSESSMENT OF THE PROJECT PERFORMANCE IN THE RECONFIGURABLE LOGIC DIGITAL SYSTEMS COURSE -
UAQ
THE GRADE OF SCALE ARE 1-STRONGLY DISAGREE, 2…, 5 STRONGLY AGREE
Question Score
1 The course help you to develop your technical skills related to digital
systems.
2 Other prerequisites courses are required before taking the course
3 The course helps you to have better comprehension of the prerequisite
courses.
4 The project needs more time for developing tasks
5 The project gives you more motivation to learn
6 The course satisfied your expectations and make you feel capable of
working with a specific digital system
SURVEY STATEMENTS FOR ASSESSMENT OF THE PROJECT PERFORMANCE IN THE RECONFIGURABLE LOGIC DIGITAL SYSTEMS COURSE -
UAQ
THE GRADE OF SCALE ARE 1-STRONGLY DISAGREE, 2…, 5 STRONGLY AGREE
Question Score
1 The course help you to develop your technical skills related to digital
systems.
2 Other prerequisites courses are required before taking the course
3 The course helps you to have better comprehension of the prerequisite
courses.
4 The project needs more time for developing tasks
5 The project gives you more motivation to learn
6 The course satisfied your expectations and make you feel capable of
working with a specific digital system
SURVEY STATEMENTS FOR ASSESSMENT OF THE PROJECT PERFORMANCE IN THE RECONFIGURABLE LOGIC DIGITAL SYSTEMS COURSE -
UAQ
THE GRADE OF SCALE ARE 1-STRONGLY DISAGREE, 2…, 5 STRONGLY AGREE
Question Score
1 The course help you to develop your technical skills related to digital
systems.
2 Other prerequisites courses are required before taking the course
3 The course helps you to have better comprehension of the prerequisite
courses.
4 The project needs more time for developing tasks
5 The project gives you more motivation to learn
6 The course satisfied your expectations and make you feel capable of
working with a specific digital system
Digital Systems I
Automation Engineering Undergraduate Program iA
Engineering Department - UAQ
k = 50,000,000d
n
n = 26
Timebase clk = 50MHz
s1
n
en count -1 Register s1 Comparator
‘0’
s2 n
= 0d count
n s3
K-1 ‘1’
s4
s5
s6
clk rst
clk
rst s5
en
INGENIERÍA EN AUTOMATIZACIÓN
En vivado
a. Click en el chip xc7a25t_0(1) -> Add Configuration Memory Device -> Search - >
Spansion -> s25fl032-spi-x1-x2-x4 - > s25fl032 - > Seleccionar el .bit file ubicado en
la carpeta “runs” “impl2”
b. El jumper azul J1 debe ir en la posición 1 (hasta arriba).