Está en la página 1de 80

Aspectos Introductorios

Sistemas Digitales II – SDI112


Instituto de Investigación e Innovación en
Electrónica - IIIE.
UNIDAD I: INTRODUCCIÓN AL
DISEÑO DIGITAL.
Objetivos:
• Evaluar las competencias previas para el desarrollo del
curso.
• Conocer los conceptos básicos de diseño digital en
sistemas embebidos.
• Familiarizarse con algunas de las herramientas EDA.
• Analizar la lógica del diseño digital.
• Definir los lenguajes HDL.
• Explicar conceptos del bloque de diseño básico de los
SoC (System-on-Chip).

Kelman Belloso UDB – IIIE – SDI112 2


Agenda.

• ¿Sistemas digitales I – SDI111?


• UNIDAD I: Introducción al diseño digital.
 1.1 Conceptos de Diseño.
 1.2 Introducción a las herramientas EDA.¿Qué es
un sistema embebido, mencione ejemplos?
• ¿Qué hace un compilador?
• ¿Cuales son las fases que se deben de seguir para
desarrollar una aplicación integrable en un sistema
embebido?

Kelman Belloso UDB – IIIE – SDI112 3 3


¿Sistemas digitales I – SDI111?

Kelman Belloso UDB – IIIE – SDI112 4


Sistemas Digitales II (SDI112).
UNIDAD I: Introducción al diseño
digital.

Kelman Belloso UDB – IIIE – SDI112 5


UNIDAD I: Introducción al diseño digital.
UNIDAD I: Introducción al diseño digital.

Video 1_ISE_circuit.
1.1 Conceptos de Diseño.

¿VHDL?
• Very High Speed ICs.
• Hardware.
• Description.
• Language.

Lenguaje descriptor de Hardware de circuitos


integrados de alta velocidad.

Kelman Belloso UDB – IIIE – SDI112 8


1.1 Conceptos de Diseño.
 Con este lenguaje se realiza una descripción precisa y
formal de un circuito electrónico, que permite la
realización de su análisis, simulación y pruebas de
funcionamiento.
 Permite poder compilar el HDL en componentes
físicos electrónicos, como la realización de máscaras
para la construcción de circuitos integrados.
 Originalmente aplicados a sistemas digitales, en la
actualidad tienen extensiones para sistemas mixtos.

Kelman Belloso UDB – IIIE – SDI112 9


1.1 Conceptos de Diseño.
VHDL.
• Creado en 1981 por el departamento de defensa,
luego estandarizado por IEEE.
• Inicialmente creado para sintetizar ASIC.

Verilog.
• Creado por GDA (Gateway Design Automation)
en 1985.
• Inicialmente fue un lenguaje interpretado para
simulación a nivel de compuertas.

Kelman Belloso UDB – IIIE – SDI112 10


1.1 Conceptos de Diseño.

• Verilog / VHDL no es un lenguaje de


programación.
• Verilog / VHDL no permiten por el momento
crear funciones con abstracción de alto nivel:
y(n) = 0.75 y(n-1) + 0.3 x(n);

Kelman Belloso UDB – IIIE – SDI112 11


1.1 Conceptos de Diseño.
Se utiliza para escribir
código del comportamiento
de un diseño y de su
respectiva simulación.

Se utiliza para implementar


el diseño en el hardware
(FPGA, CPLD, ASIC, etc.)

Kelman Belloso UDB – IIIE – SDI112 12


1.1 Conceptos de Diseño.
• PAL: Programmable Logic Array.
• PLA: "Programmable Logic Array" forma parte de
los PLD simples (SPLDs).
• GAL: Generic array logic
• CPLDs: Complex Programmable Logic Devices

Kelman Belloso UDB – IIIE – SDI112 13


1.1 Conceptos de Diseño.
• FPGA: Field Programmable Gate Arrays
• ASIC: Application Specific Integrated Circuits.

Las FPGAs se utilizan en aplicaciones similares a los


