SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE

Documentos relacionados
SEMINARIO DE EXTENSIÓN DE ISLD

Inferencia de Memorias para FPGAs Xilinx

Electrónica Digital. Actividad Dirigida. Implementación de un Cronómetro Digital

TEMA 5.3 SISTEMAS DIGITALES

Memoria Externa. Diseño de Sistemas con FPGA Patricia Borensztejn 1er cuatrimestre 2009

Dispositivos de Memoria

DISEÑO DE PROCESADORES DEDICADOS. Práctica 6 LCD de Propósito General

Módulo 2 n. Figura 2.1. Simbología de un contador

INTRODUCCIÓN A SIMULINK/SYSTEM GENERATOR (XILINX FPGA) C7 Technology 1

SISTEMAS ELECTRÓNICOS DIGITALES

ARQUITECTURA DE COMPUTADORES DESCRIPCIÓN BUS PCI (Tema 1: Conexión Externa de Procesadores. Buses)

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Para implementar una memoria de mayor capacidad se deben considerar los siguientes pasos:

UNIDADES DE MEMORIA DIGITALES (PARTE 3) MEMORIAS DE ACCESO DIRECTO, ACCESO SECUENCIAL Y ASOCIATIVAS

Organización de Computadoras Apunte 5: Circuitos Lógicos Secuenciales

Tema 4 Microprocesador MCF5282: Hardware

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

Organización n del Computador 1. Lógica Digital 2 Circuitos y memorias

Arquitectura del Procesador I

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

placas de prototipado (i) Material docente en los laboratorios de la Facultad de Informática Diseño Automático de Sistemas

Lab 6. Cuádruple registro de 16 bits y 3 puertos E/S

Guía Electronic Workbench

Dispositivos Lógicos Programables

Memoria y Entrada/Salida Tecnología Organización - Expansión

TARJETA DE DESARROLLO DE SISTEMAS CON TECNOLOGÍA FPGA.

2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U)

TEMA 11 MEMORIAS. CIRCUITOS LÓGICOS PROGRAMABLES

Objetivos. Instituto Tecnológico de Costa Rica Escuela de Ingeniería Electrónica I SEMESTRE Contenido del Curso EL FLUJO DE DISEÑO O DIGITAL

MÓDULO Nº8 MEMORIAS SEMICONDUCTORAS

La memoria del ordenador

La Herramienta Redmine para la Administración de Proyectos

Universidad Carlos III de Madrid Electrónica Digital Ejercicios

Capítulo 3. Diseño del reverberador.

La Unidad de Memoria y su

Introducción a los Dispositivos Lógicos Programables (FPGAs) Guillermo Güichal

PRÁCTICA 4. CONTADORES

Tema 0. Introducción a los computadores

ITT-327-T Microprocesadores

FPGAs. Susana Borromeo Área de Tecnología Electrónica. Diseño de Sistemas Electrónicos. 2014/2015. Metodología de Diseño. Características generales

Circuitos secuenciales

Unidad de conexión de encoder S.S.I. CJ1W-CTS21. Introducción Hardware Conexionado Puesta en marcha Configuración Operación

Sistemas Electrónicos Industriales II EC2112

Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017

TEMA 12: MEJORA DE LAS PRESTACIONES DE LA MEMORIA

Memorias ROM: FPGA-VHDL Cómo???

Sistemas Informáticos. Estructura Funcional

Circuitos Lógicos Secuenciales. Figura 36. Circuito lógico secuencial. Actividad de apertura. Circuitos lógicos secuenciales.

CAPITULO 5 GENERADOR DIGITAL DE TREN DE PULSOS PROGRAMABLE

MICROCONTROLADORES PIC

Practica No. 1 Circuitos Secuenciales

ARQUITECTURA DEL PIC16F84A

Laboratorio - Organización de la CPU

MEMORIA CACHÉ PRINCIPIOS BASICOS

LECCIÓN Nº 06 DISEÑO DE CONTADORES SINCRONOS

INSTITUTO TECNOLOGICO DEL MAR, Mazatlán

MODULO ANALOGICO REMOTO

Cuatro Tipos de Flip-Flop en la GAL22V10

Sistema Cache. Técnicas Digitales III Ing. Gustavo Nudelman Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

TARJETA DE DESARROLLO DE SISTEMAS CON TECNOLOGÍA FPGA.

Ing. Jose Luis Apaza Gutierrez MEMORIAS. Un elemento de memoria es aquel elemento capaz de almacenar un estado durante un tiempo determinado.

Organización lógica Identificación de bloque

Electrónica Digital II

Puerto Paralelo Bidireccional.

Organización del Computador 1 Lógica Digital 2: circuitos y memor

Tema. Memorias y dispositivos programables. Departamento de Tecnología Electrónica Universidad de Sevilla

MEMORIA EJERCICIO 1 EJERCICIO 2

