Vous êtes sur la page 1sur 2

Arquitectura de Computadoras Instructivo sobre el uso de memorias en Max+Plus II

Introduccin
Las memorias se encuentran en la biblioteca Megafunctions/LPM (mega_lpm), en la categora de storage components que contiene los siguientes componentes : altdpram dcfifo csdpram lpm_fifo lpm_latch lpm_ram_dp lpm_ram_io lpm_fifo_dc csfifo scfifo lpm_ff lpm_dff lpm_shiftreg lpm_ram_dq lpm_rom lpm_tff

A continuacin detallamos el uso del componente lpm_rom.

El componente lpm_rom
Se trata de una memoria ROM con un solo puerto de E/S de datos. Adems del puerto destinado a la salida, los componentes de este tipo cuentan con varios puertos de control, de los cuales algunos son siempre requeridos y otros son opcionales. A continuacin se describen los puertos disponibles para el componente lpm_rom:

Nombre del puerto


address[ ] inclock memenab q[ ]

Descripcin
Direccin que se desea leer Entrada de reloj. Si est REGISTERED indica que el puerto address[] est registrado, por lo que se tomar la direccin en el flanco ascendente de inclock y la salida se mantendr con el contenido de dicha direccin hasta el prximo flanco ascendente. Controla la salida de datos. Si est REGISTERED y la entrada vale 0, la salida de datos queda en alta impedancia (tercer estado) Puerto de datos

El smbolo del componente lpm_rom configurado para no utilizar entrada de reloj ni habilitacin de salida es :

Haciendo doble click sobre la zona superior derecha, se accede a un dilogo de configuracin del componente donde pueden seleccionarse los puertos a usar y definirse los valores de ciertos parmetros de configuracin.

Algunos de estos parmetros son: LPM_WIDTH LPM_WIDTHAD LPM_FILE Ancho del puerto de datos q[ ] Ancho del puerto de direccionamiento address [ ]. Nombre del archivo de inicializacin de la memoria (.mif o .hex)

Para utilizar este componente, debe asignarse al proyecto un dispositivo que sea compatible. Esto puede hacerse con la opcin de men Assign/Device y seleccionando la familia de dispositivo FLEX10K y dispositivo auto.

Inicializacin de una memoria


La inicializacin de una memoria se puede especificar con un archivo .hex (matriz de nmeros respresentados en hexadecimal que corresponden a los valores que se le quiere asignar a las distintas palabras de la memoria) o con un archivo .mif (memory initialization file) que ofrece ms flexibilidad y expresividad que el anterior formato. Estructura de un .mif : DEPTH = <cantidad de palabras expresado en base 10>; WIDTH = <ancho de las palabras expresado en base 10>; % esto es un comentario % % las 2 sentencias a continuacin son opcionales, si no se especifican se asume HEX % % los valores posibles son BIN, DEC, HEX y OCT % ADDRESS_RADIX = <base en la cual se van a expresar las direcciones>; DATA_RADIX = <base en la cual se van a expresar los valores de las palabras>; % a continuacin se especificada el contenido % CONTENT BEGIN % se pueden especificar rangos de direcciones % [valor_inicial..valor_final] : valor_asignado; % se pueden especificar direcciones individuales % direccion : valor_asignado; END ; % cuando se asigna ms de un valor a una misma direccin, se toma en cuenta el ltimo valor asignado % El Text Editor del Max+Plus II reconoce la sintaxis de este lenguaje y colorea las distintas expresiones (una vez que fue guardado el archivo con la extensin .mif). El siguiente es un ejemplo de archivo mif donde se asignan valores desde 100h hasta 107h a las palabras en las direcciones 0 a 7. DEPTH = 256; WIDTH = 16; CONTENT BEGIN 0:100; 1:101; 2:102; 3:103; 4:104; 5:105; 6:106; 7:107; END ;