1.2.1.2.c Antología - SDLR I

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 180

Universidad Autónoma de Querétaro

Facultad de Ingeniería

Manual de Prácticas
Sistemas Digitales con Lógica Reconfigurable (SDLRI)

Que como parte de los requisitos para obtener el grado de

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 del Sinodal _________________


Presidente Firma

Nombre del Sinodal _________________


Secretario Firma

Nombre del Sinodal _________________


Vocal Firma

Nombre del Sinodal _________________


Suplente Firma

____________________ ___________________
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 5: Maquina de Estados.

Práctica 6: Codificador BCD a 7 segmentos.

Práctica 7: Reloj.

Práctica 8: Comunicación Serial.

.
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.

x Entrada en paralelo, salida en paralelo.


x Entrada en serie, salda en serie.
x Entrada en paralelo, salida en serie (Figura 1.1).
x Entrada en serie, salida en paralelo.

Figura 1.1. Entrada en paralelo, salida en serie.

Equipo y Materiales

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo.

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;

2. Describir qué es una Arquitectura y la función que desempeña.

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.

3. Mencionar cuatro tipos de datos en VHDL y los rangos de valores.

Bit, valores de 0 y 1 lógico.


Boolean, define valores de verdadero o falso en una expresión.
Bit_vector que representa un conjunto de bits para cada variable de entrada o salida.
Integer que representa un número entero.

4. ¿Qué es un sistema combinacional?

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

Se realizará el siguiente registro de n bits mediante una descripción en VHDL

Datos (N:0)

