Está en la página 1de 64

Edición, texto y simulación

Circuitos combinacionales, multiplexores

SEMANA 11
Recordemos la sesión anterior

DISPOSITIVOS LOGICOS PROGRAMABLES (PLD)


Un ejemplo típico de estos dispositivos es la
familia PAL16R8 (16 entradas y 8 salidas), la cual
fue desarrollada por la compañía AMD (Advanced
Micro Devices) e incluye los dispositivos PAL16R4,
PAL16R6, PAL16L8, PAL16R8, dispositivos
programables por el usuario para reemplazar
circuitos combinacionales y secuenciales SSI y MSI
en un circuito.

PAL16L8 2
Recordemos la sesión anterior

Arreglos de compuertas programables en campo FPGA


En la actualidad sólo se
encuentran comercialmente
disponibles CPLD, FPGA y
ASIC.
En los proyectos que
requieran una lógica
relativamente sencilla se
Utilizan CPLD dejando las
FPGA a los más complejos.
Sólo cuando la funcionalidad
está suficientemente bien
definida, es preferible utilizar
ASIC.

3
Recordemos la sesión anterior
FPGA Xilinx Spartan-6
La placa de circuitos Atlys es una plataforma de
desarrollo de circuitos digitales completa y lista
para usar, basada en una FPGA Xilinx Spartan-6
LX45, grado de velocidad -3.
La gran colección de periféricos de gama alta y
FPGA que incluyen Ethernet Gbit, Video HDMI,
memoria DDR2 de 16 bits de 128 MB y puertos USB
y de audio hacen de la placa Atlys un host ideal
para una amplia gama de sistemas digitales,
incluido el procesador integrado Diseños
basados ​en MicroBlaze de Xilinx.

4
CONTENIDOS DE LA SESION

1. VHDL
2. VHDL: Entidad
3. DISEÑO DE UNA PUERTA AND
4. COMPUERTAS LOGICAS
5. MULTIPLEXORES
¿Qué es un MUX?
Lenguaje de descripción de Hardware

VHDL
VHDL
VHDL es un acrónimo de "Very Hight
Speed Integrated Circuit Hardware
Definition Lenguage".
Fue desarrollado como lenguaje de
descripción de modelado y simulación
dirigido por eventos.
Es decir, se trata de un lenguaje
mediante el cual se puede describir,
analizar y evaluar el comportamiento
de un sistema electrónico digital.

8
VHDL
VHDL tiene una sintaxis amplia y flexible
que permite la descripción de circuitos
según los estilos:
• Comportamental o funcional
(Behavioral): Se describe el
comportamiento. Sentencias de tipo if,
switch case...(Algorítmica).
• Flujo de datos (Data Flow): Describe la
lógica de los datos (RTL).
• Estructural: Hace referencia a los
componentes que lo forma y su
interconexión (compuertas, biestabler Ejemplo de programación VHDL Estructural
y MSI). Utiliza operadores lógicos y matemáticos

9
VHDL
Estilo Comportamental o funcional
Utilizamos estilo funcional cuando
exponemos la manera en que
trabaja el sistema, es decir las
descripciones consideran la
relación que hay entre las entradas
y las salidas del circuito, sin
importar cómo este organizado en
su interior.
En el ejemplo se muestra un
comparador:

Ejemplo de programación VHDL estilo funcional


10
VHDL
Ejercicio:
DESCARGUE LA APP
VHDL compiler y escriba
el programa de ejemplo:

11
VHDL
Las ventajas del uso de VHDL son las siguientes:
• Simular y comprobar un sistema desde las primeras etapas de diseño.
• Permite, siguiendo algunas reglas, generar directamente CI.
• Creación de desarrollo de código reutilizable.
• Es independiente de la tecnología al ser un estándar.
• Permite un diseño Top-Down. (de lo general a lo particular).
• Modularidad.

12
VHDL
La estructura general de un programa en VHDL
está formada por módulos o unidades de
diseño.
Existen cinco tipos de unidades de diseño en
VHDL:
• Declaración de entidad (entity declaration),
• Arquitectura (architecture),
• Configuración (configuration),
• Declaración del paquete (package
declaration) y
• Cuerpo del paquete (package body).
En el desarrollo de programas en VHDL la
entidad y arquitectura, son indispensables.
13
VHDL: UNIDADES DE DISEÑO

14
VHDL: UNIDADES DE DISEÑO
VHDL no distingue entre mayúsculas y minúsculas,
pero por claridad se recomienda mantener una misma forma de escribir.

Esto es, si por ejemplo se ponen los operadores en mayúsculas, sería recomendable q
ue se mantuviesen
así en todo el diseño, lo mismo es válido para los nombres de señales.

Hay un conjunto de palabras reservadas que no se deben usar para otros propósitos
(por ejemplo para nombres de señales). Éstas son:

15
LISTA DE PALABRAS RESERVADAS EN VHDL

16
UNIDADES DE DISEÑO

