00:00:01
muy bien Este es un video para los
00:00:03
estudiantes de sistemas digitales de la
00:00:05
universidad industrial de Santa
00:00:08
ander el propósito de este video es dar
00:00:10
una introducción a
00:00:12
vhdl no pretende ser una descripción
00:00:14
completa de vhdl sino más bien eh
00:00:18
equipar a los estudiantes con los
00:00:20
conocimientos necesarios para diseñar
00:00:23
circuitos combinacionales por ahora
00:00:26
HM y es un enfoque muy práctico decir lo
00:00:31
que se usa comúnmente en la práctica
00:00:33
porque vhdl es bastante amplio y no
00:00:38
queremos hacer un recorrido por todo lo
00:00:39
que es el lenguaje sino más bien por lo
00:00:41
que comúnmente usamos y desde nuestra
00:00:44
experiencia lo que creemos que es eh
00:00:47
fundamental muy bien De dónde nacen los
00:00:51
lenguajes de descripción de Hardware eh
00:00:55
los primeros diseños de circuitos se
00:00:57
hicieron utilizando eh lenguajes que
00:01:00
permitían describir la interconexión en
00:01:03
los entre los componentes Y de esa forma
00:01:05
se determinaba el funcionamiento del
00:01:07
circuito hdl los lenguajes hdl lo que
00:01:10
buscan eh básicamente es
00:01:14
eh No Describir el circuito por sus
00:01:17
interconexiones sino más bien por su
00:01:19
funcionamiento eso fue algo que resultó
00:01:22
ser muy positivo y por eso
00:01:24
eh ha sido de pues ha tenido tanta
00:01:28
trascendencia este tipo de lenguajes
00:01:30
existen muchos lenguajes de descripción
00:01:31
de
00:01:32
Hardware los dos más famosos son o más
00:01:36
usados son berock Y dhdl en este caso
00:01:40
vamos a concentrarnos en
00:01:46
vhdl un diseño en vhdl está compuesto
00:01:50
Todos los
00:01:51
diseños digitales en vhdl están
00:01:54
compuestos por dos partes principales
00:01:57
que son la entidad y la arquitectura ura
00:02:00
la entidad Define el el las entradas y
00:02:05
las salidas del circuito es decir como
00:02:07
la caja
00:02:08
negra que que envuelve el circuito en
00:02:11
esa básicamente lo que hacemos Es
00:02:12
definir entradas y salidas la
00:02:15
arquitectura es la que permite definir
00:02:17
el funcionamiento del módulo o del
00:02:20
diseño
00:02:23
digital vamos a ver la entidad
00:02:26
eh supongamos que tenemos un sumador un
00:02:30
medio no perdón un sumador completo de
00:02:32
un bit tiene tres entradas el acaro de
00:02:35
entrada los dos
00:02:36
operandos la suma y el acarreo de salida
00:02:39
eh De esta manera se describe el el
00:02:43
sumador las palabras que están en azules
00:02:46
son palabras reservadas
00:02:48
Eh es bueno mencionar que no es
00:02:51
necesario aprenderse estos estas
00:02:54
palabras porque todos los softwares hoy
00:02:56
eh digamos ofrecen templates que hacen
00:02:59
eso de manera automática
00:03:03
eh aquí definimos dentro de Port entre
00:03:07
estos dos paréntesis definimos eh las
00:03:10
entradas y las
00:03:12
salidas cada entrada y cada salida
00:03:15
eh tiene tres partes principales el
00:03:19
nombre el modo y el tipo vamos a revisar
00:03:24
parte por parte Cómo se deben declarar
00:03:26
los nombres qué modos hay y qué tipos
00:03:28
hay
00:03:30
Entonces los nombres y todos los
00:03:32
identificadores no solo los nombres de
00:03:33
las entradas y las salidas en vhdl sino
00:03:35
todos los identificadores que usemos
00:03:37
dentro de una descripción de Hardware
00:03:40
deben cumplir con estas reglas deben ser
00:03:42
lo letras números y guion bajo no más el
00:03:45
primer carácter debe ser una letra El
00:03:47
último carácter No puede ser un guion
00:03:49
bajo no pueden haber dos guiones bajos
00:03:51
seguidos y bhl no es sensible a
00:03:54
mayúsculas y minúsculas es decir que
00:03:57
salida uno escrito en minúsculo es igual
00:03:58
a salida uno escrito el mayúsculo a una
00:04:00
combinación de ambas como vemos aquí en
00:04:02
la última
00:04:04
parte un pequeño ejercicio tratemos de
00:04:06
pensar Cuál de estos de estos eh 2 cu si
00:04:10
ejemplos están
00:04:13
[Música]
00:04:21
bien entonces revisemos el segundo está
00:04:25
mal porque está utilizando un número el
00:04:28
símbolo de número el tercero está mal
00:04:31
porque no puede terminar en diom bajo el
00:04:34
cuarto porque no puede empezar por un
00:04:36
número El sexto porque hay dos guiones
00:04:38
bajos seguidos
00:04:44
bien el modo hay muchos modos varios
00:04:48
modos Pero los dos más usados por lo
00:04:52
menos los que nosotros hemos usado en
00:04:53
los diseños que hemos desarrollado aquí
00:04:55
al interior de la universidad son de
00:04:56
modo in Y de modo
00:04:58
out ines son señales de entrada no se
00:05:01
les puede asignar ningún valor dentro
00:05:03
del programa es decir nunca deben
00:05:05
aparecer al lado izquierdo de una
00:05:06
asignación siempre deben estar al lado
00:05:08
derecho los modos out son señales de
00:05:10
salida no puedes leérselo puede
00:05:13
escribirse cosa es decir no pueden ser
00:05:14
usadas a la derecha de una asignación
00:05:17
ahorita revisamos esto eh con un poquito
00:05:19
más de detalle Entonces ya hemos visto
00:05:22
el nombre el modo nos falta el tipo el
00:05:26
tipo es Qué valores puede tomar eh esa
00:05:29
entrada o o esa salida los cuatro más
00:05:33
usados son bit que toma valores de c y
00:05:37
de uno bit vector que es un vector de
00:05:40
ceros y de unos St de logic que es un
00:05:42
estándar lógico y St de logic vector que
00:05:46
es un estándar lógico el estándar como
00:05:50
como lo dice su nombre hoy día es que
00:05:52
todos los diseños se hagan utilizando St
00:05:54
logic es decir B bit y b vector casi no
00:05:57
se usan eh en algunas ocasiones se usan
00:06:00
y se usan otros pero digamos que por
00:06:02
ahora nos queremos enfocar en estd
00:06:04
[Música]
00:06:06
logica muy bien el standar logic puede
00:06:10
tomar todos esos valores que están ahí
00:06:13
pero nosotros en el curso solo Vamos a
00:06:16
usar el cero lógico el uno lógico alta
00:06:20
impedancia que es cuando queremos
00:06:21
desconectar algo eso conecta una
00:06:24
resistencia altísima por ejemplo a la
00:06:27
entrada de una compuerta Eso quiere
00:06:28
decir que está desconectada
00:06:30
y Don care que es una condición no
00:06:32
importa el
00:06:34
resto se utilizan en simulación por
00:06:37
ejemplo cuando tú eh haces una
00:06:39
simulación y algo no s no encuentra un
00:06:42
valor inicial entonces eh aparece una u
00:06:45
o x cuando se pierde no es capaz de
00:06:48
asignar un valor entonces va a aparecer
00:06:49
x pero los sintetizables es decir los
00:06:52
que uno usa para implementar físicamente
00:06:55
son los cuatro que están subrayados
00:06:58
aquí entonces miremos nuevamente la
00:07:00
entidad de un sumador supongamos que
00:07:02
tenemos un sumador de 4 bits Entonces
00:07:05
tenemos tres entradas y dos salidas y
00:07:07
ahí están declaradas la entrada a es de
00:07:10
modo in std logic vertos y aquí del bit
00:07:14
3 al bit c0 hay 4 bits cuando yo escribo
00:07:19
down To estoy diciendo que de los 4at
00:07:22
bits el de la izquierda el bit 3 es el
00:07:24
más significativo y el de la derecha el
00:07:27
bit 0 es el más menos significativo yo
00:07:30
pudiera Escribir 0 tu 3 y estaría
00:07:33
cambiando el orden del bit más
00:07:35
significativo a la izquierda y el menos
00:07:38
significativo perdón y el más
00:07:40
significativo a la derecha Okay Esto me
00:07:43
determina el orden del de Cuál es el más
00:07:46
significativo esto no necesitan porque
00:07:49
es solo un solo bit el c in y el c
00:07:52
out eh También es útil utilizar
00:07:56
librerías y paquetes Estos son colección
00:07:58
de unidades de diseño compiladas
00:08:00
previamente que se pueden usar después y
00:08:02
básicamente lo que permiten es hacer el
00:08:04
agilizar el uso del diseño Por ejemplo
00:08:06
si yo utilizo la librería eh aritmética
00:08:09
cuando yo vaya a hacer una suma no tengo
00:08:11
que hacer una suma utilizando sumadores
00:08:13
medios sumadores completos todo eso sino
00:08:14
simplemente le doy más y él ya entiende
00:08:16
que lo que está haciendo es una
00:08:17
aritmética una una suma aritmética Pero
00:08:20
él por dentro tiene allá hecho un
00:08:23
sumador utilizando compuertas lógicas
00:08:26
Ese es el propósito
00:08:28
de
00:08:29
de las librerías muy
00:08:33
bien Ahora la arquitectura es la que
00:08:36
determina el comportamiento del diseño
00:08:38
se describe usando las sentencias
00:08:40
propias del lenguaje bhl digamos que
00:08:43
para la entidad no se requiere saber bhl
00:08:45
porque los softwares lo hacen
00:08:48
automáticamente pero la arquitectura que
00:08:50
es es la que dice qué va a hacer el
00:08:52
circuito ese Sí la debo hacer yo vamos a
00:08:56
mirar el Hola mundo en bhl que es una
00:08:59
compuerta on una compuerta cualquier
00:09:01
compuerta lógica es lo que se conoce con
00:09:03
nombre de H
00:09:04
[Música]
00:09:06
mdl entonces
00:09:08
eh vamos a mirar parte por parte esta
00:09:11
esta descripción es una descripción
00:09:13
completa de una compuerta or lo primero
00:09:15
que aparece aquí son comentarios cuando
00:09:18
yo estos dos
00:09:20
guiones eso es un comentario para pues
00:09:23
para comentar cualquier programa como se
00:09:25
hace Generalmente con cualquier programa
00:09:28
después tenemos librerías cierto Esas
00:09:30
son las estándar las que siempre debemos
00:09:32
a usar después viene la entidad y
00:09:36
después viene la
00:09:37
arquitectura miremos la arquitectura
00:09:40
miros un poquito aquí la entidad mire
00:09:42
que este nombre se lo asigno yo con
00:09:44
puerta or y con puertor Estos también
00:09:47
son los entradas que yo le asigno y los
00:09:51
modos y el
00:09:53
tipo aquí en arquitectura Este es el
00:09:56
nombre de la arquitectura aquí es el
00:09:58
comportamiento de la comptador esto se
00:10:01
le puede cambiar yo aquí le puedo poner
00:10:03
Cualquier
00:10:04
nombre cierto generalmente se le coloca
00:10:06
compartamiento de la compador es y entre
00:10:10
y después del begin Y antes del en ahí
00:10:14
en esa parte va escrito todo lo que
00:10:15
quiera entonces aquí Simplemente digo
00:10:17
salida Esta es la forma de asignar
00:10:19
ahorita lo miramos con más detenimiento
00:10:21
entonces estoy diciendo que a la salida
00:10:23
le haga entrada uno entrada dos or
00:10:26
entrada dos y así que básicamente es el
00:10:29
el diseño Ahí está repetimos
00:10:33
librerías entidad y arquitectura
00:10:36
[Música]
00:10:38
bien antes de empezar a hacer digamos un
00:10:41
ejemplo con un poquito más elaborado
00:10:44
vamos a mirar un concepto muy importante
00:10:45
en bhl que es el uso de las
00:10:48
señales vamos a mirar otro eh supongamos
00:10:51
que queremos hacer este diseño que está
00:10:56
ahí Entonces vamos a mirar
00:10:59
una vamos a hacer la descripción de esto
00:11:02
en
00:11:03
vhdl con un error Y usted va a tratar de
00:11:12
[Música]
00:11:13
[Aplausos]
00:11:14
[Música]
00:11:26
identificarlo efectivamente si usted se
00:11:30
da cuenta nosotros estamos asignando
00:11:34
estamos salida auxiliar es de modo
00:11:38
salida y lo estoy leyendo es decir estoy
00:11:41
tomando ese valor y lo estoy leyendo eso
00:11:44
no se puede
00:11:45
hacer es como si como si salida está es
00:11:48
un pin que está por
00:11:50
fuera que está hacia fuera de la fpga y
00:11:53
yo no puedo leerlo de allá afuera porque
00:11:55
está afuera es un pin que va para afuera
00:11:57
Esa no es la razón pero es una forma
00:11:58
forma didáctica de decirlo Entonces si
00:12:02
cuando pasa
00:12:03
eso el sintetizador me va a decir lo
00:12:06
siguiente el parámetro de salida el
00:12:09
parámetro salida auxiliar de modo out no
00:12:12
puede ser asociado con un parámetro de
00:12:14
modo in el proceso de sintaxis falló
00:12:19
entonces habrá que corregirlo cómo se
00:12:22
hace la
00:12:25
corrección se hace de la siguiente
00:12:27
manera quito ese auxiliar que está allá
00:12:30
y fíjense que a y b son conexiones
00:12:34
externas es decir vienen de afuera F va
00:12:38
viene de afuera hacia dentro es una es
00:12:41
una entrada y F va hacia afuera pero
00:12:43
fíjese que esta lo que nosotros
00:12:46
anteriormente habíamos llamado salida
00:12:48
auxiliar Aquí esta salida auxiliar es
00:12:51
algo
00:12:52
interno entonces esa salida
00:12:55
auxiliar esa esas salidas auxiliar esa
00:12:59
es esa ese cable internit nosotros lo
00:13:01
podemos direccionar llama como con una
00:13:03
señal cierto y se describe así señal
00:13:08
auxiliar uno de modo std logic es un
00:13:11
solo bit y de esta manera asignamos a
00:13:16
ese auxiliar uno pegado ahí a ese punto
00:13:18
a or B Es decir esta parte de aquí mire
00:13:21
a or B es igual auxiliar un y y ese
00:13:25
auxiliar un sí lo podemos usar como
00:13:30
para hacer la con
00:13:32
b Eso sí se puede
00:13:36
hacer muy bien Ahora vamos a
00:13:40
revisar Esta es como la introducción de
00:13:44
vhdl pero queremos obviamente aprender a
00:13:47
hacer circuitos Entonces los primeros
00:13:50
circuitos que vamos a aprender a hacer
00:13:52
utilizando vhdl son circuitos
00:13:55
combinacionales
00:13:57
eh como sabemos un circuito
00:14:00
combinacional su salida es solo función
00:14:01
de la
00:14:03
entrada de no tiene memoria para las
00:14:06
mismas entradas y ocurren las mismas
00:14:08
salidas y para hacer estos circuitos
00:14:10
Existen tres sentencias básicas de
00:14:12
asignación realmente son
00:14:14
dos he puesto aquí tres
00:14:19
eh Y eh Son dos que son sentencia de
00:14:24
selección de señal with Select y
00:14:25
sentencia de asignación condicional pero
00:14:27
yo quiero empezar por la sentencia de
00:14:29
asignación
00:14:30
simple si nosotros aprendemos estas dos
00:14:33
sentencias Cómo funcionan De qué manera
00:14:37
se implementan en
00:14:39
Hardware eh creo que podremos hacer
00:14:42
buenos diseños combinacionales o Todos
00:14:43
los diseños combinacionales aquí hay que
00:14:45
hacer una salvedad Y es que cuando usted
00:14:47
está describiendo un circuito en bhl no
00:14:49
está describiendo algo O sea que su
00:14:51
objetivo no es describir describir un
00:14:53
código sin errores
00:14:55
sintácticos No su objetivo es diseñar un
00:14:58
un circuito y y el diseñador tiene que
00:15:01
saber tiene que estar pensando en en
00:15:03
Hardware es decir cuando yo estoy
00:15:06
describiendo esto qué es lo que estoy
00:15:08
haciendo en Hardware eso es muy
00:15:10
importante los errores comunes es cuando
00:15:13
se piensa que esto es un lenguaje de
00:15:14
programación Y esto es un lenguaje de
00:15:15
descripción de har Entonces el objetivo
00:15:18
de esta eh de este primer curso también
00:15:21
es que aprendamos esta primera sentencia
00:15:24
aprendamos a trabajar esta primera
00:15:25
sentencia o estas dos primeras
00:15:27
sentencias eh bien okay la primera es
00:15:32
muy sencilla es decir cuando asigna una
00:15:34
entrada una salida y se hace con menor
00:15:36
que e igual Eso quiere decir que lo que
00:15:39
está en entrada uno que es una entrada
00:15:40
lo conecto a la salida entrada uno puede
00:15:43
ser una entrada una señal y salida puede
00:15:45
ser una salida o una señal fíjese que
00:15:48
las señales pueden ir a ambos lados como
00:15:50
vimos en el ejemplo
00:15:52
anterior ahora la sentencia de selección
00:15:54
de señal with Select la sintaxis es muy
00:15:58
sencilla básicamente es con la variable
00:16:01
de selección haga lo siguiente asigne a
00:16:04
la salida el valor uno cuando el valor
00:16:06
de la variable sea el valor de esta
00:16:09
variable sea un valor determinado o el
00:16:12
valor dos cuando sea otro valor
00:16:13
determinado o el valor 3 para los demás
00:16:18
valores supongamos que queremos
00:16:21
implementar un
00:16:23
circuito combinacional estándar que es
00:16:26
una tabla de verdad todos los circuitos
00:16:28
combinaci se pueden describir como una
00:16:30
tabla de verdad
00:16:31
Entonces cómo se haría con con
00:16:36
esta sentencia Wi pues tenemos nuestra
00:16:40
entidad con la entrada que es de dos
00:16:43
bits y con la salida que es de un solo
00:16:45
bit Aquí empieza la arquitectura el
00:16:48
comportamiento de tabla un es el
00:16:50
siguiente con a nuestra entrada haga F =
00:16:55
a 1 cuando sea
00:16:57
00 c cuando sea 01 a un cuando sea un y
00:17:03
a un cuando sea los otros Yo aquí podría
00:17:06
escribir uno uno pero se recomienda
00:17:09
poner buers básicamente es eso ahora la
00:17:13
pregunta importante es cómo un
00:17:16
sintetizador interpreta la sentencia
00:17:20
with es decir qué es lo queo cómo lo
00:17:24
lleva al Hardware la sentencia es un
00:17:30
básicamente el sintetizador lo que coges
00:17:33
allá dentro del
00:17:34
dispositivo dentro del PLD dentro del
00:17:37
fpga el toma un mu del fpga y coloca la
00:17:41
tabla
00:17:42
ahí entonces fíjese que cuando esto sea
00:17:46
00 estoy conectando esto con esto y voy
00:17:48
a tener uno cuando sea 0 1 esto con esto
00:17:51
cuando sea 10 esto con esto y cuando sea
00:17:53
1 1 esto con esto entonces No podemos
00:17:57
perder de de vista ese concepto
00:18:01
que el Wi Select es una eh sentencia que
00:18:08
implementa utilizando un
00:18:10
multiplexor bien miremos otro ejemplo
00:18:12
por ejemplo la Lu una unidad lógico
00:18:16
aritmética con una que tiene una entrada
00:18:19
de selección de operación de dos bits
00:18:21
tiene una entrada uno un operando uno un
00:18:23
operando dos y la salida Aquí está el
00:18:27
comportamiento de es luud Y entonces le
00:18:31
decimos con cel haga salida igual a
00:18:33
entrada un más entrada 2 cuando sea 00
00:18:36
es decir cuando sea 00 quiero que sume
00:18:38
cuando c sea 01 quiero que reste cuando
00:18:41
c sea 10 quiero que haga laor y cuando
00:18:45
sea los demás o sea un un que es el
00:18:47
único que queda haga la si yo sintetizo
00:18:50
eso y le digo al Software que me
00:18:54
interprete qué fue lo que él entendió
00:18:57
que yo le había dicho él me va a votar
00:18:59
Este gráfico en la descripción rtl y
00:19:01
como podemos ver ese gráfico pues es un
00:19:05
multiplexor cuya entrada de selección es
00:19:08
cel y en la cuando cel sea 00 podemos
00:19:13
ver que lo que hay es una suma cuando
00:19:16
sea 0 1 lo que direccion es la resta
00:19:19
cuando sea 10 la or y cuando sea 1 1 la
00:19:23
básicamente es eso en este video lo que
00:19:26
hemos hecho es ver una introducción muy
00:19:28
básica lo que es
00:19:30
vhdl hemos descrito Cuáles son las dos
00:19:33
los dos principales principales
00:19:36
componentes de una descripción en bhl
00:19:38
que son la entidad y la
00:19:41
arquitectura hemos aprendido Cómo se
00:19:43
hacen las entidades de manera cómo se
00:19:45
describen las entidades de manera
00:19:48
correcta y como en la
00:19:54
arquitectura Cómo hacer arquitecturas de
00:19:56
circuitos combinacional
00:19:59
mediante la instrucción
00:20:01
with y básicamente eh lo que se quiere
00:20:06
recordar es que cuando hacemos una
00:20:08
implementación con wiset estamos
00:20:11
implementando el circuito utilizando un
00:20:14
multiplexor Eso es todo por esta vez y
00:20:19
muchas
00:20:23
gracias