REGISTRO Salida (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;

architecture estructural of registro is


begin
S:process(rst,clk)
begin
if(rst='1')then
Q<=(others => '0');
elsif(clk'event and clk='1')then
Q<=D;
end if;
end process S;
end estructural;

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;

std.env.stop; -- sirve para detener la simulación automáticamente


end process;
end TB;
Formas de onda del banco de pruebas

Ejercicio: Explicar la descripción de Hardware presentada en el ejemplo y el banco de pruebas.

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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.
Nombre de la asignatura Sistemas Digitales con Lógica Reconfigurable
Nombre de la Práctica Descripción en código VHDL de un multiplexor
Número de Práctica 2 Número de Horas 4

Objetivo

El alumno comprenderá el funcionamiento y la finalidad de un multiplexor adquiriendo la capacidad de


realizar su descripción, simulación e implementación en una FPGA.

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.

Figura 2.1. Simbología básica de un multiplexor.

Equipo y Materiales

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo par FPGA.

Prerrequisitos

Describir que son las bibliotecas en VHDL.

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.

¿Qué es una declaración concurrente?

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.

Dar un ejemplo de la declaración de las sentencia concurrente when-else.

Q <= “01” when a= '0' else


“11” when a= '1' else
“00” when others;

Definir que son los operadores aritméticos, relacionales y lógicos.

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

Se describirá el siguiente multiplexor mediante una descripción en VHDL

a(1:0)

b(1:0) o(1:0)

c(1:0)

s(1:0)
library IEEE;
use IEEE.std_logic_1164.all;

entity mux is port(


a,b,c : in std_logic_vector(1 downto 0);
s : in std_logic_vector(1 downto 0);
o : out std_logic_vector(1 downto 0)
);
end mux;

architecture behavioral of mux is


begin
with s select
o <= a when "00",
b when "01",
c when "10",
"00" when others;
end behavioral;

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

U1: entity work.Mux port map(a,b,c,s,o);


process
begin
a <= "01";
b <= "10";
c <= "11";-- Asignar valores a las señales de entrada a,b,c,d.

s <= "01"; -- Asignar valores a la señal de selección s.


wait for 100 nS;
s <= "10";
wait for 100 nS;
s <= "11";
wait for 100 nS;
s <= "00";
wait for 100 nS;

std.env.stop; -- Detener simulación


end process;
end TB;

Formas de onda del banco de pruebas.

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

Explicar el funcionamiento de un Multiplexor. Mencionar la relación entre las descripciones realizadas en


laboratorio y los temas vistos en clase. Proponer una implementación de un multiplexor 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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra. ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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:
ʹଷ ൅ ʹଵ ൅ ʹ଴ ൌ ͺ ൅ ʹ ൅ ͳ ൌ ͳͳ

Números Binarios de hasta 3 bits

Número Binario Número Decimal Número Binario Número Decimal


000 0 100 4
001 1 101 5
010 2 110 6
011 3 111 7

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).

Figura 3.1. Operadores booleanos en una sumatoria binaría

Finalmente la regla básica de la adición nos dice que:

Ͳ ൅ Ͳ ൌ Ͳͳ
Ͳ ൅ ͳ ൌ Ͳͳ
ͳ ൅ Ͳ ൌ Ͳͳ
ͳ ൅ ͳ ൌ ͳͲ

Equipo y Materiales

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo.

Prerrequisitos

Mencionar cinco operadores aritméticos.


Suma, resta, multiplicación, división y potencia.

Realizar 5 sumas binarias indicadas por el profesor, describiendo el proceso.

Describir qué es un semisumador y un sumador completo.


Un semisumador es aquel que tiene al menos dos entradas, una salida con el valor de la suma y una salida con
acarreo. Un sumador completo a diferencia del semisumador considera un acarreo de entrada.

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

Se ejemplifica realizando la descripción de un sumador genérico.

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;

architecture behavioral of sumador is


signal C : std_logic_vector(n downto 0);
signal S : std_logic_vector(n downto 0);
begin
U1: process(IN1,IN2,C)
begin
for i in 0 to n-1 loop
if i=0 then
S(i) <= IN1(i) xor IN2(i);
C(i)<= IN1(i) and IN2(i);
elsif i>0 then
S(i) <= IN1(i) xor IN2(i) xor C(i-1);
C(i)<= (IN1(i) and IN2(i)) or (C(i-1) and (IN1(i) xor IN2(i)));
end if;
end loop;
S(n)<= C(n-1);
end process U1;
SUMA <= S;
end behavioral;

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

Ejercicio: Explicar la descripción de Hardware presentada en el ejemplo y el banco de pruebas.

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

Explicar el funcionamiento de un Sumador. 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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.

Prerrequisitos

¿Qué librería nos permite realizar operaciones aritméticas en VHDL?


IEEE.std_logic_unsigned.

Describir que es un proceso en VHDL y dar un ejemplo de su declaración.


Un proceso es la sentencia concurrente definida en VHDL para agrupar internamente sentencias secuenciales.
[Etiqueta:] process (Lista de sensibilidad) is
begin
[Cuerpo del proceso]
End preocess [etiqueta];
Describir y dar un ejemplo de declaración de un ciclo for.
Causa la ejecución de un bucle un número fijo de veces. Su sintaxis es:
[etiqueta:] for índice in rango loop
[sentencias secuenciales]
End loop [etiqueta];

Desarrollar cinco multiplicaciones binarias indicadas por el profesor.

Metodología

Se describirá un multiplicador de n bits mediante una descripción en VHDL

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;

architecture behavioral of mult is


signal aux : std_logic_vector((2*n)-1 downto 0);
signal suma : std_logic_vector((2*n)-1 downto 0);
begin
U1: process(IN1,IN2)
begin
MUL <= IN1*IN2;
end process U1;

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;

Formas de onda de multiplicador

Ejercicio: Explicar el funcionamiento según la forma de onda.

Se realizan la multiplicaciones hexadecimales 0x01*0x02=0x02; 0x04*0x02=0x08 y 0x07*0x07=0x31


respectivamente en intervalos de 100 nS.

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 un Multiplicador. Mencionar la relación entre las descripciones realizadas en


laboratorio y los temas vistos en clase. Proponer una implementación de un multiplicador 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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra. ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.

Prerrequisitos

¿Qué es un bloque de estado y cómo se conforma en una FSM?

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.

¿Qué es un bloque de decisión y cómo se conforma en una FSM?

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.

¿Qué es un bloque de salida condicional y cómo se conforma en una FSM?

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:

• Una lista de salidas condicionales que dependen de cierta condición de entrada.

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 CTR=T CTR!=T

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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

El alumno será capaz de realizar la descripción, simulación e implementación de un codificador a siete


segmentos utilizando VHDL además de implementarlo en una FPGA.

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

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo.

Prerrequisitos

Mostrar una tabla de equivalencias entre sistema binario y sistema decimal.


Sistema Binario Sistema Decimal Sistema Binario Sistema Decimal
0000 0 0101 5
0001 1 0110 6
0010 2 0111 7
0011 3 1000 8
0100 4 1001 9

¿Qué diferencia existe entre un display de ánodo común y cátodo común?


En los display de ánodo común todos los leds están unidos internamente a un pin común que va conectado a
voltaje positivo y en los de cátodo común el pin común va conectado a negativo.

Realice una tabla de conversión BCD a display de siete segmentos.

Segmentos del display


Código BCD
a b c d e f g
0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 0
0 0 1 1 0 0 0 0 1 1 0
0 1 0 0 1 0 0 1 1 0 0
0 1 0 1 0 1 0 0 1 0 0
0 1 1 0 0 1 0 0 0 0 0
0 1 1 1 0 0 0 1 1 1 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 1 0 0

Metodología

Se ejemplifica realizando la descripción de un decodificador BCD a decimal.

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;

Architecture desarrollo of bcdadecimal is


begin
DOUT <=
"00000011" when DIN = "0000" else
"10011111" when DIN = "0001" else
"00100101" when DIN = "0010" else
"00001101" when DIN = "0011" else
"10011001" when DIN = "0100" else
"01001001" when DIN = "0101" else
"01000001" when DIN = "0110" else
"00011101" when DIN = "0111" else
"00000001" when DIN = "1000" else
"00001001" when DIN = "1001" else
"11111111";
end desarrollo;

Ejercicio: Explicar la descripción de Hardware presentada en el ejemplo e implementarla en una FPGA.


La descripción presenta una entidad que detecta todo el tiempo una entrada de cuatro bits que relaciona con
una salida de ocho bits que son la codificación de los bits de entrada para imprimir dígitos en un display de
siete segmentos.

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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

El alumno será capaz de realizar la descripción y simulación e implementación de un reloj utilizando


VHDL además de implementarlo en una FPGA.

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

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo.

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.

Ejemplificar la declaración de un componente.

component componente is
port(
IN1 : in std_logic;
IN2 : in std_logic;
OUT : out std_logic
);
end component;

¿Qué es un programa de alto nivel (Top Level)?


Es el algoritmo que une cada bloque o componente de diseño interconectado a través de señales o buses
internos.

¿A qué se refiere cuando se llama sistema síncrono?


A que cada uno de los elementos que interactúan en el sistema se encuentran conectados a la misma señal de
reloj.
Metodología

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

Generador de pulsos de un segundo


library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity segundero is
port(
RST : in std_logic;
CLK : in std_logic;
DOUT : out std_logic
);
end segundero;

architecture desarrollo of segundero is


signal seg: integer range 0 to 50000000;
begin
secuencial: process(RST,CLK)
begin
if RST='0' then
seg <= 0;
elsif CLK'event and CLK = '1' then
if seg >= 50000000 then
DOUT <= '1';
seg <= 0;
else
seg <= seg+1;
DOUT <= '0';
end if;
end if;
end process secuencial;

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;

architecture desarrollo of contador_10 is


signal Ep, Ef : std_logic_vector(3 downto 0);
signal flag: integer range 0 to 1:=0;
begin
combinacional: process(Ep)
begin
if Ep >= "1001" then – Puede ser 9 o 5
Ef <= "0000";
flag <= 1;
else
Ef <= Ep + 1;
if Ef = "0001" then
if flag=1 then
EN <= '1';
end if;
else
EN <= '0';
end if;
end if;
DOUT <= Ep;
end process combinacional;
secuencial: process(RST,CLK)
begin
if RST='0' then
Ep <= "0000";
elsif CLK'event and CLK = '1' then
Ep <= Ef;
end if;
end process secuencial;
end desarrollo;

Convertidos BCD a Decimal


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;

Architecture desarrollo of bcdadecimal is


begin
DOUT <=
"11000000" when DIN = "0000" else
"11111001" when DIN = "0001" else
"10100100" when DIN = "0010" else
"10110000" when DIN = "0011" else
"10011001" when DIN = "0100" else
"10010010" when DIN = "0101" else
"10000010" when DIN = "0110" else
"11111000" when DIN = "0111" else
"10000000" when DIN = "1000" else
"10010000" when DIN = "1001" else
"00000000";
end desarrollo;
Integración de reloj
library ieee;
use ieee.std_logic_1164.all;

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;

architecture desarrollo of Reloj is


component segundero is
port(
RST : in std_logic;
CLK : in std_logic;
DOUT: out std_logic
);
end component;

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;

signal CLK_S0: std_logic;


signal CLK_S1: std_logic;
signal CLK_M0: std_logic;
signal CLK_M1: std_logic;
signal D0,D1,D2,D3: std_logic_vector(3 downto 0);

begin
U01 : segundero port map(RST, CLK, CLK_S0);

U02 : contador_10 port map(RST, CLK_S0,CLK_S1,D0);


U03 : contador_60 port map(RST, CLK_S1,CLK_M0,D1);
U04 : contador_10 port map(RST, CLK_S0,CLK_M1,D2);
U05 : contador_60 port map(RST, CLK_S0,OPEN ,D3);
U06 : bcdadecimal port map(D0,DOUT0);
U07 : bcdadecimal port map(D1,DOUT1);
U08 : bcdadecimal port map(D2,DOUT2);
U09 : bcdadecimal port map(D3,DOUT3);
end desarrollo;

Ejercicio: Explicar la descripción de Hardware presentada.

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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

El alumno será capaz de realizar la descripción, simulación e implementación de comunicación serial en


VHDL.

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.

La comunicación realizada esta compuesta de la siguiente manera:

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

x Equipo de cómputo con Windows con Windows XP o superior.


x Active HDL 8.1 o superior.
x Tarjeta de desarrollo.

Prerrequisitos

¿Qué es el protocolo RS-232?


Es un modelo de comunicación serial asíncrono donde las frecuencias de transmisión y recepción, aunque
deben ser iguales no se encuentran correlacionadas.

¿Qué es el bit de paridad?


Para detectar errores en la comunicación y el procesamiento de datos, a veces se añade un bit adicional a una
palabra de código binario para definir su paridad. Un bit de paridad es un bit extra incluido para conseguir
que la cantidad de 1 en la palabra de código resultante sea o par o impar.

Mencionar cinco velocidades típicas de la comunicación RS-232.


1200, 2400, 9600, 19200 y 115200 baudios.

Metodología

Se envían ocho bits de datos desde una FPGA al puerto serial de una PC.

Diagrama a bloques de envió de datos seriales

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;

Architecture behavioral of Timer_9600 is

signal cont: integer range 0 to 5208:=0;

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;

Formas de onda de generador de 9600 Baudios.

CLK es un reloj de 50 MHz.


cont es el contador que determina cuando se llega a los 5208 pulsos.

Multiplexor de datos a enviar


library IEEE;
use IEEE.std_logic_1164.all;

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;

architecture behavioral of MUX_TX is


begin
process(M,D,P)
begin
case M is
when "0000" => TX <= '0';
when "0001" => TX <= D(0);
when "0010" => TX <= D(1);
when "0011" => TX <= D(2);
when "0100" => TX <= D(3);
when "0101" => TX <= D(4);
when "0110" => TX <= D(5);
when "0111" => TX <= D(6);
when "1000" => TX <= D(7);
when "1001" => TX <= P;
when others => TX <= '1';
end case;
end process;
end behavioral;

Máquina de estados para enviar datos


library IEEE;
use IEEE.std_logic_1164.all;

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;

Architecture behavioral of FSM_TX is

signal Qn, Qp : std_logic_vector(3 downto 0);

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;

Architecture behavioral of Paridad is


begin
P <= ((D(0) xor D(1)) xor (D(2) xor D(3))) xor ((D(4) xor D(5)) xor (D(6) xor D(7)));
end behavioral;

Integración de componentes para enviar datos serialmente


library IEEE;
use IEEE.std_logic_1164.all;

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;

Architecture behavioral of R_TX is

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;

signal M : std_logic_vector(3 downto 0);


signal P,B : std_logic;

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;

Banco de pruebas de transmisor serial

library IEEE;
use IEEE.std_logic_1164.all;

Entity Testbench is
end Testbench;

architecture behavioral of Testbench is

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;

signal RST, CLK, STT, EOT, TX : std_logic;


signal D : std_logic_vector(7 downto 0);

begin

U1: R_TX port map(RST, CLK, STT, EOT, D, TX);

--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

Explicar el funcionamiento de la comunicación serial asíncrono. 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.

MORRIS, Mano y otros, Fundamentos de Diseño Lógico y computadoras, 1ra ed.


Naucalpan de Juárez, Edo. De México, 1998. 604 p. ISBN: 0-13-182098-2.

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

JUAN MANUEL RAMOS ARREGUÍN

NOVIEMBRE DEL 2020


PRÁCTICA 1. Simulación de descripciones VHDL. .........................................................3
PRÁCTICA 2. Sintetizando la descripción de hardware. .............................................. 15
PRÁCTICA 3. Programación del Dispositivo Lógico ..................................................... 27
PRÁCTICA 4. Implementación de una función lógica. ................................................. 31
PRÁCTICA 5. Implementación de multiplexores y demultiplexores. ........................... 33
PRÁCTICA 6. Implementación de operaciones relacionales. ....................................... 39
PRÁCTICA 7. Codificadores. .......................................................................................41
PRÁCTICA 8. Conversión de Binario a BCD. ................................................................45
PRÁCTICA 9. Manejo de 4 exhibidores de 7 segmentos conectados en paralelo. ........ 53
PRÁCTICA 10. Binario a BCD con exhibición en 7 segmentos. ....................................... 62
PRÁCTICA 11. Operaciones aritméticas. ......................................................................64
PRÁCTICA 12. Fundamentos de Lógica Secuencial. ...................................................... 69
PRÁCTICA 13. Contadores ...........................................................................................82
PRÁCTICA 14. Contadores Mayores .............................................................................88
PRÁCTICA 15. Secuenciadores. ....................................................................................90
PRÁCTICA 1. Simulación de descripciones VHDL.

OBJETIVO.

Que el estudiante aprenda a utilizar el software de simulación del lenguaje descriptivo de


hardware, VHDL, para el correcto diseño de sistemas digitales.

SOPORTE TEÓRICO.

El diseño con lenguajes descriptivos de hardware requieren el apoyo de herramientas de


hardware, especialmente para realizar una simulación previa a la implementación en el dispositivo
programable correspondiente. Es por esto, que en esta primera práctica, se realiza una
explicación del uso del software Active-HDL, el cual es una herramienta importante para la
descripción de circuitos lógicos.

Afortunadamente, el software mencionado en el párrafo anterior, se puede obtener de manera


legal, es decir, con licencia de estudiante por un año. Para esto, es necesario contar con una
licencia institucional, de lo contrario, le será negado el software.

Es importante que el estudiante tome en cuenta que, si en la simulación NO funciona la


descripción de hardware realizada, es 100% seguro que NO va a funcionar cuando se implemente
en el dispositivo PLD correspondiente. En cambio, si funciona en la simulación, es 90% seguro
que funcione en la implementación. El 10% de probabilidad de que la descripción no funcione al
ser implementado, se deja a errores del diseñador, al no interpretar de manera correcta la
simulación, no asignar correctamente el dispositivo y/o las terminales a cada una de las señales
correspondientes en la programación, y a todo aquello que sea responsabilidad del usuario. A
continuación, se describe todos los pasos a seguir para descargar esta herramienta.

MATERIAL NECESARIO

1 computadora personal o laptop.


Software Active-HDL instalado.

DESARROLLO

1. Ingrese a la dirección electrónica www.aldec.com.


2. En la sección Quicklinks, seleccione la opción University Programs.
3. Seleccione la opción Student Edition.
4. Ahora, seleccione Free Download.
5. Llene la hoja de solicitud de descarga. Es importante utilizar una dirección de correo
electrónico institucional.
6. Una vez realizado el registro, le será enviado a su correo electrónico registrado, una
dirección electrónica, en la cual puede llevar a cabo la descarga de la herramienta Active-
HDL. Sin embargo, cuenta únicamente con una hora para realizar la descarga, por lo que
se recomienda llevar a cabo el registro y la descarga en un lugar donde la velocidad de
descarga sea bastante buena. Si no alcanza a realizar la descarga, deberá repetir el
proceso de solicitud de licencia desde el principio.
7. Una vez descargado el software, proceda a instalar el mismo.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1
8. Ejecute el programa Active-HDL, y aparece la siguiente ventana. Seleccione Create New
Workspace y haga clic en OK.

9. La ventana que aparece enseguida, se muestra a continuación. Asigne nombre al espacio


de trabajo en la casilla correspondiente a workspace name. En este caso,
implementaremos una compuerta lógica AND. Haga clic en OK.

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.

14. En el software Active-HDL, el proyecto es el espacio de trabajo, el cual puede dividirse en


uno o más diseños. Con el desarrollo del punto 14, se termina de iniciar el proyecto, y
ahora se debe visualizar la siguiente figura.

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.

19. Si la compilación fue correcta, aparece un letrero en color verde en la consola. De lo


contrario, aparece en color rojo indicando el error.

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.

21. hacer clic en Preferences del menú Herramientas (Tools).

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

23. Abrir ventana de simulación.

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

25. Seleccione y arrastre las señales que desea visualizar.

26. Asigne estímulos a cada señal de entrada.

27. A cada señal se le asigna una tecla. Clic en Close.

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.

29. Para probar la simulación puede hacerse mediante dos opciones:


a. Run Until. La siguiente figura muestra el icono correspondiente a esta opción. Se
utiliza cuando se quiere especificar exactamente el tiempo en que se debe detener
la simulación.

Se muestra la siguiente ventana, donde se debe especificar el tiempo en el que se


debe detener la simulación.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 1

b. Run – For. En esta opción se indica por cuánto tiempo se va a ejecutar la


simulación.

c. La tercera opción es Run, pero no se considera adecuado utilizarlo, ya que


algunas computadoras pueden bloquearse por la gran cantidad de información
que requieren manejar.

30. Se prueba por 100 ns, como se muestra en la figura.

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

32. Después de 600 ns de simulación el resultado es el siguiente.

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.

Que el estudiante aprenda a sintetizar un archivo de lenguaje descriptivo de hardware para un


dispositivo específico, el cual cumple con las características necesarias para la implementación,
utilizando el software del fabricante correspondiente.

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.

A continuación, se describe el uso de esta herramienta de software.

MATERIAL NECESARIO

1 Computadora personal o laptop.


Software ISE – Webpack instalado

DESARROLLO

1. Descargue e instale el software mencionado en el soporte teórico.


2. Al ejecutar el programa, aparece una ventana similar a la siguiente.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2

3. Se debe crear un nuevo proyecto.

4. La ventana que aparece a continuación, se utiliza para asignar nombre al proyecto, y


asignar la ruta donde será almacenado el proyecto. Se debe tener la precaución de que el
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 2
nombre del proyecto no incluya espacios, ni debe ser demasiado largo el nombre pues
puede ocasionar problemas. La ruta del programa tampoco debe contener espacios, ni
debe ser demasiado larga. Por lo tanto, se recomienda colocar una carpeta de proyectos
de nombre corto y en la raíz de la unidad de disco a utilizar. Para dar continuidad a la
práctica 1, en esta práctica se va a implementar una compuerta AND.

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.

En la categoría, se especifica el tipo de producto a realizar. En este caso, se deja como


All.
En los demás casos, se deben seleccionar correctamente la familia, número de
dispositivo, tipo de encapsulado y velocidad, pues de lo contrario, no podrá programar el

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.

6. Enseguida, aparece un sumario de la descripción a realizar en la herramienta del ISE.

7. Ahora, se debe crear un archivo fuente en el proyecto.

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.

10. El nuevo módulo ha sido creado, y el software le da a conocer un sumario de las


características de este módulo.

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

15. Si no existen errores, la ventana de procesos aparece como sigue.

16. Expander la opción User Constraints y doble clic en Floorplan IO.

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.

21. Antes de generar el archivo de programación, se debe abrir las propiedades de


programación, 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

22. Finalmente, haga doble clic en Generate Programming File.

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

24. 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 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

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Adept instalado.

DESARROLLO

1. Ingrese a la dirección electrónica www.digilentinc.com.


2. Expanda la opción FPGA Boards.
3. Seleccione Nexys 2.
4. Busque en la página electrónica, el manual de referencia de la tarjeta Nexys 2 y
descárguelo. Este manual se encuentra en PDF.
5. Analice el manual de referencia de la tarjeta Nexys 2, pues este manual nos apoyará en la
selección del número de terminal para cada una de las señales a programar en el
dispositivo lógico. Por ejemplo, podemos una señal que sea salida, la podemos asignar a
un led, y una señal que sea una entrada, la podremos asignar a un interruptor deslizable o
botón de presión (push button).
6. Ejecute el software Adept, y aparece la siguiente ventana. Indica No devices connected,
debido a que no está detectando la tarjeta Nexys. Una vez que se conecte, y se instalen
los controladores, el programa podrá reconocer la tarjeta.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 3

7. Si el software no cambia, reconociendo automáticamente la tarjeta, haga clic en el cuadro


donde dice Connect, y de manera automática ya aparece Nexys 2. Haga clic.

8. Ahora, una vez reconocida la tarjeta, aparece la siguiente ventana.

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.

Consideremos la siguiente función lógica:

La tabla de verdad correspondiente a la función anterior, es la siguiente.

El código en VHDL para implementar la función lógica anterior, se presenta a continuación.

library IEEE;
use IEEE.std_logic_1164.all;

entity funcion is
port(
a,b,c : in std_logic;
f : out std_logic
);
end funcion;

architecture funcion of funcion is


begin
f <= ((not a) and (not c)) or (a and (b xor c));
end funcion;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 4
A continuación, se llevará a cabo la implementación de la función descrita anteriormente.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalado.

DESARROLLO

1. Cree el proyecto correspondiente y genere el archivo VHDL, con el código descrito


anteriormente.
2. Simule la descripción, y compruebe que su funcionamiento coincide con la tabla de verdad
descrita previamente.
3. Si la simulación funciona de manera adecuada, proceda a la síntesis de la descripción,
utilizando el software ISE.
4. Asigne las terminales del puerto, de acuerdo al manual de referencia de la tarjeta Nexys 2,
y genere el archivo de programación correspondiente.
5. Utilizando el software Adept, proceda a programar y probar el funcionamiento de la
descripción realizada.
6. Obtenga las funciones lógicas para los siguiente casos, y desarrolle todo el proceso para
comprobar que funciona adecuadamente en la implementación.
x ݂(ܽ, ܾ, ܿ, ݀, ݁) = σ(1,3,5,7,10,11,19,21,23,29,31)
x ݃(ܽ, ܾ, ܿ, ݀) = ς(0,1,6,7,8,9,13,15) + ݀(2,14)
x ݂(ܽ, ܾ, ܿ, ݀, ݁, ݂) =
σ(0,3,5,6,7,9,10,12,15,16,19,23,25,26,27,28,31,32,33,34,35,44,45,46,48,50,56,58) +
݀(13,21,29,37,39,47,53,55,61,63)
7. 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 5. Implementación de multiplexores y demultiplexores.

OBJETIVO.

Que el alumno reconozca el bloque descriptivo de hardware correspondiente a un multiplexor,


y lo implemente en el dispositivo FPGA, comprobando su correcto funcionamiento.

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௡

Dónde: Ne es el número de entradas, y n es el número de bit de la señal de control.

El bloque básico que representa un multiplexor de 2 entradas y una salida se muestra a


continuación, así como la tabla de verdad y el código VHDL para su implementación. La señal S
es la señal de control, y las señales A 0 y A 1 son las entradas. En este caso, las entradas son de
1 bit.

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;

architecture Mux of Mux2a1_1bit is


begin
Y <= A0 when (S='0') else A1;
end;

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;

architecture Mux of Mux4a1_1bit is


begin
Multiplexor: process(A,S) is
begin
case S is
when "00" => Y <= A(0);
when "01" => Y <= A(1);
when "10" => Y <= A(2);
when others => Y <= A(3);
end case;
end process Multiplexor;
end;

Multiplexor 4 a 1 de 3 bit (la tabla de verdad no cambia)


library IEEE;
use IEEE.std_logic_1164.all;

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;

architecture Mux of Mux4a1_3bit is


begin

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;

architecture Mux of Multiplexor is


begin
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;

Al contrario de los multiplexores, se tienen los demultiplexores, que consisten en circuitos


combinacionales con una sola entrada y múltiples salidas. Por medio de la señal de control, se
elige la salida a la que debe ser transmitida la única entrada. El número de salidas que puede
manejar el demultiplexor, depende del número de bit de la señal de control, en la misma forma
que para el multiplexor, de acuerdo a la siguiente ecuación:

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5

ܰ‫ = ݏ‬2௡

Dónde: Ns es el número de salidas, y n es el número de bit de la señal de control.

El bloque básico que representa un demultiplexor de 2 entradas y una salida se muestra a


continuación, así como la tabla de verdad y el código VHDL para su implementación. La señal S
es la señal de control, y las señales A 0 y A 1 son las entradas. En este caso, las entradas son de
1 bit.
Demultiplexor 1 a 2 de 1 bit
library IEEE;
use IEEE.std_logic_1164.all;

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;

architecture Demux of Demux1a2 is


begin
Y(0) <= A when (S='0') else '0';
Y(1) <= A when (S='1') else '0';
end Demux;

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;

architecture Demux of Demux2a4 is


Begin
Demultiplexor: process(A,S) is
begin
case S is
when "00"=> Y0 <= A;
Y1 <= ‘0’;
Y2 <= ‘0’;
Y3 <= ‘0’;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
when "01"=> Y0 <= ‘0’;
Y1 <= A;
Y2 <= ‘0’;
Y3 <= ‘0’;
when "10"=> Y0 <= ‘0’;
Y1 <= ‘0’;
Y2 <= A;
Y3 <= ‘0’;
when others => Y0 <= ‘0’;
Y1 <= ‘0’;
Y2 <= ‘0’;
Y3 <= A;
end case;
end process Demultiplexor;
end Demux;

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;

architecture Demux of Demux2a4 is


Begin
Demultiplexor: process(A,S) is
begin
case S is
when "00"=> Y0 <= A;
Y1 <= "000";
Y2 <= "000";
Y3 <= "000";
when "01"=> Y0 <= "000";
Y1 <= A;
Y2 <= "000";
Y3 <= "000“;
when "10"=> Y0 <= "000";
Y1 <= "000";
Y2 <= A;
Y3 <= "000";
when others => Y0 <= "000";
Y1 <= "000";
Y2 <= "000";
Y3 <= A;
end case;
end process Demultiplexor;

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 5
end Demux;

De esta manera, iniciamos el trabajo de implementación de circuitos combinacionales. A


continuación, se lleva a cabo el desarrollo de la práctica, donde va a ser importante la parte
simulación, pues en ocasiones no es posible comprobar plenamente la descripción, debido a la
falta de hardware, o por algunas otras circunstancias.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalado.

DESARROLLO

1. Simule cada uno de los multiplexores y demultiplexores que se vieron en la sección de


teoría, y reporte cada una de las gráficas obtenidas por medio de la simulación y dé una
interpretación de la misma gráfica (una explicación por gráfica).
2. Implemente y pruebe la funcionalidad de los multiplexores que fueron simulados en el
punto anterior. Si alguno no puede ser implementado, explique el motivo, y haga alguna
sugerencia para poder hacer una prueba en FPGA de la descripción.
3. Diseñe e implemente un multiplexor 8 a 1 de 1 bit. Debe explicar el bloque, la simulación,
la asignación de terminales, y comprobar el funcionamiento, mostrando al profesor la
implementación del multiplexor.
4. Diseñe e implemente un demultiplexor 3 a 8 de 1 bit. Debe explicar el bloque, la simulación,
la asignación de terminales, y comprobar el funcionamiento, mostrando al profesor la
implementación del demultiplexor.
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 6. Implementación de operaciones relacionales.

OBJETIVO.

Que el alumno aprenda a implementar operaciones relacionales, para la solución de diversos


problemas, y adquiera el conocimiento de cómo funcionan, mediant la implementación en FPGA.

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 (‘<=’).

El bloque descriptivo de hardware que representa estos operadores se muestra a


continuación.

El operador puede ser de 1 bit, 2 bit, o n bit. La salida es de 1 bit, independientemente de la


cantidad de bit que corresponda a las entradas. Lo anterior se debe a que la salida expresa
solamente si la operación relacional se cierto (‘1’ lógico), o falso (‘0’ lógico).

El siguiente código muestra la implementación de la comparación ‘menor que ‘, cuyas entradas


(A y B) son de 4 bit.

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;

architecture Rel of Relacional is


begin
R <= '1' when (A<B) else '0';

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 6
end Rel;

A continuación, se lleva a cabo el desarrollo de la práctica.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

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.

Que el alumno aprenda a implementar codificadores digitales, comprendiendo el uso de cada


uno de ellos, y así pueda resolver problemas más complejos.

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.

CODIFICADOR CÓDIGO GRAY

Este codificador se utiliza principalmente en contadores de alta velocidad, y se caracteriza en


que de un valor a otro consecutivo los valores son adyacentes; es decir, solamente cambia 1 bit,
como se puede observar a continuación, iniciando con su bloque descriptivo de hardware
respectivo.

La tabla de verdad correspondiente al codificador Gray, se muestra a continuación.

La implementación en VHDL es de la siguiente manera.

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;

CODIFICADOR DE BCD A 7 SEGMENTOS

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

La tabla de verdad, se muestra en la siguiente tabla.

Es importante recordar que la salida depende de si el exhibidor es de ánodo común o cátodo


común.

A continuación, se lleva a cabo el desarrollo de la práctica.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

1. Simule e implemente el codificador código Gray. Muestre el diagrama de tiempos


respectivo, y explíquelo, demostrando que la descripción funciona.
2. Investigue que tipo de exhibidores tiene la tarjeta Nexys 2, y de acuerdo a eso, realice la
descripción de hardware del codificador de BCD a 7 segmentos, simúlelo e implemente la
descripción. Muestre el diagrama de tiempos respectivo, y explíquelo, demostrando que
la descripción funciona. Muestre esta implementación funcionando al profesor.
3. Investigue, diseñe e implemente los siguientes decodificadores, y debe mostrarlos al
profesor funcionando. Para cada uno de los diseños, debe mostrar la simulación e
interpretar los diagramas de tiempo, explicando si sirve la descripción o no.

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.

4. Investigue lo que es el verificador de paridad, y diseñe e implemente uno, para palabras


de 5 bit.
5. Dé sus conclusiones de la práctica.

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.

Que el alumno comprenda la importancia de la conversión de Binario a BCD, para su exhibición


de una manera en que cualquier persona identifique fácilmente, utilizando herramientas que ya
se han visto previamente como son los codificadores.

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.

La parte más importante de la conversión de binario a BCD, es el codificador de binario a BCD,


del que se muestra a continuación su diagrama descriptivo de hardware. En este diagrama, la
entrada es la señal B y es de 4 bit. La salida es la señal C y también es de 4 bit.

La tabla de verdad, se muestra a continuación.

La arquitectura representativa del codificador, se presenta en la figura 1.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8

Figura 1. Arquitectura del codificador Binario a BCD.

El código VHDL de este codificador es el siguiente.

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;

architecture Codificador of Codificador_BCD is


begin
Coder: process(B)
begin
case B is
when "0000" => C <= "0000";
when "0001" => C <= "0001";
when "0010" => C <= "0010";
when "0011" => C <= "0011";
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
when "0100" => C <= "0100";
when "0101" => C <= "1000";
when "0110" => C <= "1001";
when "0111" => C <= "1010";
when "1000" => C <= "1011";
when "1001" => C <= "1100";
when others => C <= "0000";
end case;
end process Coder;
end Codificador;

Con este codificador, podemos construir una gran variedad de convertidores de Binario a BCD,
como se va a ver a continuación.

CODIFICADOR BINARIO A BCD DE 4 BIT

La entidad propuesta es la siguiente:

Donde U es la señal correspondiente a las unidades, y es de 4 bit. La señal D es para las


decenas y es de 1 bit. Lo anterior debido a que el máximo valor que puede ser representado con
4 bit es 15, y para representar las decenas sólo requerimos de 1 bit.

La arquitectura correspondiente a la entidad de arriba es la siguiente:

En esta ocasión, es necesario utilizar el módulo del Codificador_BCD estudiado


anteriormente. Como se puede observar, es necesario adicionar un ‘0’ a la izquierda y el bit 0
de la señal B es asignada directamente al bit 0 de la señal U, por lo que la señal B NO puede
ser ingresada directamente en la descripción, y es necesario el uso de señales intermedias.
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8
Para hacer más sencilla la adición de señales intermedias, se plantean las mismas en la
arquitectura, como se muestra 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;

architecture Convertidor of Bin_BCD_4b is

component Codificador_BCD is
port(
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0)
);
end component;

