SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
1. IDENTIFICACIÓN DE LA GUÍA
Nombre de la guía: Electrónica Digital  Estilos de
Programación
Código de la guía (No.): EDL-g2
Taller(es) o Laboratorio(s) aplicable(s): Microelectrónica y Nanotecnolo-
gía
Tiempo de trabajo práctico estimado: 4 horas
Asignatura(s) aplicable(s): Electrónica Digital y Laboratorio
- Laboratorio de Electrónica Di-
gital
Programa(s) Académico(s) / Facultad(es): Tecnológia Electrónica - Tecnolo-
gía en Telecomunicaciones - Tec-
nología en Automatización Elec-
trónica - Tecnología en Gestión
de Redes de Telecomunicaciones
/ Facultad de Ingenierías
COMPETENCIA
CONTENIDO TEMÁ-
TICO
INDICADOR DE LOGRO
Diseña y analiza circuitos
lógicos combinacionales y
secuenciales para la resolu-
ción de problemas que invo-
lucran circuitos electrónicos
digitales, empleando meto-
dologías de diseño digital
con la ayuda de herramien-
tas computacionales de de-
sarrollo y simulación.
Implementación de
circuitos digitales com-
binacionales utilizando
diferentes estilos de
programación.
Circuito digital sobre FP-
GA descrito en VHDL em-
pleando estilos de progra-
mación por ujo de datos,
algorítmico y estructural.
2. FUNDAMENTO TEÓRICO
El VHDL (VHSIC Hardware Description Language en inglés) es un lenguaje
estándar de descripción de hardware. Es usado generalmente para el diseño,
simulación e implementación de sistemas digitales. La descripción en VHDL
de un circuito lógico combinacional requiere del uso de las diferentes formas
de representación de sus características y funcionamiento. Antes de elaborar el
código correspondiente a un circuito, se parte generalmente de una descripción
básica en lenguaje natural de la cual se generan otras formas de representación
más formales. Cada una de estas representaciones da lugar a diferentes tipos o
estilos de descripción según el dominio de diseño y el nivel de abstracción, según
se muestra en la Tabla 1.
Página 1 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
Tabla 1: Tipos de descripción de circuitos según el dominio de diseño y el nivel
de abstracción.
DOMINIO DE DISEÑO TIPO DE DESCRIPCIÓN APLICACIÓN
Estructural Estructural: bloques Circuitos combinacionales
Funcional
Flujo de datos: tabla de ver-
dad o función lógica
Circuitos combinacionales
Comportamental: algorítmico
Circuitos combinacionales y
secuenciales
Un módulo hardware en VHDL tiene una estructura bien denida que lo
describe de una manera clara y lógica. Las partes del módulo son:
1. La declaración de entidad: describe la interfaz del módulo permitiendo
denir las entradas y salidas.
2. La declaración de la arquitectura: permite describir la funcionalidad in-
terna u operación del módulo.
La Figura 1 muestra un sumador completo de 1 bit. En el esquemático se
pueden observar su interfaz, puertos de entrada y salida, y su estructura interna.
y
z
ŝ

