Integración de entidades en VHDL

Slides:



Advertisements
Presentaciones similares
Lenguajes de Descripción de Hardware
Advertisements

Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Programación de Computadores
2 Estructuras lineales.. Qué es una estructura? La estructura es una manera de conectar los valores y de manera automática conectarlos de manera que tengan.
III - Gestión de memoria
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Circuitos Digitales II
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Algebra Booleana y Compuertas Lógicas
Estructuras de Repetición
Circuitos Secuenciales
Circuitos Combinacionales Comunes
Funciones en lenguaje C
Entradas FF Sincrónicas y Asincrónicas
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
VHDL.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Programación de Computadores
 SON FUNCIONES LÓGICAS  REPRESENTADAS POR TABLAS DE VERDAD  SIMPLIFICABLES POR LÓGICA BOOLEANA  SIMPLIFICABLES POR KARNAUGH  APLICACIONES: funciones.
Semana 5 Subprogramas..
EXAMEN CORTO SOBRE FLIP-FLOPS
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Subconsultas Avanzadas
Índice. Revisando conceptos acerca de la memoria.
INTRODUCCIÓN AL DISEÑO SECUENCIAL: CONTADORES Y REGISTROS
Análisis de Sistemas Secuenciales
EXAMEN CORTO SOBRE FLIP-FLOPS
Sistemas Concurrentes: programación concurrente
Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de.
Diseño lógico combinacional mediante VHDL
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
EXPRESIONES Y SENTENCIAS
Ing. Diego Barragán Guerrero
Operadores lógicos en PHP Programación en Internet II.
Introducción Electrónica Digital
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Lógica de Tres Estados (TRI-STATE)
Introducción a VHDL Agenda Un poco de historia Definiciones generales Entidades Arquitecturas Configuraciones.
Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Circuitos Digitales.
Diseño lógico secuencial con VHDL
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
Términos algoritmo diseñar algoritmo implementar algoritmo
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
RESUMEN: Softmicro de 8 bits Xilinx
INTERRUPCIONES – ABRAZO MORTAL
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Alumno: Gerardo Mario Valdés Ortega
Lic. Carla Aguirre Montalvo
Diseño jerárquico con VHDL
Compuertas lógicas INTRODUCCION
BANCOS DE PRUEBAS CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Décimo Curso de Programación Básica con NQC “Segunda Clase” Cristián Arenas Ulloa Agosto 29 de 2009.
Máquinas de estado con VHDL
Circuitos secuenciales 2
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
Unidad de Control Ubicación: Es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Realizar.
Organización del Computador 1 Lógica Digital 2 Circuitos y memorias.
BANCOS DE PRUEBA CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.
Ing. Diego Barragán Guerrero Máquinas de estado con VHDL.
Transcripción de la presentación:

Integración de entidades en VHDL Ing. Diego Barragán Guerrero http://www.matpic.com

Introducción Una de las fortalezas de VHDL es la facilidad de integrar “sistemas digitales” que contienen una gran cantidad de subsistemas electrónicos con el fin de minimizar el tamaño de la aplicación. La integración de entidades puede realizarse mediante el diseño individual de cada bloque lógico a través de varios procesos internos que posteriormente pueden unirse mediante un programa común. Otra posibilidad es observar y analizar de manera global todo el sistema evaluando su comportamiento solo a través de sus entradas y salidas.

Programación de entidades individuales: Contador y decodificador

Reporte de uso de recursos.

Contador y decodificador: usando señales.

Teclado, codificador, registro, decodificador

Teclado, codificador, registro, decodificador: TEST BENCH

Teclado, codificador, registro, decodificador: uso de SEÑALES.

Teclado, codificador, registro, decodificador: TEST BENCH.

SIGNAL y VARIABLES VHDL provee con dos objetos para trabajar con valores de datos no estáticos: señales y variables. Constantes y señales pueden ser globales (usadas en tipos de código concurrente o secuencial). Una variable es local, usada solo en códigos secuenciales: procesos. SIGNAL Una señal sirve para pasar valores de entrada o salida de un circuito, así como entre sus unidades internas. Todos los puertos de una entidad son señales por defecto. Sintaxis: SIGNAL name : type [range] [:= initial_value]; Ejemplos: SIGNAL control: BIT := '0'; SIGNAL count: INTEGER RANGE 0 TO 100; SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0); Una señal puede modificar su valor mediante la sentencia de asignación de señales, que es <= (ejm: count<=35;) Un aspecto muy importante de las señales, cuando se usa en un sección secuencial de código (proceso), es que su actualización no es inmediata, sino que se realiza una vez acaben los procesos activos.

SIGNAL Contador de unos (1) Otro aspecto a tener en cuenta en las señales es la asignación múltiple hecha a una señal. El compilador puede indicar un aviso o bien no completar el chequeo de sintaxis, o inferir un circuito erróneo (considerando solo la última asignación, por ejemplo). Contador de unos (1) El código tiene múltiples asignaciones a la misma señal - temp- (temp <= 0; y temp <= temp + 1;). Sin embargo, debido a que el valor de una señal no se actualiza de inmediato, ambas asignaciones entran en conflicto, ya que el valor de la primera asignación no se cumple sino hasta el final del proceso, de tal modo que un valor erróneo se asigna en la segunda asignación.