ASIC’s sin embargo son más lentas, tienen un mayor
consumo de potencia y no pueden abarcar sistemas tan
complejos como ellos.

Kelman Belloso UDB – IIIE – SDI112 14


Las celdas de un FPGA

Una FPGA (Field Programmable Gate Array) es un


dispositivo semiconductor que contiene bloques de lógica
cuya interconexión y funcionalidad puede ser configurada.

Kelman Belloso UDB – IIIE – SDI112 15


Las celdas de un FPGA

CLB: Configurable Logic Block


LAB: Logic Array Block
Kelman Belloso UDB – IIIE – SDI112 16
Las celdas de un FPGA

Kelman Belloso UDB – IIIE – SDI112 17


Las celdas de un FPGA

Kelman Belloso UDB – IIIE – SDI112 18


Las celdas de un FPGA

Kelman Belloso UDB – IIIE – SDI112 19


1.1.1 Fabricantes.

Kelman Belloso UDB – IIIE – SDI112 20


1.1.2 Fases para el desarrollo de una
aplicación

Tomada de: https://www.xilinx.com/fpga/asic.htm


Kelman Belloso UDB – IIIE – SDI112 21
1.1.2 Fases para el desarrollo de una
aplicación
Especificaciones.
Algoritmos, flujos,
diagramas de estado.
Ecuaciones lógicas y
esquemas.
Compuertas, módulos.
Lógica programable
(VHDL/Verilog).

Kelman Belloso UDB – IIIE – SDI112 22


1.2 Introducción a las herramientas EDA.
EDA: Electronic Design Automation.

Diseño de sistemas mecánicos:


CAD: Computer Assistant Design
CAM: Computer Assistant Machine
CAE: Computer Assistant Engeniering

Lo que se pretende es que todo el proceso de diseño y


fabricación se pueda realizar desde un entorno
computacional.
Kelman Belloso UDB – IIIE – SDI112 23
1.2 Introducción a las herramientas EDA.

Kelman Belloso UDB – IIIE – SDI112 24


1.2 Introducción a las herramientas EDA.

Kelman Belloso UDB – IIIE – SDI112 25


Front-end del ISE

Kelman Belloso UDB – IIIE – SDI112 26


1.2.1 Estructura de un diseño
en VHDL

Kelman Belloso UDB – IIIE – SDI112 27


1.2.1 Estructura de un diseño
en VHDL
• Librerías: es una
colección de piezas de
código comúnmente
usadas, contienen varios
paquetes de las
declaraciones de los tipos
de datos así como las
operaciones que se
pueden realizar con ellos.

Kelman Belloso UDB – IIIE – SDI112 28


1.2.2 Descripción de secciones
de un archivo VHDL

• Entidad: es el nombre del archivo con extensión


VHD de la aplicación que se este desarrollando y
contiene la declaración de los pines de entrada y
salida del circuito a generar.
• Arquitectura: contiene el código VHDL del
conjunto de procesos (funciones o procedimientos)
que describen el comportamiento del circuito. Una
sola entidad puede tener múltiples arquitecturas.

Kelman Belloso UDB – IIIE – SDI112 29


1.2.2 Descripción de secciones de un
archivo VHDL

Entity
I/O

Architecture
funcionalidad

ff.vhd

Kelman Belloso UDB – IIIE – SDI112 30


1.2.2 Descripción de secciones de un
archivo VHDL

ff.vhd
Kelman Belloso UDB – IIIE – SDI112 31
1.2.3 Dirección de los datos de E/S

• Modo in: no se le puede asignar un valor, por lo que sólo


puede ser leído y aparece en el lado derecho de la
asignación de señales (RHS – Right Hand Side).

Kelman Belloso UDB – IIIE – SDI112 32


1.2.3 Dirección de los datos
• Modo out: sólo se le pueden asignar valores, por lo que
puede aparecer en el lado izquierdo de la asignación de
señales (LHS – Left Hand Side).
• Modo inout: se le puede asignar valores y ser leído, por lo
que puede aparecer en ambos lados de una asignación. Está
destinado a ser utilizado sólo para el tipo bidireccional de los
puertos de E/S.
• Modo buffer: es empleado cuando la señal de salida debe
ser usada (leída) internamente.