VHDL: ENTIDAD
VHDL: 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.
La entidad puede representarse de muy diversas
maneras; por ejemplo, la figura muestra la
arquitectura de un sumador completo a nivel de
compuertas; ahora bien, esta entidad se puede
representar a nivel de sistema indicando tan sólo las
entradas (Cin, A y B) y salidas (SUMA y Cout) del
circuito.

18
VHDL: ENTIDAD (entity)
PUERTOS DE ENTRADA Y SALIDA
Cada una de las señales de entrada y salida en
una entidad son referidas como puerto, el cual
es similar a una terminal (pin) de un símbolo
esquemático.
Todos los puertos que son declarados deben
tener un nombre, un modo y un tipo de dato.

El nombre se utiliza como una forma de llamar al


puerto; el modo permite definir la dirección que
tomará la información y el tipo define qué clase
de información se transmitirá por el puerto.

19
VHDL: ENTIDAD (entity)
MODOS
Permite definir la dirección en la cual el dato es transferido. Un
modo puede tener uno de cuatro valores:
• Modo in. Se refiere a las señales de entrada a la entidad. Es
unidireccional y únicamente permite el flujo de datos hacia
dentro de la entidad.
• Modo out. Indica las señales de salida de la entidad.
• Modo inout. Permite declarar a un puerto de forma
bidireccional, permite la retroalimentación.
• Modo buffer. Permite hacer retroalimentaciones internas dentro
de la entidad, pero a diferencia del modo inout, el puerto
declarado se comporta como una terminal exclusiva de salida.

20
VHDL: ENTIDAD (entity)
TIPOS DE DATOS
Son los valores (datos) que el diseñador establece para
los puertos de entrada y salida dentro de una entidad, y
que son asignados de acuerdo con las características de
un diseño en particular.
Algunos de los tipos más utilizados son el bit , el cual
tiene valores de 0 y 1 lógico; el tipo boolean (booleano)
define valores de verdadero o falso en una expresión; el
bit_vector (vectores de bits), el cual representa un
conjunto de bits para cada variable de entrada y/o
salida, y el tipo integer (entero), que representa a un
número entero.

21
VHDL: ENTIDAD (entity)
DECLARACION DE LA ENTIDAD
La declaración de una entidad consiste en la descripción de las entradas y salidas de un
circuito.

22
VHDL: ENTIDAD (entity)
DECLARACION DE LA ENTIDAD
Ejercicios, Declare la entidad de los circuitos lógicos:

23
VHDL: IDENTIFICADORES
Los identificadores son simplemente los nombres o etiquetas que se usan para referir
variables, constantes, señales, procesos, etc. Pueden ser números, letras del alfabeto y
guiones bajos ( _ ) que separen caracteres y no tienen una restricción en cuanto a su
longitud.
Todos los identificadores deben seguir ciertas especificaciones o reglas para que se puedan
compilar sin errores, ver tabla:

24
VHDL: VECTORES
En VHDL las palabras binarias se conocen como vectores de bits, los cuales se consideran un
grupo y no como bits individuales. Como ejemplo considérense los vectores de 4 bits que se
muestran a continuación:

El código que se usa para declarar un vector dentro de los puertos es:

entity Sumador is
port (vector_A, vector_B: in bit_vector (3 downto 0);
vector_SUMA: out bit_vector (3 downto 0));
end Sumador

25
VHDL: VECTORES
La forma en la que se ordenan se indica como ascendente “to” o como descendente
“downto”.
Ejemplo:

26
VHDL: SEÑALES (SIGNALS)
Una señal determina una conexión física visible o invisible que representa uno o varios cables
de conexión en la aplicación.
En la figura, en la estructura interna, se encuentra la señal “x” como un elemento de
interconexión, esta señal se declara en la línea 9.

27
VHDL: LIBRERIAS
Las librerías o bibliotecas incluyen tipos de datos, componentes ya hechos, funciones, entre
otros, que se pueden utilizar en los diseños.
Para incluir una librería a un diseño basta con utilizar la palabra reservada LIBRARY seguida
del nombre de la biblioteca a utilizar. Además, también es posible hacer visibles elementos
internos de estas bibliotecas con el uso de la sentencia USE, como se explicó en el apartado
anterior. En el caso de querer hacer visible todos los elementos de un paquete se puede
utilizar la palabra reservada ALL.

28
VHDL: LIBRERIAS
Una de las bibliotecas más utilizadas en el mundo de la industria es la denominada ieee, la
cual contiene algunos tipos y funciones que completan a las que vienen por defecto en el
propio lenguaje. Dentro de la librería existe un paquete denominado std_logic_1164, con el
cual se pueden trabajar con un sistema de nueve niveles lógicos, como puede ser: valor
desconocido, alta impedancia, etc.

29
Desarrollo de la lógica programable

Archivo.bit

30
FPGA: Flujo de diseño

31
FPGA: Flujo de diseño

32
FPGA: Flujo de diseño

33
VHDL

DISEÑO DE UNA PUERTA AND


Puerta AND

Para diseñar un circuito en VHDL lo mínimo que se necesita es una entidad y


una arquitectura. Así, si queremos describir una puerta AND en VHDL,
crearemos la entidad:

35
Puerta AND

Hay varias cosas que se deben resaltar:


La entidad no se podría llamar AND ya que es una palabra reservada.
Aunque la entidad se llame PUERTA_AND, simplemente representa su nombre,
pero no su funcionalidad. Sin embargo como es lógico, no es recomendable
ponerle un nombre que no describa su funcionalidad.
Los puertos de entrada se han declarado de tipo std_logic. Este es un tipo de
datos de un solo bit que puede tener valores distintos de ʹ0ʹ y ʹ1ʹ, ver tabla:

36
Puerta AND

Para poder usar el tipo std_logic, hay que indicar que se incluya la librería IEEE y
dentro de ella, el paquete std_logic_1164, esto se hace con las líneas:

Para incluir una librería a un diseño basta con utilizar la palabra reservada LIBRARY
seguida del nombre de la biblioteca a utilizar.
En el caso de querer hacer visible todos los elementos de un paquete se puede
utilizar la palabra reservada ALL.

37
Puerta AND

Ahora declaramos la arquitectura, para describir la funcionalidad de la compuerta:

El nombre de la arquitectura es BEHAVIORAL (comportamental), pero puede utilizar


otro nombre adecuado.
Observe que la asignación de señales se realiza mediante el operador: “<="

38
VHDL

COMPUERTAS LOGICAS
VARIAS PUERTAS
La puertas disponibles en VHDL son: AND, NAND, OR, NOR, XOR, XNOR, NOT.
Para implementar varias puertas, éstas se pueden poner en la misma sentencia,
dentro de la arquitectura, por ejemplo:

NOTA: No se olvide de declarar la entidad respectiva.

40
VARIAS PUERTAS
Existen reglas de precedencia entre los operadores, pero lo más seguro es poner
paréntesis, esto nos asegura que estamos escribiendo correctamente.
Se puede realizar un circuito equivalente utilizando variables auxiliares (signal),
el código equivalente sería:

41
VARIAS PUERTAS
Un concepto muy importante en hardware y por tanto en VHDL es la concurrencia.
Esto implica que no importa que no importa el orden de las sentencias que están
en el cuerpo de una arquitectura, ya que el hardware se ejecuta
concurrentemente: El hardware siempre se está ejecutando.
Así tenemos un código equivalente:

42
VHDL

MULTIPLEXORES
MULTIPLEXOR
El Multiplexor selecciona una salida entre varias alternativas de acuerdo al valor de
selección.
Se puede implementar a partir de una sentencia concurrente que incluya condición:

44
MULTIPLEXOR
Otra manera de implementar un Multiplexor es mediante el uso de procesos.
En estos procesos la declaración de sentencias es secuencial:

Los procesos tiene una lista de sensibilidad, en la que se tienen que incluir todas las
señales leídas dentro del proceso.
45
Multiplexor con cuatro entradas y una
única salida de datos, según se muestra
en su tabla de verdad:
SENTENCIA CASE

La sentencia CASE, tiene que tener


todas las alternativas, pudiendo
haber la alternativa “others” que
engloba todas las alternativas
faltantes.

55
VECTORES

Para los vectores se utiliza el tipo de


dato “STD_LOGIC_VECTOR”, donde
se declara desde el bit mas
significativo hasta el menos
significativo.

56
Ejercicio

Realice el código de programación para el multiplexor de la


figura.

57
Ejercicio
8x1 Multiplexer
In this exercise, let us implement 8x1 Multiplexer using 4x1 Multiplexers and 2x1
Multiplexer. We know that 4x1 Multiplexer has 4 data inputs, 2 selection lines
and one output. Whereas, 8x1 Multiplexer has 8 data inputs, 3 selection lines
and one output.
So, we require two 4x1 Multiplexers in first stage in order to get the 8 data
inputs. Since, each 4x1 Multiplexer produces one output, we require a 2x1
Multiplexer in second stage by considering the outputs of first stage as inputs
and to produce the final output.
Let the 8x1 Multiplexer has eight data inputs I 7 to I0, three selection lines s2, s1 &
s0 and one output Y. The Truth table of 8x1 Multiplexer is shown below.

58
Ejercicio
8x1 Multiplexer

The overall combination


of two 4x1 Multiplexers
and one 2x1 Multiplexer
performs as one 8x1
Multiplexer.

Implement the code


VHDL for this MUX

The Truth table of 8x1 Multiplexer


The block diagram of 8x1 Multiplexer

59
¿Qué es un MUX?
¿Qué es un MUX?
SIGUIENTE SESION:
Evaluación.

62
Bibliografía:
• El arte de programar VHDL: Síntesis lógica para PLD. Universidad de Deusto 2005
2da. edicion.
• VHDL, el arte de programar sistemas digitales, David G, Maxinez

• http://arantxa.ii.uam.es/~cedeps/Tutorial_ISE_Esqu.pdf
• http://eprints.ucm.es/26200/1/intro_VHDL.pdf
• http://studyres.es/doc/1743850/programaci%C3%B3n-de-
sistemas-digitales-con-vhdl

63
GRACIAS

64

También podría gustarte