Ž
Figura 1: Diagrama esquemático del sumador completo de 1 bit.
La declaración de entidad inicia con la palabra reservada entity y naliza
con la palabra reservada end. Toda entidad debe incluir un nombre, que en
este caso es eFullAdder, y la declaración de los puertos de entrada (in) X, Y
y Ci, y de salidad (out) Z y Co. Además del nombre y la dirección de cada
puerto se establece el tipo de dato de cada uno (STD_LOGIC ) (véase Código
2.1). STD_LOGIC es un tipo de dato denido en VHDL que se utiliza para
representar la unidad básica de información, el bit, y con el cual se pueden
indicar diferentes estados de un bit como el 1 lógico, el 0 lógico, valores no
importa, y estado de alta impedancia, entre otros.
El bloque de declaración de la arquitectura inicia con la palabra reservada
architecture. El cuerpo de la arquitectura tiene un nombre, en este caso aFullAd-
der, y se debe indicar cual entidad implementa, en este caso eFullAdder. Igual
que la entidad, la arquitectura termina con la palabra reservada end, y en medio
de ellas está la palabra reservada begin. Esta palabra divide la arquitectura en
dos partes: la zona de declaraciones y la zona de sentencias de la descripción
funcional. En la zona de declaraciones de la arquitectura, opcionalmente, se pue-
den declarar los componentes, necesario para un diseño jerárquico, y declarar
señales, necesarias para interconectar componentes dentro del código funcional.
Página 2 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
La descripción funcional de la arquitectura se puede realizar de varias formas,
como se verá más adelante.
-- Declaración de entidad
entity eFullAdder is
port (
X, Y, Ci : in STD_LOGIC;
Z, Co : out STD_LOGIC
);
end;
-- Definición de la arquitectura
architecture aFullAdder of eFullAdder is
-- zona de declaraciones
begin
-- zona de descripción funcional
end aFullAdder;
Código 2.1: Declaración de entidad y cuerpo de la arquitectura del sumador
completo de 1 bit.
2.1. Modelado por ujo de datos
VHDL es un lenguaje naturalmente concurrente ya que se utiliza para des-
cribir circuitos digitales. Esto quiere decir que las instrucciones no se ejecutan
secuencialmente como lo hace una CPU, las instrucciones le sirven a la herra-
mienta para implementar circuitos sobre una FPGA. Por lo tanto, la herramien-
ta usa las instrucciones para sintetizar y diseñar el circuito. Esta característica,
ejecución en paralelo de instrucciones, es la utilizada en el modelado por ujo
de datos. Este modelado es utilizado para describir circuitos combinacionales1.
La sintáxis del modelado por ujo de datos se muestra en (1).
destSignal = expresion; (1)
La señal destino (destSignal) puede ser de 1 o varios bits, y la expresión
(expresion) puede constar de una o varios operadores. Nótese que = es el
operador de asignación, el cual asigna a la señal de la izquierda el resulta de la
operación de la derecha. En Código 2.2 pueden verse las expresiones para los
puertos de salida Z y Co del sumador completo mostrado en la Figura 1.
Las operaciones lógicas en VHDL se describen usando palabras en inglés:
and y or son obvias, y xor es la operación lógica OR-Exclusive. El lenguaje
no es sensible al caso, esto quiere decir que las instrucciones se pueden usar
igualmente en minúsculas o mayúsculas.
El sumador completo de 1 bit, con unas simples transformaciones, también
se puede representar por medio de una tabla de verdad2 (véase Tabla 2).
1Circuitos sin memoria, esto es, la salida actual depende única y exclusivamente de las
entradas actuales.
2Diagrama en forma de las y columnas que muestra el valor de las salidas de un circuito
digital para todas las posibles combinaciones de las entradas.
Página 3 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
Esta representación también se puede utilizar para describir el circuito con
VHDL usando el modelado por ujo de datos. La descripción mostrada en Có-
digo 2.3 representa el circuito de acuerdo a la Tabla 2.
-- Declaración de entidad
entity eFullAdder is
port (
X, Y, Ci : in STD_LOGIC;
Z, Co : out STD_LOGIC
);
end;
-- Definición de la arquitectura
architecture aFullAdder of eFullAdder is
-- zona de declaraciones
begin
-- zona de descripción funcional
Z = (X xor Y) xor Ci;
Co = (X and Y) or ((X or Y) and Ci);
end aFullAdder;
Código 2.2: sentencias concurrentes en VHDL para el sumador completo de 1
bit.
La descripción presentada en Código 2.3 utiliza la instrucción when-else.
Esta instrucción es también concurrente y se emplea para asignar un valor a
una señal cuando se cumple una condición (when), pero así mismo permite
explorar otras posibilidades de la conndición (else). En este caso, la señal o
puerto de salida Z tomará el valor de la señal o puerto de entrada Ci cuando
las señales o puertos de entrada X y Y sean iguales. Si esta condición no se
cumple, Z tomará en valor de Ci.
De la misma manera se hace la descripción de la salida C0, la cual es 0 si
tanto X como Y son 0, es 1 si ambas, X y Y, son 1, y en los demás casos Co
será igual a Ci.
Tabla 2: Tabla de verdad del sumador completo de 1 bit.
X Y Z Co
0 0 Ci 0
0 1 Ci Ci
1 0 Ci Ci
1 1 Ci 1
2.2. Modelado algorítmico
Se emplea para describir circuitos más complejos, como los circuitos secuen-
ciales3, empleando sentencias que se ejecutan de manera secuencial. Para esto,
3Circuitos digitales con memoria.
Página 4 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
las sentencias deben estar dentro de un proceso o un subprograma, el cual a
su vez se dene en el cuerpo de la arquitectura del circuito. Los subprogramas
sirven para mantener el código más limpio, conciso y libre de duplicaciones, y
se declaran, comúnmente, dentro de un paquetes, la arquitectura o un proceso.
-- Declaración de entidad
entity eFullAdder is
port (
X, Y, Ci : in STD_LOGIC;
Z, Co : out STD_LOGIC
);
end;
-- Definición de la arquitectura
architecture aFullAdder of eFullAdder is
-- zona de declaraciones
begin
-- zona de descripción funcional
Z = Ci when (X = Y) else
not(Ci);
Co = '0' when (X = '0' and Y = '0') else
'1' when (X = '1' and Y = '1') else
Ci;
end aFullAdder;
Código 2.3: sentencias concurrentes en VHDL para el sumador completo de 1
bit.
VHDL ofrece dos tipos de subprogramas: las funciones y los procedimientos.
Las funciones siempre retornan un valor, los procedimientos no (pero pueden
modicar sus parámetros). Ambos tipos de subprogramas pueden tener 0 o más
parámetros. En esta guía no nos ocuparemos de los subprogramas.
El modelado basado en sentencias secuenciales los realizaremos usando pro-
cesos. Pero antes de pasar a los procesos vale aclarar que las sentencias secuen-
ciales en VHDL son similares a las sentencias secuenciales de la mayoría de
los lenguajes imperativos. Estamos hablando de estructuras de control como el
condicional if, la estructura case, los lazos de control como loop, la estructura
while, etc.
La estructura general de un proceso, en este caso el que describe la tabla
de verdad del sumador completo de 1 bit dado en la Tabla 2, puede verse en el
Código 2.4.
El proceso es una región de código secuencial delimitada por las sentencias
process y end process;. Aunque las sentencias dentro del proceso son secuenciales,
el proceso es una sentencia concurrente porque se ejecuta en paralelo con los
demás procesos y sentencias concurrentes dentro de la arquitectura.
En Código 2.4 se pueden observar las principales partes de un proceso, las
cuales son: la etiqueta opcional, proSum1Bit, la cual le da el nombre al proceso
y además es útil para documentar el software; la lista de sensibilidad X, Y y Ci,
Página 5 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
la cual es un conjunto de señales que son monitoreadas mientras el proceso está
suspendido y que ante un cambio en una de ellas reactiva el proceso, igualmente
esta lista es opcional; la palabra reservada is también es opcional y marca el
inicio del proceso.
-- Declaración de entidad
entity eFullAdder is
port (
X, Y, Ci : in STD_LOGIC;
Z, Co : out STD_LOGIC
);
end;
-- Definición de la arquitectura
architecture aFullAdder of eFullAdder is
-- zona de declaraciones
begin
-- zona de descripción funcional
proSum1Bit:process(X,Y,Ci) is
begin
if (X = '0' and Y = '0') then
Z = Ci;
Co = '0';
elsif (X = '1' and Y = '1') then
Z = Ci;
Co = '1';
else
Z = not(Ci);
Co = Ci;
end if;
end process;
end aFullAdder;
Código 2.4: descripción algorítmica utilizando un proceso.
Al igual que en la arquitectura que describe una entidad, los procesos tiene
una zona de declaraciones del proceso, después de la palabra process y antes de
la palabra begin, y una zona de descripción de la funcionalidad, después de la
palabra begin.
En el proceso proSum1Bit se puede observar el uso de la reconocida sentencia
condicional if, de uso corriente en lenguajes de programación de alto nivel y de
propósito general, la cual asigna un valor a una o varias señales dependiendo del
cumplimiento de unas condiciones. En la primera comparación asigna Ci a Z y
0 a Co cuando tanto X como Y son 0. Si esta condición no se cumple descarta
la acción y hace una nueva comparación, para ello usa la sentencia elsif, en la
cual si X y Y son ambas 1 a Z le asigna igualmente Ci, pero a Co le asignará
1. Finalmente, si esta condición tampoco se cumple la descarta y no hace más
comparaciones, solo asigna Ci y Ci a Z y Co respectivamente.
Página 6 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
Finalmente, en un proceso no pueden declararse señales, en su lugar se uti-
lizan variables, y si no existe lista de sensibilidad el proceso debe suspenderse
con una sentencia wait.
2.3. Modelado estructural
Describe circuitos interconectando componentes previamente instanciados.
Los componentes se interconectan entre ellos por medio de señales declaradas
en la arquitectura, y también pueden conectarse sus puertos con los puertos del
sistema que los contiene.
Vamos a implementar un sumador de 4 bits empleando sumadores completos
de 1 bit (véase Figura 1), el cual se representado como una caja negra en la
Figura 2. Podemos emplear cualquiera de las descripciones del sumador de 1 bit
presentadas en esta guía, esto es, Código 2.2, 2.3 o 2.4, para su implementación.
Ž
ŝ