Kelman Belloso UDB – IIIE – SDI112 33


1.2.4 Clasificación: Objetos de datos
Cada objeto de datos tiene un tipo y una clase.
• La clase indica que se puede hacer con el objeto de
datos.
• Los tipos indican que tipos de datos son albergados
por el objeto de datos.

Kelman Belloso UDB – IIIE – SDI112 34


1.2.4.1 Clasificación: Tipos de datos
• Tipo STD_LOGIC
 8 logic value system (‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’),
estándar IEEE 1164.
‘1’: Uno lógico ‘-’: No importa
‘0’: Cero lógico ‘H’: Débil nivel alto.
‘X’: Desconocido ‘L’: Débil nivel bajo
‘Z’: (no ‘z’) Triestado ‘W’: Débil desconocido

 Tipo de resolución: soporta señales con múltiples


controladores, manejando múltiples valores en una misma
señal, resulta un valor conocido.

Kelman Belloso UDB – IIIE – SDI112 35


1.2.4.1 Clasificación: Tipos de datos
• Tipo STD_ULOGIC
 El mismo sistema de valores (8) como STD_LOGIC,
pero incluye el valor (‘U’ - Indefinido).
 Tipo sin resolver: No es compatible con múltiples
controladores de señal.
 Manejar múltiples valores en una misma señal resulta en
error.

Kelman Belloso UDB – IIIE – SDI112 36


1.2.4.1 Clasificación: Tipos de datos
• Tipo BIT:
 2 valores lógicos posibles (‘0’, ‘1’)
signal a_temp: bit;
 Arreglo de bits bit_vector
signal temp : bit_vector(3 downto 0);
signal temp : bit_vector(0 to 3);

• Tipo BOOLEAN:
 (False, true)

• Tipo INTEGER: (Desde -2,147,483,647 a + 2,147,483,647)


 Valores positivos y negativos en decimal.
signal int_tmp: integer; --Número de 32-bit
signal int_tmp1: integer range 0 to 255; --Número de 8 bit

Kelman Belloso UDB – IIIE – SDI112 37


1.2.4.1 Clasificación: Tipos de datos
• Tipo NATURAL: • Tipo CHARACTER:
 Entero con rango de 0 a  Caracteres ASCII, no
+2,147,483,647. sintetizable.

• Tipo POSITIVE: • Tipo STRING


 Entero con rango de 1 a  Arreglo de caracteres, no
+2,147,483,647. sintetizable.

• Tipo REAL • Tipo TIME


 Números con precisión doble,  Valores que incluyen unidades
punto flotante. -1.0E38 a de tiempo (ej: ps, us, ns, ms,
+1.0E38, no sintetizable. sec, min, hr) , no sintetizable.

Kelman Belloso UDB – IIIE – SDI112 38


1.2.4.1 Clasificación: Tipos de datos

Kelman Belloso UDB – IIIE – SDI112 39


1.2.5 Operadores de asignación
• De asignación: Usados para asignar valores a objetos
(Constantes, Variables y Señales).
<= Asigna un valor a una señal
:= Asigna un valor a una Variable o Constante.
=> Asigna valores a elementos de arreglos.

Nota:
Usar comillas dobles (“ ”) para asignar valores a múltiples bits y
comillas simples (‘ ‘) para asignar valores a un solo bit.

Kelman Belloso UDB – IIIE – SDI112 40


1.2.5 Operadores de asignación
Asignación de señales.

Kelman Belloso UDB – IIIE – SDI112 41


1.2.5 Operadores lógicos
• Lógicos: Usados para las operaciones lógicas (NOT, AND,
NAND, OR, NOR, XOR y XNOR).

Kelman Belloso UDB – IIIE – SDI112 42


SDI111 SDI112

Entity I/O