signal S1, S2 : std_logic_vector(3 downto 0);

begin
S1 <= '0' & B(3 downto 1);
U <= S2(2 downto 0) & B(0);
D <= S2(3);

Modulo: Codificador_BCD port map (S1,S2);


end Convertidor;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8

CODIFICADOR BINARIO A BCD DE 8 BIT

La entidad propuesta es la siguiente:

Donde U es la señal correspondiente a las unidades y D es la señal de las decenas, ambas


de 4 bit. La señal C es para las centenas y es de 2 bit. Lo anterior debido a que el máximo valor
que puede ser representado con 8 bit es 255, y para representar las centenas sólo se requiere
de 2 bit.

La arquitectura correspondiente a la entidad de arriba es la siguiente. En esta ocasión, es


necesario utilizar 7 veces el módulo del Codificador_BCD. Al igual que antes, se agrega un ‘0’ a
la izquierda y el bit 0 de la señal B es asignada directamente al bit 0 de la señal U. la siguiente
figura muestra la arquitectura con las señales intermedias a ser utilizadas en la arquitectura. Las
señales intermedias agregadas son S1 a S14, todas de 4 bit.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8

A continuación, se presenta el código VHDL.

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;

architecture Convertidor of Bin_BCD_8bit is

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;

signal S1, S2 : std_logic_vector(3 downto 0);


