miércoles, 31 de agosto de 2016

CONTADOR MAYORÍA DE UNOS.

en este ejercicio se pretende diseñar un contador general de unos el cual permitirá decir si en tren de bits hay o no mayoría de unos. la primera parte se plantea la ecuaciones a seguir, seguido de una código de programación y por ultimo un diagrama de estados.

suponer entonces que tenemos un numero determinado de bits n y que queremos saber cuantos 1 hacen mayoría en ese dato binario. por ejemplo:

se tiene 3 bits de forma serial 011. ¿como detectamos si este tiene mas unos que ceros?

R// dividiendo el numero de n bits sobre dos, tomando la parte entera y sumando 1.

Mayoria 1 >= int (n/2) + 1.

de esta forma ya tenemos nuestra ecuación principar. el siguiente paso es la construcción del algoritmo. 




por ultimo el diagrama de estados.




Victor Capote
Cristian Garcia
Daniel Aponza

martes, 9 de agosto de 2016

FPGA y familia XILINX.

Cuando se aborda el diseño de un sistema electrónico y surge la necesidad de implementar una parte con hardware dedicado son varias las posibilidades que hay actualmente en el mercado. Las FPGA (Field Programmable Gate Array) son circuitos lógicos programables directamente por el usuario el cual permite aterrizar una idea que se encuentra en lo digital a lo material. Las FPGA son muy utilizados por fabricantes que producen tecnología a baja escala, como por ejemplo diseñadores de equipos de propósito específico, los cuales no pueden justificar la producción de ASICs por los bajos volúmenes de dispositivos que venden.


Otro aspecto que se debe tener en cuenta para decidirse por este tipo de implementación es que el coste de realización es muy bajo, por lo que suele ser una buena opción para la realización de prototipos.

El proceso de diseño de un circuito digital utilizando una matriz lógica programable puede descomponerse en dos etapas básicas:

  • Dividir el circuito en bloques básicos, asignándolos a los bloque configurables del dispositivo.
  • Conectar los bloques de lógica mediante los conmutadores necesarios.

Figura 1.


Los elementos básicos constituyentes de una FPGA se pueden ver en la Figura 1 y son los siguientes:

  1. Bloques lógicos, cuya estructura y contenido se denomina arquitectura. Hay muchos tipos de arquitecturas, que varían principalmente en complejidad (desde una simple puerta hasta módulos más complejos o estructuras tipo PLD). Suelen incluir biestables para facilitar la implementación de circuitos secuenciales. Otros módulos de importancia son los bloques de Entrada/Salida.
  2. Recursos de interconexión, cuya estructura y contenido se denomina arquitectura de rutado.
  3. Memoria RAM, que se carga durante el RESET para configurar bloques y conectarlos.

Las FPGAs que existen en la actualidad en el mercado se pueden clasificar como pertenecientes a cuatro grandes familias, dependiendo de la estructura que adoptan los bloques lógicos que tengan definidos. Las cuatro estructuras se pueden ver en la figura 2, sin que aparezcan en la misma los bloques de entrada/salida.

  1. Matriz simétrica, como son las de XILINX
  2. Basada en canales, ACTEL
  3. PLD jerárquica, ALTERA o CPLDs de XILINX.



en este apartado se hablara acerca de XILINX.



XILINX.


Es una compañía de tecnología americana, tiene varios tipos de software y que se usan para los FPGA, el  software para este se denomina ISE (Integrated Software Environment). Este software constituye un verdadero entorno EDA (Electronic Desing Automation).

La interfaz gráfica de usuario (GUI: Graphic User Interface) se denomina Proyect Navigator y facilita el acceso a todos los componentes del proyecto. Los diseños de usuario se pueden introducir mediante diferentes formatos. Los más utilizados son: los esquemáticos, los grafos de estados y las descripciones hardware en VHDL. Una vez compilados los diseños se puede simular su comportamiento a nivel funcional o a nivel temporal. A nivel funcional no tiene en cuenta los retardos provocados por el hardware y a nivel temporal simula el diseño teniendo en cuenta cómo se va a configurar el hardware.