Curso a Distancia INTRODUCCIÓN AL DISEÑO DIGITAL CON VHDL Y LÓGICA PROGRAMABLE. Ing. Arturo J. Miguel de Priego Paz Soldán.

Introducción a VHDL. Sistemas digitales UTM-2006 JJVS

Sistemas Digitales Trabajo Práctico 2. Voltímetro digital con salida VGA

Controladores de memoria externa

Controlador de Interrupciones (Versión programable) Manual de Usuario

Practica 1 (3.5 %) 1. Realice el diseño y montaje de un R_S discreto activo en bajo.

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

Práctica 9. Organización del Computador 1 2do. Cuatrimestre de 2005

Tema 3 - Bloques lógicos

Biestables. Luis Entrena, Celia López, Mario García, Enrique San Millán. Universidad Carlos III de Madrid

La Máquina de Acceso Aleatorio (Random Access Machine)

Digital III. El Microprocesador i80c86

EL BUS I2C CARACTERISTICAS. Fernando Remiro

Trabajo práctico 2. Contadores

Tema 4. Organización de la memoria

Arquitectura de Computadoras Practica No. 1 Circuitos Secuenciales

2).Diseñar los circuitos cuyas tablas de estados son las siguientes:

Laboratorio 4: Uso de una FPGA

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Tema: MAPAS DE MEMORIA: LÓGICA DE SELECCIÓN, GESTIÓN Y ORDENACIÓN DE LA MEMORIA. J. Luis Lázaro, J. Jesús García "MAPA DE MEMORIA" 0

Circuitos Secuenciales: concepto de estado

T7-SISTEMAS SECUENCIALES

Practica 9 Estilos de codificar a estados FCE

Frecuencia Máxima de un Sistema Digital Sincrónico (Básico)

ITT-327-T Microprocesadores

El tamaño, estructura, número de bloques y la cantidad y conectividad de las conexiones varian en las distintas arquitecturas.

Sistema de Gestión de Aplicaciones Implementadas en FPGAs

Departamento de Ingeniería Electrónica. Universidad de Sevilla Asignatura: Laboratorio de Microelectrónica Digital. Escuela Superior de Ingenieros

EVOLUCIÓN HISTÓRICA DE LOS µp

ESTRUCTURA BÁSICA DEL µc AT89C51

Registros de desplazamiento

Práctica 5. Generadores de Señales de Reloj y Flip-flops

Transcripción:

1 SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE tiempo de acceso RAM, algunas veces se usa cerrojo en el Juan Manuel Narváez Sánchez, Carlos Andrés Moreno Tenjica, Estudent Member IEEE Resumen: Las FPGAs Proveen bloques de memoria RAM conocidos como SelectRAM estos bloques buscan proveer recursos al diseño sin tener que sacrificar RAM distribuida o recurso lógicos, esta memoria es totalmente sincronía con el objetivo de facilitar el análisis de tiempos y una fácil inicialización de la configuración que se va a trabajar, de esta manera poder permitir el diseño de sistema mas complejos y robustos. L I. INTRODUCCIÓN a familia de FPGAs proveen bloques de memoria RAM configurables de, 4K bits de manera que pueden ser configurados como memorias de 4096x1 hasta 256x16, es decir tanto el tamaño de la palabra que va ser guardada, como el número de posiciones que tiene la memoria puede ser configurado, esta configuración de puertos es hecha totalmente independiente y de manera sincrona, esta característica permite gran variedad en cuanto el diseño de estructuras RAM se refiere, por ejemplo en el diseño de arreglos de datos como pilas puede ser de gran utilidad el uso de la memoria RAM brindando una gran capacidad en el diseño y también una gran velocidad de respuesta debido a su funcionamiento sincronó. Cada FPGA de la línea Spartan provee un determinado número de bloques RAM en nuestro caso, la FPGA a usar es la XC2S200, Esta FPGA tiene 14 bloques de memoria RAM de 4k cada uno para un total de 56K disponibles para diseño. 2. PRINCIPIOS DE LAS MEMORIAS SINCRONAS Las memorias sincronás tienen distintos modos de operación, los mas utilizados estas son cuatro 2.1 Read Through(Un flanco de reloj) La lectura de la dirección es registrada el un flanco de reloj en el puerto de lectura, y el dato aparece en la salida en un puerto de salida con el propósito de hacer más rápida la respuesta en la Salida, esto es una solución asincroná inferior al resultado que puede entregar una operación de lectura en un sistema sincronó 2.2 READ PIPELINED (Dos flancos de reloj) La dirección de lectura es registrada en un flanco de reloj y el dato aparece en la salida en siguiente flanco de reloj 2.3 WRITE BACK (un flanco de reloj) la dirección de escritura es registrad en flanco de reloj y el dato que esta en el puerto de entrad es escrito en la memoria como reflejo del puerto de entrada 2.4 WRITE THROUGH( Un flanco de reloj) La dirección de escritura es registrada en un flanco de reloj, Y es escrito en la memoria, bien como el dato es leído también en un flanco de reloj, entonces la lectura y la escritura son hechas en el mismo ciclo 3 CARACTERÍSTICAS DE LOS BLOQUES RAM 3.1 Todas las entradas son registradas por el reloj y disponibles según la especificación de tiempo 3.2 Todas las salidas tienen funciones read through y write back dependientes del pin WE, y disponibles según las especificaciones de tiempo. 3.3 Los bloques RAM son bloques reales de memorias SRAM y no tienen parte combinatorial entre la dirección y la salida 3.4 Los puertos son independientes uno del otro 3.5 Las operaciones de lectura y escritura solo necesitan un ciclo de reloj 3.6 Los puertos de salida tienen cerrojo y no cambian su configuración dependiendo de escritura o lectura 4 INCLUSIÓN DE LAS MEMORIAS RAM

