• No se han encontrado resultados

Capítulo II Diseño e implementación

2.3 Implementación del prototipo del sistema de análisis de señales tipo poliscopio

2.3.4 Bloque RAM

Este bloque almacena los datos provenientes del bloque FFT. La parte imaginaria ha sido concatenada a la parte real, con el fin guardar estas en un solo registro, buscando ahorro de recursos.

La memoria RAM consiste de un conjunto de registros cuya profundidad es igual al tamaño de la FFT y la longitud de palabra por registro es dos veces el tamaño del vector de salida para una componente de la FFT. La lectura y escritura de la memoria se realiza aumentando un contador que recorre uno a uno los registros, cuando se realiza la operación de lectura existe una señal que se establece en valor alto, cuando la operación es de escritura esta misma señal se configura en valor bajo.

La salida del bloque de memoria RAM se conecta al bloque que realiza la conversión En la figura 2.15 se muestra un esquema del componente de memoria RAM, aquí se detallan las entradas y salidas de este módulo. Las entradas se ubican en la izquierda del bloque y las salidas en la derecha.

45 Figura 2.15. Bloque de Memoria RAM.

La descripción de los puertos presentes en el componente se hace a continuación.

CLK: Es la entrada de reloj de la memoria

DV: Es una entrada que indica que se tiene un dato valido, esta señal viene del bloque FFT y sirve para que la RAM se ponga en modo de escritura.

RESET: Sirve para inicializar la memoria RAM. Es activo en alto

REINICIAR_RAM: Coloca todas las señales de control de la memoria en la posición inicial.

LECTURA: Un valor alto indica que la memoria está en modo lectura, un valor bajo indica que se está en espera.

ADDRESS: Es el vector de dirección, esta entrada corresponde al index del bloque FFT.

DATOSIN: Es la entrada de datos provenientes de la FFT.

LECTURA_COMPLETA: Este valor se pone en uno cuando se ha realizado la lectura de todas las posiciones de la memoria RAM, cuando esta señal esta en uno el control general pone la entrada LECTURA en cero.

46 En la figura 2.16 se muestra el diagrama de secuencia de la memoria RAM para ilustrar su funcionamiento.

Figura 2.16. Diagrama de Secuencia de la Memora RAM.

Cuando se inicia la operación de la memoria RAM se examina el estado de reset y de reiniciar_ram, si alguna de estas señales tiene un valor alto, las señales de control de la memoria RAM son establecidas en cero y se retorna a la posición de inicio. Si alguna de estas dos señales esta en cero, entonces se inspecciona el valor de dv.

47 Si la señal dv vale uno, se habilita el proceso que realiza la escritura sobre la RAM, la señal ENABLE se lleva a alto para habilitar el cambio de valor sobre el puerto WEA que es el que permite con un valor alto la escritura en la RAM y con un valor bajo la lectura. En el proceso de escritura ADRESS recibe el valor de index de la FFT y lo pasa a una variable auxiliar llamada ADRRES_AUX que está conectada al puerto de la memoria que permite aumentar la posición de registro. Cabe aclarar que el index de la FFT va aumentando conforme se entregan los resultados de la transformada.

Si la señal dv vale cero, se examina el contenido de la señal lectura. Si lectura es cero entonces el contador que recorre las direcciones no aumenta, si la señal de lectura es uno se pone ENABLE en uno y se habilita la lectura haciendo WEA igual a uno, en este caso el contador COUNTER aumenta en uno si es menor a 1023 como se puede ver en la bifurcación de no, del condicional que se ubica en la parte inferior derecha del grafico de la figura 2.16. El uso del contador que recorre las direcciones en el modo lectura de la memoria RAM es necesario debido a que una vez se ha realizado el proceso de escritura utilizando el index de la FFT se requeria el uso de otra señal para recorrer las direcciones en el modo lectura. En la bifurcación de si, del condicional que se ubica en la parte inferior izquierda del grafico de la figura 2.16 se observa que cuando se ha recorrido toda la memoria en el modo lectura, es decir, cuando ADRESS_AUX es igual a 1023, el puerto de LECTURA COMPLETA TOMA valor uno para que el control principal envíe un cero al puerto LECTURA y la operación de lectura finalice.

Los datos de salida de la memoria RAM se deben conectar a los bloques que realizan conversión de complemento a dos a punto flotante, pero como esta salida corresponde a la concatenación de la parte real y la parte imaginaria de la FFT se debe utilizar un vector auxiliar para dividir de nuevo cada una de estas componentes, que después de ser divididas se pasan por separado a los bloques de conversión, uno para parte real y otro para parte imaginaria.