signal S3, S4 : std_logic_vector(3 downto 0);
signal S5, S6 : std_logic_vector(3 downto 0);
signal S7, S8 : std_logic_vector(3 downto 0);
signal S9, S10: std_logic_vector(3 downto 0);
signal S11,S12: std_logic_vector(3 downto 0);
signal S13,S14: std_logic_vector(3 downto 0);

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);

U <= S14(2 downto 0) & B(0);


D <= S13(2 downto 0) & S14(3);
BCD2 <= S9(3) & S13(3);
end Convertidor;

Ahora, el desarrollo de la práctica.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 8

DESARROLLO

1. Simule e implemente los dos convertidores de binario a BCD mostrados en la sección de


teoría, y reporte los diagramas de tiempos.
2. Diseñe e implemente un convertidor de binario a BCD de 5 bit. Muestre el diseño a partir
del planteamiento de la entidad, la arquitectura, el código, la simulación, la asignación de
terminales y la implementación. Utilice los led como salida para probar el resultado.
3. Diseñe e implemente un convertidor de binario a BCD de 12 bit. Muestre el diseño a partir
del planteamiento de la entidad, la arquitectura, el código, la simulación, la asignación de
terminales y la implementación. Utilice los led como salida para probar el resultado,
incluyendo los que corresponden a los exhibidores de 7 segmentos.
4. Escriba sus conclusiones personales.

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.

Diseñar e implementar la descripción de hardware para el manejo de 4 exhibidores de 7


segmentos, utilizando la técnica de barrido, para poder visualizar diferentes valores en cada uno
de los exhibidores.

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.

La figura 3 muestra la conexión de transistores a exhibidores de ánodo común, y la figura 4


muestra la conexión para exhibidores de cátodo común.

Figura 3. Conexión de exhibidores cátodo común con transistores NPN.

Figura 4. Conexión de exhibidores ánodo común con transistores PNP.

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.

Si el arreglo utilizado es como en la figura 3, y si se desea encender el exhibidor 0, entonces


el bit B 0 debe valer ‘0’ y los demás deben valer ‘1’, como se muestra en la tabla 1. En cambio, si
se utiliza la arquitectura de la figura 4, y se desea encender el exhibidor 0, entonces el bit B 0 debe
valer ‘1’ y los demás deben valer ‘0’, como se muestra en la tabla 2.

B3 B2 B1 B0 Exhibidor 3 Exhibidor 2 Exhibidor 1 Exhibidor 0


1 0 0 0 ON OFF OFF OFF
0 1 0 0 OFF ON OFF OFF
0 0 1 0 OFF OFF ON OFF
0 0 0 1 OFF OFF OFF ON
Tabla 1. Valores de la señal B para Ánodo Común.

B3 B2 B1 B0 Exhibidor 3 Exhibidor 2 Exhibidor 1 Exhibidor 0


0 1 1 1 ON OFF OFF OFF
1 0 1 1 OFF ON OFF OFF
1 1 0 1 OFF OFF ON OFF
1 1 1 0 OFF OFF OFF ON
Tabla 2. Valores de la señal B para Cátodo Común.

La entidad requerida para implementar el control de manejo de los exhibidores, se muestra en


la figura 5, y su arquitectura se muestra en la figura 6.

Figura 5. Entidad para el control de manejo de los exhibidores.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9

Figura 6. Arquitectura de la entidad para el control de manejo de los exhibidores.

La descripción de las señales se muestra en la tabla 3.

Señal Tipo #Bit Descripción Uso


1 : Exhibidor Cátodo Común.
POL Entrada 1 Su valor depende del tipo de exhibidor.
0: Exhibidor Ánodo común.
BCD Entrada 4 Entrada de 0 a 9 en binario. Valor binario
S Entrada 4 Selector del exhibidor a encender. Según la tabla 1 y la tabla 2.
Señal correspondiente a los 7 segmentos del Agrupa los segmentos (a, b, c, d,
SEG Salida 7 exhibidor, representando el valor BCD de e, f, g), donde el segmento a es
entrada. el más significativo.
Señal que enciende o apaga el exhibidor
B Salida 4 Igual que S.
seleccionado con S.
Tabla 3. Descripción de las señales de la entidad del control de manejo de los exhibidores.

Como se puede observar en la figura 6, se utiliza el módulo del codificador de BCD a 7


segmentos, del cual se muestra la entidad en la figura 7 y su arquitectura en la figura 8.

Figura 7. Entidad del codificador de BCD a 7 segmentos.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9

Figura 8. Arquitectura de la entidad del codificador de BCD a 7 segmentos.

El código para el codificador de BCD a 7 segmentos se muestra a continuación.

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;

architecture Codif_BCD_7seg of Codif_BCD_7seg is


signal M : std_logic_vector(6 downto 0);
begin
M <= "0000001" when (BCD = "0000") else
"1001111" when (BCD = "0001") else
"0010010" when (BCD = "0010") else
"0000110" when (BCD = "0011") else
"1001100" when (BCD = "0100") else
"0100100" when (BCD = "0101") else
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
"0100000" when ( BCD = "0110") else
"0001111" when ( BCD = "0111") else
"0000000" when ( BCD = "1000") else
"0000100" when ( BCD = "1001") else
"1111111";
S <= M when(POL='1') else (not M);
end Codif_BCD_7seg;

El código de la arquitectura y la entidad de los exhibidores de 7 segmentos, se presenta a


continuación.

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;

architecture Exh_7seg of Exh_7seg is

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;

Modulo: Codif_BCD_7seg port map (POL, BCD, SEG);


end Exh_7seg;

El código del banco de pruebas que se puede utilizar es el siguiente.

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;

architecture Banco of Banco_Exh_7seg is

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;

signal POL : std_logic;


signal BCD : std_logic_vector (3 downto 0);
signal S : std_logic_vector (3 downto 0);
signal B : std_logic_vector (3 downto 0);
signal SEG : std_logic_vector (6 downto 0);

begin
Modulo: Exh_7seg port map (POL, BCD, S, B, SEG);

POL <= '1';

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

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

1. Simule e implemente el diseño mostrado en el marco teórico, y demuestre que funciona


correctamente.
2. Investigue y proponga otra forma de implementar el banco de pruebas, de forma que con
menos código realice la misma función.
3. En la siguiente arquitectura se maneja 4 señales BCD0, BCD1, BCD2 y BCD3, una señal
selectora S de dos bit, la señal de salida los 7 segmentos y una señal B que controle el
encendido de los exhibidores. Cuando la señal S valga “00”, el valor de la señal BCD0 se
debe mostrar en el exhibidor 0. Cuando S valga “01”, la señal BCD1 se debe mostrar en el
exhibidor 1, y así sucesivamente.

4. Diseñe una entidad y un banco de pruebas para el punto 3.


5. Implemente y pruebe la arquitectura diseñada, y demuestre que funciona.

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.

Implementar en un PLD la conversión de binario a BCD, con exhibición de los resultados en


exhibidores de 7 segmentos, para una mejor comprensión de los valores.

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.

Señal Tipo #Bit Descripción


POL Entrada 1 Su valor depende del tipo de exhibidor.
BIN Entrada 8 Entrada de 0 a 255 en binario.
S Entrada 2 Selector del exhibidor a encender.
Señal correspondiente a los 7 segmentos del
SEG Salida 7 exhibidor, representando el valor BCD de
entrada.
Señal que enciende o apaga el exhibidor
B Salida 4
seleccionado dependiendo del valor de S.
Tabla 4. Descripción de las señales de la entidad de la figura 9.

La arquitectura correspondiente a la entidad de la figura 9 se muestra en la

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10

Figura 10. Arquitectura de la entidad Bin_8b_4exh.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

1. Realice la descripción en hardware de correspondiente a la arquitectura de la figura 10.


2. Diseñe un banco de pruebas que permita probar la descripción desarrollada en el punto 1.
3. Simule y compruebe el correcto funcionamiento de la descripción diseñada.
4. Implemente la descripción en la tarjeta de desarrollo basada en FPGA.
5. Diseñe una descripción de hardware para implementar un convertidor de binario a BCD de
12 bit, con salida a los 4 exhibidores de 7 segmentos.
6. Simule y compruebe el correcto funcionamiento de la descripción diseñada en el punto 5.
7. Implemente la descripción del punto 5 en la tarjeta de desarrollo basada en FPGA.

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

La operación de complemento 2 en sistemas digitales, equivale a multiplicar por -1 un valor


determinado. La entidad correspondiente a esta operación se muestra en la imagen.

La arquitectura correspondiente al complemento 2 es la siguiente.

El código VHDL para el complemento 2 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 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;

architecture Complemento of Complemento2 is


signal C1 : std_logic_vector(n-1 downto 0);
begin
C1 <= not A;
C2 <= C1 + 1;
end Complemento;

SUMADORES

El bloque utilizado para representar al sumador se presenta en la siguiente imagen.

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

architecture Suma of Sumador_n_bit is


begin
Operacion: process(A,B)
variable SU : unsigned(n-1 downto 0);
begin
SU := unsigned(A) + unsigned(B);
S <= std_logic_vector(SU);
end process;
end Suma;

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.

El código que se puede utilizar para el restador, es el siguiente.

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;

architecture Resta of Restador_n_bit is

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

El multiplicador se caracteriza en que las señales de entrada no necesariamente deben ser


del mismo tamaño en bit. Por ejemplo, en la figura se muestra el bloque descriptivo de hardware
para el multiplicador, donde se observan las señales A y B como las entradas, de tamaño n y m
bit, respectivamente, y la señal de salida M, de tamaño n+m bit. En el caso del multiplicador, para
poder expresar el resultado de manera correcta, la señal de salida debe tener n+m bit, de lo
contrario, el resultado va a ser equivocado.

El código VHDL para implementar el multiplicador 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 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;

architecture Multiplica of Multiplicador_n_bit is


begin
Operacion: process(A,B)
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
variable MU : signed(2*n-1 downto 0);
begin
MU := signed(A) * signed(B);
M <= std_logic_vector(MU);
end process;
end Multiplica;

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

1. Compruebe que las operaciones aritméticas mostradas en la sección de teoría funcionan,


