Programación de sistemas reconfigurables DEPARTAMENTO DE ELECTRÓNICA DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIRÍAS UNIVERSIDAD DE GUADALAJARA M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables Modelos de programación Estructuras de control Sintaxis de Verilog. Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Lecturas recomendadas Circuit Design with VHDL Volnei A. Pedroni MIT Press Fundamentals of Digital Logic with VHDL Design. Stephen Brown Zvonko Vranesic McGrawHill Third edition M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables Modelos de programación Estructuras de control Sintaxis de Verilog. Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Introducción a los lenguajes HDL 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 ruben.estrada@hetpro.com.mx https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Hardware_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 ruben.estrada@hetpro.com.mx https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Hardware_description_language.html
Introducción a los lenguajes HDL Verilog Segundo más común Mas fácil de enseñar Estándar IEEE VHDL Más común Más formal Estándar IEEE M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Hardware_description_language.html
Introducción a los lenguajes HDL Xilinx vs Altera M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL Altera M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL Altera M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL Xilinx M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.xilinx.com/products/silicon-devices/fpga/
Introducción a los lenguajes HDL Xilinx M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.altera.com/cgi-bin/device_compare.pl
Introducción a los lenguajes HDL Aplicaciones M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.lemote.com/en/products/cpu/2010/0310/114.html
Introducción a los lenguajes HDL Aplicaciones M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx http://www.lemote.com/en/products/cpu/2010/0310/114.html
Introducción a los lenguajes HDL Dispositivos reprogramables M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables Modelos de programación Estructuras de control Sintaxis de Verilog. Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
VHDL - VHSIC Hardware Description Language 𝑋 =𝐴∙𝐵+ 𝐴+𝐵 Comportamental Estructural Modelos de programación (formas de programar) M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - VHSIC Hardware Description Language Modelos de programación (formas de programar) 𝑋 =𝐴∙𝐵+ 𝐴+𝐵 Comportamental Estructural M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Implementación
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
Ejemplo de un diagrama lógico VHDL - Entidad Ejemplo de un diagrama lógico M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx La entidad define la cantidad y tipo de entradas que tendrá el sistema digital. ¿Cuántas entradas y salidas tiene el diagrama?
VHDL - Entidad ? Ejemplo de un entidad Entity Entidad_TACO is port ( a: in std_logic; b: in std_logic; f: out std_logic ); End Entidad_TACO; M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ?
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
VHDL - Bibliotecas ¿std_logic? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Señales lógicas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Señales lógicas Fig1. Rangos de valores de una señal lógica M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Fig1. Rangos de valores de una señal lógica
Señales lógicas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Fig 2. Rangos de valores de una señal lógica en valores de voltaje.
VHDL - Bibliotecas ¿std_logic? 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 ruben.estrada@hetpro.com.mx
VHDL - Bibliotecas '0' - 0 lógico. Ejemplo de una biblioteca común en VHDL. Library ieee; Use ieee.std_logic_1164.all; Declaración de las representaciones de valores lógicos Ejemplo: std_logic M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 'Z' - alta impedancia. 'W' - señal débil 0 o 1. 'L' - señal débil 0. 'H' - señal débil 1. '-' - no importa. 'U' - valor sin inicializar. 'X' - desconocido. '0' - 0 lógico. '1' - 1 lógico. Ver
VHDL - Bibliotecas Bit 0,1 Nibble 4 bits (0000-1111) ,(0-15) , (0-F) Byte 8 bits (00000000-11111111),(0-255) MSB LSB Posición 3 2 1 # 1∗ 2 3 =8 1∗ 2 1 =2 8 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx LSB MSB Posición 3 2 1 # 1∗ 2 0 =1 1∗ 2 2 =4 5 Ver
VHDL - Bibliotecas Library ieee; Ejemplo: std_logic Use ieee.std_logic_1164.all; Ejemplo: std_logic ¿Cuál es el máximo valor en binario que puede representar una entrada o salida std_logic? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Respuesta: 1 Ver
VHDL - Entidad ? Ejemplo de un entidad Entity Entidad_TACO is port ( a: in std_logic; b: in std_logic; f: out std_logic ); End Entidad_TACO; M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ?
VHDL - Bibliotecas Library ieee; Ejemplo: std_logic Use ieee.std_logic_1164.all; Ejemplo: std_logic ¿Cómo puedo representar una nibble de información utilizando std_logic? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Respuesta: con otro elemento de la biblioteca std_logic_vector Ver
VHDL - Bibliotecas 8 MSB LSB Posición 3 2 1 # Ver 1∗ 2 3 =8 1∗ 2 1 =2 # 1∗ 2 3 =8 1∗ 2 1 =2 8 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Ver
VHDL - Bibliotecas 5 LSB MSB Posición 3 2 1 # Ver 1∗ 2 0 =1 1∗ 2 2 =4 # 1∗ 2 0 =1 1∗ 2 2 =4 5 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Ver
VHDL - Bibliotecas+entidad: ejemplo Entradas: botones, contactos, sensores, etc. Salidas: pantallas, bocinas, motores, etc. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ¿# salidas? ¿# entradas? Decodificador BCD a 7 segmentos
VHDL - Bibliotecas+entidad: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - Bibliotecas+entidad: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - Bibliotecas+entidad: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - Bibliotecas+entidad: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - Bibliotecas+entidad: ejemplo Entradas: botones, contactos, sensores, etc. Salidas: pantallas, bocinas, motores, etc. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ¿# salidas? ¿# entradas? Decodificador BCD a 7 segmentos
VHDL - bibliotecas+entidad: ejemplo Entidad del diagrama anterior Entity Entidad_TACO is port ( BCD: in std_logic_vector(3 downto 0); SAL: out std_logic_vector(6 downto 0); ); End Entidad_TACO; M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital Biblioteca Entidad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital Entidad Nombre: ? # entradas: ? # salidas: ? # tamaño entradas:? # tamaño salidas: ? Biblioteca M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital x1 A Biblioteca B A f M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx x1 X2 F Arquitectura X1 B A
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital Biblioteca M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital Biblioteca ? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura ?
VHDL - bibliotecas+entidad: ejemplo En VHDL no importa si se escribe con MAYúSCULAS o minúsculas Lenguaje C Int temperatura; Int Temperatura; VHDL Entity = eNTity = EnTiTy ≠ M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Son dos variables distintas
VHDL - bibliotecas+entidad: ejemplo Código de ejemplo en VHDL de un circuito digital Biblioteca ? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura ?
VHDL - bibliotecas+entidad: ejercicio Completa cada código de acuerdo al diagrama B A f Biblioteca Ejercicio1 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejercicio Completa cada código de acuerdo al diagrama x1 A Biblioteca TRETRE M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejercicio Completa cada código de acuerdo al diagrama X1 B A Biblioteca TACO M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejemplo Estructuras más completas X1 B A Biblioteca B X1 A M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - bibliotecas+entidad: ejemplo Estructuras más completas Biblioteca M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
VHDL - arquitectura Arquitectura. Define como funciona internamente el circuito o sistema digital. Sistema Digital Entradas Salidas Proceso M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura Entidad Estructura VHDL
VHDL - arquitectura: modelo 𝑋 =𝐴∙𝐵+ 𝐴+𝐵 Comportamental Estructural La arquitectura define la forma de describir el circuito. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - arquitectura: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Entradas Salidas Proceso
VHDL - arquitectura: ejemplo Library ieee; Use ieee.std_logic_1164.all; Entity TACO is port ( a: in std_logic; b: in std_logic; y: out std_logic ); End TACO; Architecture PUESTO of TACO is Begin y <= a and b ; End PUESTO; Biblioteca Entidad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - arquitectura: ejemplo Biblioteca Entidad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - arquitectura: ejemplo Biblioteca Entidad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - arquitectura: ejemplo Biblioteca Entidad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Arquitectura
VHDL - arquitectura: ejemplo Nombre de arquitectura Nombre de entidad Inicio M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Fin Nombre de arquitectura
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables y operadores Modelos de programación Estructuras de control Sintaxis de Verilog. Variables Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores en la vida diaria Asignación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx A un cheque se le asigna un valor monetario. Ejemplo: cheque = $2,400.00 pesos
VHDL - operadores <= Asignación En VHDL se utilizan para asignar valores a señales, variables y constantes. <= M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Asigna un valor a una señal
VHDL - operadores := Asignación En VHDL se utilizan para asignar valores a señales, variables y constantes. := M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Asigna un valor a una variable o constante
VHDL - operadores => Asignación En VHDL se utilizan para asignar valores a señales, variables y constantes. => M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Asigna valores a elementos individuales de un vector en conjunto con OTHERS.
VHDL - operadores Variable Constante Una representación mediante etiquetas de un valor. 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 ruben.estrada@hetpro.com.mx
VHDL - operadores <= Asignación Asigna un valor a una señal M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores := Asignación Asigna un valor a una variable o constante M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores => Asignación W Asigna valores a elementos individuales de un vector en conjunto con OTHERS. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx W 1 Posición 3 2 1 0
VHDL - operadores : ejercicio Completa con el operador indicado la sentencia de VHDL W__ ‘0’; 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - 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
VHDL - 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
VHDL - operadores Lógicos 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). M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx NOT AND OR NAND NOR XOR XNOR
VHDL - operadores Compuertas lógicas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Ejemplo de operaciones lógicas 𝑌= 𝐴 +𝐵 𝑌= 𝐴 +𝐵 Y <= NOT a OR b ; -- esto es un comentario M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Y <=( NOT a) OR b ; -- mejor practica Y <= NOT ( a OR b) ; -- MAL!!!!!!!!
VHDL - operadores Ejemplo de operaciones lógicas 𝑌= 𝐴+𝐵 +𝐵𝐴 𝑌= 𝐴+𝐵 +𝐵𝐴 Y <= (not (A OR B)) or (B and A) ; M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Ejercicio: traduzca al lenguaje VHDL las siguientes ecuaciones… 𝐷 0 … 𝐷 6 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores en la vida diaria Aritméticos M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores en la vida diaria Aritméticos M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Aritméticos 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Aritméticos + Suma - Resta * Multiplicación. / División. ** Potencia. MOD Módulo. REM Residuo. ABS Valor absoluto. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Ver pagina 49 Volnei A.
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Relacionales M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Relacionales o de comparación 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Desplazamiento M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Desplazamiento Son utilizados para desplazar datos. 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Desplazamiento Son utilizados para desplazar datos. 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Desplazamiento Son utilizados para desplazar datos. 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 ruben.estrada@hetpro.com.mx
VHDL - operadores Asignación Lógicos Aritméticos Relacionales Desplazamiento Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - operadores Concatenación Son utilizados para unir cadenas de bits. & M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Bitcat := bit0 & bit1 & bit2 & bit3;
VHDL - operadores Asumiendo las siguientes declaraciones de señales, conteste. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx X1 <= a & c ; x1 <= __________ X2 <= c & b ; x2 <= __________ X3 <= b XOR c ; x3 <= __________ X4 <= a NOR b(3); x4 <= __________
VHDL - operadores Asumiendo las siguientes declaraciones de señales, conteste. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx X5 <= b sll 2; x5 <= __________ X6 <= b sla 2 ; x6 <= __________ X7 <= b rol 2 ; x7 <= __________
VHDL - operadores Asumiendo las siguientes declaraciones de señales, conteste. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx X8 <= a AND NOT b(0) AND NOT c(1); x8 <= __________
VHDL - VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit Estructura VHDL Declaración de bibliotecas Declaración de entidad Cuerpo de la arquitectura M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama de la estructura de un archivo de VHDL
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables y operadores Modelos de programación Estructuras de control Sintaxis de Verilog. Variables Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
VHDL - estructuras de control Concurrentes Operadores When Generate Block Secuenciales Process Señales y variables If Wait Case M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Case e IF Case y When
VHDL - estructuras de control Salidas Entradas Proceso Sistema combinatorio general Retroalimentación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Salidas Entradas Proceso Sistema secuencial general
VHDL - estructuras de control VHDL es un lenguaje concurrente. 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
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables y operadores Modelos de programación Estructuras de control Sintaxis de Verilog. Variables Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
FPGA de bajo costo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx $850.00
VHDL - Las estructuras de control se analizaran cuando el tema sea apropiado de acuerdo a la planeación semanal. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Plan de curso (17 semanas) Planeación de temas Introducción Combinatorio HDL+comb. Secuencial HDL+Secu. Vacaciones HDL+Sec. HDL+Mem. Aplicaciones Proyecto Ordinario Extraordinario I7268 1 2 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 3 F
Plan de curso (17 semanas) Actividades de aprendizaje I7268 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
Temas del día Introducción a los lenguajes HDL Sintaxis de VHDL Estructura Variables Modelos de programación Estructuras de control Sintaxis de Verilog. Estructuras de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: introducción M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Protoboard utilizado en el diseño digital.
Verilog: introducción !Cuidado no olvides escribirlo en tu código. Seguro esto no se te olvidara, sólo por si acaso. No te olvides de los paréntesis. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Palabras reservadas de Verilog. Nomenclatura utilizada en esta presentación
Verilog- arquitectura: ejemplo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Entradas Salidas Proceso
Verilog- arquitectura: ejemplo module Compuerta_AND ( input A, input B, output Y ); assign Y = A & B; endmodule M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- arquitectura: ejemplo module Compuerta_AND (A, B, Y); input A; input B; output reg Y; always @(A or B) begin Y = A & B; end endmodule M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- arquitectura: ejemplo module Compuerta_AND ( input A, input B, output Y ); assign Y = A & B; endmodule Tipo de entradas y salidas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Funcionamiento
Verilog- arquitectura: ejemplo module Compuerta_AND ( input A, input B, output Y ); assign Y = A & B; endmodule Tipo de entradas y salidas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Funcionamiento
Verilog- arquitectura: ejemplo module Compuerta_AND (A, B, Y); input A; input B; output reg Y; always @(A or B) begin Y = A & B; end endmodule Tipo de entradas y salidas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Funcionamiento
Verilog- arquitectura: ejemplo module Compuerta_AND (A, B, Y); input A; input B; output reg Y; always @(A or B) begin Y = A & B; end endmodule Tipo de entradas y salidas M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Funcionamiento
Verilog Temas Tipos de datos. Operadores. Ejemplos combinatorios. Diseño concurrente. Diseño estructural. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: tipos de datos 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 Valores lógicos 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
Verilog: tipos de datos Representaciones numéricas binario Tamaño en bits: estándar 32 Apostrofe 8'b00101111 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx T'bX 2'b01 Valores de acuerdo al tamaño 4'b0010 b de binario
Verilog: tipos de datos Representaciones numéricas hexadecimal Tamaño en bits: estándar 32 Apostrofe 8'hA = 0000 1010 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx T'hX 8'hA1 = 1010 0001 Valores de acuerdo al tamaño 8'hF2 = 1111 0010 h de hexadecimal
Verilog: tipos de datos Representaciones numéricas decimal Tamaño en bits: estándar 32 Apostrofe 8'd255 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx T'dX 16'd65_535 Valores de acuerdo al tamaño 8'd256 = 000 0001 d de decimal
Verilog: tipos de datos Reg Net Parameter M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: tipos de datos Reg Net Parameter Representan variables. No necesariamente sintetizan flip-flops. Sólo se asignan en bloques always. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Si le es asignado un valor en un bloque always con detección de flancos, infiere un flip-flop.
Verilog: tipos de datos Reg Net Parameter Representan variables. No necesariamente sintetizan flip-flops. Sólo se asignan en bloques always. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Si le es asignado un valor en un bloque always con detección de flancos, infiere un flip-flop.
Verilog: tipos de datos Reg Net Parameter Representan variables. No necesariamente sintetizan flip-flops. Sólo se asignan en bloques always. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Si le es asignado un valor en un bloque always con detección de flancos, infiere un flip-flop.
Verilog: tipos de datos Reg Net Parameter Representan variables. No necesariamente sintetizan flip-flops. Sólo se asignan en bloques always. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Si le es asignado un valor en un bloque always con detección de flancos, infiere un flip-flop.
Verilog: tipos de datos Representan distintas interconexiones eléctricas entre elementos de Hardware. Reg Net Parameter Existen 10 subtipos. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No tienen memoria, excepto por trireg.
Verilog: tipos de datos Representan distintas interconexiones eléctricas entre elementos de Hardware. Reg Net Parameter Existen 10 subtipos. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No tienen memoria, excepto por trireg.
Verilog: tipos de datos Representan distintas interconexiones eléctricas entre elementos de Hardware. Reg Net Parameter Existen 10 subtipos. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No tienen memoria, excepto por trireg.
Verilog: tipos de datos Wire Tri Tri0 Tri1 Trior Wand Wor Supply0 Supply1 trireg Reg Net Parameter M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: tipos de datos Representa constantes. Reg Net Parameter Se declara como: parameter ORDEN_TACO = 5; Puede ser sobre-escrita cuando un modulo es inicializado. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No puede ser cambiada en la ejecución del sistema digital.
Verilog: tipos de datos Representa constantes. Reg Net Parameter Se declara como: parameter ORDEN_TACO = 5; Puede ser sobre-escrita cuando un modulo es inicializado. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No puede ser cambiada en la ejecución del sistema digital.
Verilog: tipos de datos Representa constantes. Reg Net Parameter Se declara como: parameter ORDEN_TACO = 5; Puede ser sobre-escrita cuando un modulo es inicializado. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No puede ser cambiada en la ejecución del sistema digital.
Verilog: tipos de datos Representa constantes. Reg Net Parameter Se declara como: parameter ORDEN_TACO = 5; Se declara como: parameter ORDEN_TACO = 5; Puede ser sobre-escrita cuando un modulo es inicializado. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx No puede ser cambiada en la ejecución del sistema digital.
Verilog: tipos de datos, ejercicio. Reg Net Parameter M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: tipos de datos ejemplos 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 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 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 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 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 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 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 Temas Tipos de datos. Operadores. Ejemplos combinatorios. Diseño concurrente. Diseño estructural. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: operadores Aritméticos M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog: operadores Aritméticos M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores Aritméticos Son utilizados para realizar operaciones aritméticas. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valores negativos se toman en complemento a 2, pero se consideran sin signo en expresiones.
Verilog- operadores Aritméticos + suma - resta * multiplicación / división % modulo M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- 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- 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- operadores Lógicos Se utilizan para realizar operaciones lógicas. 1 and 1 = 1 0 and X = 0 & AND ~& NAND M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 1 and 1 = 0 0 and X = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. 1 and 1 = 1 0 and X = 0 & AND ~& NAND M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 1 and 1 = 0 0 and X = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. 1 or X = 1 0 or 0 = 0 | OR ~| NOR M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 1 or X = 0 0 or 0 = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. 1 or X = 1 0 or 0 = 0 | OR ~| NOR M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx 1 or X = 0 0 or 0 = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. A ≠ B = 1 A = B = 0 ^ XOR ~ ^ , ^ ~ XNOR M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx A ≠ B = 0 A = B = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. A ≠ B = 1 A = B = 0 ^ XOR ~ ^ , ^ ~ XNOR M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx A ≠ B = 0 A = B = 1
Verilog- operadores Lógicos Se utilizan para realizar operaciones lógicas. !VERDADERO = FALSO ! Negación lógica && and lógica M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx A && B = FALSO VERDE && VERDE = VERDADERO
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Relacionales + lógicos Verilog- operadores Relacionales + lógicos Se utilizan para evaluar relaciones. !VERDADERO = FALSO A && B = FALSO VERDE && VERDE = VERDADERO 4'b0010 && 4'b0011 = FALSE 4'b0010 & 4'b0011 = 4'b0010 ! Negación lógica && and lógica M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Relacionales + lógicos Verilog- operadores Relacionales + lógicos Se utilizan para evaluar relaciones. V || F || F = V || OR lógica == igualdad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ROJO == ROJO = V
Verilog- operadores Relacionales Se utilizan para evaluar relaciones. ROJO != ROJO = F != desigualdad == igualdad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ROJO == ROJO = V
Verilog- operadores Relacionales Se utilizan para evaluar relaciones. ROJO != ROJO = F != desigualdad == igualdad M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx ROJO == ROJO = V
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores Desplazamiento Se utilizan para desplazar información. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
assign C = (4'b1100 >> 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. >> desplazamiento a la derecha assign C = (4'b1100 >> 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
assign C = (4'b1010 << 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. << desplazamiento a la izquierda assign C = (4'b1010 << 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
assign C = (4'b1010 <<< 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. <<< desplazamiento aritmético izquierdo assign C = (4'b1010 <<< 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
assign C = (4'b1011 <<< 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. <<< desplazamiento aritmético izquierdo assign C = (4'b1011 <<< 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
assign C = (4'b0111 >>> 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. >>> desplazamiento aritmético derecho assign C = (4'b0111 >>> 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
assign C = (4'b1011 >>> 2); Verilog- operadores Desplazamiento Se utilizan para desplazar información. >>> desplazamiento aritmético derecho assign C = (4'b1011 >>> 2); M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Valor de C. 1 3 2 Posición.
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores ?: Condicional Trabaja como en el lenguaje C. Condición ? caso verdadero : caso falso ; M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- 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- 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- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores { , } Concatenación Provee de una forma de crear buses. Expresa operando separados por comas y dentro de llaves. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog- operadores { , } Concatenación // Tomando las siguientes consideraciones. a = 1'b1, b = 2'b00, c = 2'b10, d = 3'b110 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx y = { b, c} // y valdrá 4'b0010 y = { a, b, c, d, 3’b001} 11’b10010110001
Verilog- operadores: ejercicio { , } Concatenación // Tomando las siguientes consideraciones. a = 1'b1, b = 2'b00, c = 2'b10, d = 3'b110 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx y = { a, b, c, d, 3’b001} ________________? y = { a, b[0], c[1]} ________________?
Verilog- operadores: solución { , } Concatenación // Tomando las siguientes consideraciones. a = 1'b1, b = 2'b00, c = 2'b10, d = 3'b110 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx y = { a, b, c, d, 3’b001} 11’b10010110001 y = { a, b[0], c[1]} 3’b101
Verilog- operadores: solución { { } } Replicador // Tomando las siguientes consideraciones. a = 1'b1, b = 2'b00, c = 2'b10, d = 3'b110 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx y = { 4{a} } // 4’b1111 y = { 4{a}, 2{b} } //8’11110000
Verilog- operadores Aritméticos Lógicos Relacionales Desplazamiento Condicionales Concatenación M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog Temas Tipos de datos. Operadores. Ejemplos combinatorios. Diseño concurrente. Diseño estructural. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Operadores de asignación Temas Tipos de datos. Operadores : asignación Ejemplos combinatorios. Diseño concurrente. Diseño estructural. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Operadores de asignación Blocking: Non-blocking Evaluación y asignación son inmediatos. = M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Todas las asignaciones son retrasadas hasta que las operaciones sean evaluadas. <=
Operadores de asignación Blocking: Evaluación y asignación son inmediatos. = always @ (a or b or c) begin x = a | b; y = a ^ b ^ c; z = b & ~c; end M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx // Se evalúa y asigna a x // Se evalúa y asigna a y // Se evalúa y asigna a z
Operadores de asignación Todas las asignaciones son retrasadas hasta que las operaciones sean evaluadas. Non-blocking <= always @ (a or b or c) begin x <= a | b; y <= a ^ b ^ c; z <= b & ~c; end M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx // Se evalúa pero retrasa la asignación de x // Se evalúa pero retrasa la asignación de y // Se evalúa pero retrasa la asignación de y // Se asigna x, y y z con sus valores nuevos
Blocking vs Non-blocking 1 A B ideal real Transición de señales lógicas A B C w y M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Blocking vs Non-blocking 1 A B real Transición de señales lógicas C w y w = a & b y = w | c Blocking: Evaluación y asignaciones inmediatas a = b b = a M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Non-blocking: asignación con retardo hasta evaluar todo a <= b b <= a w <= a & b y <= w | c ¿Cuándo utilizarlo? Secuencial Combinatorio
Operadores de asignación Temas Tipos de datos. Operadores : asignación Ejemplos combinatorios. Diseño concurrente. Diseño estructural. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios Temas Bloque always@ 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@ always@ Son utilizados para describir eventos que pasarían bajo ciertas circunstancias. Sintaxis: M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx always @(lista de sensibilidad) begin … elementos end
Blocking vs Non-blocking always @ (a or b or c or d) begin b <= a; c <= b; d <= c; end always @ (a or b or c or d) begin b = a; c = b; d = c; end M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx d = ? d = ?
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1 Dibuja el diagrama lógico 𝐹=𝑋∙𝑌+ 𝑍 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
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
Ejemplos combinatorios: # 1 module ejemplo02 ( input wire X, input wire Y, input wire Z, output F ); assign F = ( X & Y ) | (~Z); endmodule Solución por comportamiento 𝐹=𝑋∙𝑌+ 𝑍 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 Ejemplos combinatorios: # 1 Solución por estructura Código de compuerta AND Código de compuerta OR Código del circuito M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Código de compuerta NOT
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 Ejemplos combinatorios: # 1 Solución por estructura Código de compuerta AND Código de compuerta OR Código del circuito M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Código de compuerta NOT
Ejemplos combinatorios: # 1 module AND2gate(A, B, F); input A; input B; 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
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 Ejemplos combinatorios: # 1 Solución por estructura Código de compuerta AND Código de compuerta OR Código del circuito M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Código de compuerta NOT
Ejemplos combinatorios: # 1 module OR2gate(A, B, F); input A; input B; 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
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 Ejemplos combinatorios: # 1 Solución por estructura Código de compuerta AND Código de compuerta OR Código del circuito M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Código de compuerta NOT
Ejemplos combinatorios: # 1 module NOTgate(A, F); input A; output F; reg F; always @ (A) begin F <= ~A; end endmodule 𝐹=𝑋∙𝑌+ 𝑍 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1 𝐹=𝑋∙𝑌+ 𝑍 Ejemplos combinatorios: # 1 Solución por estructura Código de compuerta AND Código de compuerta OR Código del circuito M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Código de compuerta NOT
Ejemplos combinatorios: # 1 module circuito(X, Y, Z, Fout); input X, Y, Z; output Fout; 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
Ejercicio combinatorios: # 1 𝐹= 𝑉 ∙𝑊∙𝑌+ 𝑍 ∙Y Diagrama Tabla de verdad #entradas #salidas Operaciones Código de comportamiento M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # Definición del tipo de entradas/salidas. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Numero ? Tamaño ? Nombre ? Tipo ?
Ejemplos combinatorios: # Bloque always ¿Sensibilidad? ¿Qué incluye? M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # Bloque case ¿Sensibilidad? Sel = 3’b011 Sel = 3’b111 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Ejemplos combinatorios: # 1 M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx Diagrama lógico que infiere la síntesis del código anterior.
Verilog Temas Tipos de datos. Operadores. Ejemplos combinatorios. Diseño concurrente. Diseño estructural. Sentencias de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Verilog Temas Tipos de datos. Operadores. Ejemplos combinatorios. Diseño concurrente. Diseño estructural. Sentencias de control. M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Sentencias de control Sentencia IF Sentencia case M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx
Sentencia IF M.C. Rubén E. Marmolejo ruben.estrada@hetpro.com.mx