Architecture
funcionalidad

x <= a or b;
y <= a and b;
z <= a xor b;

Kelman Belloso UDB – IIIE – SDI112 43


Ejemplo 1 de código VHDL
library IEEE; --Uso de Librería IEEE
use IEEE.STD_LOGIC_1164.ALL; --Estándares lógicos de la Librería IEEE

entity SDI112_Basicgates is --Nombre de la entidad


Port ( a : in STD_LOGIC; --Declaración de variables a, b
b : in STD_LOGIC; --como entradas
x : out STD_LOGIC; --Declaración de variables x, y, z
y : out STD_LOGIC; --como salidas
z : out STD_LOGIC);
end SDI112_Basicgates; --Finalización de la entidad

architecture Behavioral of SDI112_Basicgates is


--Descripción del comportamiento de la
begin --entidad
x <= a or b; --Compuerta or con entradas a y b, salida x
y <= a and b; --Compuerta and con entradas a y b, salida y
z <= a xor b; --Compuerta exor con entradas a y b, salida z
end Behavioral; --Finalización del comportamiento

Kelman Belloso UDB – IIIE – SDI112 44


Ejemplo 1 de código VHDL

Video 2_ Intro_ISE.

Kelman Belloso UDB – IIIE – SDI112 45


1.2.6 Banco de pruebas
Permite verificar que el código VHDL funcione.

Tomado de: software CircuitMaker, ejemplo 4x4.ckt


Kelman Belloso UDB – IIIE – SDI112 46
1.2.6 Banco de pruebas
Permite verificar que el código VHDL funcione.

Kelman Belloso UDB – IIIE – SDI112 47


1.2.6 Banco de pruebas

Kelman Belloso UDB – IIIE – SDI112 48


1.2.6 Banco de pruebas

Kelman Belloso UDB – IIIE – SDI112 49


1.2.6 Banco de pruebas

Kelman Belloso UDB – IIIE – SDI112 50


1.2.6 Banco de pruebas

Video 3_ ISE_TestBench.

Kelman Belloso UDB – IIIE – SDI112 51


1.2.6 Banco de pruebas

Kelman Belloso UDB – IIIE – SDI112 52


1.2.6 Banco de pruebas

 Entradas: a, b
 Salidas: x, y, z (recuadro gris)

Kelman Belloso UDB – IIIE – SDI112 53


Video_2: TestBench - Xilinx

Kelman Belloso UDB – IIIE – SDI112 54


Ejemplo 2 – Semi-sumador binario

Entrada Salida
a b CO S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Kelman Belloso UDB – IIIE – SDI112 55


Ejemplo 2 – Semi-sumador binario
library IEEE; --Uso de Librería IEEE
use IEEE.STD_LOGIC_1164.ALL; --Estándares lógicos de la Librería IEEE

entity Semisumador is --Nombre de la entidad


Port ( a : in STD_LOGIC; --Declaración de variables a, b
b : in STD_LOGIC; --como entradas
S : out STD_LOGIC; --Declaración de salidas: S y Co
Co : out STD_LOGIC);
end Semisumador; --Finalización de la entidad

architecture Behavioral of Semisumador is --Descripción del comportamiento de la


begin --entidad
Co <= a and b;
S <= a xor b;
end Behavioral; --Finalización del comportamiento

Kelman Belloso UDB – IIIE – SDI112 56


Ejemplo 3 – Sumador completo
 La principal diferencia entre un sumador completo y un
semisumador es que el sumador completo admite un
valor que represente un acarreo de entrada.

Kelman Belloso UDB – IIIE – SDI112 57


Ejemplo 3 – Sumador completo

Kelman Belloso UDB – IIIE – SDI112 58


Ejemplo 3 – Sumador completo

Kelman Belloso UDB – IIIE – SDI112 59


Ejemplo 3 – Sumador completo

Kelman Belloso UDB – IIIE – SDI112 60


Ejemplo 3 – Sumador completo
library IEEE; --Uso de Librería IEEE
use IEEE.STD_LOGIC_1164.ALL; --Estándares lógicos de la Librería IEEE