implementándolos en la tarjeta Nexys 2, utilizando señales de entrada de 4 bit.
2. Busque alguna otra alternativa en el lenguaje VHDL para implementar las operaciones del
punto 1.
3. Implemente un incrementador genérico, y pruebe con una señal de 8 bit.
4. Implemente un decrementador genérico, y pruebe con una señal de 8 bit.
5. Implemente un sumador/restador genérico.
6. Implemente una descripción que permita realizar cualquiera de las siguientes operaciones
a 4 bit:
a. Sumador.
b. Restador.
c. Multiplicador.
d. Incrementador.
e. Decrementador.
f. Complemento 2.
g. Complemento 1.
h. No operación (la salida siempre va a ser 0).
7. Investigue en qué consiste una ALU, e implemente una ALU de 4 bit.
8. Anote 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 12. Fundamentos de Lógica Secuencial.

OBJETIVO.

Que el alumno conozca la manera de implementar elementos de memoria, como elementos


básicos de la lógica secuencial, como una herramienta de implementación de sistemas digitales
para la solución de problemas reales.

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.

Figura 11. Elementos de un diseño de lógica secuencial.

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.

Figura 12. Forma general de un FF y sus señales de entrada y salida.

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.

Figura 13. Tipos válidos para la señal de cambio de estado.

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.

Figura 14. Flip-Flop SR y su tabla de verdad.

El FF de la figura 14 es asíncrono, pues no tienen alguna señal de control para elegir el


momento de cambio en la salida. La figura 15 muestra el FF SR en su configuración de candado
de nivel positivo, así como tabla de verdad. La figura 16 muestra una gráfica de tiempos del
comportamiento del FF SR tipo candado, donde se puede apreciar el comportamiento de las
salidas respecto a las entradas. En la gráfica de tiempos se observa que la salida Q cambia
acorde con la señal de entrada solamente cuando la señal L tiene un valor lógico de ‘1’, mientras
que cuando L = ‘0’, la salida permanece sin cambios aun cuando las señales SR cambien su valor
lógico. Un candado de nivel negativo, se diferencia en que la señal L pasa por una compuerta not
para invertir su valor.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9

Figura 15. Estructura de un candado de nivel positivo.

Figura 16. Diagrama de tiempos para el FF SR tipo candado, de nivel positivo.

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.

Figura 17. Estructura interna básica de un FF con borde de reloj positivo.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9

Figura 18. Diagrama de tiempos del FF SR con señal CLK positiva.

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.

Figura 21. FF tipo D con borde de reloj positivo.

El código para este FF tipo D, se muestra a continuación de manera genérica.

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;

architecture FF_D of FF_D is


begin
Q <= (others => '0') when RST='1' else
D when rising_edge(CLK);
end FF_D;

La figura 22 muestra un FF tipo D con habilitación y su tabla de verdad. Se puede observar


que para tener una actualización de la señal de salida, se debe cumplir que ocurra el borde
positivo de la señal CLK y la señal H esté en alto (‘1’ lógico).

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9

Figura 22. FF tipo D con habilitador.

El código para este tipo de FF se muestra a continuación.

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;

architecture FF_D of FF_D_H is


begin
Q <= (others => '0') when RST='1' else
D when rising_edge(CLK) and H='1';
end FF_D;

Máquinas de Estado Finito

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.

1. Estado: Cada una de las combinaciones lógicas de los elementos de memoria.


2. Elementos de una máquina: Estados, Transiciones, Entradas, Salidas.
3. La descripción de una máquina de estados se realiza mediante un grafo.

El grafo es una representación gráfica del comportamiento de un sistema secuencial. En la


figura 23 se muestran 4 estados representativos de un grafo, donde a los estados se la ha dado
el nombre de S 3-0 . Cada estado se forma de las combinaciones lógicas de los elementos de
memoria, de tal forma que para representar 4 estados, se requiere de dos FF, y cada estado es
representado por una combinación lógica, como se puede ver en la misma figura. Si se requiere
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
representar 10 estados, entonces es necesario el uso de 4 elementos de memoria, y así
sucesivamente.

Figura 23. Estados representativos de un grafo y su combinación lógica.

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.

Figura 24. Grafo con líneas de transición de estado incondicionales.

El código para implementar una máquina secuencial con transiciones incondicionales se


muestra a continuación.

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;

architecture FSM of FSM_Incondicional is


-- Se requiere dos FF
signal Sp,Sn : std_logic_vector(1 downto 0);
begin
Maquina: process(Sp)
begin
case Sp is
when "00" => Q <= "00"; Sn <= "01";
when "01" => Q <= "01"; Sn <= "10";
when "10" => Q <= "10"; Sn <= "11";
when others => Q <= "11"; Sn <= "00";
end case;
end process Maquina;

Sp <= (others => '0') when RST='1' else Sn when rising_edge(CLK);


end FSM;

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.

Figura 25. FSM con transiciones condicionales.

El código VHDL respectivo se muestra a continuación.

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;

architecture FSM of FSM_Condicional is


-- Se requiere dos FF
signal Sp,Sn : std_logic_vector(1 downto 0);
begin
Maquina: process(Sp)
begin
case Sp is
when "00" =>
Sn <= "01";
Q <= "00";
when "01" =>
if (A='1') then
Sn <= "01";
else
Sn <= "10";
end if;
Q <= "01";
when "10" =>
Sn <= "11";
Q <= "10";
when others =>
if(A='1') then
Sn <= "11";
else
Sn <= "00";
end if;
Q <= "11";
end case;
end process Maquina;

Sp <= (others => '0') when RST='1' else Sn when rising_edge(CLK);


end FSM;

Finalmente, proceda a desarrollar la práctica.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 9
DESARROLLO

1. Se define la entidad siguiente.

Donde RST es la señale de inicialización activa en alto. CLK es la señal de reloj. H es la


señal de habilitación de cambio de estado activo en alto. Q es una señal de dos bit.

2. Escriba el código correspondiente a la siguiente máquina secuencial, que pertenece a la


entidad definida en el punto 1. Simúlelo, impleméntelo e indique la utilidad que puede tener.

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.

7. La arquitectura del divisor de frecuencia se muestra a continuación. Implemente y pruebe


esta arquitectura.

8. Utilizando el divisor de frecuencia, diseñe e implemente una arquitectura para realizar el


barrido de los 4 exhibidores de 7 segmentos con un periodo de 100 ms. Puede tomar como
base la siguiente entidad y arquitectura respectivas.

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.

Que el alumno aprenda a implementar contadores de diferentes características, para utilizarlos


en la solución de problemas, mediante la implementación en FPGA de la solución.

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.

A continuación, se muestra la máquina secuencial de un contador módulo 4, ascendente. En


este contador, la salida es Q, y por inicialización se asigna el estado S 0 .

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;

architecture Contador of Contador is


-- Se requiere dos FF
signal Sp,Sn : std_logic_vector(1 downto 0);
begin
Conteo: process(Sp)
begin
case Sp is
when "00" => Sn <= "00";
when "01" => Sn <= "01";
when "10" => Sn <= "10";
when others =>Sn <= "11";
end case;
end process Conteo;

Sp <= (others => '0') when RST='1' else Sn when rising_edge(CLK);


Q <= Sp;
end Contador;

El siguiente contador es módulo 4, pero ascendente/descendente. Como se puede ver en el


diagrama de estados, la señal D controla el sentido del contador, de tal forma que, si D=1, el
contador es descendente, y si vale ‘0’, el contador será ascendente. El diseñador tiene la libertad
de modificar el valor de la condición del contador.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10

El código VHDL respectivo, se muestra a continuación.

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;

architecture Contador of Contador_AD is


-- Se requiere dos FF
signal Sp,Sn : std_logic_vector(1 downto 0);
begin
Conteo: process(Sp)
begin
case Sp is
when "00" =>
if (D=’0’) then
Sn <= "11";
else
Sn <= "01";
End if;
when "01" =>
if (D=’0’) then
Sn <= "00";
else
Sn <= "10";
End if;
when "10" =>

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;

Sp <= (others => '0') when RST='1' else Sn when rising_edge(CLK);


Q <= Sp;
end Contador;

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.

El código en VHDL para el contador ascendente/descendente con habilitación, se muestra a


continuación.

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;

architecture Contador of Contador_AD_H is


-- Se requiere dos FF
signal Sp,Sn : std_logic_vector(1 downto 0);
begin
Conteo: process(Sp)
begin
case Sp is
when "00" =>
if (D=’0’) then
Sn <= "11";
else
Sn <= "01";
End if;
when "01" =>
if (D=’0’) then
Sn <= "00";
else
Sn <= "10";
End if;
when "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;

Sp <= (others => '0') when RST='1'


else Sn when rising_edge(CLK) and H=’1’;
Q <= Sp;
end Contador;
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 10

A continuación, llevamos a cabo el desarrollo de la práctica.

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

Implemente los siguientes contadores en la tarjeta Nexys 2. Utilice un divisor de frecuencia


para que los contadores cambien de estado, cada 0.5 segundos, y la salida debe ser enviada a
los exhibidores de 7 segmentos.

1. Contador módulo 8 de carrera libre.


2. Contador módulo 9, con habilitación.
3. Contador módulo 10, con habilitación y control de dirección.

Para cada uno de los ejercicios debe mostrar el diseño de la entidad y de la arquitectura
en el diagrama a bloques.

4. Escriba sus conclusiones personales.

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.

El código respectivo en VHDL 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 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;

architecture Contador of Contador_8b is


signal Qp,Qn : std_logic_vector(7 downto 0);
Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 11
begin
Qn <= Qp + 1;
Qp <= (others => '0') when RST='1'
else Qn when rising_edge(CLK) and H=’1’;
D <= Qp;
end Contador;

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

DESARROLLO

Implemente los siguientes contadores en la tarjeta Nexys 2. Utilice un divisor de frecuencia


para que los contadores cambien de estado, de acuerdo a cada ejercicio. Las salidas deben ir a
los exhibidores de 7 segmentos.

5. Contador módulo 1000 de carrera libre, cada 100 ms.


6. Contador módulo 3000, descendente, con habilitación, cada 60 ms.
7. Contador módulo 1024, con habilitación y control de dirección.
8. Contador de 12 bit, con carrera libre, y conteo con un periodo de 50 ms.
9. Proponga e implemente una arquitectura para un contador genérico, programable,
ascendente/descendente, con habilitación.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
PRÁCTICA 15. Secuenciadores.

OBJETIVO.

Que el alumno aprenda a implementar máquinas secuenciales, resolviendo problemas


prácticos e implementándolos en un FPGA, para complementar su aprendizaje.

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.

Figura 26. Secuenciador con transiciones incondicionales.

La figura muestra un secuenciador, con transiciones condicionales. En este caso, la señal de


control es X, y la señal de salida es Q. La señal de salida vale ‘1’ mientras se encuentre en el
estado Q 0 . Pero mientras la señal se encuentre en el estado Q 1 , la salida se mantiene en ‘0’. La
señal de control es X, por lo que, mientras el estado actual sea el estado Q 0 y la señal X valga
‘0’, la máquina se va a mantener en ese estado. Sin embargo, cuando la señal X cambie a ‘1’, en
el siguiente borde de reloj la máquina va a cambiar al estado Q 1 , donde permanece hasta que la
señal X vuelva a valer ‘0’.

Dr. Juan Manuel Ramos Arreguín Cuerpo Académico “Cómputo científico y Tecnológico”
Práctica 11

MATERIAL NECESARIO

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

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.

Que el alumno aprenda a implementar máquinas secuenciales, resolviendo problemas


prácticos e implementándolos en un FPGA, para complementar su aprendizaje.

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

1 computadora personal o laptop.


1 tarjeta Nexys 2.
Software Active HDL, ISE y Adept instalados.

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

CRITERIO/ Muy bueno Bueno Suficiente Insuficiente