z
y
^ƵŵĂĚŽƌϭŝƚ
Figura 2: Descripción de los puertos de entrada/salida de un sumador de 1 bit.
En la Figura 3 se pueden ver la implementación de un sumador de 4 bit,
Sum4Bit, usando sumadores de 1 bit. Nótese que en este caso se implementó
una sola vez el sumador de 1 bit y se utiliza, léase se instancia, cuatro veces para
construir el sumador de 4 bit. Esto demuestra lo poderosa que es la arquitectura
estructural, basada en componentes, y la optimización que se obtiene en tiempo
de desarrollo.
En el sistema integrador, Sum4Bit, se deben denir los puertos de entrada-
salida del sumador de 4 bit, esto es, dos vectores de entrada de 4 bis, X y Y,
un vector de salida de 4 bit, Z, una señal de entrada de 1 bit, Ci, y una señal
de salida de 1 bit, Co.
La arquitectura de Sum4Bit está formada por la interconexión de cuatro
subcircuitos, que en VHDL se describen como componentes (sum1Bit). Estos
componentes se declaran en la zona de declaraciones de la arquitectura, iniciando
con la palabra component y nalizando con end component;. En medio de estas
dos palabras va la descripción de los puertos del componente, tal como se hace
en la declaración de la entidad. Se asume que la descripción de la arquitectura
del componente existe en un archivo aparte.
Las señales que unen los componentes se deben igualmente declarar en la
zona de declaraciones de la arquitectura, utilizando la palabra signal y el tipo
de dato que soportan. No se debe indicar la dirección de la señal, ya que debido
a que estas ni entran ni salen de Sum4Bit no se consideran ni de entrada ni de
salida. Las señales dentro de sum4Bit que conectan las instancias de sum1Bit,
dibujadas en color rojo, son Ci1, Ci2 y Ci3.
Los cuatro componentes son utilizados en la implementación cuando se ins-
tacian en la zona de la descripción funcional de la arquitectura. Los puertos
de cada componente, sum1Bit, se relacionan con los del sistema integrador,
Página 7 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
Sum4Bit, o con una señal declarada allí usando el operador =. Antes del ope-
rador = se pone el puerto del componente, y después del operador = se pone
el puerto o la señal del componente integrador.
Ž
ŝ

z
y
^Ƶŵϭŝƚ
Ž
ŝ

z
y
^Ƶŵϭŝƚ
Ž
ŝ

z
y
^Ƶŵϭŝƚ
Ž
ŝ

z
y
^Ƶŵϭŝƚ
y
Ϯ
z
Ϯ
y
ϭ
z
ϭ
y
Ϭ
z
Ϭ
y
ϯ
z
ϯ
Ž ŝ

Ϯ

ϯ

Ϭ

ϭ
ŝϭ
ŝϮ
ŝϯ
^Ƶŵϰŝƚ
Figura 3: Descripción de los puertos de entrada/salida y las señales de un su-
mador de 4 bit.
La instacia inicia con una etiqueta que le da un nombre, por ejemplo, para
el caso del primer sumador de 1 bit el nombre de esta instancia es i0_sum1Bit.
El nombre de la instacia se separa del nombre del componente usando :, luego
del nombre del componente sigue la instrucción port map y en paréntesis la
relación entre los puertos del componente y los puertos y señales denidas dentro
del sistema integrador. Como todas las instrucciones en VHDL, la instancia
naliza con ;. Por ejemplo, la relación X = X(0) signica que el puerto X del
componente, i0_sum1Bit, es el bit 0 del puerto X, que es un vector de 4 bits,
denido en el sistema integrador, sum4Bit; y la relación Co = Ci1 signica que
el puerto Co del componente i0_sum1Bit es la misma señal Ci1 declarada en
la arquitectura del sistema integrador, sum4Bit. De esta misma forma se puede
hacer la relación entre los puertos de cada instancia del componente sum1Bit y
los puertos y señales del sistema integrador Sum4Bit.
El código 2.5 muestra la implementación estructural del sumador de 4 bits
a partir de sumadores de 1 bit y de acuerdo a el diagrama de bloques mostrado
en la Figura 3.
Se puede utilizar esta misma losofía de diseño estructural para implementar,
por ejemplo, un sumador de 16 bit. El diagrama de bloques es básicamente igual
al de la Figura 3, solo que los componentes son sumadores de 4 bit, sum4Bit,
y no de 1 bit, sum1Bit. Por lo tanto, se deben reemplazar cada puerto Xi,
Yi y Zi por vectores de cuatro bit. Por ejemplo, en lugar de X0 deben ir los
cuatro bits de menor peso del vector de 16 bit X, esto es, X(3 downto 0). De la
misma manera, se puede implementar un sumador de 64 bits con componentes
sumadores de 16 bits.
Se alienta a los estudiantes a que intenten implementar un sumador de 64
bits a partir de componentes sumadores de 16 bits.
Página 8 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity sum4Bit is
Port (X, Y : in STD_LOGIC_VECTOR (3 download 0);
Ci : in STD_LOGIC;
Z : out STD_LOGIC_VECTOR (3 download 0);
Co : out STD_LOGIC);
end sum4Bit;
architecture structural of sum4Bit is
component sum1Bit is
Port (X, Y, Ci : in STD_LOGIC;
Z, Co : out STD_LOGIC);
end component sum1Bit;
signal Ci1, Ci2, Ci3 : STD_LOGIC;
begin
i0_sum1Bit:sum1Bit port map(X = X(0), Y = Y(0), Ci = Ci,
Z = Z(0), Co = Ci1);
i1_sum1Bit:sum1Bit port map(X = X(1), Y = Y(1), Ci = Ci1,
Z = Z(1), Co = Ci2);
i2_sum1Bit:sum1Bit port map(X = X(2), Y = Y(2), Ci = Ci2,
Z = Z(2), Co = Ci3);
i3_sum1Bit:sum1Bit port map(X = X(3), Y = Y(3), Ci = Ci3,
Z = Z(3), Co = Co);
end structural;
Código 2.5: Implementación estructural de sumador de 4 bit a partir de suma-
dores de 1 bit..
3. OBJETIVO(S)
Implementar con arquitectura estructural una ALU de 4 bits usando
VHDL sobre FPGA.
4. RECURSOS REQUERÍDOS
Estación de trabajo.
Vivado Design Suite.
Nexys 4 o Nexys A7.
Página 9 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
5. PROCEDIMIENTO O METODOLOGÍA PA-
RA EL DESARROLLO
Una ALU (Aritmethic Logic Unit) es un circuito digital combinacional que
realiza múltiples operaciones, algunas aritméticas y algunas lógicas. La Figura 4
muestra los puertos de entradasalida de una ALU de 4 bits. Este circuito realiza
las operaciones aritméticas y lógicas descritas en la Tabla 3 sobre los operandos,
de 4 bits, A y B de acuerdo a las líneas de selección, de 3 bits, S. El resultado se
almacena en la señal F de 4 bits. Ci y Co son los acarreros de entrada y salida
respectivamente utilizados en las operaciones aritméticas.
hŶŝĚĂĚſŐŝĐŽƌŝƚŵĠƚŝĐĂ
h
ϯ… Ϭ ϯ… Ϭ
ϯ… Ϭ
^Ϯ… ^Ϭ
ŝ
Ž
Figura 4: ALU de 4 bits.
Tabla 3: Funciones de la ALU de 4 bits.
Selección Salida Función
S2 S1 S0 Ci
0 0 0 0 F = A Tranferir A
0 0 0 1 F = A plus 1 Incrementar A
0 0 1 0 F = A plus B Suma
0 0 1 1 F = A plus B plus 1 Suma con acarreo
0 1 0 0 F = A minus B minus 1 Resta con préstamo
0 1 0 1 F = A minus B Resta
0 1 1 0 F = A minus 1 Decrementar
0 1 1 1 F = A Transferir A
1 0 0 X F = A + B OR
1 0 1 X F = A ⊕ B OR exclusiva
1 1 0 X F = A · B AND
1 1 1 X F = Ā Complementar A
La ALU puede ser vista como la unión de dos etapas, un circuito aritmético
y un circuito lógico (véase Figura 5), donde S2 selecciona si a la salida pasa
el resultado de la etapa aritmética, Fx, o el de la etapa lógica, Fy. S1 y S0
seleccionan la operación interna que cada etapa debe realizar.
Página 10 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
ŝƌĐƵŝƚŽƌŝƚŵĠƚŝĐŽ
ŝƌĐƵŝƚŽſŐŝĐŽ
DƵdžϮĂϭ
ϯ… Ϭ
ϯ… Ϭ
^ϭ…^Ϭ
džϯ… džϬ
LJϯ… LJϬ
ϯ…Ϭ
Ž
ŝ
^Ϯ
Figura 5: Etapas de la ALU, circuito artitmético y lógico.
5.1. Diseño del circuito aritmético
Este circuito puede ser implementado usando un sumador de 4 bits, como
el presentado en esta guía (véase Código 2.5), y un multiplexor 4 a 1 de 4 bits.
El multiplexor 2 a 1 de 1 bit presentado en la guía No 1 puede utilizarse como
base para la implementación de este multiplexor de 4 bits. La Figura 6 muestra
el diseño del circuito aritmético y la Tabla 4 las operaciones realizadas por este.
^ƵŵĂĚŽƌĚĞ
ϰďŝƚƐ
ϬϬϬϬ
ϭϭϭϭ
ϯ…Ϭ
Ε;ϯ… ϬͿ
^ϭ… ^Ϭ
ϯ… Ϭ
ŝ
Ž
džϯ… džϬ
yϯ… yϬ
DƵdžϰĂϭ
Figura 6: Circuito aritmético de la ALU.
Tabla 4: Opearciones del circuito aritmético de la ALU de 4 bits.
Selección Salida mux Salida Función
S1 S0 Ci
0 0 0 X = 0000 Fx = A Tranferir A
0 0 1 X = 0000 Fx = A plus 1 Incrementar A
0 1 0 X = B Fx = A plus B Suma
0 1 1 X = B Fx = A plus B plus 1 Suma con acarreo
1 0 0 X = B̄ Fx = A plus B̄ Resta con préstamo
1 0 1 X = B̄ Fx = A plus B plus 1 Resta
1 1 0 X = 1111 Fx = A plus 1111 Decrementar A
1 1 1 X = 1111 Fx = A plus 1111 plus 1 Transferir A
Página 11 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
5.2. Diseño del circuito lógico
El circuito lógico puede ser implementado de manera sencilla usando un
multiplexor 4x1 de 4 bits como se ve en la Figura 7. Se puede utilizar el mismo
multiplexor 4 a 1 implementado para el circuito aritmético.
^ϭ… ^Ϭ
DƵdžϰĂϭ
ϯ… Ϭ
ϯ… Ϭ
LJϯ… LJϬ
Figura 7: Circuito lógico de la ALU.
6. PARÁMETROS PARA ELABORACIÓN DEL
INFORME
El docente facilitará una plantilla en Word para escribir el informe. Si los
estudiantes lo desean pueden utilizar L
ATEX empleando los mismos parámetros
de la plantilla propuesta para el curso.
7. DISPOSICIÓN DE RESIDUOS
Esta práctica no genera residuos.
Referencias
R. Jasinski, Eective Coding with VHDL: principles and best practice, The
MIT Press, Cambridge, MA., 2016.
S.K. Sarkar, A.K. De, S. Sarkar, Fundation of Digital Electronics and
Logic Design, Pan Stanford Publishing, Singapore, 2014.
R.L. Tokheim, Electrónica digital : principios y aplicaciones, McGraw-Hill
Interamericana, México, 2008.
J.I. Artigas Maestre, L.Á. Barragán Pérez, C. Orrite Uruñuela, I.
Urriza Parroqué, Electrónica digital : aplicaciones y problemas con VHDL,
Prentice Hall, Madrid, 2002.
R. Reina Acedo, M. García Lorenz, J. Vázquez Martínez, Electrónica
digital en la práctica, Alfaomega, México, 2011.
V.A. Pedroni, Circuit design and simulation with VHDL, MIT Press,
Cambridge, MA., 2010.
Página 12 de 13
GUÍA DE TRABAJO PRÁCTICO -
EXPERIMENTAL
Talleres y Laboratorios de Docencia ITM
Código FGL 029
Versión 02
Fecha 08-10-2018
C.H. Roth, L.L. Kinney, Fundamentals of logic design, Cengage Lear-
ning, EEUU, 2010.
Elaborado por: Sergio Ignacio Serna Garcés, Ph.D.
Revisado por: Pendiente
Versión: 1.0
Fecha: Septiembre 2021
Página 13 de 13

