Semana 4,5 y 6

Report
DEPARTAMENTO DE ELECTRÓNICA
DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN
CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIRÍAS
UNIVERSIDAD DE GUADALAJARA
I7268
M.C. Rubén E. Marmolejo
[email protected]
Programación de sistemas
reconfigurables
1
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
[email protected]
Temas del día
2
Lecturas recomendadas
• Circuit Design with VHDL
• Fundamentals of Digital Logic with VHDL
Design.
•
•
•
•
Stephen Brown
Zvonko Vranesic
McGrawHill
Third edition
M.C. Rubén E. Marmolejo
[email protected]
• Volnei A. Pedroni
• MIT Press
3
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
[email protected]
Temas del día
4
• Es cualquier lenguaje de una clase de lenguajes
utilizado en la descripción y diseño formal de
circuitos electrónicos y mas comúnmente de lógica
digital.
• HDL (Hardware Description Language) Lenguaje
que describe Hardware
M.C. Rubén E. Marmolejo
[email protected]
Introducción a los lenguajes HDL
5
https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Ha
rdware_description_language.html
Introducción a los lenguajes HDL
AHDL
ABEL
AHPL
Bluespec
ELLA
HHDL
Hydra
ParC
•
•
•
•
•
•
•
•
•
JHDL
KARL
Lava
Lola
MyHDL
PALASM
PSHDL
RHDL
THDL++
• VHDL
• Verilog
M.C. Rubén E. Marmolejo
[email protected]
•
•
•
•
•
•
•
•
6
https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Ha
rdware_description_language.html
VHDL
Verilog
• Más común
• Más formal
• Estándar
IEEE
• Segundo más
común
• Mas fácil de
enseñar
• Estándar IEEE
M.C. Rubén E. Marmolejo
[email protected]
Introducción a los lenguajes HDL
7
https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Ha
rdware_description_language.html
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Xilinx vs Altera
8
http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Altera
9
http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Altera
10
http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Xilinx
11
http://www.xilinx.com/products/silicon-devices/fpga/
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Xilinx
12
http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Aplicaciones
13
http://www.lemote.com/en/products/cpu/201
0/0310/114.html
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Aplicaciones
14
http://www.lemote.com/en/products/cpu/201
0/0310/114.html
Introducción a los lenguajes HDL
M.C. Rubén E. Marmolejo
[email protected]
Dispositivos reprogramables
15
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
[email protected]
Temas del día
16
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
[email protected]
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
17
VHDL - VHSIC Hardware Description Language
Modelos de programación (formas de programar)
•  =∙++
Comportamental
M.C. Rubén E. Marmolejo
[email protected]
Estructural
18
VHDL - VHSIC Hardware Description Language
Modelos de programación (formas de programar)
Estructural
•  =∙++
M.C. Rubén E. Marmolejo
[email protected]
Comportamental
Implementación
19
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
[email protected]
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
20
VHDL -
Entidad
La entidad define la cantidad y tipo de entradas
que tendrá el sistema digital.
¿Cuántas entradas y salidas tiene el diagrama?
M.C. Rubén E. Marmolejo
[email protected]
Ejemplo de un diagrama lógico
21
VHDL -
Entidad
Ejemplo de un entidad
Entity Entidad_TACO is
(
M.C. Rubén E. Marmolejo
[email protected]
port
a: in std_logic;
b: in std_logic;
f: out std_logic
);
End Entidad_TACO;
?
22
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
[email protected]
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
23
M.C. Rubén E. Marmolejo
[email protected]
VHDL Bibliotecas
¿std_logic?
24
M.C. Rubén E. Marmolejo
[email protected]
Señales lógicas
25
M.C. Rubén E. Marmolejo
[email protected]
Señales lógicas
Fig1. Rangos de valores de una señal lógica
26
M.C. Rubén E. Marmolejo
[email protected]
Señales lógicas
Fig 2. Rangos de valores de una señal lógica en valores de
voltaje.
27
VHDL -
Bibliotecas
Las bibliotecas contienen definiciones y elementos
útiles en el diseño de sistemas digitales por
software.
Como los valores lógicos necesarios para
comunicar a un sistema digital.
M.C. Rubén E. Marmolejo
[email protected]
¿std_logic?
28
VHDL -
Bibliotecas
Ejemplo de una biblioteca común en VHDL.
Library ieee;
M.C. Rubén E. Marmolejo
[email protected]
Use ieee.std_logic_1164.all;
Declaración de las representaciones de valores lógicos
'U' 'X' '0' '1' -
Ejemplo: std_logic
'Z' - alta impedancia.
valor sin inicializar.
'W' - señal débil 0 o 1.
desconocido.
'L' - señal débil 0.
0 lógico.
'H'
señal débil 1.
1 lógico.
'-' - no importa.
29
Ver
VHDL -
0,1
4 bits (0000-1111) ,(0-15) , (0-F)
8 bits (00000000-11111111),(0-255)
MSB
Posición
#
LSB
3
2
1
0
1
0
1 ∗ 23 = 8
0
1 ∗ 21 = 2
0
8
MSB
LSB
#
0
1
Posición
M.C. Rubén E. Marmolejo
[email protected]
Bit
Nibble
Byte
Bibliotecas
3
2
1
0
1
0
1
0
1 ∗ 20 = 1
0
1 ∗ 22 = 4
0
30
5
Ver
Bibliotecas
Library ieee;
Use ieee.std_logic_1164.all;
Ejemplo: std_logic
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
¿Cuál es el máximo valor en binario que
puede representar una entrada o salida
std_logic?
Respuesta: 1
31
Ver
VHDL -
Entidad
Ejemplo de un entidad
Entity Entidad_TACO is
(
M.C. Rubén E. Marmolejo
[email protected]
port
a: in std_logic;
b: in std_logic;
f: out std_logic
);
End Entidad_TACO;
?
32
Bibliotecas
Library ieee;
Use ieee.std_logic_1164.all;
Ejemplo: std_logic
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
¿Cómo puedo representar una nibble de
información utilizando std_logic?
Respuesta: con otro elemento de la
biblioteca std_logic_vector
33
Ver
Bibliotecas
MSB
Posición
#
LSB
3
2
1
0
1
0
1
0
1 ∗ 23 = 8
0
1 ∗ 21 = 2
0
8
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
34
Ver
Bibliotecas
LSB
Posición
#
MSB
3
2
1
0
1
0
1
0
1 ∗ 20 = 1
0
1 ∗ 22 = 4
0
5
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
35
Ver
VHDL -
Bibliotecas+entidad: ejemplo
M.C. Rubén E. Marmolejo
[email protected]
Entradas: botones, contactos, sensores, etc.
Salidas: pantallas, bocinas, motores, etc.
¿# salidas?
¿# entradas?
Decodificador BCD a 7 segmentos
36
M.C. Rubén E. Marmolejo
[email protected]
VHDL Bibliotecas+entidad: ejemplo
37
M.C. Rubén E. Marmolejo
[email protected]
VHDL Bibliotecas+entidad: ejemplo
38
M.C. Rubén E. Marmolejo
[email protected]
VHDL Bibliotecas+entidad: ejemplo
39
M.C. Rubén E. Marmolejo
[email protected]
VHDL Bibliotecas+entidad: ejemplo
40
VHDL -
Bibliotecas+entidad: ejemplo
M.C. Rubén E. Marmolejo
[email protected]
Entradas: botones, contactos, sensores, etc.
Salidas: pantallas, bocinas, motores, etc.
¿# salidas?
¿# entradas?
Decodificador BCD a 7 segmentos
41
VHDL -
bibliotecas+entidad: ejemplo
Entidad del diagrama anterior
port
(
BCD: in std_logic_vector(3 downto 0);
SAL: out std_logic_vector(6 downto 0);
);
M.C. Rubén E. Marmolejo
[email protected]
Entity Entidad_TACO is
End Entidad_TACO;
42
VHDL -
bibliotecas+entidad: ejemplo
Código de ejemplo en VHDL de un circuito digital
Entidad
Arquitectura
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
43
VHDL -
bibliotecas+entidad: ejemplo
Código de ejemplo en VHDL de un circuito digital
Arquitectura
Entidad
Nombre: ?
# entradas: ?
# salidas: ?
# tamaño entradas:?
# tamaño salidas: ?
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
44
VHDL -
bibliotecas+entidad: ejemplo
Biblioteca
Arquitectura
x1
x1
A
B
A
f
x1
X2
F
X1
B
A
M.C. Rubén E. Marmolejo
[email protected]
Código de ejemplo en VHDL de un circuito digital
45
VHDL -
bibliotecas+entidad: ejemplo
Código de ejemplo en VHDL de un circuito digital
Arquitectura
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
46
VHDL -
bibliotecas+entidad: ejemplo
Código de ejemplo en VHDL de un circuito digital
?
Arquitectura
?
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
47
VHDL -
bibliotecas+entidad: ejemplo
Lenguaje C
Int temperatura;
≠
Int Temperatura;
Son dos variables distintas
VHDL
Entity = eNTity = EnTiTy
M.C. Rubén E. Marmolejo
[email protected]
En VHDL no importa si se escribe con
MAYúSCULAS o minúsculas
48
VHDL -
bibliotecas+entidad: ejemplo
Código de ejemplo en VHDL de un circuito digital
?
Arquitectura
?
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
49
VHDL -
bibliotecas+entidad: ejercicio
Completa cada código de acuerdo al diagrama
f
Ejercicio1
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
B
A
Arquitectura
50
VHDL -
bibliotecas+entidad: ejercicio
Completa cada código de acuerdo al diagrama
x1
x1
A
TRETRE
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
Arquitectura
51
VHDL -
bibliotecas+entidad: ejercicio
Completa cada código de acuerdo al diagrama
A
TACO
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
X1
B
Arquitectura
52
VHDL -
bibliotecas+entidad: ejemplo
Biblioteca
X1
B
A
X1
A
B
M.C. Rubén E. Marmolejo
[email protected]
Estructuras más completas
Arquitectura
53
VHDL -
bibliotecas+entidad: ejemplo
Estructuras más completas
M.C. Rubén E. Marmolejo
[email protected]
Biblioteca
Arquitectura
54
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
[email protected]
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
55
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
[email protected]
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
56
VHDL -
arquitectura
Entradas
Entidad
Proceso
Salidas
Sistema
Digital
Arquitectura
Entidad
Estructura
VHDL
M.C. Rubén E. Marmolejo
[email protected]
Arquitectura. Define como funciona
internamente el circuito o sistema digital.
57
VHDL - arquitectura: modelo
La arquitectura define la forma de describir el circuito.
•  =∙++
Comportamental
M.C. Rubén E. Marmolejo
[email protected]
Estructural
58
arquitectura: ejemplo
Entradas
Proceso
Salidas
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
59
arquitectura: ejemplo
Library ieee;
Use ieee.std_logic_1164.all;
Entity TACO is
port
Biblioteca
(
a: in std_logic;
b: in std_logic;
y: out std_logic
Entidad
);
End TACO;
Architecture PUESTO of TACO is
Begin
y <= a and b ;
End PUESTO;
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
Arquitectura
60
arquitectura: ejemplo
Biblioteca
Entidad
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
Arquitectura
61
arquitectura: ejemplo
Biblioteca
Entidad
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
Arquitectura
62
arquitectura: ejemplo
Biblioteca
Entidad
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
Arquitectura
63
arquitectura: ejemplo
Nombre de arquitectura
Inicio
Fin
Nombre de arquitectura
Nombre de entidad
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
64
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables y operadores
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
[email protected]
Temas del día
65
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
66
VHDL -
operadores en la vida diaria
A un cheque se le asigna un valor monetario.
Ejemplo: cheque = $2,400.00 pesos
M.C. Rubén E. Marmolejo
[email protected]
Asignación
67
VHDL -
operadores
En VHDL se utilizan para asignar valores a señales,
variables y constantes.
<=
Asigna un valor a una señal
M.C. Rubén E. Marmolejo
[email protected]
Asignación
68
VHDL -
operadores
En VHDL se utilizan para asignar valores a señales,
variables y constantes.
:=
Asigna un valor a una variable o constante
M.C. Rubén E. Marmolejo
[email protected]
Asignación
69
VHDL -
operadores
En VHDL se utilizan para asignar valores a señales,
variables y constantes.
=>
Asigna valores a elementos individuales de
un vector en conjunto con OTHERS.
M.C. Rubén E. Marmolejo
[email protected]
Asignación
70
VHDL -
operadores
Variable
Constante
Un valor que no puede ser cambiado durante la
implementación.
Señal
Conexiones externas que captura y representan datos
reales e internas para conexiones.
M.C. Rubén E. Marmolejo
[email protected]
Una representación mediante etiquetas de un valor.
71
operadores
Asignación
<=
Asigna un valor a una señal
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
72
operadores
Asignación
:=
Asigna un valor a una variable o constante
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
73
VHDL -
operadores
=>
Asignación
M.C. Rubén E. Marmolejo
[email protected]
Asigna valores a elementos individuales de
un vector en conjunto con OTHERS.
W
Posición
0
0
0
1
3
2
1
0
74
VHDL -
operadores : ejercicio
Completa con el operador indicado la sentencia de VHDL
A __ ¨1191¨;
D __ (OTHERs __ ‘0’);
B __
D;
Y __
B;
G __ D;
W, Y y G son señales
A, B y C variables
D es constante
M.C. Rubén E. Marmolejo
[email protected]
W__ ‘0’;
75
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
76
operadores en la vida diaria
Lógicos
Los resultados de
las operaciones
lógicas son 2.
Cierto o Falso
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
77
VHDL -
operadores en la vida diaria
Lógicos
Los resultados de las operaciones lógicas son 2.
M.C. Rubén E. Marmolejo
[email protected]
Cierto o Falso
78
VHDL -
operadores
Se utilizan para realizar operaciones lógicas. Los
datos DEBEN ser del tipo bit, std_logic o
std_ulogic (obviamente con su respectivo
modificador vector).
• NOT
• AND
• OR
•
•
•
•
NAND
NOR
XOR
XNOR
M.C. Rubén E. Marmolejo
[email protected]
Lógicos
79
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores
Compuertas lógicas
VHDL -
operadores
Ejemplo de operaciones lógicas
Y <= NOT a OR b ; -- esto es un comentario
Y <=( NOT a) OR b ; -- mejor practica
Y <= NOT ( a OR b) ; -- MAL!!!!!!!!
M.C. Rubén E. Marmolejo
[email protected]
 = +