PUNTUACIÓN
PORTADA Incluye todos los elementos Falta algún elemento en la Faltan dos elementos en la Carece de tres o más
solicitados presentación del trabajo presentación del trabajo. elementos para la
correcta presentación
del trabajo
OBJETIVO El objetivo del portafolio es El objetivo del portafolio El objetivo del portafolio No tiene objetivo
congruente con los contenidos de considera sólo parcialmente no es congruente con los explícito
las lecciones o tareas del curso. los contenidos estudiados. contenidos o lecciones
El objetivo representa el estudiadas.
aprendizaje obtenido y la razón
por la cual se estructuran de esa
forma las evidencias.
EVIDENCIAS Incluye todos los tipos de Incluye al menos tres de los Incluye sólo dos tipos de Incluye sólo uno o
evidencias: palabras clave, tipos de evidencias solicitadas. las evidencias solicitadas. ninguna de los tipos de
estrategias, resúmenes, mapas, No todas las evidencias Solamente una evidencia evidencias solicitadas.
etc. demuestran claramente el demuestra el avance en los La evidencia presentada
Las evidencias demuestran los avance de en los aprendizajes aprendizajes esperados. no demuestra avance en
avances en los aprendizajes esperados. los aprendizajes.
esperados.
ORGANIZACIÓN Todos los documentos están A los documentos les faltan A los documentos les El documento solo tiene
correctamente presentados: algunos elementos de la faltan más de dos un elemento o ninguno
Constan de encabezado, son presentación. elementos de presentación. de presentación.
claros, limpios, explicativo.
ORTOGRAFÍA Y El portafolio de evidencias está Hay hasta cinco errores Hay de 6 a 10 errores Hay más de 10 errores
SINTÁXIS elaborado sin errores ortográficos. ortográficos en el ortográficos.
ortográficos. portafolio No se entienden los
párrafos
REFLEXIONES Realizó todas las reflexiones de Realizó algunas las reflexiones Realizó todas las No incluye reflexiones
forma analítica en su mayoría de forma reflexiones de forma
analítica y el resto superficiales
superficialmente
RÚBRICA PARA EVALUAR EL EXAMEN

CRITERIO/ Muy bueno Bueno Suficiente Insuficiente


PUNTUACIÓN
SABE LEER LOS SIMBOLOS Incluye todos los elementos Falta algún elemento en Faltan dos elementos en la Carece de tres o más
ELECTRONICOS solicitados la presentación del presentación del trabajo. elementos para la
trabajo correcta solución
RASTREA Y EVALUA LAS Tiene el análisis completo del Contempla en análisis Contempla en análisis No comprende la
SEÑALES DIGITALES A LO circuito con las señales completo del circuito completo del circuito interacción de las
ALARGO DE UN CIRCUITO correctas en cada una de los aunque hay secciones en aunque solo muestra el señales de entrada
componentes digitales. donde no existen valores resultado sin mostrar los con los circuitos
independientes por
secciones
CONOCE LA Entiende el argot de sistemas Entiende el argot de Entiende el argot pero No comprende el
TERMINOLOGIA DE digitales y lo utiliza en sistemas digitales algunos acrónimos los argot de sistemas
VOCABLOS EN SISTEMAS diferentes respuestas confunde digitales
DIGITALES
INTERPRETA Y ANALIZA Conoce los símbolos Conoce los operadores Conoce los operadores No comprende la
DIAGRAMAS DE TIEMPO booleanos, los utiliza bajo booleanos, y sabe dibujar booleanos, y sabe dibujar expresión para
criterios de señales de las señales sin los resultados individuales operar el circuito
entrada y muestra el contemplar escalas sin integrar todo el circuito con estímulos de
resultado correcto del circuito entrada
completo en la escala del
tiempo
SINTETIZA EXPRESIONES Y Conoce las técnicas de Conoce 2 técnicas para Conoce una técnica de No entiende como
CIRCUITOS BOLEANOS síntesis: Mapas de Karnough reducción de circuitos reducción de circuitos reducir circuitos
y teoremas booleanos y digitales
D’Morgan, los utiliza para
simplificar circuitos
RESUELVE E INTERPRETA Realizó todos los problemas Realizó algunos Realizó todos los ejercicios No conoce la
NOTACIONES DE de forma analítica ejercicios en su mayoría de forma superficiales interpretación de
DIFERENTES BASES de forma analítica y el notaciones.
ADEMAS DE OPERAR resto superficialmente
EXPRESIONES ARITMETICA
RÚBRICA PARA EVALUAR EL EXAMEN – Muestra 1

CRITERIO/ Muy bueno= Bueno= Suficiente= Insuficiente=


PUNTUACIÓN 100% 75% 50% 25%
SABE LEER LOS SIMBOLOS ELECTRONICOS
RASTREA Y EVALUA LAS SEÑALES DIGITALES A LO ALARGO DE
UN CIRCUITO
CONOCE LA TERMINOLOGIA DE VOCABLOS EN SISTEMAS
DIGITALES
INTERPRETA Y ANALIZA DIAGRAMAS DE TIEMPO
SINTETIZA EXPRESIONES Y CIRCUITOS BOLEANOS
RESUELVE E INTERPRETA NOTACIONES DE DIFERENTES BASES
ADEMAS DE OPERAR EXPRESIONES ARITMETICA
RÚBRICA PARA EVALUAR EL EXAMEN – Muestra 2

CRITERIO/ Muy Bueno Suficiente Insuficiente


PUNTUACIÓN bueno
SABE LEER LOS SIMBOLOS ELECTRONICOS
RASTREA Y EVALUA LAS SEÑALES DIGITALES A LO ALARGO DE UN CIRCUITO
CONOCE LA TERMINOLOGIA DE VOCABLOS EN SISTEMAS DIGITALES
INTERPRETA Y ANALIZA DIAGRAMAS DE TIEMPO
SINTETIZA EXPRESIONES Y CIRCUITOS BOLEANOS
RESUELVE E INTERPRETA NOTACIONES DE DIFERENTES BASES ADEMAS DE
OPERAR EXPRESIONES ARITMETICA
RÚBRICA PARA EVALUAR EL PROYECTO FINAL SDLR I
CAPACIDADES
CRITERIO DE CALIFICACIÓN DESARROLLADAS NIVEL SOBRESALIENTE NIVEL ACEPTABLE NIVEL INACEPTABLE
Manejo de la información Navega con facilidad, sin ayuda a
través de los sitios de interés, utiliza Puede usar ocasionalmente
enlaces sugeridos como IEEE los enlaces sugeridos. No utiliza los enlaces
CANTIDAD DE INFORMACIÓN
Xplore, WebOfScience, ri.uaq.mx y Responde a la mayoría de los sugeridos sólo a algún tema
10% Elaboración de respuestas Scopus. Responde a todos los temas temas y cuestiones o cuestión planteada.
planteados. Responde a todas las planteadas.
preguntas propuestas.
Planificación y organización El trabajo no posee una
El trabajo posee una organización organización clara, aunque
Conocimientos del contenido: clara y presenta información presenta información
Capacidad de análisis relevante, destacando las ideas relevante o si presenta una Trabajo sin estructurar
Capacidad de síntesis fundamentales. Contiene organización clara pero la adecuadamente. No se
CALIDAD DE INFORMACIÓN aportaciones propias como información relevante e selecciona la información
10% Pensamientos expresiones y opinión sobre el tema. irrelevante se recoge tal y relevante ni se hacen
Se incluye conclusión, donde como aparece en direcciones aportaciones propias. No se
comenta algunas posibles visitadas, sin aportaciones incluye ninguna conclusión.
Obtención de conclusiones dificultades, fuentes de error y propias. Se incluye una
sugerencia para mejorar e trabajo. conclusión poco
argumentada.
Cumple con el objetivo planteado Se respeta el objetivo
Respeta el objetivo acordado y los indicado pero no los plazos
Respeta los plazos de entrega plazos de entrega previstos. Los de entrega o viceversa. Se No se respeta ni el objetivo
miembros del grupo contribuyen observa un buen trabajo ni el plazo de entrega. El
CUMPLE LAS NORMAS 55%
equitativamente en la realización del grupal. Se aprecian trabajo del grupo ha sido
Trabajo cooperativo trabajo, respetando las aportaciones y dificultades para realizar un poco eficiente.
opiniones de todos. trabajo cooperativo, a pesar
de respetar plazos y normas.
Originalidad, atractivo
Expresión
En la presentación del trabajo se La presentación es correcta
La presentación es muy
Ortografía aprecia creatividad, colores o aunque no atractiva ni
mejorable, con problemas de
aspectos atractivos. La expresión es creativa. Las expresiones y la
expresión o faltas ortografía.
clara, la terminología es apropiada, la ortografía son aceptables.
PRESENTACIÓN 25% Utilización de recursos diversos digitales ortografía es correcta. La La información sólo se
Utiliza escasos recursos
o no: imágenes, gráficos, vídeos, muestra de forma escrita.
información se muestra de distintas gráficos. La bibliografía o
presentaciones, etc. Falta la bibliografía o el
formas. Recoge la bibliografía o la relación de direcciones de
índice.
relación de sitios web utilizados. internet es escasa.
Muestra la bibliografía y direcciones
web utilizadas

Evaluador __________________________________ Nombre del alumno __________________________________ Exp. ______________________

__________________________________ __________________________________ ______________________

__________________________________ __________________________________ ______________________


Sistemas Digitales 1
Secuencia de contador binario de 8 bits con leds empleando una base de tiempo de 1 segundo.
Elaboró
Ariel Sánchez Padilla
Juan José Martínez Sánchez

martes 24 de septiembre, 2013

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.

A continuación se presenta una simulación donde se visualiza el comportamiento del contador y el


cambio en la secuencia de bits.

El programa final involucra las siguientes variables:

Variables para el contador de 1 segundo: Variables para la máquina de


estados.
x clk
x rst x Sa
x en x sb
x s1 x sc
x s2 x sd
x s3 x se
x s4 x sf
x s5 x …. s255
x s6 x Y(7), salida para almacenar la
x count = s5 combinación de 8 bits.
x S5 = variable para la transición de
estado a estado.

La estructura del sistema se resume en el siguiente diagrama:


S5 S5

Figura 1. Sistema de secuencia de contador binario de 8 bits con base de tiempo de 1 segundo.

Figura 2. Base de tiempo de 1 segundo.


S5=0

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

Issued: March 2020

Problem 1: Boolean Algebra Practice Problems (Problem 1 will not be graded.)


Simplify each expression by algebraic manipulation. Try to recognize when it is
appropriate to transform to the dual, simplify, and re-transform (e.g. no. 6). Try doing the
problems before looking at the solutions which are at the end of this problem set.

1) a0 15) xy  x y
2) a˜0 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

Problem 2: Karnaugh Maps and Minimal Expressions


For each of the following Boolean expressions, give:
i) The truth table,
ii) The Karnaugh map,
iii) The MSP expression, (Show groupings)
iv) The MPS expression. (Show groupings)

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 )

Problem 3: Karnaugh Maps with “Don’t Cares”


2

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)

i) Find the minimal sum of products expression. Show your groupings.


ii) Find the minimal product of sums expression. Show your groupings.
iii) Are your solutions unique? If not, list and show the other minimal expressions.
iv) Does the MPS = MSP?

Problem 4: DeMorgan’s Theorem


Use DeMorgan's Theorems to simplify the following expressions:

1) (a  d ) ˜ (a  c)
2) a ˜ b ˜ c 
3) a  d ˜ a  c ˜ c  d
3

Solutions to Problem 1: Boolean Algebra Practice Problems


1) a0 a
2) a˜0 0
3) aa 1
4) aa a
5) a  ab a (1  b) a
6) a  ab (a  a )(a  b) ab
7) a (a  b) a a  ab ab
8) ab  ab b( a  a ) b
9) (a  b)(a  b) a a  ab  b a  bb a  ab  ab a (1  b  b) a
10) a (a  b  c  ...) aa  ab  ac  ... a  ab  ac  ... a
11) f (a, b, ab) a  b  ab a  b
12) f (a, b, a ˜ b) a  b  ab aba 1
13) f [a, b, (ab)] a  b  (ab) abab 1
14) y  y y y
15) xy  x y x( y  y ) x
16) x  y x x(1  y ) x
17) ( w  x  y  z ) y y
18) ( x  y )( x  y ) x
19) w  [ w  ( wx )] w
20) x[ x  ( xy )] x
21) ( x  x) x
22) ( x  x) 0
23) w  ( w x yz ) w(1  x yz ) w
24) w ˜ ( wxyz ) w( w  x  y  z ) w
25) xz  x y  zy xz  x y
26) ( x  z )( x  y )( z  y ) ( x  z )( x  y )
27) x  y  xy z x yz
1

SDLR1 – Dr. Juvenal Rodríguez, Dr. Gonzalo Macias.

Issued: June 2019

It is required a system that shows in a 7-segment display a sequence


from 0, 1… 9, A, B… F; Also if an input of the system is switched, then,
is will be decreased, i. e. 9, 8... 0…
Below is shown the top entity for this module:

EN

7 D7S
INC/DEC

CLK
RST

Assessment:

5 if it is shown in the display the consecutive series from 0 to F


7 additionally the INC/DEC signal makes its job
10 also if EN and RST signals works
FREQ (N) REG S0 BT REF S1

U6 U1
CLK CLK

RST
EN RST

DUTY (N) REG S3 S1 CONT UP S2 COMP AND PWM


FREQ (N) CLK U3 CLK U2 U4
S3 U5

RST RST RST En


DUTY (N)

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:

Fecha de pre-entrega: diciembre de 2019, 10 am Fecha de


entrega: diciembre de 2019, 10 am. Entrega de calificaciones
julio de 2019 Lugar: LabMEC.

PUNTOS DE EVALUACIÓN:

- Presentación del proyecto.


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.

- 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:

- Proyecto funcionando en su totalidad.


- Reporte digital del proyecto (según formato).
- Anexo A. Código VHDL (de todos los componentes).
- Anexo B. Interfaz de monitoreo y control en LabView.
- Anexo C. Memoria fotográfica.
- Anexo D. Hojas de datos de todos los componentes eléctricos y electrónicos
utilizados.
- Anexo E. Esquemáticos electrónicos.
- Anexo F. Imagen 3D de la tarjeta electrónica.
- Anexo G. Vídeo.
- Anexo H. Costos.

INGENIERÍA EN AUTOMATIZACIÓN
Evaluación final del curso Sistemas Digitales I.

CONTENIDO DEL REPORTE:

- 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.

*Los datos enumerados es información mínima requerida, pero no toda la


correspondiente a los puntos del reporte.

ENTREGA DEL REPORTE:

- 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.:

Título del proyecto:

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.

First Partial Exam.


Instructions: Read carefully each question and answer what is required. SOLUTIONS WON’T BE MARKED, UNLESS YOU
SHOW HOW IT IS DERIVED.

1. Complete the missing entries (WHICH ARE NOT SHADED) in the Table 1. [10 pnts: 2.5 each]

Table 1

Binary Octal Decimal Hexadecimal


10100101010011
FACE
130014
1276

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

3. Simplify each expression by algebraic manipulation. [25 pnts: 5 pnts each]

ഥ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\GHVHJXQGRV YHU/6 
 '(&+)$
 '(&+)$
 %DVHVGHWLHPSR 7RJJOH\QRUPDO 
 %DVHVGHWLHPSR *HQpULFDV 
5HORMGLJLWDOGHGtJLWRV ++00 
3:0PRWRU
56
$'&


Carlos Lua Morales Sistemas Digitales
184338

Base de tiempo (1 seg) con contador


Máquina
de
S1
estados

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

Elaborado por: Dr. Juvenal RR.

Integrantes por equipo: 2.

Objetivo:

Desarrollar habilidades en sistemas digitales utilizando los conceptos de: programación, lógica
secuencias, tri-estados y buses bidireccionales.

Materiales:

x 1 74LS244 Buffer octal


x 1 HCT573 Latch octal
x 1 74LS04 Inversor
x 1 74LS08 Compuerta AND
x 1 Microcontrolador (ejemplo: PIC18F4550, Arduino, etc.)
x 1 Display de 7 Segmentos
x Resistencias varias
x 4 Botones pulsadores (dip swithches)

Procedimiento

1. Revisar las hojas de datos de los circuitos integrados, principalmente las tablas de verdad.
2. Armar el siguiente circuito digital

3. Realizar un código en el microcontrolador que permita leer y escribir sobre un mismo


puerto de 8 bits, es decir, crear un bus bidireccional.
o El proceso es: Inicializar sistema
o Inicializar entradas y salidas
o Generar un puerto de 8 bits como entradas
o Generar 2 salidas, una para habilitar el latch y otra para habilitar el buffer
o En un bucle infinito:
ƒ Leer ocho bits del bus bidireccional, por lo tanto, se tienen que ajustar
como entradas los pines del microcontrolador, habilitar la señal de control
del 74LS244, y deshabilitar la de control del HCT573
ƒ Enmascarar para observar solo 4 bits provenientes y guardarlos en una
variable.
ƒ Asignar por medio de una sentencia Switch-case un valor correspondiente
a la tabla de la figura anterior.
ƒ Cambiar la dirección de entrada a salida del puerto de 8 bits.
ƒ Escribir el valor correspondiente en el puerto de acuerdo a la tabla de la
figura anterior.
ƒ Repetir
4. Realizar el reporte de la práctica integrando: código fuente, fotos y diagrama electrónico
simulado.
Comunicación RS-232

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

Figura 3.- Formato de la trama de comunicación en el protocolo RS232

Listado en VHDL del componente “Latch_generic” empleado en “Receptor_232”


library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Latch_generic is
generic(N: integer:=7);
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
LE: in STD_LOGIC;
D : in STD_LOGIC_VECTOR(N DOWNTO 0);
Q : out STD_LOGIC_VECTOR(N DOWNTO 0) );
end Latch_generic;

architecture Registro of Latch_generic is


signal Qp,Qn: std_logic_vector(N downto 0);
begin
Q <= Qp;

Mux: process(Qp,LE) begin


if LE = '1' then Qn <= D;
else Qn<=Qp; end if;
end process Mux;

FF: process (CLK, RST) begin


if RST = '0' then Qp<= (others=>'0');
elsif CLK'event and CLK ='1'and LE='1' then
Qp<= Qn; end if;
end process FF;

end Registro;

Descripción en hardware del componente “Transmisor_232”.


Las Figuras 4 y 4muestran la implementación en hardware de este componente, el proceso de diseño se
describe a continuación.
Dado que este protocolo es completamente asíncrono, no tenemos la necesidad de sincronizarnos con el
dispositivo al que le queremos comunicar, entonces este módulo necesita una señal de inicio (STR) válida
para comenzar la codificación del dato, una vez que sucede esto, es activado un contador el cual se
desborda a la frecuencia con que se transmiten los datos, de tal forma que cada vez que se desborda se
incrementa la señal OPD para transmitir el siguiente bit, una vez que se termino la codificacion, es
desactivado el contador, y se activa la señal de RDY.
TxD
Figura 4.-
Descripción en
hardware del
componente
“Transmisor_232”

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

RST 0,x STR,TB


RDY, EN, OPC
S0
x,0 x,1 1,0,0 1,x x,0

S10 S3
1,0,9 1,0,0

x,0 x,1 Figura 5.- Maquina de


x,1 estados del componente
“Transmisor_232”.
S9 S2
1,0,8 1,0,1
x,0

x,1 x,1

Listados en VHDL utilizados en el componente “Transmisor_232”

Listado de la entidad de mayor jerarquía (“Transmisor_232”)


library IEEE;
use IEEE.STD_LOGIC_1164.all;

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;

architecture simple of Top_TxD is

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;

signal EN,TB: std_logic;


signal OPD: std_logic_vector(3 downto 0);
begin
Time_Base: contadorMOD5208 port map(CLK,RST,EN,TB);
Control: FSM_TxD port map(CLK,RST,STR,TB,RDY,EN,OPD);
Mux: process(OPD)
begin
Case OPD is
when "0001" => TxD <='0';
when "0010" => TxD <=Data(0);
when "0011" => TxD <=Data(1);
when "0100" => TxD <=Data(2);
when "0101" => TxD <=Data(3);
when "0110" => TxD <=Data(4);
when "0111" => TxD <=Data(5);
when "1000" => TxD <=Data(6);
when "1001" => TxD <=Data(7);
when others => TxD <='1' ;
end case;
end process Mux;
end simple;

Listado en VHDL del componente “contadorMOD5208” empleado en “Transmisor_232”


library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;

entity contadorMOD5208 is
port( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
EN : in STD_LOGIC;
TB : out STD_LOGIC );
end contadorMOD5208;

architecture contador of contadorMOD5208 is


signal Qp,Qn: std_logic_vector(12 downto 0);
signal SEL: std_logic_vector(1 downto 0);
signal FIN: std_logic;
begin
SEL <= FIN & EN;
TB <= FIN;
Mux: process(Qp, SEL)
begin
case SEL is
when "00" => Qn <= Qp;
when "01" => Qn <= Qp+1;
when others => Qn <= (others=>'0');
end case;
end process Mux;

COMPARADOR: process (Qp)


begin
if Qp= "1010001011000" then
FIN <= '1';
else
FIN <= '0';
end if;
end process COMPARADOR;

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;

Listado en VHDL del componente “FSM_TxD” empleado en “Transmisor_232”


library IEEE;
use IEEE.STD_LOGIC_1164.all;

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;

architecture simple of FSM_TxD is


signal Qp,Qn: std_logic_vector(3 downto 0);
begin
OPD <= Qp;

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';

when "0001" => if TB = '1' then -- Bit de inicio


Qn <= "0010";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "0010" => if TB = '1' then -- B0


Qn <= "0011";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';
when "0011" => if TB = '1' then --B1
Qn <= "0100";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "0100" => if TB = '1' then --B2


Qn <= "0101";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "0101" => if TB = '1' then --B3


Qn <= "0110";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "0110" => if TB = '1' then -- B4


Qn <= "0111";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "0111" => if TB = '1' then --B5


Qn <= "1000";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "1000" => if TB = '1' then --B6


Qn <= "1001";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when "1001" => if TB = '1' then --B7


Qn <= "1010";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';

when others => if TB = '1' then --Stop


Qn <= "0000";
else
Qn <= Qp;
end if;
RDY <= '0';
EN <= '1';
end case;
end process combinacional;

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))

I. DATOS GENERALES DE LA MATERIA

Nombre de la materia: Sistemas Digitales con Lógica Reconfigurable I (SDLRI)


Clave: 343
No. de Créditos: 8
Semestre: Semestre.
Duración del curso: 17 semanas
Horas a la semana: 3 teoría, 2 práctica
Total de horas: 85 horas (34 práctica y 51 teoría)
Autor del programa: Juvenal Rodríguez Reséndiz
Modalidad: Presencial

II. PRESENTACIÓN

La importancia de esta materia radica en la aportación de los conocimientos para contribuir a la

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


consolidación del diseño digital; permitirá que el alumno conozca los elementos que componen un
sistema de procesamiento, así como el análisis y diseño de sistemas digitales programables; de
esta manera se prepara al estudiante con nuevas herramientas para el diseño digital, al hacer uso
de descripción de hardware (HDL) que permita crear, simular, modificar e implementar sistemas
digitales, desechando la mínima cantidad de componentes electrónicos durante las etapas de
diseño. Por otro lado, Circuitos Integrados para Aplicaciones Específicas (o ASIC, por sus siglas en
inglés) son utilizados para demostrar el comportamiento principalmente de tiempo y características
eléctricas.
Asignatura Clave
Sistemas Digitales con Lógica Reconfigurable I (SDLR I) 343

III. INTRODUCCIÓN

Las lecturas de clase estarán encaminadas a las siguientes unidades:

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.

Las horas de laboratorio estarán encaminadas al aprendizaje de descripción de hardware,


simulación, microelectrónica y circuitos impresos. Las prácticas son planteadas de tal manera que
se cubren los siguientes tópicos:
x Introducción al lenguaje HDL
x Elementos sintácticos de HDL: operadores y expresiones, tipos de dato y declaración de
constantes, variables y señales.
o Diseño, simulación e implementación de:
ƒ Operaciones booleanas.
ƒ Funciones lógicas.
ƒ Operaciones aritméticas con ALU.
ƒ Multiplexores y Demultiplexores.
ƒ Comparadores.
ƒ Decodificadores.
ƒ Sumadores y restadores.

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


ƒ Generador de base de tiempo.
ƒ Look-up tables (LUTs).
ƒ Contadores.
ƒ Registros.
ƒ Secuenciadores.
ƒ Memorias de Acceso Aleatorio (o RAM, por sus siglas en inglés).
ƒ Máquinas de estados finitos con VHDL.

IV. COMPETENCIAS GENÉRICAS

En el siguiente cuadro se muestra las competencias genéricas a desarrollar en el curso de SDLR I