2 En un diseño se pueden incluir memorias RAM llamando las librerías primitivas especiales o usando el sistema generador CORE para crear una memoria, estas están disponibles en distintas configuraciones de tamaño Los diseños de las memorias son muy flexibles en cuanto a la utilización de los pines que forman la memoria RAM, por ejemplo una memoria ROM puede ser construida simplemente no usando el WE ni los datos de entrada cada bloque de estos formado por memorias de 4096 bits 5. PUERTOS DE ENTRADA Y SALIDA: Toda memoria RAM tiene las siguientes entradas Las anteriores figuras muestran dos ejemplos de las librerías primitivas de bloques RAM., estos bloques son disponibles en los siguientes tamaños de memoria CLOCK CLK: Cada puerto es totalmente sincronó con entradas independientes de reloj, el puerto de salida esta referenciado a un tiempo de salida que esta referenciado a CLK ENABLE EN Este pin afecta la funcionalidad de la lectura, la escritura y el reset, cuando el pin EN esta inactivo a la memoria no se le puede escribir ningún tipo de dato WRITE ENABLE WE Activando el pin WE este le permite al puerto escribir en las celdas de memoria, el contenido del dato es escrito en la celda de memoria apuntada por el bus memoria, y el nuevo dato también es reflejado en el bus de salida, cuando el dato es inactivo simplemente se ve el dato reflejado en el bus de salida. RESET RST El pin reset obliga a los cerrojos de salida a ceros sincrónicamente, esto no afecta a las celdas de memoria ni a la operación de escritura en otro puerto BUS ADDRESS ADDR[# downto 0] Selecciona la celda de memoria que va a ser leída o escrita, el ancho del puerto es determinado por el tipo de memoria que esta siendo utilizada

3 BUS DATA IN DI [# downto 0] Provee el nuevo dato que va a ser escrito en la celda de la memoria apuntada por la dirección BUS DATA OUT DO[# downto 0] El bus de datos de salida refleja el contenido de la celda de memoria, referenciada a la dirección de memoria apuntada por ADDR, el ancho de bus esta dado por el tipo de memoria que es utilizada PINES DE INVERSIÓN DE CONTROL Los cuatro pines CLK, RESET, WE, y EN tienen independiente inversión de control, según la opción de configuración, los inversores son automáticamente absorbidos por el bloque RAM MAPEO DE DIRECCIÓN Cada puerto accede a las 4096 celdas de memoria seleccionadas usando un esquema distinto de direccionamiento dependiente del ancho del puerto, la ubicación física de cada memoria esta dada por la siguiente formula INICIO = ((ADDR+1)*ANCHO)-1 FIN= ADDR*ANCHO Esto puede ser observado en la siguiente tabla 6. SISTEMA GENERDOR CORE DE XILINX El sistema generador CORE provee un bloque de memoria sencillo o un bloque de memoria dual, ambos soportado por al funciones de memoria RAM, ROM y funciones de solo escritura acorde a las señales de escritura que son seleccionadas, cualquier tamaño de memoria puede ser creado en la arquitectura soportada Ambos módulos son parametrizados con el modulo de generación CORE, El usuario puede seleccionar el nombre del componente y que tipo de pines quiere utilizar, además escoger que funciones se hacen activo a bajo o activo a alto. El usuario puede especificar los contenidos de la memoria, por defecto se inicializan en ceros, los valores de inicialización son descritos en el archivo de inicialización que consiste en una línea de valores binarios por cada posición de memoria. la salida del CORE incluye un reporte de las opciones seleccionadas y los recursos de dispositivo que son requeridos. El número de bloques RAM que son requeridos son mostrados, y una memoria muy baja es seleccionada, algunas multiplexaciones externas pueden ser requeridas y este reporte esta en términos del número de deslizamientos que fueron necesarios. 7 RESOLUCIÓN DE CONFLICTOS Los bloques RAM de la FPGA son bloque reales de memoria dual escritura / lectura, que permite acceso simultaneo a la misma celda de memoria por los dos puertos, Cuando un puerto escribe en una posición de memoria dada el otro puerto no puede direccionar la misma posición de memoria. La siguiente lista permite la resolución de este tipo de conflictos Si ambos puertos escriben la misma posición de memoria simultáneamente, considere ese dato como invalido Si uno de los puertos intenta una lectura de una celda que simultáneamente esta siendo escrita, ocurre lo siguiente: o Sucede la escritura o El dato de salida en puerto de escritura refleja el dato escrito exactamente o El dato de salida en el puerto de entrada es invalido Los conflictos no causan ningún daño físico 8 OPERACIONES DE ESCRITURA Y LECTURA En la figura es mostrado en diagrama de tiempos de un bloque sencillo RAM

4 En el primer flanco de CLK, ADDR, DI, EN, WE y RST son hechos un muestreo, EN en alto y WE en bajo indican una operación de lectura, el bus DO tiene el contenido de la posición de memoria 0x00 como es indicado por el pin ADDR En el segundo flanco de CLK, WE, ADDR, RST, EN y DI son hechos un muestreo de nuevo. El pin EN y WE están en alto lo que indican una operación de escritura. El bus DO refleja lo que tiene el bus DI y este dato es escrito en la posición de memoria 0x00 como indica ADDR En el tercer flanco de CLK, las entradas son muestreadas EN esta en alto y WE en bajo, lo que indica una operación de lectura. El bus DO tiene el contenido de la posición de memoria 0x7E como lo indica ADDR El cuarto flanco de CLK, las entradas son muestreadas de nuevo, El pin EN es bajo por lo tanto la memoria esta inhabilitada y en DO mantiene el último dato que recibió 9 TIEMPOS DEL PUERTO DUAL La figura muestra un diagrama de tiempo necesario en las operaciones de lectura y escritura El reloj del puerto A tiene un periodo mas largo que el que esta en el puerto B. Los parámetros T BCCS (clock to clock setup) Es mostrado en el diagrama. Todos los otros parámetros son idénticos que en el ejemplo de puerto sencillo, con la única diferencia que el T BCCS es violado en el diagrama T BCCS es de importancia cuando las direcciones de ambos puertos son las mismas y al menos un puerto esta funcionando con operación de escritura cuando el parámetro clock to clock setup es violado por una condición WRITE- WRITE El contenido de la memoria en la posición de memoria será invalido, cuando es una condición WRITE- READ el contenido de la memoria será correcto pero el dato en puerto de lectura será invalido, como el primer flanco de CLKA, La dirección de memoria 0x00 será escrita con el valor 0xAAAA y esta reflejado en el bus DOA, La última operación del puerto B fue leída de la misma posición de memoria, El bus DOB del puerto B no cambia con el nuevo valor del puerto A, y retiene el último valor leído, A corta tiempo después, puerto B ejecuta otra lectura de la posición de memoria 0x00 y ahora el puerto B refleja el nuevo valor del puerto A En el segundo flanco de CLKA, la posición de memoria 0x7E es escrita con el valor 0x9999 y es reflejada en el bus DOA, el puerto B ejecuta una operación de lectura violando el parámetro T BCCS y el puerto B refleja el nuevo valor escrito por el puerto A En el tercer flanco de CLKA, el parámetro T BCCS es violado con dos escrituras en la posición de memoria 0x0F, DOA y DOB reflejan los contenidos de DIA y DIB pero el valor guardado en 0x0F es invalido En el cuarto flanco de CLKA se ejecuta una operación de lectura de la posición de memoria 0x0F pero un dato invalido

5 se presenta en DOA, el puerto B también ejecuta una operación de lectura de la posición de memoria 0x0F obteniendo el mismo resultado errado En el quinto flanco de CLKA es una operación de lectura que no viola el parámetro T BCCS previa escritura del puerto B en la posición de memoria 0x0F por lo tanto en DOA se encuéntrale valor anteriormente escrito correctamente por el puerto B. La memoria RAM puede ser simulada con la inicialización de valores utilizando genéricos en cualquier simulador de VHDL O Verilog 10. INICIALIZACIÓN El bloque RAM puede ser inicializado durante la secuencia de configuración del dispositivo,, las 16 propiedades de inicialización de 64 valores hexadecimales cada una para un total de 4096 bits seleccionan la inicialización de cada memoria RAM. Esas propiedades aparecen en la tabla, Cualquier inicialización no selecciona explícitamente como ceros. La inicialización parcial son cadenas llenas de ceros, la Inicialización de cantidades mas grandes que 64 valores hexadecimales generan un error Inicialización en VHDL

6