VARIABLES Contrario a un señal o constante, una variable representa solo información local. Solo puede usarse dentro de un proceso (código secuencial) y su valor no puede transferirse de forma directa. Su actualización es inmediata, así el nuevo valor puede ser usado inmediatamente en la siguiente línea del código. Para declarar una variable se usa la siguiente sintaxis: VARIABLE name : type [range] [:= init_value]; Ejemplos: VARIABLE control: BIT := '0'; VARIABLE count: INTEGER RANGE 0 TO 100; VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000"; Debido a que una variable solo puede usarse en código secuencial, debe colocarse en la parte declarativa del proceso.

VARIABLES Contador de unos (1) Debido a que la actualización de una variable es inmediata, el valor inicial se establece correctamente y no hay conflicto de asignaciones múltiples.

SIGNAL versus VARIABLE Asignación <= := Utilidad Representa interconexión de circuitos (cableado) Representa información local Visión Global Local (visible solo dentro del proceso) Entorno En código secuencial, la actualización no es inmediata (el nuevo valor por lo general solo es disponible a la finalización del proceso). Actualización inmediata (el nuevo valor puede ser usado en la siguiente línea del código) Uso En Paquetes, entidades, arquitecturas. En una entidad, todos los puertos son señales por defecto. Solo en código secuencial (dentro de un proceso, en su parte declarativa)

SIGNAL versus VARIABLE Recordar: la asignación a una variable es inmediata, lo que no es el caso de un señal. En general, el nuevo valor de una señal será solo disponible al finalizar del proceso. Por lo general, solo una asignación a señal es permitida dentro de un proceso. Un error común al usar señales es olvidar que se necesita una cierta cantidad de tiempo para actualizar la señal. Así, la asignación sel<=sel+1 en el código resultará en 1 más cualquier valor que haya sido previamente propagado a sel, ya que la asignación sel<=0 no ha tenido el suficiente tiempo de actualización.

SIGNAL versus VARIABLE Recordar: la asignación a una variable es inmediata, lo que no es el caso de un señal. En general, el nuevo valor de una señal será solo disponible al finalizar del proceso. Por lo general, solo una asignación a señal es permitida dentro de un proceso. Cuando se usa variables, la asignación de variables es siempre inmediata.

Asignación a SIGNAL Recordar que un puerto es una señal por defecto. La asignación q<=d y qbar<=NOT q son ambas síncronas, de tal modo que sus nuevos valores serán disponibles solo al finalizar el proceso. Esto es un problema para qbar, debido a que el nuevo valor de q no se ha propagado todavía. Por lo tanto, qbar tomará el valor anterior a q, de tal modo que el valor de qbar estará un ciclo de reloj retardado. Resultando en un mal funcionamiento del circuito.

Asignación a SIGNAL DFF En este ejemplo, se coloca la asignación qbar<=NOT q fuera del proceso, de tal forma que opera como una expresión concurrente.

Divisor de frecuencia: uso de señales y variables. Circuito que divide la frecuencia de reloj por 6.

Divisor de frecuencia: uso de señales La declaración generic es una herramienta muy útil cuando se necesita varios valores de prueba en una entidad. La línea GENERIC(N : INTEGER := 5);define una variable entera N igual a 5, que determina la división de frecuencia del reloj por 6 (N+1, debido al conteo del 0). De este modo, para cambiar la división de frecuencia a otro valor, solo es necesario cambiar N. Reset Asíncrono

Número de registros Una señal genera un FF siempre que una asignación se hace en la transición de otra señal, esto es, cuando ocurre una asignación síncrona. Tal asignación, siendo síncrona, solo puede suceder dentro de un proceso (usualmente luego de la declaración "IF signal'EVENT..." o "WAIT UNTIL"). Una variable, por otro lado, no necesariamente generará un FF si su valor nunca deja un proceso. Sin embargo, si el valor es asignado a una variable en la transición de otra señal, y tal valor es eventualmente pasado a un señal (la cual deja el proceso), se inferirán FF. Una variable genera también un registro cuando se usa antes de un valor que ha sido asignado a ella.

Número de registros Ejemplos: En el precedente proceso, tanto output1 como output2 son almacenadas (esto es, infieren un FF), debido a que a ambas se les asigna valores a la transición de otra señal (clk).

Número de registros Ejemplo 2: En el ejemplo precedente, solo output1 se almacenará (output2 hará uso de compuertas lógicas).

Número de registros: DFF con q and qbar Ambas soluciones funcionan adecuadamente. La diferencia entre ellas reside en el número de FF necesarios en cada caso.

Referencias: Volnei A. Pedroni. 2004. Circuit Design with VHDL. MIT Press, Cambridge, MA, USA. Maxinez, D.G., Alcalá, J. 2003. VHDL: el arte de programar sistemas digitales. Compañía Editorial Continental.