según los resultados de enseñanza/aprendizaje de ABET:
No. Fomentadas Competencias de la carrera de Ingeniería En Automatización
en SDLR I
1 Aplicar y utilizar los conocimientos de matemáticas, ciencias básicas e
ingeniería para diseñar y llevar a cabo proyectos de investigación, de
aplicación e innovación social y tecnológica utilizando técnicas y métodos
especializados.
2
x Colaborar en equipos disciplinarios y multidisciplinarios para formular y
ejecutar proyectos de soluciones en automatización pertinentes al
contexto
3
x Diseñar componentes, sistemas y procesos automatizados, para
satisfacer necesidades específicas y plantear las soluciones adecuadas.
4
x Formular soluciones a problemas de automatización, de componentes,
sistemas y procesos considerando el impacto de la misma y
contribuyendo a la mejora del contexto global, económico, ambiental y
2
social, utilizando las técnicas y herramientas actuales.
5 Valorar y respetar los problemas que enfrenta la sociedad actual
reconociendo las diferencias individuales y culturales para convivir con
responsabilidad en los ámbitos sociales y laborales basándose en principios
profesionales éticos y apegándose a los criterios y normas de calidad para
impulsar el desarrollo sustentable.
6 Comunicar sus ideas, los conceptos y conocimientos de ingeniería en un
contexto multicultural.

7 Actualizar de forma continua los conocimientos para mejorar su desarrollo


adaptándose a las necesidades cambiantes del entorno

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.

VI. PROPÓSITO DE LA MATERIA

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


Que el alumno diseñe y describa los componentes de hardware síncronos y asíncronos utilizando
HDL y circuitos MSI. Además de ensamblar los componentes de hardware con interfaces en
software también diseñados por ellos mismos para dar solución a problemas sustentables reales.

VII. CONTENIDOS TEMÁTICOS

UNIDAD 1: SISTEMAS NUMÉRICOS Y CÓDIGOS (3 HRS)

1.1 Sistemas numéricos binarios, octal y hexadecimal.


1.2 Conversión entre estos sistemas.
1.3 Operaciones básicas en estos sistemas.
1.4 Representación de números negativos, complemento a 2, complemento a 1 en el sistema
binario.
1.5 Suma y Substracción en el sistema complemento a 2 y complemento a 1 con prueba de sobre
capacidad.
1.6 Códigos binarios de números decimal.

UNIDAD 2: BASES DE DISEÑO LÓGICO COMBINACIONAL (5 HRS)

2.1 Algebra de Boole, operaciones, teoremas, postulados, leyes y propiedades básicas.


2.2 Formas Canónicas de una función Booleana, minterms y maxterms.
2.3 Tablas de verdad.
2.4 Simplificación de ecuaciones Booleanas, método algebraico
2.5 Simplificación de ecuaciones Booleanas por el método de mapas de Karnaugh para funciones
de 2 a 4 variables.
2.6 Funciones lógicas OR, AND, NOT, NAND, NOR, XOR y XNOR.
3
2.7 Implementación de funciones con compuertas lógicas básicas.
2.8 Implementación de funciones expresadas como suma de producto y como productos de
sumas.
2.9 Tablas de Quine – Mc Cluskey para 5 o más variables, aspectos básicos.

UNIDAD 3: FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS (2 HRS)

3.1 Terminología de los circuitos integrados.


3.2 Características de las familias TTL Estándar y otras series TTL.
3.3 Circuitos digitales integrados CMOS.
3.4 Características de los C.I. CMOS.
3.5 Características de la familia ECL.
3.6 Escalas de Integración.

UNIDAD 4: DISEÑO LÓGICO COMBINACIONAL MSI (8 HRS)

4.1 Decodificadores, análisis y diseño.


4.2 Codificadores, análisis y diseño.
4.3 Multiplexores y demultiplexores, análisis de su funcionamiento.
4.4 Compuertas XOR y circuitos de paridad.
4.5 Comparadores.
4.6 Sumadores, Restadores
4.7 Multiplicadores combinacionales.
4.8 ALU.
4.9 Aplicaciones.

UNIDAD 5: DISEÑO LÓGICO SECUENCIAL MSI (8 HRS)

5.1 Elementos de memoria.

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


5.2 Latches y Flip Flops.
5.3 Circuitos síncronos y asíncronos.
5.4 Contadores.
5.5 Máquinas de Estados Finitos.
5.6 Secuenciadores.
5.7 Registros.
5.8 Lógica de tres estados.
5.9 Transferencia entre registros.

UNIDAD 6: TECNOLOGÍAS DE CIRCUITOS DIGITALES PROGRAMABLES (3 HRS)

6.1 Memoria de solo lectura ROM.


6.2 Memoria de lectura/escritura RAM.
6.3 Lenguajes de descripción de hardware HDL
6.4 Tecnología PAL, GAL
6.5 Tecnologías CPLD
6.6 Tecnologías FPGA

UNIDAD 7: PROTOCOLOS DE COMUNICACIÓN (5 HRS)

7.1 Introducción a los protocolos de comunicación: Paralelo y Serial.


7.2 Protocolo de interface serial (o SPI, por sus siglas en inglés).
7.3 Transmisor y Receptor Universal Asíncrono (o UART, por sus siglas en inglés).
7.4 Transceptor RS232/SPI a USB.

UNIDAD 8: INTERFACES MAQUINA-HOMBRE (6 HRS)

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

UNIDAD 9: PROYECTO FINAL (10


HRS)

9.1 Definición del proyecto final.


9.2 Herramientas a utilizar.
9.3 Tópicos selectos de electrónica: Convertidores analógicos/digitales, aisladores
electromecánicos y ópticos, drives, diseño electrónico para circuitos impresos.
9.4 Tutorías en equipo.

I. SISTEMA DE EVALUACIÓN

Comprende tanto aspectos de tipo cualitativo como cuantitativo

x Se realiza en tres momentos durante el curso:

1. Diagnóstica. Al inicio de curso.


Se hace un sondeo grupal para detectar las fortalezas y debilidades en conocimientos

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


de los alumnos
2. Formativa. Se hacen dos exámenes escritos en el curso y dos revisiones de carpeta
en donde los alumnos almacenan sus prácticas, tareas, investigaciones, resúmenes,
apuntes, lectura de artículos, entre otros.
3. Sumativa o final. Se hace un examen oral en la entrega final del proyecto y se pondera
con el punto no. 2.

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.

II. DOCUMENTOS A CONSULTAR

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,

SISTEMAS DIGITALES CON LÓGICA RECONFIGURABLE I (SDLR I)


Mc Graw Hill, España.
o Albert Paul Malvino, Donald P. Leach, 1988, Principios y Aplicaciones Digitales (1°
Ed.), Marcombo, NY.
o M. Morris Mano, 2002, Diseño Digital (1° Ed.), Prentice Hall-Pearson, USA.

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

LAWS AND THEOREMS OF BOOLEAN ALGEBRA


Existence 0 and 1:
1. X + 0 = X 1D. X1 = X
2. X + 1 = 1 2D. X0 = 0
Idempotent theorem:
3. X + X = X 3D. XX = X
Involution theorem:
4. (X’)’ = X
Theorem of complementarity (or
existence complement): 5D. XX’ = 0
5. X + X’ = 1
Cummutative law:
6. X + Y = Y + X 6D. XY = Y X
Associative law:
7. (X + Y) + Z = X + (Y + Z) 7D. (XY)Z = X(YZ)
=X+Y+Z = XYZ
Distributive law:
8. X(Y + Z) = XY + XZ 8D. X + (YZ) = (X + Y)(X + Z)
Simplification theorems:
9. XY + XY’ = X (minimizing or uniting) 9D. (X + Y)(X + Y’) = X
10. X + XY = X (absorption) 10D. X(X + Y) = X
11. (X + Y’)Y = XY (simplification or 11D. (XY’) + Y = X + Y
adsorption)
DeMorgan’s theorem:
12. (X + Y + Z + ...)’ = X’Y’Z’... 12D. (XYZ...)’ = X’ + Y’ + Z’ + ...
13. {f(X1,X2,...,Xn,0,1,+,.)}
= {f(X1’,X2’,...,Xn’,1,0,.,+)}
Duality:
14. (X + Y + Z + ...)D = XYZ... 14D. (XYZ ...)D = X + Y + Z + ...
15. {f(X1,X2,...,Xn,0,1,+,.)}D
= f(X1,X2,...,Xn,1,0,.,+)
Theorem for multiplying and factoring:
16. (X + Y)(X’ + Z) 16D. XY + X’Z = (X + Z)(X’ + Y)
= XZ + X’Y
Consensus theorem:
17. XY + YZ + X’Z = XY + X’Z 17D. (X + Y)(Y + Z)(X’ + Z)
= (X + Y)(X’ + Z)
Timebase

Internal structure: > Conditions:

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

Digital Systems I / 2016-1.


Designed by: Juvenal Rodríguez.
Editado por Dr. Juvenal Rodríguez

Revisar como crear los archivos en VIVADO

1. Ir a la página de DILIGENT , buscar la tarjeta BASIS 3


a. Abrir link en vivado 00
2. Descargar master XDC (que es el listado de las patas)

En vivado

1. Crear nuevo proyecto


a. Escribir nombre
b. Formato RTL
c. Anexar archivos VHDL
d. Anexar el archivo con las patas
e. Especificaciones de tarjeta
i. ARTIX-7
ii. Package CPG236
iii. Speed Rate -1
iv. XC7A35TCPG236-1
f. Para asignar los pines, respetar las dos líneas, una para asignación y la otra para el
voltaje.
g. Crear un .bin file: Tolos-> Project Settings -> BitStream -> seleccionar .bin
2. Para sintetizar
a. Synthesis Æ Run synthesis
b. Si esta correcta, aparece la ventana y hay que seleccionar la opción Æ Open
Synthesis Design
i. Tools Æ Edit device properties Æ Configuration
1. Rate 50 MHZ (esta será la velocidad con la que funcione el reloj
maestro deacuerdo al archivo xdc: create_clock -period 10.000 -
name sys_clk_pin -waveform {0.000 5.000} -add [get_ports CLK]
2. Configuration Voltaje 3.3 V
3. Configuration Bank VCCO

Æ Configuration modes Æ Master SPI x4

c. Copiar líneas en el archivo de patas


3. RUN IMPLEMENTATION
a. Si esta bien, sale la ventana, y dar clic en Generate Bitstream
4. Si está bien, sale otra ventana y dar clic en Open Hardware Manager
5. Clic en Open Target, palabra en azul casi hasta arriba
a. Auto connect (asegurarse de que la tarjeta ésta conectada a la computadora)
6. Program Device
a. Clic en el nombre de la tarjeta
7. Program
8. Si se quiere implementar en la Flash:
Editado por Dr. Juvenal Rodríguez

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).

9. Si se quiere realizar simulación con ACTIVE-HDL, Instalar la versión estudiante, es muy


importante que la directiva NO tenga espacios y que no sea tan larga la cadena de
caracteres de dicha directiva.
a. En Vivado: Tools -> Project Settings -> Simulation -> Target simulator -> Active-HDL
simulator
b. Tools -> Compile Simulator Libraries -> Simulator -> Acive-HDL
c. Simulator executable path: C:/Aldec/Active-HDL-Student-Edition/bin
10. Si se quiere realizar simulación con MODELSIM, Instalar la versión estudiante, es muy
importante que la directiva NO tenga espacios y que no sea tan larga la cadena de
caracteres de dicha directiva.
a. Installation:
i. Save the attached file with the name 'student_license.dat' to the top level
installation directory for ModelSim PE Student Edition (e.g.,
c:/modeltech_pe_edu). This is the directory that contains that sub-
directory 'win32pe_edu.'
ii. Do not edit the file 'student_license.dat' in any way, or the license will not
work.
iii. You should now be able to run ModelSim PE Student Edition.
b. LICENSE KEY EXPIRATION AND RENEWAL
i. This license key is valid for 180 days from the date of the license request.
You will receive a warning message 14 days before the expiration of the
license key.
ii. When your license key expires, you may continue to
use ModelSim Student Edition. However you will need to download and
install a new copy of the tool from http://go.mentor.com/33rqn in order
to receive an updated license key.
c. En Vivado: Tools -> Project Settings -> Simulation -> Target simulator -> ModelSim
simulator
d. Tools -> Compile Simulator Libraries -> Simulator -> ModelSim
e. Simulator executable path: C:/Modeltech_pe_edu_10.4a/win32pe_edu

También podría gustarte