Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

VHDL

PRESENTACION
by

Aldo Prado

on 4 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of VHDL

VHDL EQUIPO 4 ELEMENTOS BASICOS
DE MODELACION ESTRUTURA DE UN
DISEÑO EN VHDL ESTILOS
DE DESCRIPCIÓN VHDL
SECUENCIAL
Y
CONCURRENTE EJEMPLOS DE DISEÑO SEÑALES Y VARIABLES 04/NOV/2012 GRACIAS DISEÑO JERARQUICO TEST DE PRUEBA El significado de las siglas VHDL es VHSIC (Very Hig Speed Integrated Cirduit) Hardware Description Language, es decir, lenguaje de descripción hardware de circuitos integrados de muy alta velocidad. Unos de los objetivos del lenguaje VHDL es el modelado. Modelado es el desarrollo de un modelo para simulación de un circuito o sistema previamente implementado. Modelado comportamental: Lo importante es la función que relaciona la
salida con la entrada. El lenguaje VHDL permite escribir funciones complejas sin recurrir a su implantación física con lo que se revela como una herramienta de gran rendimiento ya que proporciona una potencia de diseño muy atractiva a un coste muy bajo. En el modelado estructural se especifican los bloques que componen un circuito y sus interconexiones. Cada bloque integrante debe contar con su descripción previa de manera que se construye una jerarquía de descripciones donde las inferiores dan lugar a superiores más complejas y así sucesivamente. En el modelado de flujo de datos o RTL (Register Transfer Logic) se declara la sucesión temporal con la que evolucionan las diferentes señales del modelo descrito. El circuito del puede ser visto como una caja negra que se relaciona con el exterior mediante un conjunto se señales, unas de entrada y otras de salida. En la figura siguiente se ha señalado el bloque mediante una linea punteada que encierra los componentes. El bloque se conoce en VHDL como ENTIDAD y se declara en primer lugar. Una ENTIDAD indica las señales que entran al circuito y las que salen, es decir, declara la relación del circuito con el mundo exterior. Toda descripción hardware mediante VHDL consta de la declaración de una ENTIDAD y de, al menos, una ARQUITECTURA asociada. La sintaxis básica de estos elementos es la siguiente: La declaración de entidad se realiza mediante la palabra reservada ENTITY seguida de una etiqueta identificadora. Dentro de la entidad se declaran las señales que entran y salen usando la palabra reservada PORT. También se declaran los genéricos o constantes así como sus valores usando la palabra reservada GENERIC. Las señales pueden ser de varios tipos, unos definidos en la propia normalización del lenguaje (BIT, BITVECTOR, etc.) y otros definidos por el programador. Cada tipo lleva asociado un modo de entre tres posibles: IN, OUT e INOUT. Los listados de señales de una entidad se agrupan por tipos y modos y se separan por comas (“,”). La declaración de la arquitectura utiliza la palabra ARCHITECTURE seguida de un identificador de la misma y del identificador de la entidad a la que se asocia y con la que debe ser consistente en tipos y nombres de señales. Inmediatamente detrás de ARCHITECTURE y antes de la palabra BEGIN se encuentra la parte declarativa de la arquitectura que sirve para declarar variables y señales locales a la arquitectura. Después de BEGIN tenemos las sentencias concurrentes del modelo. La existencia de sentencias concurrentes ha sido heredada del lenguaje ADA. Cada sentencia concurrente se ejecuta de manera simultánea en tiempo de simulación con el resto de forma que todas parten del mismo instante de simulación. Como se puede ver más arriba el interior de la ARQUITECTURA está constituido por un conjunto de sentencias concurrentes. Hasta el momento solo hemos visto una de ellas que es el PROCESO. Un proceso marca los límites del dominio secuencial. Es decir, dentro del proceso el funcionamiento es secuencial mientras que lo que sucede dentro de la arquitectura es concurrente. El proceso utiliza la palabra PROCESS. Entre ésta y la palabra BEGIN tenemos la parte declarativa del proceso.
Un proceso sólo se evalúa si cambia alguna de las señales de su lista de
sensibilización. Es lógico: si las señales de la lista no cambian no hay nada que calcular, las señales no tienen valores nuevos. Dependiendo de las sentencias que se utilicen para describir la funcionalidad de la ENTITY, la ARCHITECTURE resultante tiene un estilo diferente. Los estilos de descripción pueden mezclarse (sentencias concurrentes) Estilos:
•Comportamiento o algoritmico: No tiene ningún significado hardware
•Flujo de datos o RTL: Hay una correspondencia entre el código VHDL
y la implementación hardware
•Estructural: Es la propia implementación hardware Comportamiento o algorítmico •Usa principalmente la sentencia concurrente PROCESS.
•Todas las sentencias están encapsuladas dentro de un PROCESS y son secuenciales
•Las sentencias se ejecutan en el orden en que están escritas •Se utiliza asignación concurrente de señal, llamada concurrente a procedimientos y BLOCK
•Determina el flujo de datos entre los diferentes módulos que implementan las funciones lógicas.
•Puede considerarse una descripción funcional y estructural al mismo
tiempo Flujo de datos o RTL •Utiliza instanciación de componentes PORT MAP y GENERATE
•Conjunto de componentes conectados por señales - NETLIST
•Los componentes tienen que ser previamente compilados y disponibles en la biblioteca WORK. Estructural DISEÑO ALGORITMICO
Ejemplo multiplexor 2:1 con sentencia CASE DISEÑO POR FLUJO DE DATOS
Ejemplo de compuerta AND de 2 entradas Ejemplo: modelo de una compuerta AND
ENTITY and2 IS
PORT (a:in bit; b:in bit; z:out bit);
END and2;
ARCHITECTURE funcional OF and2 IS
BEGIN
PROCESS (a,b)
BEGIN
IF a=`1´and b=`1´ THEN z<=`1´;
ELSE z<=`0´;
END PROCESS;
END funcional; Diseño de Flip-Flops
LIBRARY ieee;
USE ieee.std_logc_1164.all;
ENTITY ff_tipod IS PORT ( d, reloj : IN std_logic;
q : OUT std_logic);
END ff_tipod;
ARCHITECTURE tipo_reloj1 OF ff_tipod IS BEGIN
PROCESS
BEGIN
WAIT UNTIL reloj = `1´; q <= d; --sensible a flanco ascendente
END PROCESS;
END tipo_reloj1; Las declaraciones secuenciales son aquellas en las que el orden que llevan pueden tener un efecto significativo en la lógica descrita. A diferencia de una declaración concurrente , una secuencial debe ejecutarse en el orden en que aparece y formar parte de un proceso (process). Declaración if-then-else process (lista de sensibilidad)
begin
if condición then
-- asignaciones
elsif otra_condición then
-- asignaciones
else
-- asignaciones
end if;
end process; Ejemplo
process (control, A, B)
begin
if control = “00” then
resultado <= A + B;
elsif control = “11” then
resultado <= A – B;
else
resultado <= A;
end if;
end process; Declaración case-when process (lista de sensibilidad)
begin
case señal_condición is
when valor_condición_l =>
-- asignaciones

when valor_condición_n =>
-- asignaciones
when others =>
-- asignaciones
end case;
end process; Ejemplo
process (control, A, B)
begin
case control is
when “00” =>
resultado <= A+B;
when “11” =>
resultado <= A-B;
when others =>
resultado <= A;
end case;
end process; Declaración while-loop process (lista de sensibilidad)
begin
while condición loop
-- asignaciones
end loop;
end process; Ejemplo
process (A)
variable i: natural := 0;
begin
while i < 7 loop
B(i+1) <= A(i);
i := i+1;
end loop;
end process; Declaración for-loop process (lista de sensibilidad)
begin
for loop_var in range loop
-- asignaciones
end loop;
end process; Ejemplo
process (control, A, B)
begin
case control is
when “00” =>
resultado <= A+B;
when “11” =>
resultado <= A-B;
when others =>
resultado <= A;
end case;
end process; Declaraciones Concurrentes Se encuentran fuera de la declaración de un proceso y sueles usarse en las descripciones de flujo de datos y estructural

En una declaración concurrente no importa el orden en que se escriban las señales, ya que el resultado para determinada función será el mismo. Declaraciones Concurrentes En VHDL existen los siguientes tipos de declaraciones concurrentes
-Declaraciones condicionales asignadas a una señal (when-else)
-Selección de una señal (with-select-when) Declaraciones Secuenciales Declaración When-Else
Sintaxis:
señal_a_modificar <= valor_1 when condición_1 else
valor_2 when condición_2 else
...
valor_n when condición_n else
valor_por defecto;
Ejemplo
C <= “00” when A = B else
“01” when A < B else
“10”; Declaraciones Concurrentes Selección de una señal (with-select-when)
La declaración with-select-whense utiliza para asignar un valor a una señal con base en el valor de otra señal previamente seleccionada. Declaraciones Secuenciales Declaración with-select-when
Sintaxis:
with señal_condición select
señal_a_modificar <= valor_1 when valor_1_señal_condición,
valor_2 when valor_2_señal_condición,
...
valor_n when valor_n_señal_condición,
valor_por_defecto when others;
Ejemplo
with entrada select
salida <= “00” when “0001”,
“01” when “0010”,
“10” when “0100”,
“11” when others; Variables
Las variables pueden cambiar su valor una vez han sido declaradas mediante las sentencias de asignación. Una variable no tiene ninguna analogía directa en hardware, normalmente se utiliza en el estilo algorítmico para almacenar valores intermedios dentro de un proceso Variables
Sintaxis
variable identificador {, …} : tipo [:=expresión];

Ejemplos:
variable Indice1, Indice2, Indice3 : integer := 0;
variable Comparación : boolean; Señales.
Una señal es un objeto que, al igual que un variable, puede modificar su valor dentro de los posibles valores de su tipo pero, a diferencia de está, tiene una analogía directa con el hardware, ya que se puede considerar como una abstracción de una conexión física o bus. Por esta razón no está restringida a un proceso sino que sirve para interconectar componentes de un circuito y para sincronizar la ejecución y suspensión de procesos. Señales
Sintaxis
signal identificador {, …} : tipo [:=expresión];
Nota: A diferencia de las variables, una señal no se declarará en la parte declaratoria de un proceso sino en la arquitectura del dispositivo.

Los puertos de una entidad son señales que se utilizan para interconectar el dispositivo con otros dispositivos. Señales
Ejemplo
signal Reloj : std_logic := ´0´;
signal Comparacion : bit;
signal Resultado : integer range 0 to 7;
port (a, b : in integer range 0 to 7;
c : out integer range 0 to 7;
d : inout std_logic); Es una herramienta de apoyo que permite la programación de extensos diseños mediante la unión de pequeños bloques; es decir, un diseño jerárquico agrupa varias entidades electrónicas, las cuales se pueden analizar y simular de manera individual con facilidad, para luego relacionarlas a través de un algoritmo de integración llamado Top Level. ENTIDAD 1 ENTIDAD 2 ENTIDAD 3 ENTIDAD 4 TOP LEVEL Una ventaja importante del diseño jerárquico en la programación de grandes diseños es la facilidad para trabajar al mismo tiempo con otros diseñadores (paralelismo).
Metodología de estructuras jerárquicas Una metodología que se recomienda al programar extensos diseños es el siguiente:
Analizar con detalle el problema y descomponer en bloques individuales la estructura global.
Diseñar y programar módulos individuales (componentes)
Crear un paquete de componentes.
Diseñar el programa de alto nivel (TOP LEVEL)
GRACIAS
Full transcript