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

Esta presentación es un curso rápido y de como programar en VHDL
by

Guillermo Soto

on 30 April 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of VHDL

VHDL
INTEGRANTES

Guillermo Soto Razo

Luis Enrique Vergara Manzo

INTRODUCCIÓN
Antecedentes:

RTL ( resistor transistor lógico )
DTL ( lógica diodo transistor )
ECL ( lógica de emisores acoplados)
TTL ( transistor transistor logic )
CMOS ( complementary metal oxide semiconductor)

Tenían un alto consumo de energía por lo que se usaron hasta 1980.

Funcionan por Corriente
Funcionan por Voltaje
Lógica Programada
Es un tipo de diseño implementado en chips que permite la reconfiguración de los circuitos con el simple cambio del software, es lo contrario de la lógica cableada.

La lógica programada se basa en dispositivos lógicos programables (PLD), los cuales tienen una función no establecida, al contrario que las puertas lógicas que tienen una función fija. Antes de poder utilizar el PLD en un circuito, este debe ser programado.
PAL
Programmable Array Logic (Matriz lógica programable (1978)
Esto hizo los dispositivos más rápidos, más pequeños y más baratos.
Estaban disponibles en encapsulados de 20 pines
GAL
(Generic Array Logic - 1985)
Utiliza una matriz de memoria EEPROM, por lo que se puede programar varias veces.

Un GAL en su forma básica es un PLD con una matriz AND reprogramable, una matriz OR fija y una lógica de salida programable mediante una macrocelda. Esta estructura permite implementar cualquier función lógica como suma de productos con un número de términos definido.
Es una arquitectura compuesta por una matriz O (OR) fija
y una matriz Y (AND) programable.
Lo que se programa en la PAL son los puntos rojos
Estructura
El circuito a la salida de la matriz se denomina macrocelda. El Terminal puede funcionar como entrada o salida según la programación.

Un terminal en modo salida puede reflejar la salida Q y Q negada del flip-flop para circuitos secuenciales o la entrada D y negada para circuitos combinacionales.

De modo similar puede realimentar el terminal de salida o la salida Q negada del flip flop hacia otros términos. Las

La macrocelda, son Macroceldas lógicas que contienen puertas OR y lógica programable, circuitos lógicos que se pueden programar como lógica combinacional o lógica secuencial (flip-flops, contadores y registros).
Los PALs y GALs ya se usan muy poco y están limitadas aproximadamente a unas 250 compuertas como máximo.

Se les llama SPLD (dispositivo lógico programable simple)
CPLD
Para circuitos lógicos mayores, se pueden utilizar PLDs complejos o CPLDs. Estos contienen el equivalente a varias PAL enlazadas por interconexiones programables, todo ello en el mismo circuito integrado. Las CPLDs pueden reemplazar miles, o incluso cientos de miles de puertas lógicas.

Algunas CPLDs se programan utilizando un programador PAL, pero este método no es manejable para dispositivos con cientos de pines. Un segundo método de programación es soldar el dispositivo en su circuito impreso. Las CPLDs contienen un circuito que descodifica la entrada de datos y configura la CPLD para realizar su función lógica específica.
Diseños pequeños medianos y grandes

FPGA
Es un dispositivo basado en la tecnología de matriz de puertas y se le denominó field-programmable gate array (FPGA).

Las FPGAs utilizan una rejilla de puertas lógicas, pero la programación en este caso la realiza el cliente, no el fabricante.

Las FPGAs se programan normalmente tras ser soldadas en la placa, en una forma similar a los CPLDs grandes. En las FPGAs más grandes, la configuración es volátil y debe ser reescrita cada vez que se enciende o la configuración se guarda normalmente en una PROM o EEPROM. Las versiones EEPROM pueden ser programadas mediante técnicas como el uso de cables JTAG.

Son para diseños muy grandes y emulan las compuertas no son fisicas.
Instalación del Software
A continuación se explica como es que se debe de instalar el software que vamos a usar para poder programar lo que deseamos hacer.
Este video nos explica paso a paso como es que lo debemos de hacer, solo hay que tomar en cuenta que la versión en este video es un poco antigua, y ya se cuentan nos versiones mas nuevas en la pagina a la que nos hace referencia.
VHDL
Puede ser VHDL o HDL, es lo mismo

El nombre viene de la combinación de VHSIC y HDL.

VHSIC - Very High Speed Integrated Circuit.
HDL - Hardware Description Language.
Descripción del Circuito en VHDL
Dentro de VHDL hay varias formas de diseñar el mismo circuito, dependiendo de lo que se tenga que hacer, tenemos que elegir la mas apropiada.



Funcional
Describimos la forma en que se comporta el circuito.
Esta es la forma que más se parece a los lenguajes
de software ya que la descripción es secuencial.
Estas sentencias secuenciales se encuentran dentro
de los llamados procesos en VHDL.

Esta es la mas poderosa y usada.

Ej. Sumador: A + B
Declara A o B de los bit deseados
Flujo de Datos
En realidad son ecuaciones lógicas

Estas ecuaciones las obtenemos por medio de los mapas de Karnaugh y pueden ser escribir
directamente en VHDL.

No es muy usada ya que se requiere de un
conocimiento previo.
Estructural
Se describe el circuito con instancias de
componentes. Estas instancias forman un
diseño de jerarquía superior, al conectar los
puertos de estas instancias con las señales
internas del circuito,o con puertos del circuito
de jerarquía superior.

Se define como están interconectadas las
compuertas
Mixta
Combinación de todas algunas de las anteriores
Operadores en VHDL
Multiplicación: * , /, MOD, REM
Desplazamiento: SLL, SRI, SLA, SRA, ROL, ROR
Diversos: NOT, ABS, **
Adición: + , - , &
Booleanos de Relación: =, /=, <, >, >=, <=
Lógicos: AND, OR, NAND, NOR, XOR, XNOR
Módulos
Los módulos, se pueden definir como la
descripción de nuestro circuito integrado,
cuando definimos cuantas entradas tiene,
cuantas salidas tiene y sus terminales.
Concurrencia - El orden no importa
o altera el producto.
¿Como se escribiría?
1. Usando las prioridades descritas (muy complicado)

2) Empleando el uso de paréntesis para definir
prioridades

