Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIDAD 3: VHDL
5.1 Introduccin
5.2 Arquitectura Picoblaze
5.3 Programacin en ensamblador Picoblaze
5.4 Manejo de interrupciones
Dominios descriptivos:
Comportamiento
Se realiza la funcin sin informacin de
cmo se hace
Estructural
Los bloques se conectan mediante
interconexiones (netlist o esquemas)
Fsico
Localizacin y propiedades fsicas
reales
Niveles de abstraccin:
Circuito
Valores continuos, todo es electrnica,
tiempo continuo
Lgico
Valores lgicos (T,F), slo computacin,
tiempo continuo
RT (RegisterTransfer)
Palabras con valores discretos, control
y procesamiento, tiempo discreto
Algortmico
Estructuras abstractas, dependencias
en lugar de tiempo
Sistema
Relaciones entre subsistemas,
sncronos y protocolos
Medidas:
Circuito
Tiempo de subida y bajada, consumos
rea
Lgico
Tiempo de conmutacin, skew, rea
equivalente
RT
Tiempo de ciclo, mrgenes,
compuertas equivalentes
Algortmico
Latencia, cadencia de datos, nmero
de mdulos
Sistema
Ancho de banda, MIPS.
Transiciones:
Sntesis/Anlisis
Comportamiento estructural
Optimizacin
Mejora de una descripcin sin variar el
nivel de abstraccin
Generacin/Extraccin
Estructural fsico
Refinamiento/Abstraccin
Bajar/Subir el nivel de abstraccin en
el mismo dominio
Sntesis lgica:
Convierte una descripcin de un sistema digital
mediante un HDL en una implementacin
tecnologca.
Descripcin HDL:
library ieee;
use ieee.std_logic_1164.all;
entity puertas is
port ( A, B, C : in
std_logic;
Y: out std_logic
);
end puertas; El hecho de realizar una sntesis lgica obliga a ciertas
restricciones en la tarea de realizar las descripciones
ARCHITECTURE a of puertas is con HDLs.
begin
Y <= (A and B) or C;
end a;
MC. RODRIGO LUCIO MAYA RAMIREZ
Ventajas del uso de HLDs
Ahorro de tiempo
Facilita las correcciones en el diseo debidas a
fallos de diseo o cambio de especificaciones.
La existencia de herramientas comerciales
automticas (sintetizadores RTL) que permiten
crear descripciones gate-level a partir de los
modelos a nivel RTL
La propia descripcin en el lenguaje de alto Los HDL tienen elementos que permiten el diseo a
nivel sirve como especificacin del gran escala, de forma fcil; por ejemplo,
comportamiento del sistema a disear componentes, funciones, procedimientos,
(tanto a nivel funcional como las paquetes.
restricciones temporales), y la interface con
el resto del sistema.
Los modelos descritos con estos lenguajes,
pueden ser verificados fcilmente y de El lenguaje soporta metodologas de diseo
forma precisa por simuladores definidos en diferentes: top-down, bottom-up, o mixtas.
base a estos HDL.
El lenguaje puede ser usado como un medio
de intercambio entre los fabricantes de
ASICs y los usuarios de herramientas CAD.
Soporta modelos de tiempos sncronos y El modelo, a travs de los atributos, puede contener
asncronos. informacin del diseo en s mismo, no solo de la
funcionalidad: por ejemplo, informaciones tales
Posibilidad de implementar distintas tcnicas de como el rea y velocidad.
modelado digital (descripciones de mquinas de
estados finitos (FSM), descripciones algortmicas,
redes de Petri, y ecuaciones Booleanas
Para generar documentacin, siempre y cuando los modelos de los circuitos estn
bien comentados.
Entity bit8tobcd is
Port( clk: in std_logic;--reloj del sistema, para dividir
rst: in std_logic;
cuenta: out std_logic_vector(1 downto0);--para depurar
bitin: in std_logic_vector(7 downto0); --8 bits de entrada
seg: out std_logic_vector(6 downto0);--tiempo a iluminar
ctrlD: out std_logic_vector(3 downto0; --ctrl de los nodos
bcd: out std_logic_vector(15 downto0)--para depurar
);
End bit8tobcd;
Para crear bancos de prueba (test- bench), es decir, crear los estmulos y ver los
resultados durante la simulacin.
Macrocelda CPLD.
Como se de las figura, estos dispositivos incluyen adems de las macroceldas, un arreglo de interconexin
programable (PIA), una red de distribucin de reloj dedicada y bloques de entrada salida que permiten
interfaces compatibles con diferentes estndares elctricos.
Los bloques lgicos AND y OR estn ambos incluidos en la macrocelda del dispositivo.
Los recursos de interconexin local, mostrados Adems, el interconexionado a este nivel provee conexiones
en la Figura 31, permiten hacer las conexiones a la matriz de interconexionado general y a los CLB
entre los elementos internos de un bloque lgico adyacentes. Las conexiones a los CLB adyacentes permiten
o CLB, como las tablas de bsqueda (LUT), los optimizar los diseos al evitar los retardos y la utilizacin de
flip-flop y las realimentaciones dentro del CLB. recursos de la matriz general de interconexionado.
Desarrollo de FPGAs con mayor capacidad, ms Integracin con herramientas y otros software de
velocidad, menos consumo de potencia y menor desarrollo de mayor nivel, como son Matlab y
herramientas para el diseo integrado de
costo. software y hardware. (HW-SW co-design).
Integracin en hardware sobre las lgicas Integracin del manejo de configuracin de FPGAs
programables de bloques especficos como ALUs, con las herramientas de diseo de circuitos
componentes para procesamiento digital de seal, impresos (PCBs), para poder configurar el
integracin con uP y uC, memorias, etc. interconexionado interno del SoPC de manera
Integracin y mezcla entre FPGAs y circuitos integral con el conexionado hacia los
integrados de propsito especfico (ASICs). componentes externos.
Componentes que pueden pasar directamente de Instrumentos, tales como analizadores lgicos, que
un prototipo sobre una FPGA a un ASIC sin permiten observar la lgica de interna de las
FPGA en tiempo real al mismo tiempo que se
esfuerzo de diseo adicional. observan otras seales, externas a la FPGA.
Cambios en las herramientas de software para Sistemas con aplicaciones que utilicen la
tener mayor integracin entre los diferentes reconfiguracin o reprogramacin de las FPGAs
usuarios y en los distintos pasos del proyecto. Esto directamente en el producto final segn la
incluye el manejo de grupos de trabajo, el manejo necesidad del momento.
de la propiedad intelectual, la documentacin de Integracin de bloques lgicos programables
proyectos integrada a las herramientas de diseo, alrededor de lgica fija en ASICs o integrados
la transferencia de los diseos para FPGAs a ASICs, estndar.
etc.
Surge a principios de los 80s del proyecto DARPA (del Departamento de Defensa de los EE.UU.)
llamado VHSIC (Very High Speed Integrated Circuits)
Crisis del ciclo de vida del HW: Cada vez los circuitos integrados eran ms complejos, y el coste de
reponerlos cada vez era mayor, bsicamente porque no estaban correctamente documentados. VHDL
naci como una manera estndar de documentar circuitos.
El uso de VHDL permiti comprobar que el tiempo de diseo de los circuitos se reduca, porque se
podan crear directamente de su descripcin: utilidad de la sntesis.
Bibliotecas (Library)
Almacenan los elementos de diseo:
tipo de datos, operadores, componentes,
objetos, funciones,...
Esos elementos de diseo se organizan
en Paquetes
Packages: son unidades de
almacenamiento de
elementos y tienen que
hacerse visibles para
poder ser utilizados .
Hay 2 bibliotecas que siempre son
visibles por defecto: std (la standard) y
work (la de trabajo) y que no es necesario
declarar
Entidades (Entity)
Es el modelo de interfaz de un circuito Una unidad hardware se puede visualizar como una caja
con el exterior mediante unas terminales negra, el interfaz de la caja negra est completamente
de entrada y de salida. definida.
Es la caja negra que define las entradas y El interior est oculto
salidas.
En VHDL la caja negra se denomina entidad
La entidad describe la E/S del diseo
Arquitectura (Architecture)
Para describir su funcionamiento se asocia una
Describe el funcionamiento del circuito.
implementacin que se denomina arquitectura
La arquitectura describe el contenido del diseo.
La entidad se utiliza para hacer una descripcin "caja negra" del diseo, slo se detalla su interfaz
Invariante a los espacios, es decir, dos expresiones iguales conteniendo ms o menos espacios son idnticas
Los comentarios van detrs de dos rayas --y convienen que sean claros para que las descripciones puedan
ser fcilmente utilizadas por otras personas o por ti mismo.
VHDL es relativamente laxo con la utilizacin de parntesis, una buena idea es utilizar los parntesis de
manera que una persona la pueda entender con facilidad
y el cuerpo de la descripcin,
consistente en una sucesin de
asignaciones concurrentes y
procesos que modelan la entidad.
La solucin al problema anterior es El valor de S ser el correcto una vez que se hayan
que aunque la ejecucin sea propagado los tiempos de retardo de las compuertas.
secuencial, las asignaciones no tengan No hay que olvidar que se trata de modelar circuitos reales,
tiempo de ejecucin: no virtuales, y las seales necesitan que transcurra el
tiempo para tomar un valor
Caractersticas:
Se ejecutan de forma asncrona unas respecto de las otras en el mismo tiempo de simulacin.
El orden en que se escriban es indiferente, no siguen un orden de ejecucin predefinido.
No obstante conviene escribir el cdigo en el orden que mejor se pueda entender y mejor documente
el diseo.
Los procesos se disparan(su cdigo se ejecuta) cuando cambia alguna de las seales de su lista de
sensibilidad.
Un proceso sin lista de sensibilidad es vlido, pero se activa con cualquier evento, no se asegura un
comportamiento correcto.
Las instrucciones dentro del proceso se ejecutan secuencialmente, una detrs de otra, pero sin dar
lugar a que avance el tiempo durante su ejecucin.
El tiempo slo avanza cuando se llega al final del proceso.
Las seales modelan hilos del circuito, y como tales, slo pueden cambiar de valor si se deja que
avance el tiempo.
Una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan en paralelo.
VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explicito a la
concurrencia
En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan
concurrentemente
Asignacin simple
suma <= ope1 xorope2;
WHEN/ELSE
La asignacin condicional (WHEN/ELSE), Tambin se puede hacer mediante la sentencia de asignacin selectiva
WITH/SELECT
Sintaxis:
CASE expresin IS
WHEN caso1=>
secuencia sentencias1;
WHEN caso2 =>
secuencia sentencias2;
WHEN casoN=>
secuencia sentenciasN;
WHEN OTHERS =>
resto de casos;
END CASE;
exit [etiqueta] [when condicin]; Los bucles pueden tener una condicin de
salida.
Ejemplo:
--Interrumpe el FOR y sigue por el WHILE next [etiqueta] [when condicin];
termina: WHILE a< 100 LOOP
---sentencias Ejemplo:
sigue: FOR n IN 0 TO 100
--Interrumpe el FOR y sigue por el WHILE
---sentencias termina: WHILE a< 100 LOOP
EXIT termina WHEN n=a; ---sentencias
END LOOP sigue; sigue: FOR n IN0 TO100
END LOOP termina; ---sentencias
NEXT termina WHEN n=a;
Cuando existen bucles anidados, sale del END LOOP sigue;
ms interno, o bien, de aquel que tiene la END LOOP termina;
etiqueta que sigue al EXIT.
WAIT 25ns;
Espera indefinidamente
WAIT
Sintaxis:
etiqueta: FOR identificador IN range GENERATE
(sentencias concurrentes)
END GENERATE;
Un atributo es una caracterstica asociada a un elemento(tipo de dato, seal, entidad,) que proporciona
informacin adicional.
Atributo Valor
Un objeto tiene un solo valor y puede tener mltiples atributos.
VHDL proporciona una serie de atributos predefinidos.
1. Descripcin de comportamiento o
algortmica (Behavioral)
Para describir circuitos combinacionales Es decir, hay que evitar que una misma
utilizaremos sentencias de asignacin seal aparezca en el lado izquierdo y en el
concurrentes y procesos. lado derecho de la sentencia de asignacin:
Sentencias de asignacin concurrentes. Van
fuera del proceso. Esto se debe a que en una Y <= Y nand X;
declaracin concurrente no importa el orden en
el que se escriban las seales, ya que el
resultado para una determinada funcin sera el Procesos.
mismo. Se utilizarn tres tipos de sentencias de Se debe respetar las siguientes reglas:
asignacin concurrentes: Si una seal es leda en el interior de un
proceso, es decir, aparece en el lado derecho
Sentencias de asignacin simples, por ejemplo: de una sentencia de asignacin o en una
condicin, debe aparecer en su lista de
salida1 <= A and B;
sensibilidad.
Sentencias de asignacin condicionales, por Si a una seal se le asigna un valor de forma
ejemplo: condicional (con sentencias if o case) nos
salida2 <= A when S = 1elseB; debemos asegurar que no existen
condiciones para las cuales el valor de la
Sentencias de seleccin, por ejemplo: seal no se ha definido en el cdigo.
with S select
salida3 <= 1 when 00; En VHDL las seales mantienen su valor
0when others; hasta que se les asigna uno nuevo; por lo
tanto, si para una seal dada, su valor est
indefinido, el compilador sintetiza un latch
Siempre hay que evitar la realimentacin
combinacional, ya que esto modela elementos (biestable) que almacena la seal.
de memoria asncronos.
entity latch is
Es necesario conocer el tipo de
port (a, b: in std_logic;
descripcin concreto a realizar para
d: out std_logic);
que se reconozca un elemento
end latch;
secuencial
architecture l_a of latch is
Es obligado el uso de procesos
begin
(excepto latches), y recomendable que
process (a,b)
incluyan lista de sensibilidad
begin
Diferencia entre variables y seales if b=1 then d <= a; end
Aconsejable incluir siempre un reset if;
global que aplique un valor de end process;
inicializacin end l_a;
entity latch is
port (a, b: in std_logic;
d: out std_logic);
end latch;
architecture l_a of latch is
begin
d <= a when b=1;
end l_a;
entity bidir is
port ( bid : inout std_logic ;
a, b, c, oe : in std_logic;
salida : out std_logic);
end bidir ;
architecture bidir_a of bidir is
signal interna1, interna2 : std_logic ;
begin
bid <= interna1 when oe = '1' else 'Z';
interna2 <= bid;
Recordar:
Usar 2 procesos
Definir tipo de dato TYPE
Si el tamao de la memoria es
reducido, sta puede implementarse
mediante recursos lgicos comunes
(funciones lgicas y registros)
Habitualmente, existen en hardware
estructuras regulares que las
implementan y donde se sintetizan si
la descripcin VHDL es apropiada