Más contenido relacionado

La actualidad más candente (19)

Cap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datosCap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datos
 
Análisis de Protocolos
Análisis de ProtocolosAnálisis de Protocolos
Análisis de Protocolos
 
Semana 8 api de socket
Semana  8 api de socketSemana  8 api de socket
Semana 8 api de socket
 
Modbus
ModbusModbus
Modbus
 
Prueba preliminar ccna3
Prueba preliminar ccna3Prueba preliminar ccna3
Prueba preliminar ccna3
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 
Cap3 mod3(sol)
Cap3 mod3(sol)Cap3 mod3(sol)
Cap3 mod3(sol)
 
Electrónica digital: Codificadores y decodificadores
Electrónica digital: Codificadores y decodificadores Electrónica digital: Codificadores y decodificadores
Electrónica digital: Codificadores y decodificadores
 
Ul rc_cap7_el nivel de transporte en internet_
 Ul rc_cap7_el nivel de transporte en internet_ Ul rc_cap7_el nivel de transporte en internet_
Ul rc_cap7_el nivel de transporte en internet_
 
Componentes de Red
Componentes de RedComponentes de Red
Componentes de Red
 
Cap5 mod3(sol)
Cap5 mod3(sol)Cap5 mod3(sol)
Cap5 mod3(sol)
 
Investigacion 2
Investigacion 2Investigacion 2
Investigacion 2
 
Ccna3
Ccna3Ccna3
Ccna3
 
Examen final de redes cisco I
Examen final de redes cisco IExamen final de redes cisco I
Examen final de redes cisco I
 
Exposicion modbus rtu
Exposicion modbus rtuExposicion modbus rtu
Exposicion modbus rtu
 
Cap1 mod3(sol)
Cap1 mod3(sol)Cap1 mod3(sol)
Cap1 mod3(sol)
 
Direccionamiento de una ip y conceptos BY JAVIER DAVID LOBATO PARDO
Direccionamiento de una ip y conceptos BY JAVIER DAVID LOBATO PARDODireccionamiento de una ip y conceptos BY JAVIER DAVID LOBATO PARDO
Direccionamiento de una ip y conceptos BY JAVIER DAVID LOBATO PARDO
 
La capa de enlace
La capa de enlaceLa capa de enlace
La capa de enlace
 
Ccna 1 capítulo 11
Ccna 1 capítulo 11Ccna 1 capítulo 11
Ccna 1 capítulo 11
 

Similar a Fgl029 guiano2arquitecturasvhdl (1)

Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3ESANTIAGO PABLO ALBERTO
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...SANTIAGO PABLO ALBERTO
 
Plc 01
Plc 01Plc 01
Plc 01ostol
 
Lenguaje Ladder
Lenguaje LadderLenguaje Ladder
Lenguaje LadderRuth Cano
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificadorEver Omar Nolasco
 