Hay que aclarar cómo se realiza el proceso de programación (ie., las conexiones necesarias entre bloques y pistas). En primer lugar, si se piensa que el número de dispositivos de conexión que hay en una FPGA es muy grande (típicamente superior a 100.000), es necesario que cumplan las siguientes propiedades:

  • Ser lo más pequeños  posible.
  • Tener la resistencia ON lo más baja posible, mientras la OFF ha de ser lo más alta posible (para que funcione como conmutador).
  • Se deben poder incorporar al proceso de fabricación de la FPGA

El proceso de programación no es único,  sino que se puede realizar mediante diferentes “tecnologías”, como son células RAM estáticas, transistores EPROM y EEPROM, etc. En el caso de las FPGAs de XILINX los elementos de programación se basan en células de memoria RAM que controlan transistores de paso, puertas de transmisión o multiplexores.



VHDL
Lenguaje de descripción de hardware.


El VHDL  nos permite modelar sistemas digitales, a partir de estos modelos podremos sintetizar y simular. 



Se pueden trabajar con dos tipos de circuitos combinacionales y circuitos secuenciales.





Con el VHDL modelamos el hardware, pero también nos permite programar algoritmos (software).
Entidad y arquitectura:
Una unidad de hardware se visualiza como una caja negra, el interfaz de la caja negra está completamente definido, el interior está oculto. El VHDL la caja negra se denomina entidad, la ENTITY describe le E/S del diseño. Para describir su funcionamiento se asocia una implementación que se denomina arquitectura. 


Puertos de la entidad

Ports =canales de comunicación Cada una de las posibles conexiones se
Denomina un PORT y consta de:
  •  Un nombre, que debe ser único dentro  de la entidad.
  • Una lista de propiedades, como: a dirección del flujo de datos, entrada, salida, bidireccional y se  conoce como MODO del puerto.
  • los valores que puede tomar el  puerto: '0’,'1'o (‘Z’), etc., los valores posibles dependen de lo que se denomina tipo de señal.
  • Los puertos son una clase especial de  señales que adicionalmente al tipo de señal añade el modo.





Tipos de datos básicos

Tipo es la definición de los valores posibles que puede tomar un objeto, lo tipos preferidos son:
  1.  Escalares:
  • integer
  • floating point
  • enumerated
  • physical
2. Compuestos: array
  • record
3. Punteros:
  • access.
4.     Archivos: 
  •  file.

Algunos tipos básicos predefinidos

  • INTEGER: tipo entero, usado como valor índice en lazos, constantes o valores genéricos
  • BOOLEANO: tipo lógico, puede tomar como valores  TRUE O FALSE.
  • ENUMERATED: enumeración, conjunto de valores definido por el usuario, un ejemplo de ello TYPE estados IS (inicio, lento, rápido).

TIPOS STD_LOGIC Y STD_LOGIC_VECTOR

  • Definidos en el paquete IEEE.standar_logic_1164.
  • Son un estándar industrial.
  • Los emplearemos siempre para definir los puertos de las entidades.
  • Tipo STD_LOGIC: valor presente en un cable de bit.
  • Tipo STD_LOGIC_VECTOR: para definir buses (array  the std_logic).

'0' Salida de una puerta con nivel lógico bajo.
'1'  Salida de una puerta con nivel lógico alto.
'U' No inicializado, valor por defecto.
'X' Desconocido. Debido a un CORTOCIRCUITO.

'Z' Alta Impedancia.


Las principales familias de XILINX

Hay múltiples familias lógicas dentro de XILINX. Las primeras que surgieron son: XC2000 (descatalogada en el año 1999), XC3000 y XC4000, correspondientes respectivamente a la primera, segunda y tercera generación de dispositivos, que se distinguen por el tipo de bloque lógico configurable (CLB) que contienen. En la actualidad existen también las familias de FPGA SpartanII, SpartanIII, Virtex, VirtexII y VirtexPro. La tabla 1 muestra la cantidad de CLBs que puede haber en cada FPGA de las familias base y ese mismo valor expresado en puertas equivalentes.

XC2000: poderosa serie xc200 es un nuevo estándar de 16 / micro controladores de 32 bits especialmente diseñado para atender las necesidades de las aplicaciones de automatización. Contiene como elementos principales una tabla de look-up de 4 entradas y un biestable D. La tabla de look-up puede reproducir cualquier función de cuatro variables o dos funciones de tres variables. De las dos salidas del CLB una se puede registrar, o se pueden dejar las dos combinacionales.