81
operadores
Ejemplo de operaciones lógicas
 =  +  + 
Y <= (not (A OR B)) or (B and A)
;
M.C. Rubén E. Marmolejo
[email protected]
VHDL -
82
VHDL -
operadores
Ejercicio: traduzca al lenguaje VHDL las siguientes
0 … 6
M.C. Rubén E. Marmolejo
[email protected]
ecuaciones…
83
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
84
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores en la vida diaria
Aritméticos
85
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores en la vida diaria
Aritméticos
86
VHDL -
operadores
Son utilizados para realizar operaciones
aritméticas.
Los datos pueden ser del tipo INTEGER, SIGNED,
UNSIGNED o REAL. Si se agrega la biblioteca
std_logic_signed o std_logic_unsigned también se
pueden utilizar los operadores std_logic_vector.
M.C. Rubén E. Marmolejo
[email protected]
Aritméticos
87
VHDL -
operadores
+
*
/
**
MOD
REM
ABS
Ver pagina 49 Volnei A.
Suma
Resta
Multiplicación.
División.
Potencia.
Módulo.
Residuo.
Valor absoluto.
M.C. Rubén E. Marmolejo
[email protected]
Aritméticos
88
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
89
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores
Relacionales
90
VHDL -
operadores
Son utilizados para hacer comparaciones los
resultados son lógicos.
=
/=
<
>
<=
=>
¿Es igual a?
¿Es distinto de?
¿Es menor qué?
¿Es mayor qué?
¿Menor o igual qué?
¿Mayor o cual qué?
M.C. Rubén E. Marmolejo
[email protected]
Relacionales o de comparación
91
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
92
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores
Desplazamiento
93
VHDL -
operadores
Desplazamiento
sll
desplazamiento lógico a la izquierda
¨1100¨ sll 1 conlleva a ¨1000¨
srl
desplazamiento lógico a la derecha
¨1100¨ sll 2 conlleva a ¨0011¨
M.C. Rubén E. Marmolejo
[email protected]
Son utilizados para desplazar datos.
94
VHDL -
operadores
Desplazamiento
sla
desplazamiento aritmético a la izquierda
¨1100¨ sla 1 conlleva a ¨1000¨
sra
desplazamiento aritmético a la derecha
¨1100¨ sra 2 conlleva a ¨1111¨
M.C. Rubén E. Marmolejo
[email protected]
Son utilizados para desplazar datos.
95
VHDL -
operadores
Desplazamiento
rol
desplazamiento aritmético a la izquierda
¨1100¨ rol 1 conlleva a ¨1001¨
ror
desplazamiento aritmético a la derecha
¨1100¨ ror 2 conlleva a ¨0011¨
M.C. Rubén E. Marmolejo
[email protected]
Son utilizados para desplazar datos.
96
VHDL -
operadores
• Asignación
• Aritméticos
• Relacionales
• Desplazamiento
M.C. Rubén E. Marmolejo
[email protected]
• Lógicos
• Concatenación
97
M.C. Rubén E. Marmolejo
[email protected]
VHDL operadores
Concatenación
98
VHDL -
operadores
Concatenación
&
Bitcat := bit0 & bit1 & bit2 & bit3;
M.C. Rubén E. Marmolejo
[email protected]
Son utilizados para unir cadenas de bits.
99
VHDL -
operadores
X1 <= a & c ;
X2 <= c & b ;
X3 <= b XOR c ;
X4 <= a NOR b(3);
x1
x2
x3
x4
<= __________
<= __________
<= __________
<= __________
M.C. Rubén E. Marmolejo
[email protected]
Asumiendo las siguientes declaraciones de señales,
conteste.
100
VHDL -
operadores
X5 <= b sll 2;
X6 <= b sla 2 ;
X7 <= b rol 2 ;
x5 <= __________
x6 <= __________
x7 <= __________
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Asumiendo las siguientes declaraciones de señales,
conteste.
101
VHDL -
operadores
X8 <= a AND NOT b(0) AND NOT c(1);
x8 <= __________
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Asumiendo las siguientes declaraciones de señales,
conteste.
102
VHDL - VHSIC Hardware Description Language
VHSIC – Very High Speed Integrated Circuit
Declaración
de
bibliotecas
Declaración
de entidad
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Estructura
VHDL
Cuerpo de la
arquitectura
Diagrama de la estructura de un archivo de VHDL
103
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables y operadores
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Temas del día
104
estructuras de control
Concurrentes
• Operadores
• When
• Generate
• Block
Secuenciales
• Process
• Señales y variables
• If
• Wait
• Case
• Case e IF
• Case y When
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
VHDL -
105
VHDL Entradas
estructuras de control
Salidas
Proceso
Retroalimentación
Entradas
Proceso
Sistema secuencial general
Salidas
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Sistema combinatorio general
VHDL -
estructuras de control
Sólo las instrucciones escritas dentro de un
proceso, función o procedimiento son secuenciales.
El bloque de estos conjuntos en su aspecto general
es igualmente concurrente.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
VHDL es un lenguaje concurrente.
107
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables y operadores
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Temas del día
108
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
FPGA de bajo costo
$850.00
109
VHDL -
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Las estructuras de control se analizaran cuando el
tema sea apropiado de acuerdo a la planeación
semanal.
110
Introducción
Combinatorio
Combinatorio
HDL+comb.
HDL+comb.
1
HDL+comb.
Secuencial
Secuencial
Secuencial
HDL+Secu.
Aplicaciones
Aplicaciones
Ordinario
Extraordinario
2
Vacaciones
HDL+Sec.
HDL+Mem.
3
Proyecto
Proyecto
Proyecto
F
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Planeación de temas
I7268
Plan de curso (17 semanas)
•
•
•
•
•
•
•
•
Actividad 1. Introducción (Encontrar ecuaciones lógicas a partir de una
tabla de verdad.
Actividad 2. Analizar, simular y encontrar los parámetros principales de
un circuito combinatorio.
Actividad 3. Diseñar un sistema digital con un CPLD. BCD a 7
segmentos.
Actividad 4. Simular códigos de ejemplos en HDL. Sumador completo.
Actividad 5. Implementación y simulación de un sistema digital
aplicado a un problema de la vida cotidiana.
Actividad 6. Diseño y simulación de circuitos secuenciales (FF´s, FSM).
Actividad 7. Diseño y simulación de contadores de maquinas de estado
finitas aplicados a resolver problemas reales.
Actividad 8. Diseño y simulación de contadores síncronos.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Actividades de aprendizaje
I7268
Plan de curso (17 semanas)
• Introducción a los lenguajes HDL
• Sintaxis de VHDL
• Estructura
• Variables
• Modelos de programación
• Estructuras de control
• Sintaxis de Verilog.
• Estructura
• Variables
• Modelos de programación
• Estructuras de control.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Temas del día
113
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: introducción
114
Protoboard utilizado en el diseño digital.
Verilog: introducción
!Cuidado no olvides escribirlo en tu código.
No te olvides de los paréntesis.
Palabras reservadas de Verilog.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Seguro esto no se te olvidara, sólo por si
acaso.
115
Nomenclatura utilizada en esta presentación
arquitectura: ejemplo
Entradas
Proceso
Salidas
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog-
116
Verilog-
arquitectura: ejemplo
module Compuerta_AND
(
input B,
output Y
);
assign Y = A & B;
endmodule
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input A,
117
Verilog-
arquitectura: ejemplo
module Compuerta_AND (A, B, Y);
input B;
output reg Y;
always @(A or B)
begin
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input A;
Y = A & B;
end
endmodule
118
Verilog-
arquitectura: ejemplo
module Compuerta_AND
(
input B,
output Y
Tipo de
entradas y salidas
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input A,
);
assign Y = A & B;
endmodule
Funcionamiento
119
Verilog-
arquitectura: ejemplo
module Compuerta_AND
(
input B,
output Y
Tipo de
entradas y salidas
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input A,
);
assign Y = A & B;
endmodule
Funcionamiento
120
Verilog-
arquitectura: ejemplo
module Compuerta_AND (A, B, Y);
input A;
input B;
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Tipo de
entradas y salidas
output reg Y;
always @(A or B)
begin
Y = A & B;
end
endmodule
Funcionamiento
121
Verilog-
arquitectura: ejemplo
module Compuerta_AND (A, B, Y);
input A;
input B;
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Tipo de
entradas y salidas
output reg Y;
always @(A or B)
begin
Y = A & B;
end
endmodule
Funcionamiento
122
Verilog
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores.
123
Están diseñados para representar los
elementos de transmisión y memoria
encontrados en los sistemas digitales.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
124
Verilog: tipos de datos
0
0 lógico o falso.
1
1 lógico o verdadero.
X
valor desconocido.
Z
estado de alta impedancia.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Valores lógicos
125
Verilog: tipos de datos
8'b00101111
2'b01
4'b0010
Tamaño en bits: estándar 32
Apostrofe
T'bX
b de binario
Valores de
acuerdo al
tamaño
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Representaciones numéricas
binario
126
Verilog: tipos de datos
8'hA = 0000 1010
8'hA1 = 1010 0001
8'hF2 = 1111 0010
Tamaño en bits: estándar 32
Apostrofe
T'hX
h de hexadecimal
Valores de
acuerdo al
tamaño
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Representaciones numéricas
hexadecimal
127
Verilog: tipos de datos
8'd255
16'd65_535
8'd256 = 000 0001
Tamaño en bits: estándar 32
Apostrofe
T'dX
d de decimal
Valores de
acuerdo al
tamaño
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Representaciones numéricas
decimal
128
• Net
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
• Reg
• Parameter
129
Verilog: tipos de datos
• Reg
Representan variables.
• Net
• Parameter
Sólo se asignan en bloques
always.
Si le es asignado un valor
en un bloque always con
detección de flancos,
infiere un flip-flop.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
No necesariamente
sintetizan flip-flops.
130
Verilog: tipos de datos
• Reg
Representan variables.
• Net
• Parameter
Sólo se asignan en bloques
always.
Si le es asignado un valor
en un bloque always con
detección de flancos,
infiere un flip-flop.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
No necesariamente
sintetizan flip-flops.
131
Verilog: tipos de datos
• Reg
Representan variables.
• Net
• Parameter
Sólo se asignan en bloques
always.
Si le es asignado un valor
en un bloque always con
detección de flancos,
infiere un flip-flop.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
No necesariamente
sintetizan flip-flops.
132
Verilog: tipos de datos
• Reg
Representan variables.
• Net
• Parameter
Sólo se asignan en bloques
always.
Si le es asignado un valor
en un bloque always con
detección de flancos,
infiere un flip-flop.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
No necesariamente
sintetizan flip-flops.
133
• Reg
Representan distintas
interconexiones eléctricas
entre elementos de
Hardware.
• Net
Existen 10 subtipos.
• Parameter
No tienen memoria,
excepto por trireg.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
134
• Reg
Representan distintas
interconexiones eléctricas
entre elementos de
Hardware.
• Net
Existen 10 subtipos.
• Parameter
No tienen memoria,
excepto por trireg.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
135
• Reg
Representan distintas
interconexiones eléctricas
entre elementos de
Hardware.
• Net
Existen 10 subtipos.
• Parameter
No tienen memoria,
excepto por trireg.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
136
• Reg
• Net
• Parameter
•
•
•
•
•
•
•
•
•
•
Wire
Tri
Tri0
Tri1
Trior
Wand
Wor
Supply0
Supply1
trireg
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos
137
Verilog: tipos de datos
• Reg
Representa constantes.
• Net
parameter ORDEN_TACO = 5;
Puede ser sobre-escrita cuando un
modulo es inicializado.
• Parameter
No puede ser cambiada en la
ejecución del sistema digital.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se declara como:
138
Verilog: tipos de datos
• Reg
Representa constantes.
• Net
parameter ORDEN_TACO = 5;
Puede ser sobre-escrita cuando un
modulo es inicializado.
• Parameter
No puede ser cambiada en la
ejecución del sistema digital.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se declara como:
139
Verilog: tipos de datos
• Reg
Representa constantes.
• Net
parameter ORDEN_TACO = 5;
Puede ser sobre-escrita cuando un
modulo es inicializado.
• Parameter
No puede ser cambiada en la
ejecución del sistema digital.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se declara como:
140
Verilog: tipos de datos
• Net
Se declara como:
Se declara como:
parameter ORDEN_TACO = 5;
parameter ORDEN_TACO = 5;
Puede ser sobre-escrita cuando un
modulo es inicializado.
• Parameter
No puede ser cambiada en la
ejecución del sistema digital.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Reg
Representa constantes.
141
Verilog: tipos de datos, ejercicio.
• Net
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Reg
• Parameter
142
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• Trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
143
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• Trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
144
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• Trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
145
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
146
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
147
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• Trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
148
• reg a;
// un registro escalar
• wand w;
// un net del escalar del tipo wand
•
reg [3:0] v;
// registro vector de 4-bits
• tri [15:0] busa; // bus de 16-bits tri-estado
• Trireg (small) storeit; /* un nodo de
almacenamiento por carga de poca fueraza */
• wire w1, w1;
// 2 «cables»
• reg [4:0] x, y, z;
// declara 3 registros de 5 bits
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos
149
Verilog
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores.
150
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
151
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
152
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: operadores
Aritméticos
153
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog: operadores
Aritméticos
154
Verilog-
operadores
Son utilizados para
realizar operaciones
aritméticas.
Valores negativos se toman
en complemento a 2, pero
se consideran sin signo en
expresiones.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Aritméticos
155
operadores
Aritméticos
+
*
/
%
suma
resta
multiplicación
división
modulo
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog-
156
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
157
operadores en la vida diaria
Lógicos
Los resultados de
las operaciones
lógicas son 2.
Cierto o Falso
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog-
158
Verilog-
operadores en la vida diaria
Lógicos
Los resultados de las operaciones lógicas son 2.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Cierto o Falso
159
Verilog-
operadores
Lógicos
• &
• ~&
AND
• 1 and 1 = 1
• 0 and X = 0
NAND
• 1 and 1 = 0
• 0 and X = 1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
160
Verilog-
operadores
Lógicos
• &
• ~&
AND
• 1 and 1 = 1
• 0 and X = 0
NAND
• 1 and 1 = 0
• 0 and X = 1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
161
Verilog-
operadores
Lógicos
• |
• ~|
OR
• 1 or X = 1
• 0 or 0 = 0
NOR
• 1 or X = 0
• 0 or 0 = 1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
162
Verilog-
operadores
Lógicos
• |
• ~|
OR
• 1 or X = 1
• 0 or 0 = 0
NOR
• 1 or X = 0
• 0 or 0 = 1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
163
Verilog-
operadores
Lógicos
• ^
• ~^ ,^~
XOR
• A≠B=1
• A =B=0
XNOR
• A≠B=0
• A =B=1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
164
Verilog-
operadores
Lógicos
• ^
• ~^ ,^~
XOR
• A≠B=1
• A =B=0
XNOR
• A≠B=0
• A =B=1
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
165
Verilog-
operadores
Lógicos
• !
• &&
Negación lógica
• !VERDADERO = FALSO
and lógica
• A && B = FALSO
• VERDE && VERDE = VERDADERO
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para realizar operaciones lógicas.
166
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
167
Verilog-
operadores
Relacionales + lógicos
• !
• &&
• A && B = FALSO • !VERDADERO = FALSO
• VERDE && VERDE = VERDADERO
Negación lógica
• 4'b0010 && 4'b0011 = FALSE
• 4'b0010 & 4'b0011 = 4'b0010
and lógica
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para evaluar relaciones.
168
Verilog-
operadores
Relacionales + lógicos
• || OR lógica
• V || F || F = V
• == igualdad
• ROJO == ROJO = V
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para evaluar relaciones.
169
Verilog-
operadores
Relacionales
• !=
desigualdad
• == igualdad
• ROJO != ROJO = F
• ROJO == ROJO = V
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para evaluar relaciones.
170
Verilog-
operadores
Relacionales
• !=
desigualdad
• == igualdad
• ROJO != ROJO = F
• ROJO == ROJO = V
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para evaluar relaciones.
171
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
172
Verilog-
operadores
Desplazamiento
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
173
Verilog-
operadores
Desplazamiento
• >>
desplazamiento a la derecha
assign C = (4'b1100 >> 2);
Valor de C.
Posición.
0
3
0
2
1
1
1
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
174
Verilog-
operadores
Desplazamiento
• <<
desplazamiento a la izquierda
assign C = (4'b1010 << 2);
Valor de C.
Posición.
1
3
0
2
0
1
0
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
175
Verilog-
operadores
Desplazamiento
• <<<
desplazamiento aritmético izquierdo
assign C = (4'b1010 <<< 2);
Valor de C.
Posición.
1
3
0
2
0
1
0
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
176
Verilog-
operadores
Desplazamiento
• <<<
desplazamiento aritmético izquierdo
assign C = (4'b1011 <<< 2);
Valor de C.
Posición.
1
3
1
2
1
1
1
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
177
Verilog-
operadores
Desplazamiento
• >>>
desplazamiento aritmético derecho
assign C = (4'b0111 >>> 2);
Valor de C.
Posición.
0
3
0
2
0
1
1
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
178
Verilog-
operadores
Desplazamiento
• >>>
desplazamiento aritmético derecho
assign C = (4'b1011 >>> 2);
Valor de C.
Posición.
1
3
1
2
1
1
0
0
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Se utilizan para desplazar información.
179
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
180
Verilog-
operadores
Condicional
?:
• Condición ? caso verdadero : caso falso ;
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Trabaja como en el lenguaje C.
181
operadores
Condicional
?:
• Si el resultado es verdadero se evalúa el caso
verdadero.
• Si el resultado es falso se evalúa el caso falso.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog-
182
operadores
Condicional
?:
module ejemplo02
(
input wire sel,
input wire i0, i1,
output wire out
);
assign out = sel ? i0 : i1;
endmodule
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Verilog-
183
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
184
Verilog-
operadores
Concatenación
{,}
• Expresa operando separados por comas y
dentro de llaves.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Provee de una forma de crear buses.
185
Verilog-
operadores
Concatenación
{,}
a = 1'b1,
b = 2'b00,
c = 2'b10,
y = { b, c} // y valdrá
y = { a, b, c, d, 3’b001}
y = { a, b, c, d, 3’b001}
d = 3'b110
4'b0010
11’b10010110001
11’b10010110001
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
// Tomando las siguientes consideraciones.
186
Verilog-
operadores: ejercicio
Concatenación
{,}
a = 1'b1,
b = 2'b00,
c = 2'b10,
d = 3'b110
y = { a, b, c, d, 3’b001}
________________?
y = { a, b[0], c[1]}
________________?
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
// Tomando las siguientes consideraciones.
187
Verilog-
operadores: solución
Concatenación
{,}
a = 1'b1,
b = 2'b00,
c = 2'b10,
d = 3'b110
y = { a, b, c, d, 3’b001}
11’b10010110001
y = { a, b[0], c[1]}
3’b101
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
// Tomando las siguientes consideraciones.
188
Verilog-
operadores: solución
Replicador
{{}}
a = 1'b1,
b = 2'b00,
c = 2'b10,
y = { 4{a} }
// 4’b1111
y = { 4{a}, 2{b} }
//8’11110000
d = 3'b110
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
// Tomando las siguientes consideraciones.
189
Verilog-
operadores
• Aritméticos
• Relacionales
• Desplazamiento
• Condicionales
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Lógicos
• Concatenación
190
Verilog
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores.
191
Operadores de asignación
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores : asignación
192
Operadores de asignación
• Blocking:
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
=
Evaluación y asignación son
inmediatos.
• Non-blocking
<=
Todas las asignaciones son
retrasadas hasta que las
operaciones sean evaluadas.
193
Operadores de asignación
• Blocking:
=
always @ (a or b or c)
begin
end
x = a | b;
// Se evalúa y asigna a x
y = a ^ b ^ c;
// Se evalúa y asigna a y
z=b&
// Se evalúa y asigna a z
~c;
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Evaluación y asignación son
inmediatos.
194
Operadores de asignación
<=
Todas las asignaciones son
retrasadas hasta que las
operaciones sean evaluadas.
always @ (a or b or c)
begin
x <= a | b;
// Se evalúa pero retrasa la asignación de x
y <= a ^ b ^ c; // Se evalúa pero retrasa la asignación de y
z <= b &
end
~c;
// Se evalúa pero retrasa la asignación de y
// Se asigna x, y y z con sus valores nuevos
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Non-blocking
195
Blocking
vs
Non-blocking
1
0
A
B
ideal
A
B
1
0
Transición de señales lógicas
A
B
C
w
y
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
real
196
vs
Non-blocking
real
1
A
0
B
Transición de
señales lógicas
Blocking: Evaluación y
asignaciones inmediatas
a=b
b=a
Non-blocking: asignación a <= b
con retardo hasta evaluar
b <= a
todo
¿Cuándo utilizarlo?
Secuencial
A
B
C
w
y
w=a&b
y =w|c
w <= a & b
y <= w | c
Combinatorio
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Blocking
197
Operadores de asignación
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores : asignación
198
Ejemplos combinatorios
Temas
•
•
•
•
•
•
Ejemplo # 1
Ejemplo # 2
Ejemplo # 3
Ejercicio # 1
Ejercicio # 2
Ejercicio # 3
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Bloque always@
199
Bloque always@
Son utilizados para describir eventos que pasarían
bajo ciertas circunstancias.
Sintaxis:
always @(lista de sensibilidad)
begin
… elementos
end
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
always@
200
vs
always @ (a or b or c or d)
begin
Non-blocking
always @ (a or b or c or d)
begin
b <= a;
b = a;
c <= b;
c = b;
d = c;
end
d=?
d <= c;
end
d=?
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Blocking
201
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1
 =∙+ 
202
Ejemplos combinatorios: # 1
Dibuja el diagrama lógico
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
 =∙+ 
203
Ejemplos combinatorios: # 1
¿Combinatorio o secuencial?
¿Cuántas entradas?
¿Cuántas salidas?
¿Tamaño de entradas o salidas?
¿Qué operadores necesita?
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
 =∙+ 
204
Ejemplos combinatorios: # 1
module ejemplo02
(
Solución por
comportamiento
input wire Y,
input wire Z,
output F
);
assign F = ( X & Y ) | (~Z);
endmodule
 =∙+ 
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input wire X,
205
 =∙+ 
Ejemplos combinatorios: # 1
Código de
compuerta
OR
Código de
compuerta NOT
Código del
circuito
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Código de
compuerta
AND
Solución por
estructura
206
 =∙+ 
Ejemplos combinatorios: # 1
Código de
compuerta
OR
Código de
compuerta NOT
Código del
circuito
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Código de
compuerta
AND
Solución por
estructura
207
Ejemplos combinatorios: # 1
module AND2gate(A, B, F);
 =∙+ 
input A;
output F;
reg F;
always @ (A or B)
begin
F <= A & B;
end
endmodule
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input B;
208
 =∙+ 
Ejemplos combinatorios: # 1
Código de
compuerta
OR
Código de
compuerta NOT
Código del
circuito
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Código de
compuerta
AND
Solución por
estructura
209
Ejemplos combinatorios: # 1
module OR2gate(A, B, F);
input A;
 =∙+ 
output F;
reg F;
always @ (A or B)
begin
F <= A | B;
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
input B;
end
endmodule
210
 =∙+ 
Ejemplos combinatorios: # 1
Código de
compuerta
OR
Código de
compuerta NOT
Código del
circuito
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Código de
compuerta
AND
Solución por
estructura
211
Ejemplos combinatorios: # 1
module NOTgate(A, F);
input A;
 =∙+ 
reg F;
always @ (A)
begin
F <= ~A;
end
endmodule
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
output F;
212
 =∙+ 
Ejemplos combinatorios: # 1
Código de
compuerta
OR
Código de
compuerta NOT
Código del
circuito
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Código de
compuerta
AND
Solución por
estructura
213
Ejemplos combinatorios: # 1
;
module circuito(X, Y, Z, Fout)
input X, Y, Z;
reg Fout;
wire w1, w2;
AND2gate AND2gate_1(X, Y, w1);
NOTgate1 NOTgate1_1(Z, w2);
OR2gate OR2gate_1(w1, w2, Fout);
endmodule
 =∙+ 
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
output Fout;
214
 =  ∙  ∙  +  ∙Y
Diagrama
Tabla de verdad
#entradas
#salidas
Operaciones
Código de comportamiento
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Ejercicio combinatorios: # 1
215
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: #
216
Ejemplos combinatorios: #
Numero
Tamaño
Nombre
Tipo
?
?
?
?
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Definición del tipo de entradas/salidas.
217
Ejemplos combinatorios: #
Bloque always
¿Qué incluye?
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
¿Sensibilidad?
218
Ejemplos combinatorios: #
Bloque case
Sel = 3’b011
Sel = 3’b111
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
¿Sensibilidad?
219
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1
Diagrama lógico que infiere la síntesis del
código anterior.
220
Verilog
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
• Sentencias de control.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores.
221
Verilog
Temas
• Tipos de datos.
• Ejemplos combinatorios.
• Diseño concurrente.
• Diseño estructural.
• Sentencias de control.
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Operadores.
222
Sentencias de control
• Sentencia IF
•
Sentencia case
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
• Sentencia case
223
M.C. Rubén E. Marmolejo
ruben.estrada@hetpro.com.mx
Sentencia IF
224

similar documents