Filosofía en proyectos de subestaciones
Filosofía en proyectos de subestacionesFilosofía en proyectos de subestaciones
Filosofía en proyectos de subestacionesMarcelo Dávalos
 
Manual de Practica para TSX MICRO
Manual de Practica para TSX MICRO Manual de Practica para TSX MICRO
Manual de Practica para TSX MICRO Mariangela Gonzalez
 
Tema 8 programacion de pl cs lenguaje bloques funcionales
Tema 8 programacion de pl cs lenguaje bloques funcionalesTema 8 programacion de pl cs lenguaje bloques funcionales
Tema 8 programacion de pl cs lenguaje bloques funcionalesPLC AREA DE GRADO
 
Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdlAngie Cardenas
 
Ici rtu-unidad 5- tema 8
Ici rtu-unidad 5- tema 8Ici rtu-unidad 5- tema 8
Ici rtu-unidad 5- tema 8Daniela Barbosa
 
Vhdl organización y arquitectura
Vhdl organización y arquitectura Vhdl organización y arquitectura
Vhdl organización y arquitectura Juan S V
 
Informe tecnico u4 final
Informe tecnico u4 finalInforme tecnico u4 final
Informe tecnico u4 finalIrving Che
 
Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado SANTIAGO PABLO ALBERTO
 

Similar a Fgl029 guiano2arquitecturasvhdl (1) (20)

Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3E
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
 
7_vhdl.pdf
7_vhdl.pdf7_vhdl.pdf
7_vhdl.pdf
 
Plc 01
Plc 01Plc 01
Plc 01
 
Lenguaje Ladder
Lenguaje LadderLenguaje Ladder
Lenguaje Ladder
 
Curso-de-PLC.pdf
Curso-de-PLC.pdfCurso-de-PLC.pdf
Curso-de-PLC.pdf
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador
 
Filosofía en proyectos de subestaciones
Filosofía en proyectos de subestacionesFilosofía en proyectos de subestaciones
Filosofía en proyectos de subestaciones
 
Manual de Practica para TSX MICRO
Manual de Practica para TSX MICRO Manual de Practica para TSX MICRO
Manual de Practica para TSX MICRO
 
Tema 8 programacion de pl cs lenguaje bloques funcionales
Tema 8 programacion de pl cs lenguaje bloques funcionalesTema 8 programacion de pl cs lenguaje bloques funcionales
Tema 8 programacion de pl cs lenguaje bloques funcionales
 
Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdl
 
Ici rtu-unidad 5- tema 8
Ici rtu-unidad 5- tema 8Ici rtu-unidad 5- tema 8
Ici rtu-unidad 5- tema 8
 
Ejemplo de paper
Ejemplo de paperEjemplo de paper
Ejemplo de paper
 
Vhdl organización y arquitectura
Vhdl organización y arquitectura Vhdl organización y arquitectura
Vhdl organización y arquitectura
 
Informe tecnico u4 final
Informe tecnico u4 finalInforme tecnico u4 final
Informe tecnico u4 final
 
Circuitos msi
Circuitos msiCircuitos msi
Circuitos msi
 
Circuitos msi
Circuitos msiCircuitos msi
Circuitos msi
 
106429902 inf-lab-5-circuitos-msi
106429902 inf-lab-5-circuitos-msi106429902 inf-lab-5-circuitos-msi
106429902 inf-lab-5-circuitos-msi
 
Plc1
Plc1Plc1
Plc1
 
Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado Electrónica digital: Maquina de estado
Electrónica digital: Maquina de estado
 

