Herramientas Personales

Módulo 3 y notas adicionales

por Ruiz de Clavijo, Paulino Última modificación 18/01/2011 12:35

Diseño de la memoria del procesador

Módulo 3a 

En este módulo se desarrollo del código que simula a la memoria del procesador. En la implementación del sistema en FPGA este código será sustituido por otro que incluya un IP Core de memoria.

La memoria que va a implementarse es síncrona y realiza una operación (write o read) en un solo ciclo de reloj. Por este motivo la señal ready puede sobrar (ready <='1';)  

Recursos:

Notas adicionales

  • Para simular la memoria de 4k*32 se declara una variable de tipo memContents_t (revisar micro_pk.vhd).
  • Para que los procesos de simulación funcionen correctamente es necesario que la memoria este cargada con algunos valores. Por esto se inicializa con los contenidos de RAM_CONTENTS que están definidos en el fichero micro_ram_pk.vhd .

Módulo 3b

En este modulo se diseña el controlador de memoria que interconecta la memoria con los posibles usuarios de la memoria que son: bloque de FETCH de la CPU, bloque de datapath de la CPU y periféricos (posible DMA) .

Se implementa como una máquina finita de estados (FSM). Se utilizará un código VHDL estándar para FSMs

Recursos:

Notas adicionales

  • Es importante tener en cuenta que mientras la memoria no haya completado la operación, la máquina de estados debe permanecer en el mismo estado. Esto es para que el bloque que este usando la memoria lo haga hasta que se complete la operación.
  • Es importante revisar las listas de sensibilidad de los procesos que implementan el bloque combinacional (las dos estructuras de case)

Módulo 3c

Micro6 va a tener dos pilas:

  1. Una en la memoria RAM para almacenar datos en forma de PILA (existe un registro que es el 31 de regfile que es el puntero de pila. Se diseño en el modulo 1e). Se emplea en las instrucciones de push y pull del microprocesador .
  2. Otra interna (de nombre stack) que se va a diseñar en este modulo 3c y sirve para guardar las direcciones de retorno de subrutinas. Se empleará en las instrucciones de salto a subrutina y retorno de subrutina .

Recursos

Notas adicionales

  • El puntero de pila (pointer en el código vhdl) esta apuntando a la primera dirección vacía de la pila. Como la profundidad es de 16 datos significa que cuando este vacía pointer=0 y cuando este llena pointer=16. El tamaño de pointer sera de 5 bits para poder representar desde el 0 hasta el 16.
Acciones de Documento