XC3000: Línea completa de cuatro relacionada Field Programmable Gatefamilias de productos de gama- XC3000A, XC3000L, XC3100A, XC3100L Ideal para una amplia gama de tareas de diseño VLSI personalizados Sustituye TTL, MSI, y otra lógica PLD, Se integra subsistemas completos en un solo paquete, Evita la NRE, retardo de tiempo, y el riesgo de convencionales matrices de puertas enmascarados. La tecnología CMOS de memoria estática de alto rendimiento. Las tasas de palanca garantizado del 70 al 370 MHz, la lógica retrasos de 7 a 1,5 ns. Reloj del sistema velocidades de más de 85 MHz, bajo consumo de energía en reposo y activo. Arquitectura flexible FPGA, compatible matrices que van desde 1,000 a 7,500 puerta complejidad, amplio registro, combinatoria, y E / S. 

XC4000XL: Las familias XC4000 proporcionan flexibilidad y programación de la arquitectura de bloques lógicos configurables (CLBs), interconectados por una poderosa jerarquía de enrutamiento versátil recursos, y rodeado por un parámetro programable. Los bloques de entrada / salida (IOBS). Dispositivos XC4000-familia tienen recursos de enrutamiento generosas a acomodar los patrones de interconexión más complejos.


Características:

Tercera generación del campo-matrices de puertas programables.
  • La abundancia de flip-flops
  •  Generadores de funciones flexibles.
  •  Servicio en el chip de memoria RAM ultra-rápido.
  • Circuito de equipaje de propagación de alta velocidad Dedicado.
  • Decodificadores borde ancho.
  •  Jerarquía de las líneas de interconexión.
  • La capacidad interna de bus de 3 estados.
  • Ocho relojes o señal de distribución de baja oblicuidad mundial red.


Matriz arquitectura flexible.
  • Bloques lógicos programables e I / O bloques.
  •  Interconexiones programables y decodificadores de ancho.


Proceso CMOS submicrónicas.
  • La lógica de alta velocidad y de interconexión.
  • Bajo consumo de energía.

Características orientadas a los sistemas
  •   IEEE soporte lógico frontera de exploración compatible con 1149.1.
  •  Velocidad de respuesta de salida programable.
  •  Programable entrada de pull-up o resistencias pull-down.
  • 12 mA corriente absorbida por salida (familia XC4000).
  • Corriente absorbida de 24 mA por salida (XC4000A y familias XC4000H).


TABLA COMPARATIVA



Serie
Tipo CLB
No DE CLB
PUERTAS EQUIVALENTES
XC2000
1 LUT, 1 FF
64-100
1.200-1.800
XC3000
1 LUT, 2 FF
64-484
1.500-7.500
XC4000XL
3 LUT, 2 FF
64-3.136
1.600-180.000



El bloque lógico ha de ser capaz de proporcionar una función lógica en general y reprogramable. La mejor forma de realizar esto es mediante una tabla de valores “pre asignados” o “tablas de look-up”. Básicamente, una tabla de look-up (LUTs en adelante) es una memoria, con un circuito de control que se encarga de cargar los datos. Cuando se aplica en una dirección las entradas de la función booleana la memoria devuelve un dato, lo que se puede hacer corresponder con la salida requerida. Falta añadir los componentes necesarios para desempeñar funciones no implementables con una memoria, tales como una batería de registros, multiplexores, buffers etc. Estos componentes están en posiciones fijas del dispositivo. La ventaja de la utilización de este tipo de tablas es su gran flexibilidad: una LUT de k entradas puede implementar cualquier función booleana de k variables, y hay 22k funciones posibles. El inconveniente es obvio: ocupan mucho espacio y no son muy aprovechables.


bibliográfia.

  • http://www.lsi.die.upm.es/~marisa/docencia/fpga_a2_2004.pdf
  • Webgrafia:http://arantxa.ii.uam.es/~jgonzale/fco/curso07-08/download/seminarios-vhdl.pdf
  • http://catedra.ing.unlp.edu.ar/electrotecnia/islyd/Trabajo%20Final.pdf