Introduccion Breve-VHDL-Parte 3 - sin Registrar PDF

Title Introduccion Breve-VHDL-Parte 3 - sin Registrar
Author Rafael Saldaña Ojeda
Course Sistemes digitals i llenguatges de descripció de hardware
Institution Universitat Autònoma de Barcelona
Pages 15
File Size 1.3 MB
File Type PDF
Total Downloads 15
Total Views 145

Summary

apuntes...


Description

Hola, En esta sesión veremos como operan las sentencias concurrentes del VHDL y detallaremos una selección de las más relevantes utilizadas en este curso de sistemas digitales.

1

Recordemos en primer lugar la estructura básica de un modelo en VHDL donde ya habíamos identificado que la principal unidad de diseño donde solo aparecen sentencias concurrentes son las arquitecturas. Recordemos también que una de las sentencias concurrentes más importante es el “process” que aglutina descripciones estrictamente secuenciales basadas en las sentencias secuenciales que vimos en la sesión anterior.

2

Las sentencias concurrentes, como su nombre indica, se deben evaluar simultáneamente y por lo tanto el orden en que se escriban dentro del módulo que las aloja es totalmente irrelevante; dicho de otra forma, cualquiera que sea el orden de un mismo conjunto de sentencias concurrentes, estas deben acabar produciendo el mismo resultado. ¿Dónde pueden utilizarse dentro de una descripción VHDL? Las sentencias concurrentes pueden utilizarse en distintas partes de una descripción VHDL: Entities (en la parte de sentencias pasivas), Blocks (grupos de sentencias concurrentes) o Architectures (todas las sentencias entre el begin y el end). Normalmente en esta introducción solo veremos ejemplos de uso de sentencias concurrentes en Architectures. De todas las sentencias concurrentes del VHDL, ¿Cuáles vamos a analizar en esta introducción? • Process: descripción mediante sentencias secuenciales de una determinada funcionalidad. • Asignaciones a señal: o Asignación directa de un valor o el resultado de una expresión a una señal. o Asignación condicional: en función del resultado de una condición se asigna uno u otro valor a una señal. o Asignación con selección: el valor a asignar se selecciona según el resultado de una expresión o el valor de una señal o variable. • Componentes: para facilitar el diseño jerárquico mediante el uso de módulos (entity-architecture) definidos en VHDL y disponibles en alguna de la bibliotecas utilizadas por el diseño en curso. • Generate: sirve para generar de forma sencilla estructuras repetitivas (i.e: bit-slice o tipo bucle). Imprtante: como paso previo a cualquier elaboración posterior para simulación todas y cada una de las sentencias concurrentes se convierten a su proceso secuencial equivalente. Luego cuando se simula un código VHDL solo se simulan procesos concurrentes entre si. 3

La primera sentencia concurrente que veremos es el process o proceso, que como ya hemos visto aglutina sentencias secuenciales que definen una determinada funcionalidad. Los procesos se comunican entre si mediante señales y son sensibles a eventos o condiciones sobre dichas señales que les pueden reactivar. La lista de sensibilidad del principio de un proceso muestra un conjunto de señales cuyos cambios o eventos reactivan la ejecución o evaluación del proceso. Un proceso es un bucle infinito que debe contener al menos una condición de paro o espera, esto es una sentencia wait o una lista de sensibilidad. Como podemos ver en la equivalencia entre los procesos de pie de transparencia un proceso con lista de sensibilidad al principio y el mismo proceso con un wait on son completamente equivalentes. Asi mismo observamos el concepto de bucle infinito que solo se detiene por la lista de sensibilidad o su wait on equivalente En cualquier parada (wait) de un proceso se pueden especificar los eventos, señales o condiciones que pueden reactivar la ejecución del mismo; o sencillamente no especificar nada y entonces el proceso se queda parado para siempre, o sea hasta el final de la simulación en curso. Los procesos pueden tener declaraciones locales (constantes, variables, señales) que solo son visibles dentro del mismo proceso.

4

La asignación concurrente a señal tiene una sintaxis idéntica a su equivalente secuencial, pero ahora cuando tengamos una serie de asignaciones a señal como estas son todas concurrentes, su orden no es importante y se deben evaluar simultáneamente por parte del simulador. Asimismo cada una de las asignaciones concurrentes a señal dará lugar a su proceso equivalente antes de proceder a su simulación. Y esta expresión que vemos aquí con distintos valores asignados a una señal en distintos tiempos es una manera de cargar una determinada forma de onda sobre una señal o, lo que es lo mismo, de cargar el driver de dicha señal tal como vemos abajo a la derecha.

5

Esta asignación condicional a señal significa que el valor a asignar a una señal depende de alguna condición. Aquí vemos un par de ejemplos: - Si Sel=‘0’  asignamos S=A y sino asignamos S=B esto es lo que en el ámbito secuencial seria una estructura “If…the…else”, que de hecho es la forma en que esta sentencia concurrente de asignación condicional a señal se traduce a su proceso secuencial equivalente como vemos aquí. - En este segundo ejemplo vemos una estructura condicional mas compleja que de hecho responde a una serie de “ifs” anidados y así es como se traduce a su proceso secuencial equivalente. • La palabra reservada “unnafected” significa que, en cualquier otro caso distinto de los dos primeros que hemos analizado (00, 11), no hay que modificar el valor actual de la señal “S”. El concepto de no modificar el valor de una señal normalmente significa guardar su valor actual inalterado y para ello sobre esa señal se inferirá un elemento de memoria tipo latch. • Si en lugar de “unnafected” hubiésemos puesto por ejemplo “E3” entonces ya no necesitamos guardar el valor previo de “S” y en ese caso la sentencia “null;” del proceso secuencial equivalente seria: “S...


Similar Free PDFs