Último

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Último (20)

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Fgl029 guiano2arquitecturasvhdl (1)

  • 1. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 1. IDENTIFICACIÓN DE LA GUÍA Nombre de la guía: Electrónica Digital Estilos de Programación Código de la guía (No.): EDL-g2 Taller(es) o Laboratorio(s) aplicable(s): Microelectrónica y Nanotecnolo- gía Tiempo de trabajo práctico estimado: 4 horas Asignatura(s) aplicable(s): Electrónica Digital y Laboratorio - Laboratorio de Electrónica Di- gital Programa(s) Académico(s) / Facultad(es): Tecnológia Electrónica - Tecnolo- gía en Telecomunicaciones - Tec- nología en Automatización Elec- trónica - Tecnología en Gestión de Redes de Telecomunicaciones / Facultad de Ingenierías COMPETENCIA CONTENIDO TEMÁ- TICO INDICADOR DE LOGRO Diseña y analiza circuitos lógicos combinacionales y secuenciales para la resolu- ción de problemas que invo- lucran circuitos electrónicos digitales, empleando meto- dologías de diseño digital con la ayuda de herramien- tas computacionales de de- sarrollo y simulación. Implementación de circuitos digitales com- binacionales utilizando diferentes estilos de programación. Circuito digital sobre FP- GA descrito en VHDL em- pleando estilos de progra- mación por ujo de datos, algorítmico y estructural. 2. FUNDAMENTO TEÓRICO El VHDL (VHSIC Hardware Description Language en inglés) es un lenguaje estándar de descripción de hardware. Es usado generalmente para el diseño, simulación e implementación de sistemas digitales. La descripción en VHDL de un circuito lógico combinacional requiere del uso de las diferentes formas de representación de sus características y funcionamiento. Antes de elaborar el código correspondiente a un circuito, se parte generalmente de una descripción básica en lenguaje natural de la cual se generan otras formas de representación más formales. Cada una de estas representaciones da lugar a diferentes tipos o estilos de descripción según el dominio de diseño y el nivel de abstracción, según se muestra en la Tabla 1. Página 1 de 13
  • 2. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 Tabla 1: Tipos de descripción de circuitos según el dominio de diseño y el nivel de abstracción. DOMINIO DE DISEÑO TIPO DE DESCRIPCIÓN APLICACIÓN Estructural Estructural: bloques Circuitos combinacionales Funcional Flujo de datos: tabla de ver- dad o función lógica Circuitos combinacionales Comportamental: algorítmico Circuitos combinacionales y secuenciales Un módulo hardware en VHDL tiene una estructura bien denida que lo describe de una manera clara y lógica. Las partes del módulo son: 1. La declaración de entidad: describe la interfaz del módulo permitiendo denir las entradas y salidas. 2. La declaración de la arquitectura: permite describir la funcionalidad in- terna u operación del módulo. La Figura 1 muestra un sumador completo de 1 bit. En el esquemático se pueden observar su interfaz, puertos de entrada y salida, y su estructura interna. y z ŝ  Ž Figura 1: Diagrama esquemático del sumador completo de 1 bit. La declaración de entidad inicia con la palabra reservada entity y naliza con la palabra reservada end. Toda entidad debe incluir un nombre, que en este caso es eFullAdder, y la declaración de los puertos de entrada (in) X, Y y Ci, y de salidad (out) Z y Co. Además del nombre y la dirección de cada puerto se establece el tipo de dato de cada uno (STD_LOGIC ) (véase Código 2.1). STD_LOGIC es un tipo de dato denido en VHDL que se utiliza para representar la unidad básica de información, el bit, y con el cual se pueden indicar diferentes estados de un bit como el 1 lógico, el 0 lógico, valores no importa, y estado de alta impedancia, entre otros. El bloque de declaración de la arquitectura inicia con la palabra reservada architecture. El cuerpo de la arquitectura tiene un nombre, en este caso aFullAd- der, y se debe indicar cual entidad implementa, en este caso eFullAdder. Igual que la entidad, la arquitectura termina con la palabra reservada end, y en medio de ellas está la palabra reservada begin. Esta palabra divide la arquitectura en dos partes: la zona de declaraciones y la zona de sentencias de la descripción funcional. En la zona de declaraciones de la arquitectura, opcionalmente, se pue- den declarar los componentes, necesario para un diseño jerárquico, y declarar señales, necesarias para interconectar componentes dentro del código funcional. Página 2 de 13
  • 3. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 La descripción funcional de la arquitectura se puede realizar de varias formas, como se verá más adelante. -- Declaración de entidad entity eFullAdder is port ( X, Y, Ci : in STD_LOGIC; Z, Co : out STD_LOGIC ); end; -- Definición de la arquitectura architecture aFullAdder of eFullAdder is -- zona de declaraciones begin -- zona de descripción funcional end aFullAdder; Código 2.1: Declaración de entidad y cuerpo de la arquitectura del sumador completo de 1 bit. 2.1. Modelado por ujo de datos VHDL es un lenguaje naturalmente concurrente ya que se utiliza para des- cribir circuitos digitales. Esto quiere decir que las instrucciones no se ejecutan secuencialmente como lo hace una CPU, las instrucciones le sirven a la herra- mienta para implementar circuitos sobre una FPGA. Por lo tanto, la herramien- ta usa las instrucciones para sintetizar y diseñar el circuito. Esta característica, ejecución en paralelo de instrucciones, es la utilizada en el modelado por ujo de datos. Este modelado es utilizado para describir circuitos combinacionales1. La sintáxis del modelado por ujo de datos se muestra en (1). destSignal = expresion; (1) La señal destino (destSignal) puede ser de 1 o varios bits, y la expresión (expresion) puede constar de una o varios operadores. Nótese que = es el operador de asignación, el cual asigna a la señal de la izquierda el resulta de la operación de la derecha. En Código 2.2 pueden verse las expresiones para los puertos de salida Z y Co del sumador completo mostrado en la Figura 1. Las operaciones lógicas en VHDL se describen usando palabras en inglés: and y or son obvias, y xor es la operación lógica OR-Exclusive. El lenguaje no es sensible al caso, esto quiere decir que las instrucciones se pueden usar igualmente en minúsculas o mayúsculas. El sumador completo de 1 bit, con unas simples transformaciones, también se puede representar por medio de una tabla de verdad2 (véase Tabla 2). 1Circuitos sin memoria, esto es, la salida actual depende única y exclusivamente de las entradas actuales. 2Diagrama en forma de las y columnas que muestra el valor de las salidas de un circuito digital para todas las posibles combinaciones de las entradas. Página 3 de 13
  • 4. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 Esta representación también se puede utilizar para describir el circuito con VHDL usando el modelado por ujo de datos. La descripción mostrada en Có- digo 2.3 representa el circuito de acuerdo a la Tabla 2. -- Declaración de entidad entity eFullAdder is port ( X, Y, Ci : in STD_LOGIC; Z, Co : out STD_LOGIC ); end; -- Definición de la arquitectura architecture aFullAdder of eFullAdder is -- zona de declaraciones begin -- zona de descripción funcional Z = (X xor Y) xor Ci; Co = (X and Y) or ((X or Y) and Ci); end aFullAdder; Código 2.2: sentencias concurrentes en VHDL para el sumador completo de 1 bit. La descripción presentada en Código 2.3 utiliza la instrucción when-else. Esta instrucción es también concurrente y se emplea para asignar un valor a una señal cuando se cumple una condición (when), pero así mismo permite explorar otras posibilidades de la conndición (else). En este caso, la señal o puerto de salida Z tomará el valor de la señal o puerto de entrada Ci cuando las señales o puertos de entrada X y Y sean iguales. Si esta condición no se cumple, Z tomará en valor de Ci. De la misma manera se hace la descripción de la salida C0, la cual es 0 si tanto X como Y son 0, es 1 si ambas, X y Y, son 1, y en los demás casos Co será igual a Ci. Tabla 2: Tabla de verdad del sumador completo de 1 bit. X Y Z Co 0 0 Ci 0 0 1 Ci Ci 1 0 Ci Ci 1 1 Ci 1 2.2. Modelado algorítmico Se emplea para describir circuitos más complejos, como los circuitos secuen- ciales3, empleando sentencias que se ejecutan de manera secuencial. Para esto, 3Circuitos digitales con memoria. Página 4 de 13
  • 5. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 las sentencias deben estar dentro de un proceso o un subprograma, el cual a su vez se dene en el cuerpo de la arquitectura del circuito. Los subprogramas sirven para mantener el código más limpio, conciso y libre de duplicaciones, y se declaran, comúnmente, dentro de un paquetes, la arquitectura o un proceso. -- Declaración de entidad entity eFullAdder is port ( X, Y, Ci : in STD_LOGIC; Z, Co : out STD_LOGIC ); end; -- Definición de la arquitectura architecture aFullAdder of eFullAdder is -- zona de declaraciones begin -- zona de descripción funcional Z = Ci when (X = Y) else not(Ci); Co = '0' when (X = '0' and Y = '0') else '1' when (X = '1' and Y = '1') else Ci; end aFullAdder; Código 2.3: sentencias concurrentes en VHDL para el sumador completo de 1 bit. VHDL ofrece dos tipos de subprogramas: las funciones y los procedimientos. Las funciones siempre retornan un valor, los procedimientos no (pero pueden modicar sus parámetros). Ambos tipos de subprogramas pueden tener 0 o más parámetros. En esta guía no nos ocuparemos de los subprogramas. El modelado basado en sentencias secuenciales los realizaremos usando pro- cesos. Pero antes de pasar a los procesos vale aclarar que las sentencias secuen- ciales en VHDL son similares a las sentencias secuenciales de la mayoría de los lenguajes imperativos. Estamos hablando de estructuras de control como el condicional if, la estructura case, los lazos de control como loop, la estructura while, etc. La estructura general de un proceso, en este caso el que describe la tabla de verdad del sumador completo de 1 bit dado en la Tabla 2, puede verse en el Código 2.4. El proceso es una región de código secuencial delimitada por las sentencias process y end process;. Aunque las sentencias dentro del proceso son secuenciales, el proceso es una sentencia concurrente porque se ejecuta en paralelo con los demás procesos y sentencias concurrentes dentro de la arquitectura. En Código 2.4 se pueden observar las principales partes de un proceso, las cuales son: la etiqueta opcional, proSum1Bit, la cual le da el nombre al proceso y además es útil para documentar el software; la lista de sensibilidad X, Y y Ci, Página 5 de 13
  • 6. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 la cual es un conjunto de señales que son monitoreadas mientras el proceso está suspendido y que ante un cambio en una de ellas reactiva el proceso, igualmente esta lista es opcional; la palabra reservada is también es opcional y marca el inicio del proceso. -- Declaración de entidad entity eFullAdder is port ( X, Y, Ci : in STD_LOGIC; Z, Co : out STD_LOGIC ); end; -- Definición de la arquitectura architecture aFullAdder of eFullAdder is -- zona de declaraciones begin -- zona de descripción funcional proSum1Bit:process(X,Y,Ci) is begin if (X = '0' and Y = '0') then Z = Ci; Co = '0'; elsif (X = '1' and Y = '1') then Z = Ci; Co = '1'; else Z = not(Ci); Co = Ci; end if; end process; end aFullAdder; Código 2.4: descripción algorítmica utilizando un proceso. Al igual que en la arquitectura que describe una entidad, los procesos tiene una zona de declaraciones del proceso, después de la palabra process y antes de la palabra begin, y una zona de descripción de la funcionalidad, después de la palabra begin. En el proceso proSum1Bit se puede observar el uso de la reconocida sentencia condicional if, de uso corriente en lenguajes de programación de alto nivel y de propósito general, la cual asigna un valor a una o varias señales dependiendo del cumplimiento de unas condiciones. En la primera comparación asigna Ci a Z y 0 a Co cuando tanto X como Y son 0. Si esta condición no se cumple descarta la acción y hace una nueva comparación, para ello usa la sentencia elsif, en la cual si X y Y son ambas 1 a Z le asigna igualmente Ci, pero a Co le asignará 1. Finalmente, si esta condición tampoco se cumple la descarta y no hace más comparaciones, solo asigna Ci y Ci a Z y Co respectivamente. Página 6 de 13
  • 7. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 Finalmente, en un proceso no pueden declararse señales, en su lugar se uti- lizan variables, y si no existe lista de sensibilidad el proceso debe suspenderse con una sentencia wait. 2.3. Modelado estructural Describe circuitos interconectando componentes previamente instanciados. Los componentes se interconectan entre ellos por medio de señales declaradas en la arquitectura, y también pueden conectarse sus puertos con los puertos del sistema que los contiene. Vamos a implementar un sumador de 4 bits empleando sumadores completos de 1 bit (véase Figura 1), el cual se representado como una caja negra en la Figura 2. Podemos emplear cualquiera de las descripciones del sumador de 1 bit presentadas en esta guía, esto es, Código 2.2, 2.3 o 2.4, para su implementación. Ž ŝ  z y ^ƵŵĂĚŽƌϭŝƚ Figura 2: Descripción de los puertos de entrada/salida de un sumador de 1 bit. En la Figura 3 se pueden ver la implementación de un sumador de 4 bit, Sum4Bit, usando sumadores de 1 bit. Nótese que en este caso se implementó una sola vez el sumador de 1 bit y se utiliza, léase se instancia, cuatro veces para construir el sumador de 4 bit. Esto demuestra lo poderosa que es la arquitectura estructural, basada en componentes, y la optimización que se obtiene en tiempo de desarrollo. En el sistema integrador, Sum4Bit, se deben denir los puertos de entrada- salida del sumador de 4 bit, esto es, dos vectores de entrada de 4 bis, X y Y, un vector de salida de 4 bit, Z, una señal de entrada de 1 bit, Ci, y una señal de salida de 1 bit, Co. La arquitectura de Sum4Bit está formada por la interconexión de cuatro subcircuitos, que en VHDL se describen como componentes (sum1Bit). Estos componentes se declaran en la zona de declaraciones de la arquitectura, iniciando con la palabra component y nalizando con end component;. En medio de estas dos palabras va la descripción de los puertos del componente, tal como se hace en la declaración de la entidad. Se asume que la descripción de la arquitectura del componente existe en un archivo aparte. Las señales que unen los componentes se deben igualmente declarar en la zona de declaraciones de la arquitectura, utilizando la palabra signal y el tipo de dato que soportan. No se debe indicar la dirección de la señal, ya que debido a que estas ni entran ni salen de Sum4Bit no se consideran ni de entrada ni de salida. Las señales dentro de sum4Bit que conectan las instancias de sum1Bit, dibujadas en color rojo, son Ci1, Ci2 y Ci3. Los cuatro componentes son utilizados en la implementación cuando se ins- tacian en la zona de la descripción funcional de la arquitectura. Los puertos de cada componente, sum1Bit, se relacionan con los del sistema integrador, Página 7 de 13
  • 8. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 Sum4Bit, o con una señal declarada allí usando el operador =. Antes del ope- rador = se pone el puerto del componente, y después del operador = se pone el puerto o la señal del componente integrador. Ž ŝ  z y ^Ƶŵϭŝƚ Ž ŝ  z y ^Ƶŵϭŝƚ Ž ŝ  z y ^Ƶŵϭŝƚ Ž ŝ  z y ^Ƶŵϭŝƚ y Ϯ z Ϯ y ϭ z ϭ y Ϭ z Ϭ y ϯ z ϯ Ž ŝ  Ϯ  ϯ  Ϭ  ϭ ŝϭ ŝϮ ŝϯ ^Ƶŵϰŝƚ Figura 3: Descripción de los puertos de entrada/salida y las señales de un su- mador de 4 bit. La instacia inicia con una etiqueta que le da un nombre, por ejemplo, para el caso del primer sumador de 1 bit el nombre de esta instancia es i0_sum1Bit. El nombre de la instacia se separa del nombre del componente usando :, luego del nombre del componente sigue la instrucción port map y en paréntesis la relación entre los puertos del componente y los puertos y señales denidas dentro del sistema integrador. Como todas las instrucciones en VHDL, la instancia naliza con ;. Por ejemplo, la relación X = X(0) signica que el puerto X del componente, i0_sum1Bit, es el bit 0 del puerto X, que es un vector de 4 bits, denido en el sistema integrador, sum4Bit; y la relación Co = Ci1 signica que el puerto Co del componente i0_sum1Bit es la misma señal Ci1 declarada en la arquitectura del sistema integrador, sum4Bit. De esta misma forma se puede hacer la relación entre los puertos de cada instancia del componente sum1Bit y los puertos y señales del sistema integrador Sum4Bit. El código 2.5 muestra la implementación estructural del sumador de 4 bits a partir de sumadores de 1 bit y de acuerdo a el diagrama de bloques mostrado en la Figura 3. Se puede utilizar esta misma losofía de diseño estructural para implementar, por ejemplo, un sumador de 16 bit. El diagrama de bloques es básicamente igual al de la Figura 3, solo que los componentes son sumadores de 4 bit, sum4Bit, y no de 1 bit, sum1Bit. Por lo tanto, se deben reemplazar cada puerto Xi, Yi y Zi por vectores de cuatro bit. Por ejemplo, en lugar de X0 deben ir los cuatro bits de menor peso del vector de 16 bit X, esto es, X(3 downto 0). De la misma manera, se puede implementar un sumador de 64 bits con componentes sumadores de 16 bits. Se alienta a los estudiantes a que intenten implementar un sumador de 64 bits a partir de componentes sumadores de 16 bits. Página 8 de 13
  • 9. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity sum4Bit is Port (X, Y : in STD_LOGIC_VECTOR (3 download 0); Ci : in STD_LOGIC; Z : out STD_LOGIC_VECTOR (3 download 0); Co : out STD_LOGIC); end sum4Bit; architecture structural of sum4Bit is component sum1Bit is Port (X, Y, Ci : in STD_LOGIC; Z, Co : out STD_LOGIC); end component sum1Bit; signal Ci1, Ci2, Ci3 : STD_LOGIC; begin i0_sum1Bit:sum1Bit port map(X = X(0), Y = Y(0), Ci = Ci, Z = Z(0), Co = Ci1); i1_sum1Bit:sum1Bit port map(X = X(1), Y = Y(1), Ci = Ci1, Z = Z(1), Co = Ci2); i2_sum1Bit:sum1Bit port map(X = X(2), Y = Y(2), Ci = Ci2, Z = Z(2), Co = Ci3); i3_sum1Bit:sum1Bit port map(X = X(3), Y = Y(3), Ci = Ci3, Z = Z(3), Co = Co); end structural; Código 2.5: Implementación estructural de sumador de 4 bit a partir de suma- dores de 1 bit.. 3. OBJETIVO(S) Implementar con arquitectura estructural una ALU de 4 bits usando VHDL sobre FPGA. 4. RECURSOS REQUERÍDOS Estación de trabajo. Vivado Design Suite. Nexys 4 o Nexys A7. Página 9 de 13
  • 10. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 5. PROCEDIMIENTO O METODOLOGÍA PA- RA EL DESARROLLO Una ALU (Aritmethic Logic Unit) es un circuito digital combinacional que realiza múltiples operaciones, algunas aritméticas y algunas lógicas. La Figura 4 muestra los puertos de entradasalida de una ALU de 4 bits. Este circuito realiza las operaciones aritméticas y lógicas descritas en la Tabla 3 sobre los operandos, de 4 bits, A y B de acuerdo a las líneas de selección, de 3 bits, S. El resultado se almacena en la señal F de 4 bits. Ci y Co son los acarreros de entrada y salida respectivamente utilizados en las operaciones aritméticas. hŶŝĚĂĚſŐŝĐŽƌŝƚŵĠƚŝĐĂ h ϯ… Ϭ ϯ… Ϭ ϯ… Ϭ ^Ϯ… ^Ϭ ŝ Ž Figura 4: ALU de 4 bits. Tabla 3: Funciones de la ALU de 4 bits. Selección Salida Función S2 S1 S0 Ci 0 0 0 0 F = A Tranferir A 0 0 0 1 F = A plus 1 Incrementar A 0 0 1 0 F = A plus B Suma 0 0 1 1 F = A plus B plus 1 Suma con acarreo 0 1 0 0 F = A minus B minus 1 Resta con préstamo 0 1 0 1 F = A minus B Resta 0 1 1 0 F = A minus 1 Decrementar 0 1 1 1 F = A Transferir A 1 0 0 X F = A + B OR 1 0 1 X F = A ⊕ B OR exclusiva 1 1 0 X F = A · B AND 1 1 1 X F = Ā Complementar A La ALU puede ser vista como la unión de dos etapas, un circuito aritmético y un circuito lógico (véase Figura 5), donde S2 selecciona si a la salida pasa el resultado de la etapa aritmética, Fx, o el de la etapa lógica, Fy. S1 y S0 seleccionan la operación interna que cada etapa debe realizar. Página 10 de 13
  • 11. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 ŝƌĐƵŝƚŽƌŝƚŵĠƚŝĐŽ ŝƌĐƵŝƚŽſŐŝĐŽ DƵdžϮĂϭ ϯ… Ϭ ϯ… Ϭ ^ϭ…^Ϭ džϯ… džϬ LJϯ… LJϬ ϯ…Ϭ Ž ŝ ^Ϯ Figura 5: Etapas de la ALU, circuito artitmético y lógico. 5.1. Diseño del circuito aritmético Este circuito puede ser implementado usando un sumador de 4 bits, como el presentado en esta guía (véase Código 2.5), y un multiplexor 4 a 1 de 4 bits. El multiplexor 2 a 1 de 1 bit presentado en la guía No 1 puede utilizarse como base para la implementación de este multiplexor de 4 bits. La Figura 6 muestra el diseño del circuito aritmético y la Tabla 4 las operaciones realizadas por este. ^ƵŵĂĚŽƌĚĞ ϰďŝƚƐ ϬϬϬϬ ϭϭϭϭ ϯ…Ϭ Ε;ϯ… ϬͿ ^ϭ… ^Ϭ ϯ… Ϭ ŝ Ž džϯ… džϬ yϯ… yϬ DƵdžϰĂϭ Figura 6: Circuito aritmético de la ALU. Tabla 4: Opearciones del circuito aritmético de la ALU de 4 bits. Selección Salida mux Salida Función S1 S0 Ci 0 0 0 X = 0000 Fx = A Tranferir A 0 0 1 X = 0000 Fx = A plus 1 Incrementar A 0 1 0 X = B Fx = A plus B Suma 0 1 1 X = B Fx = A plus B plus 1 Suma con acarreo 1 0 0 X = B̄ Fx = A plus B̄ Resta con préstamo 1 0 1 X = B̄ Fx = A plus B plus 1 Resta 1 1 0 X = 1111 Fx = A plus 1111 Decrementar A 1 1 1 X = 1111 Fx = A plus 1111 plus 1 Transferir A Página 11 de 13
  • 12. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 5.2. Diseño del circuito lógico El circuito lógico puede ser implementado de manera sencilla usando un multiplexor 4x1 de 4 bits como se ve en la Figura 7. Se puede utilizar el mismo multiplexor 4 a 1 implementado para el circuito aritmético. ^ϭ… ^Ϭ DƵdžϰĂϭ ϯ… Ϭ ϯ… Ϭ LJϯ… LJϬ Figura 7: Circuito lógico de la ALU. 6. PARÁMETROS PARA ELABORACIÓN DEL INFORME El docente facilitará una plantilla en Word para escribir el informe. Si los estudiantes lo desean pueden utilizar L ATEX empleando los mismos parámetros de la plantilla propuesta para el curso. 7. DISPOSICIÓN DE RESIDUOS Esta práctica no genera residuos. Referencias R. Jasinski, Eective Coding with VHDL: principles and best practice, The MIT Press, Cambridge, MA., 2016. S.K. Sarkar, A.K. De, S. Sarkar, Fundation of Digital Electronics and Logic Design, Pan Stanford Publishing, Singapore, 2014. R.L. Tokheim, Electrónica digital : principios y aplicaciones, McGraw-Hill Interamericana, México, 2008. J.I. Artigas Maestre, L.Á. Barragán Pérez, C. Orrite Uruñuela, I. Urriza Parroqué, Electrónica digital : aplicaciones y problemas con VHDL, Prentice Hall, Madrid, 2002. R. Reina Acedo, M. García Lorenz, J. Vázquez Martínez, Electrónica digital en la práctica, Alfaomega, México, 2011. V.A. Pedroni, Circuit design and simulation with VHDL, MIT Press, Cambridge, MA., 2010. Página 12 de 13
  • 13. GUÍA DE TRABAJO PRÁCTICO - EXPERIMENTAL Talleres y Laboratorios de Docencia ITM Código FGL 029 Versión 02 Fecha 08-10-2018 C.H. Roth, L.L. Kinney, Fundamentals of logic design, Cengage Lear- ning, EEUU, 2010. Elaborado por: Sergio Ignacio Serna Garcés, Ph.D. Revisado por: Pendiente Versión: 1.0 Fecha: Septiembre 2021 Página 13 de 13