rtl

rtl

de Nataly Melanie Ruber Maimo -
Número de respuestas: 3

hola estaba viendo el parcial 2018 y en la solución


no capto para qué le sirve cada memoria que utiliza, yo hubiera utilizado 2, una para guardar cosas y otra para contar tiempo

En respuesta a Nataly Melanie Ruber Maimo

Re: rtl

de Juan Pablo Oliver -
Las memorias (registros) definidos en el RTL son estas:
MEMORY: T_SAMPLE[8], ADD_MEM[10], AUX[8], CONT_T[8]

T_SAMPLE[8] - almacena el tiempo de muestreo, se inicializa en 255; se cambia al recibir un dato SERIE por el teclado
ADD_MEM[10] - es para guardar las direcciones de la memoria externa
AUX[8] - es para recibir el dato serie que va a indicar el nuevo tiempo de muestreo, se va rotando tipo shift register con DAT
CONT_T[8] - va contando el tiempo de muestreo hasta llegar a T_SAMPLE

Los datos del conversor AD no se almacenan en memorias del RTL, se conectan directo a la memoria externa: DATA[8] = MED[8]
En respuesta a Juan Pablo Oliver

Re: rtl

de Nataly Melanie Ruber Maimo -
como me puedo dar cuenta cuantas memorias definir? ?
En respuesta a Nataly Melanie Ruber Maimo

Re: rtl

de Francisco Veirano -
Hola, no hay una forma sistemática de saber cuántos registros se necesitan, ya que esto depende de cada problema. En general, hay que ir viendo si necesito guardar nuevos valores de cosas e ir agregando registros o reutilizando en los casos que se pueda. En tu mensaje mencionas uno para contar tiempo y uno para guardar "cosas". El tema es que en este problema tienes que guardar varias "cosas", entonces no puede ser un solo registro, ya que vas a necesitar esas "cosas" en todo momento.

Vayamos un poco al problema particular. El registro al que tú mencionas para contar el tiempo es el que en la solución se llama CONT_T[8]. Luego es necesario saber hasta cuánto se tiene que contar, con lo cual necesitamos otro registro que nos diga hasta cuánto vamos a contar, T_SAMPLE[8] en el caso de la solución. Por otro lado, este valor de tiempo el cual tenemos que contar puede ser actualizado mediante una interfaz serie (con señales DAT y NUE). Un error muy común en este caso sería usar el mismo registro T_SAMPLE[8] para recibir los datos serie. El problema con eso es que en paralelo hay que ir contando el tiempo y verificando que no se haya llegado a T_SAMPLE, con lo cual no podemos modificarlo mientras llegan los bits serie (ya que tendríamos un T_SAMPLE la mitad vieja y la mitad del nuevo), sino que hay que esperar a que llegue todo el byte para actualizar T_SAMPLE. Para esto, en la solución se usa un registro AUX[8] que recibe el dato serie y, al finalizar la recepción, actualiza T_SAMPLE. Por último, está el tema de manejar la memoria externa en la cual se deben ir escribiendo los valores obtenidos del A/D. Para esto, es necesario tener un registro que guarde el valor de la última dirección de la memoria externa en la cual escribí.

El identificar cuántas memorias se necesitan en cada problema es algo que van a ir agarrando con la práctica y, para ello, es importante intentar hacer varios ejercicios. Luego verás que te vas a dar cuenta más rápido de cuándo necesito un nuevo registro y cuándo no.

(Como en este problema hay una memoria externa, traté de hablar de registros cuando me refería a memorias internas del RTL. En general, les decimos memoria o registro indistintamente.)

Saludos,