Fundamentos de la memoria y programación en lenguaje C

Características Generales de una Memoria

Estas son:

A. Capacidad:

Es la cantidad de información que puede almacenar. La unidad de información es el «bit». Al conjunto de 8 bits se le llama «byte». Los múltiplos de capacidad son:

  • Kilobyte = 1024 bytes
  • Megabyte = 1024 Kb
  • Gigabyte = 1024 Mb
  • Terabyte = 1024 Gb

B. Tiempo de Acceso:

Es el tiempo transcurrido desde que se pide una información a la memoria hasta que esta información se entrega. El tiempo de acceso depende del tiempo de memoria y de la tecnología empleada en su fabricación.

C. Volatilidad:

Es la propiedad que posee una memoria de retener o no la información cuando se le desconecta la alimentación. Las memorias volátiles pierden la información al apagarse y las no volátiles la mantienen.

D. Modo de Acceso:

Es la forma en la que se accede a la información almacenada dentro de ella. Los métodos son:

  • Acceso aleatorio: accede a cualquier posición de manera aleatoria.
  • Acceso secuencial: el tiempo que se tarda en acceder depende de la posición que ocupa.
  • Acceso LIFO (Last Input First Output): en esta memoria lo último en entrar es lo primero en salir. Se utiliza para crear las pilas de memoria.
  • Acceso FIFO (First In First Output): en este caso la primera información que entra es la primera que sale. Este tipo de acceso es muy utilizado en los periféricos para adaptar la velocidad de trabajo entre el interior y el exterior de un sistema microprogramable.

Estructura y Organización de un Integrado de Memoria

El patillaje de una memoria integrada es el siguiente:

  • Patillas de alimentación: en todos los integrados de memoria son imprescindibles los terminales de alimentación y masa.
  • Patillas del bus de direcciones: son los terminales a0, a1, a2… y nos sirven para poder acceder a cada una de las posiciones de memoria y allí leer o escribir. Estos terminales son unidireccionales, siempre tienen su dirección de entrada en el integrado, y el número de terminales de direcciones define el número de posiciones de memoria que contiene el integrado. La fórmula que relaciona el número de posiciones de memoria con el número de terminales de direcciones es la siguiente: Nº posiciones memoria = 2nº de terminales de direcciones.
  • Patillas del bus de datos: los terminales de datos son bidireccionales y nos permiten leer y escribir la información en los integrados de memoria. Los buses de datos habitualmente son de 8 bits, 16 bits, 32 bits, etc…
  • Patilla de lectura/escritura: este terminal se utiliza para activar la opción de leer o escribir en una en una determinada posición de memoria.
  • Patilla de selección: también llamada “chip select” permite actuar sobre los “buffers tri-state” y los coloca en alta impedancia. Los “buffers tri-state” son circuitos electrónicos ubicados en el bus de datos que permite tener en su salida a 0 o a 1 o alta impedancia.

Expansión de Memoria de Integrados

Cuando se diseña la memoria de un sistema microprogramable es habitual que el tamaño de esta memoria no se corresponda con los integrados existentes en el mercado. Por ello se debe realizar la conexión de varios integrados y obtener una expansión de memoria. Esta expansión puede ser de 3 tipos:

A. Expansión de la Longitud de los Datos:

Esta expansión se debe realizar cuando el tamaño de los datos que utilizan el sistema microprogramable es mayor que el tamaño de los datos del integrado de memoria.

B. Expansión del Número de Posiciones de Memoria:

Hay ocasiones en las que el número de direcciones de memoria que necesita nuestro sistema microprogramable es mayor que el poseído por las patillas de memoria que vamos a utilizar. En este caso tendremos que ampliar la capacidad de memoria. Esta ampliación tiene los siguientes pasos:

  • Se emplearán las pastillas de memoria necesarias para tener la capacidad total.
  • Se conectarán todas las líneas de lectura/escritura.
  • Se agruparán los buses de datos de todas las pastillas.
  • Se conectarán en paralelo todos los buses de direcciones, y los terminales de selección se usarán para activar o desactivar los diferentes integrados de memoria.

C. Expansión Simultánea de la Longitud de los Datos y del Número de Posiciones de Memoria:

En este caso el procedimiento a seguir es el siguiente:

  • En primer lugar, se realiza la expansión del tamaño de los datos.
  • Una vez realizada la expansión del tamaño de los datos, se procede a la expansión del número de posiciones de memoria.

Mapas de Memoria

Cada microprocesador tiene un número de líneas del bus de direcciones que limita la capacidad de memoria que puede gestionar. La representación gráfica de toda capacidad de memoria se define como el mapa de memoria.

Este mapa de memoria se divide en dos partes:

A. Mapa de Memoria Funcional:

Nos indica el uso que el sistema da a cada una de las posiciones de memoria.

B. Mapa de Memoria Físico:

Representa la correspondencia entre cada una de las direcciones y el integrado físico que lo contiene.

Un mapa de memoria tiene como mínimo las siguientes partes:

A. Una Memoria RAM:

Esta zona de memoria es utilizada para guardar datos temporales, formar la pila de memoria y guardar los programas de usuario.

B. Una Memoria ROM:

En esta parte de la memoria están grabadas de forma permanente del sistema así como el programa de arranque.

C. Diversas Pastillas de Entrada/Salida:

En esta parte de la memoria se conectan los dispositivos de comunicación con el exterior.

Creación de un Programa de Lenguaje C

La creación de un programa de estas características tiene estas fases:

A. Análisis del Programa:

El primer paso consiste en realizar un estudio detallado para definir el proceso a automatizar.

B. Confección del Organigrama:

En esta fase se dibuja un diagrama que responde a la secuencia de solución del problema que se llama organigrama.

C. Codificación del Programa:

En esta fase se escriben las instrucciones necesarias para resolver el problema y se confecciona el programa fuente.

D. Compilación del Programa:

Una vez escrito el programa fuente mediante un compilador se traduce a código máquina y se obtiene el programa objeto.

E. Montaje del Programa:

En esta fase se enlaza el programa objeto con las librerías internas y se obtiene el fichero.

F. Fase de Pruebas:

Una vez obtenido el fichero ajustable, se le somete a una serie de pruebas que permitan certificar el buen funcionamiento del programa.

Elementos Principales en un Programa en Lenguaje C

Todo programa en lenguaje C está constituido por los siguientes elementos básicos e imprescindibles:

  • Ficheros de cabecera: son los ficheros relacionados con las instrucciones que se van a usar.
  • Función especial que indica el comienzo del programa
  • Llaves que marcan el comienzo y el final de la escritura de las instrucciones.

La instrucción “int” nos permite definir variables cuyo contenido son números enteros. La instrucción “printf” se usa para visualizar en la pantalla del ordenador el mensaje escrito a continuación.

La instrucción “scanf” paraliza la ejecución del programa y espera a que se introduzca un dato numérico en la variable que acompaña a dicha instrucción.

Estructuras Selectivas en Lenguaje C

En todos los lenguajes de programación existen instrucciones selectivas que evalúan una condición y dependiendo de su resultado ejecutan un conjunto de instrucciones.

Estas son: if y switch

Instrucción if:

Su formato general es:

  • if (condición) {
  •     sentencia -1;
  • }
  • else {
  •     sentencia -2;
  • }

En esta instrucción si la condición es cierta se ejecuta la sentencia 1, y si es falsa se ejecutará la sentencia 2.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.