entity Sumadorcompleto is --Nombre de la entidad


Port ( a : in STD_LOGIC; --Declaración de variables a, b, Ci
b : in STD_LOGIC; --como entradas
Ci : in STD_LOGIC;
S : out STD_LOGIC; --Declaración de salidas: S y Co
Co : out STD_LOGIC);
end Sumadorcompleto; --Finalización de la entidad

architecture Behavioral of Sumadorcompleto is


begin --Descripción del comportamiento de la entidad
Co <= (a and b) or (Ci and (a xor b));
S <= a xor b xor Ci;
end Behavioral; --Finalización del comportamiento

Kelman Belloso UDB – IIIE – SDI112 61


Aplicaciones de compuertas lógicas en
imágenes digitales (binarias).

Kelman Belloso UDB – IIIE – SDI112 62


Imágenes digitales en MATLAB
• Las imágenes digitales están compuestas por un
conjunto rectangular de píxeles. Cada píxel proporciona
información visual acerca de una pequeña región
rectangular de la imagen.

• El sistema de coordenadas empleado para la ubicación


de cada píxel de la imagen se muestra a continuación.

Kelman Belloso UDB – IIIE – SDI112 63


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 64


Imágenes digitales en MATLAB
• Una imagen cualquiera en matemática se representa
como:

Kelman Belloso UDB – IIIE – SDI112 65


Imágenes digitales en MATLAB
• En Matlab se representa como:

Kelman Belloso UDB – IIIE – SDI112 66


Imágenes digitales en MATLAB
Imágenes binarias
• En las imágenes binarias, cada píxel puede
tomar sólo uno de dos valores; generalmente,
esos valores son negro (0) y blanco (1). Se
almacenan en archivos utilizando un bit por cada
píxel; sin embargo, al cargarlas en MATLAB,
cada elemento del arreglo de datos se almacena
con un número entero que puede ser de tipo
uint8 o double.
Kelman Belloso UDB – IIIE – SDI112 67
Imágenes digitales en MATLAB

imshow(a) sirve
para visualizar la
imagen en
MATLAB

Kelman Belloso UDB – IIIE – SDI112 68


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 69


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 70


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 71


Imágenes digitales en MATLAB

img1 img2

Kelman Belloso UDB – IIIE – SDI112 72


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 73


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 74


Imágenes digitales en MATLAB

Kelman Belloso UDB – IIIE – SDI112 75


Investigar.
1. Procedimientos aritméticos:
 Suma binaria
 Suma BCD.
 Resta binaria (complemento: A1 y A2).
 Resta BCD.
 Multiplicación binaria.
 División Binaria.
 Paridad par.
 Paridad impar.

Kelman Belloso UDB – IIIE – SDI112 76


Bibliografía.

Kelman Belloso UDB – IIIE – SDI112 77


Bibliografía
Canal de Youtube
 https://www.youtube.com/channel/UCFOzqdwTJ-
DlwTmSe0p1lXw
ISE Circuit:
 https://www.youtube.com/watch?v=kx9ql74iWME
Intro ISE:
 https://www.youtube.com/watch?v=fnWVHz488Mw
ISE TestBench:
 https://www.youtube.com/watch?v=Ww6lO_mUVEI

Kelman Belloso UDB – IIIE – SDI112 78


Bibliografía

 http://arantxa.ii.uam.es/~cedeps/Tutorial_ISE_Esqu.pdf
 Circuit Design with VHDL(Pedroni MIT 2004).pdf
 Fundamentos de logica digital, con diseno VHDL -
Stephen Brown, Zvonko Vranesic - 2da Ed.pdf
 http://www2.dis.ulpgc.es/~itis-
sd/Transparencias0607/Tema13.pdf

Kelman Belloso UDB – IIIE – SDI112 79


Muchas Gracias por su atención.

Kelman Belloso UDB – IIIE – SDI112 80

También podría gustarte