D<= ((A or B) and C);

3) Describiéndolo por partes ("si" definida como señal interna.)
Si <= A or B; concurrente
D <= Si and C; concurrente
Se puede hacer de forma inversa

Esto no es un programa ya que se implementa
paralelamente.
Módulo 2
Hay dos formas de escribir el circuito

C (0) <= A (0) and B (0); C <= A and B
C (1) <= A (1) and B (1);
C (2) <= A (2) and B (2);
Implementación 1
Implementación y Simulación
Con las siguientes instrucciones vamos a poder definir
sistemas convencionales desde un punto de vista de
comportamiento.

Esto nos va a permitir el desarrollo de sistemas
digitales de manera más rápida con respecto al
ejemplo pasado donde describíamos como estaban
conectadas las compuertas o las expresiones.

En este ejemplo esto no va a ser necesario usando
las siguientes instrucciones.
Señal <=
expresión
when condicional 1
else
expresión2
when condicional 2
else
expresión_n
;

expresión es una constante, vector o señal

Son expresiones concurrentes

S <= I(0) when A = '0' and B = '0'
else I(1) when A = '0' and B ='1'
else I(2) when A = '1' and B = '0'
else I(3);

( A='0', cuando se prueba y
'es un solo bit' )
S<= I(0) when A = "00" -- A es un vector de 2 bits
else I(1) when A(1) = '0' and A(0) = '1' -- Se separan
else I(2) when A = "10"
else I(3) ; -- El ";" va hasta el final
Sistemas Combinacionales
with variable select

Señal<= expresion1 when valor1,
expresion2 when valor2,
expresion3 when valor3,
expresion_n when others;


Estructura concurrente,
when others asigna a Señal lo que no especifiquemos
Convertidor BCD a Segmentos
PROGRAMADOR
Vin de 7 a 12 V, regulado
Checar continuidad en cable plano
Tener cuidado con el ruido
Fuente externa de 3.3 V de 5 daña el CPLD
Programador Jtag
Archivo .jed para CPLD

Sistemas Secuenciales
process (lista de variables sensibles) -- clk

begin

Instrucciones de uso secuencial

end process
case variable is;

when valor1 => hacer1;hacer_n;
when valor2 => hacer1;hacer_n;
when others => hacer1;hacer_n;

end case;
A,B,C variables sensibles
No es un programa es un sistema
paralelo
variables sensibles - D y load
Instrucción if
Esta solo puede ir dentro de de un process,
es secuencial

if condicion (es)
then acciones;
end if
Instrucción if else
Esta solo puede ir dentro de de un process,
es secuencial

if condicion (es)
then acciones;
else acciones;
end if
IF anidados
Solo puede ir dentro de un procces
Es secuencia
El orden define la prioridad
If (condicion) then acciones;
else if (condicion) then acciones;
else if (condicion) then acciones;
else acciones
end if;
end if;
end if;
Flancos de Subida y Bajada
if Variable ´Event AND Variable = '1' then
Acciones; -- prueba flanco de subida
end if;

if Variable ´Event AND Variable = '0' then
Acciones; -- prueba flanco de bajada
end if;
Contador
Para usar operaciones aritméticas se tienen que
agregar las librearias

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


Contador de 4 bits
Corrimiento FF
Una señal en un process retrasa la seña un ciclo
o medio ciclo dependiendo de donde se ponga
la asignación

Una señal fuera del process es inmediata
Se agreda en el estimulo
din 1
din 0
despues se quita la señal
Clear es asincrono tiene prioridad
Full transcript