Está en la página 1de 11

Scientia et Technica Año XVIII, No 02, Mes 09 de Año 2022. Universidad Tecnológica de Pereira.

ISSN 0122-1701 1

Archivo de registros, memoria de datos y


memoria de instrucciones
Register file, data memory and instructions memory.
Autor 1: Miguel Ángel López Fernández
Facultad de Ingenierías, Universidad Tecnológica de Pereira, Pereira-Risaralda, Colombia
Correo-e: miguel.lopez@utp.edu.co

Resumen— Los módulos de memorias como la unidad de de la ciencia ha permitido lograr la obtención de lo que hoy se
registros, la memoria de datos y la memoria de instrucciones son conoce como la ya mencionada computadora.
los que permiten manejar el flujo de información en forma de
almacenamiento. Su comprensión (con ayuda de otras ideas) En un intento por conocer todo sobre una pc, se propone en
permite conocer un poco más sobre cómo se comporta por este documento el desarrollo de ciertos programas que
ejemplo el procesador con el cual fue escrito este documento. Es
entonces que gracias al desarrollo tanto teórico como virtual describen el funcionamiento de piezas que se encuentran
utilizando el lenguaje de descripción de hardware Verilog se dentro de una CPU y que sirven para almacenar datos, es
logró describir el funcionamiento de dichas memorias, así como decir, las memorias.
adquirir nuevos conocimientos sobre la sintaxis del lenguaje.
El desarrollo de cada programa (de ahora en adelante modulo)
se propone de la siguiente manera:
Palabras clave— Descripción de hardware, memoria de datos,
• Conceptualización y proposición del módulo como
memoria de instrucciones, Unidad de registros , Verilog.
un diagrama de bloque que permita conocer el flujo
de datos.
Abstract— Memory modules such as the register unit, data
memory, and instruction memory are what allow you to handle • Parte de implementación, en donde se usará el
the flow of information in the form of storage. Their lenguaje de Verilog para describir tanto el diseño del
understanding (with the help of other ideas) allows us to know a módulo a partir del diagrama del apartado anterior,
little more about how it behaves, for example, the processor with como pruebas que permitan validar los resultados al
which this document was written. It is then thatin terms of both momento de ejecución los modulos.
theoretical and virtual development using the Verilog hardware • Parte analítica y de validación de resultados
description language, it was possible to describe the operation of
these memories, as well as to acquire new knowledge about the
II. MÉTODOLOGÍA Y DESARROLLO
syntax of the language.

En el documento se presenta el desarrollo de los módulos de


Keywords— hardware writing, data memory, instruction memory, archivo de registros (register file), memoria de datos (data
Unit of registers , Verilog. memory) y memoria de instrucciones (instruction memory),
los cuales hacen parte del sistema que describe a un
procesador mono núcleo.
I. INTRODUCCIÓN
El trabajo desarrollado se describe de tal manera que se
La abstracción que se vive hoy en día con la tecnología es presenta cada tipo de memoria indicada con su respectivo
extrema. Se suele usar un computador para tareas básicas, más diseño en código (basado en verilog) y una descripción de su
sin embargo nunca se cuestiona el funcionamiento que hay funcionamiento y sintaxis usada en el proceso de diseño.
detrás de todo ello. Posteriormente se analizarán los resultados obtenidos al
evaluar el diseño propuesto mediante los bancos de prueba,
Si se usará una lupa que permitiera acercarse a lo más interno también diseñados en verilog.
se podría ver una cantidad de caminos hechos de cobre que
mueves electrones una y otra vez millones de veces por A la hora de presentar los códigos basados en Verilog para
segundo. El conjunto de esas operaciones además de otras cada módulo se deben de tener en cuenta que la idea es
restricciones permite crear un sistema de representación, el simular el comportamiento del flujo de datos, por ende, los
sistema binario, que gracias a él en conjunto con otras ramas diseños de las memorias usarán la lectura de archivos de texto
2 Scientia et Technica Año 2022, No 01, Mes 09 de 2022. Universidad Tecnológica de Pereira.

(cada módulo tendrá un archivo independiente) y la carga de - dataWr: Almacena la información a escribir.
datos en una matriz. Por ejemplo, para el caso de la unidad de - Rd: Uno de los 32 registros de la unidad de
registros la matriz representaría los 32 registros, para la registros en donde irá a parar la información que
unidad de memoria sería el lugar donde reposan los datos, y se quiere escribir. Trabajo conjunto a regWr.
para la memoria de instrucciones sería el lugar donde se - regWr: Controlador, indicativo de que se va a
almacenan las instrucciones de cada operación. escribir información.
- clk: reloj de sincronización.
Nota: Los archivos son similares a como se presenta en la
figura registerFIle.txt Como salidas:
- regs[Rn]: Información almacenada en el registro
A. Descripción del modulo Rn.
- regs[Rm]: Información almacenada en el
• Unidad-archivo de Registros registro Rm

Información Antes de continuar, es necesario hacer algunas aclaraciones:

El circuito de la unidad de registros es descrito mediante el - Las entradas cambian según sea la acción, es
diagrama de bloque que se muestra a continuación: decir, si se busca leer o escribir. Para la primera
acción se proporcionan datos a Rn y Rm, datos
que consisten en cadenas de 5 bits los cuales
indican las direcciones de los registros de entre
los del conjunto; cadenas de 5 bits porque se
tiene que 25 es igual a 32 diferentes
posibilidades. Por otra parte, si se busca escribir
se debe de proporcionar valores a las entradas de
dataWr, Rd y regWr; Rd funciona de manera
similar a las direcciones ingresadas para lectura.
- Las salidas serán algún dato en específico
cuando la acción del módulo es lectura. Cuando
es escritura no se obtiene algún valor en
particular.

Implementación en código

Diagrama en bloque de la unidad de registros

La unidad de registros a nivel general es un área dentro de


todo el sistema de procesamiento encargada de almacenar
datos (leer y escribir información), un dato curioso de ello es
que son los más cercanos en comunicarse con la actividad
principal de la CPU, tanto así que están dentro de la
arquitectura del procesador.

El almacenamiento de datos lo realiza con secciones-arreglos


conocidos como registros en donde cada uno es de 32 bits. El
diagrama indica una unidad compuesta por 32 registros o lo
que es igual a 1024 bits/ 128 bytes.

El módulo recibe 6 entradas, la función de cada una es la


siguiente:

Como entradas: Implementación en código Verilog de la unidad de registros


- Rn: Dirección del registro del cual se obtiene/lee
su información El código anterior describe el dagrama en bloque mencionado
- Rm: Dirección del registro del cual se con anterioridad. Se 5 entradas y 2 salidas además de la
obtiene/lee su información
Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira. 3
definición de otras variables como temp y temp2 para la
descripción del funcionamiento del módulo. • Memoria de datos

El bloque de líneas 20-23 es el encargado de leer el archivo Información


resgiterFile.txt. Parte contenido es el siguiente:
El circuito de la memoria de datos es descrito mediante el
diagrama de bloque que se muestra a continuación:

registerFile.txt

El archivo contiene alrededor de 256 líneas formadas por


cadenas de 1 y 0. Ello representaría la información que
hay/habría en los 32 registros.

Las líneas siguientes permiten indexar las direcciones de los


Diagrama en bloque de la memoria de datos
registros cada 4 posiciones, es decir, el primer registro va de
la posición 1 a la posición 4 (inclusivo), el segundo registro va
También se presenta la siguiente tabla:
de la posición 5 a la posición 9, y así sucesivamente (para
indexado de memoria interno se usa posiciones con una
unidad menos ya que se inicia desde el cero). Las variables de
tmp y tmp2 almacenan a rs1 y rs2 como direcciones que son
multiplicadas/desplazadas por 4 posiciones, es decir,
almacenan el inicio de cada registro. Luego, en las líneas 25 y
26 se hace la lectura de valores del registro encontrado y se
asignan a las respectivas salidas. Note la siguiente línea:

assign RF_rs1 ={memory[temp], memory[temp+1],


memory[temp+2],memory[temp+3]}

Esta indica que RF_rs1 será la concatenación de los bits que Tipos de entrega de datos en el modo lectura de la memoria de
se encuentran en la posición memory[temp] (inicio), datos
memory[temp+1] y así sucesivamente.
La memoria de datos es el módulo encargado de almacenar
Al final de las asignaciones se ejecuta una estructura always datos de procesamiento. Es similar en cuanto al
condicionada por los posedge (flancos positivos) de clk. Por funcionamiento descrito por la unidad de registros, solo que
cada flanco positivo alcanzado se hará una verificación de la esta vez se añaden ciertos tipos de retorno de información
entrada en_wr para establecer si se quiere realizar escritura. descrito en la figura anterior.
En caso de que la verificación sea verdadera se hace la
asignación de los nuevos valores a las posiciones de memoria Cuenta con cuatro entradas y una salida. Las funciones de
(matriz), como se puede ver con el conjunto de línea 31-34. El cada una son las siguientes:
recorrido y asignación son similares al caso de lectura
anterior. - Address: Recibe la dirección en donde va a leer
o escribir información.

____________________________
4 Scientia et Technica Año 2022, No 01, Mes 09 de 2022. Universidad Tecnológica de Pereira.

- DataWr: Información a escribir. Implementación en código Verilog de la memoria de datos


- DMWr: Entrada de control que permite saber parte #1
cuándo se quiere escribir información. Se usa de
igual forma address para proporcionar la
dirección de llegada de la nueva información
- DMCtrl: Indica el tipo de retorno/lectura a
efectuar (si es B, H, B(U), etc.)
- DataRd: datos almacenados en la data memory
en una dirección address.

Antes de continuar se deben de hacer las siguientes


aclaraciones:

- En comparación a la unidad de registros, la dirección


address será una entrada de 32 bits. De la misma
manera lo es DataWr y la salida DataRd o
DM[address] (notación que indica valor en la
posición/dirección address en DM).
- DMCtrl será una entrada de 3 bits, esto porque son 6
tipos de operaciones distintas:

23 𝑝𝑜𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒𝑠 ≥ 6 𝑜𝑝𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 𝑑𝑖𝑓𝑒𝑟𝑒𝑡𝑒𝑛𝑡𝑒𝑠

Por otra parte, se debe conocer el significado de cada


inicial de operación:

- B: Para 32 bits o una palabra


- H: Para 16 bits o media palabra
- W: Para 8 bits o un byte
- B(U): Para 16 bits sin signo
- H(U): Para 8 bits sin signo. Implementación en código Verilog de la memoria de datos
parte #2
Implementación en código
Al inicio del módulo se definen las entradas y salidas
propuestas por el diagrama de bloque. Posteriormente se lee el
archivo de texto y se cargan datos en memory (matriz) con la
línea 52. Continuando, se dispone un bloque always que se
acciona con las entradas DMaddress, DataWr, DMCtrol y
en_Wr, es decir que este se encargar de validar las acciones de
lectura y escritura.

Estando dentro de la verificación anterior, más


específicamente en los distintos tipos de caso que se pueden
presentar, se tienen los dos puntos principales de parada, la
línea 57 y la línea 88. La primera verifíca si la acción a
ejecutar por el módulo es la de escritura, la segunda verifica el
tipo de lectura a realizar (se asume que lo único opcional es el
proceso de escritura). Detallando un poco ambos procesos, se
determina lo siguiente:

- Para el proceso de escritura, dependiendo del valor


de DMCtrl en la línea 58 se puede enviar como
nueva información a escribir en la memoria datos
una palabra, media palabra, un byte con signo,
entre otras (ver figura Tipos de entrega de datos en
el modo lectura de la memoria de datos). Es de
Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira. 5
resaltar que el proceso de asignación de valores es
el mismo que se usó en la unidad de registros.
- Para el proceso de lectura se hace un proceso
similar, la diferencia reside en que este proceso se
podrá visualizar en la salida del módulo. Hay una
característica particular en la sintaxis de asignación,
por ejemplo, las líneas 91, 95 y 96 tres utilizan lo
siguiente:

…<={{{8{Memory[temp][7]}}, …, }}
Implementación en código Verilog de la memoria de
Esta sintaxis permite multiplicar un número de instrucciones
veces determinado la información que se encuentre
en Memory[temp][7]. Esto es más que todo usado Luego de la definición de las entradas y salidas dadas por el
para las operaciones en donde no se retorna todo el diagrama de bloques, se procede con creación de la matriz INS
contenido del registro (32 bits). y el valor que calculará la posición de inició de cada
cuadrupla dentro del archivo de texto.
• Memoria de instrucciones
Luego de leer el archivo de texto se hace la asignación de los
valores leídos hacia las variables de salida.
Información
B. Resultados y análisis
El circuito de la memoria de instrucciones es descrito
mediante el diagrama de bloque que se muestra a
Para cada test se mostrará su respectivo testbench, también
continuación:
conocido como banco de pruebas. En este se debe hacer
claridad sobre ciertas generalidades:

1. Todo test bench usa una nomenclatura específica


para llamar a cada diseño, dicha nomenclatura es:

nombreDelDiseño nombreDeInstancia (argumentos)


argumento: .argumento1(argumentoEnTestBench) o
argumentoEnTestBench

Los argumentos pueden ir ya sea haciendo referencia


a los argumentos del diseño
.argumento1(argumentoEnTestBench) o bien
proporcionando valores a estos según su posición en
el diseño (argumento1, argumento2, …).

2. Cada test bench tendrá un sección específica en


donde se utilizan herramientas necesarias para la
Diagrama en bloque de la memoria de instrucciones correcta ejecución de las pruebas. Esta herramientas
son:
Este módulo es el encargado de almacenar y leer las $dumpfile(“dump.vcd”);
instrucciones que se ejecutan, tales como las tipos R, tipo I, $dumpvars;
tipos S, tipo J, entre otras. #tiempo $finish;
El diseño recibe como entrada Address el cual es la dirección Se mantendrán igual durante todos los test
de la instrucción que se quiere ejecutar y una salida presentados en cada circuito, con la diferencia que lo
Instruction[31:0] la cual es la instrucción que fue obtenida de único que irá cambiando será el tiempo total de
la memoria. ejecución el cual lo proporciona el tiempo antepuesto
a la variable $finish.
Implementación en código 3. Habrá un bloque dedicado a la asignación de valores
al módulo llamado con anterioridad. Este bloque
funcionará con un ciclo for el cual permite iterar el

____________________________
6 Scientia et Technica Año 2022, No 01, Mes 09 de 2022. Universidad Tecnológica de Pereira.

número de veces necesario para lograr el total de data_wr_tb=00000000000000000000000000000000.


posibilidades que indican el total de entradas para un RF_rs1_tb=11111111101010100101010111111111,
circuito arbitrario, y mediante la propia sintaxis de RF_rs2_tb=11111111101010100101010111111111
Verilog se logra la correcta asignación de valores a
cada entrada respectivamente. 2. simtime=5 rs1=000000, rs2=000000, rd_tb=000000,
en_wr_tb=0,
4. Se mostrarán instrucciones que permiten imprimir los data_wr_tb=00000000000000000000000000000000.
resultados en pantalla de cada simulación. RF_rs1_tb=11111111000000000000000000000000,
RF_rs2_tb=11111111000000000000000000000000

• Unidad de registros 3. simtime=10 rs1=000101, rs2=000100,


rd_tb=000110, en_wr_tb=0,
Testbench data_wr_tb=00000000000000000000000000000000.
RF_rs1_tb=11111111101010100101010111111111,
El banco de pruebas definido para la unidad de registros fue el RF_rs2_tb=11111111101010100101010111111111
siguiente: 4. simtime=20 rs1=000101, rs2=000100,
rd_tb=000110, en_wr_tb=1,
data_wr_tb=00000000000000000000000000001111.
RF_rs1_tb=11111111101010100101010111111111,
RF_rs2_tb=11111111101010100101010111111111

5. simtime=30 rs1=000110, rs2=000110,


rd_tb=000000, en_wr_tb=0,
data_wr_tb=00000000000000000000000000000000.
RF_rs1_tb=00001111000000000000000000000000,
RF_rs2_tb=0000111100000000000000000000000

La información retornada por el modlo corresponde a la


simulación de ciertos casos de entrada, mas específicamente
los presentados en la figura Testbench unidad de registros #2
Testbench unidad de registro #1 desde la línea 37 hasta la línea 53. Fueron en total tres casos
en los cuales dos de ellos solo se leía y en uno donde se
escribía información.

Con el fin de lograr validar los resultados se puede hacer una


rápida de comprobación de valores determinando las
posiciones dadas como dirección a la entrada del módulo y los
renglones menos una unidad en el archivo de texto. Este
procedimiento determina que los valores retornados son
satisfactorios acorde con los datos de entrada, tanto los de
lectura como los de salida. Por otra parte, se puede validar el
correcto proceso de escritura en los resultados de los simtime
(momento de simulación) 20 y 30, en donde primero se
solicita cargar el número 15 para posteriormente cargarlos en
la matriz que simula la unidad de registros.

• Memoria de datos

Testbench

Testbench unidad de registros #2 El banco de pruebas definido para la memoria de datos fue el
siguiente:
Resultados y análisis

Los resultados mostrados en pantalla son los siguientes:

1. simtime=0 rs1=000000, rs2=000000, rd_tb=000000,


en_wr_tb=0,
Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira. 7
DataWr=00000000000000000000000000000000,
DMCtrl=000,en_wr_tb=0,
DataRead=00000000000000000000000000000000

2. simtime=10,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=001,en_wr_tb=0,
DataRead=00000000000000000000000011000000

3. simtime=20,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=010,en_wr_tb=0,
Testbench memoria de datos #1. DataRead=00000000110000000000001010110011

4. simtime=30,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=011,en_wr_tb=0,
DataRead=00000000110000000000001010110011

5. simtime=40,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=100,en_wr_tb=0,
DataRead=00000000000000000000000000000000

6. simtime=50,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=101,en_wr_tb=0,
DataRead=00000000000000000000000011000000
Testbench memoria de datos #2. 7. simtime=70,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000001111,
DMCtrl=000,en_wr_tb=1,
DataRead=00000000000000000000000000000000

8. simtime=80,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=010,en_wr_tb=0,
DataRead=00001111110000000000001010110011

9. simtime=90,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000001111,
DMCtrl=001,en_wr_tb=1,
Testbench memoria de datos #3. DataRead=00000000000000000000111111000000

Resultados y análisis 10. simtime=100,


DMAddress=00000000000000000000000000000001,
Los resultados obtenidos fueron los siguientes: DataWr=00000000000000000000000000000000,
DMCtrl=010,en_wr_tb=0,
1. simtime=0, DataRead=00000000000011110000001010110011
DMAddress=00000000000000000000000000000001,

____________________________
8 Scientia et Technica Año 2022, No 01, Mes 09 de 2022. Universidad Tecnológica de Pereira.

11. simtime=110,
DMAddress=00000000000000000000000000000001, Con todo lo anterior, se define entonces la siguiente
DataWr=00000000000000000000000000001111, comprobación:
DMCtrl=010,en_wr_tb=1,
DataRead=00000000000011110000001010110011

12. simtime=120,
DMAddress=00000000000000000000000000000001,
DataWr=00000000000000000000000000000000,
DMCtrl=010,en_wr_tb=0,
Dirección enviada al módulo memoria de datos
DataRead=00000000000000000000000000001111
000 – Word Byte (8 bits)
13. simtime=130,
001 – Half word (16 bits)
DMAddress=00000000000000000000000000000001,
010 – Word (32 bits)
DataWr=00000000000000000000000000001111,
011 – Unsigned Word (32 bits)
DMCtrl=011,en_wr_tb=1,
100 – Unsigned Byte (8 bits)
DataRead=00000000000000000000000000001111
101 – Unsigned Half Word (16 bits)
14. simtime=140,
Nota: Esta última opción fue añadida para igualar el número
DMAddress=00000000000000000000000000000001,
de posibilidades usadas por la fase de escritura.
DataWr=00000000000000000000000000000000,
DMCtrl=010,en_wr_tb=0,
Fase de lectura
DataRead=00000000000000000000000000001111
Tabla de verificación de resultados en fase de lectura,
15. simtime=150,
memoria de datos
DMAddress=00000000000000000000000000000001,
FA Resultado Resultado
DataWr=00000000000000000000000000001111, SE esperado obtenido
DMCtrl=100,en_wr_tb=1, 0 00000000000 00000000000
DataRead=00000000000000000000000000000000 00000000000 00000000000
0000000000 0000000000
16. simtime=160, 10 00000000000 00000000000
DMAddress=00000000000000000000000000000001, 00000000000 00000000000
DataWr=00000000000000000000000000000000, 0011000000 0011000000
DMCtrl=010,en_wr_tb=0, 20 00000000110 00000000110
DataRead=00001111000000000000000000001111 00000000000 00000000000
1010110011 1010110011
30 00000000110 00000000110
17. simtime=170, 00000000000 00000000000
DMAddress=00000000000000000000000000000001, 1010110011 1010110011
DataWr=00000000000000000000000000001111, 40 00000000000 00000000000
DMCtrl=101,en_wr_tb=1, 00000000000 00000000000
DataRead=00000000000000000000111100000000 0000000000 0000000000
50 00000000000 00000000000
18. simtime=180, 00000000000 00000000000
DMAddress=00000000000000000000000000000001, 0011000000 0011000000
DataWr=00000000000000000000000000000000,
19. DMCtrl=010,en_wr_tb=0, Fase de escritura
DataRead=00000000000011110000000000001111
Dato a escribir:
Para poder validar los resultados obtenidos se puede hacer una
comparación con el archivo que el módulo debe de leer y 00000000000000000000000000001111
posteriormente deducir el valor el cual debe de ser arrojado
por el módulo. Tabla de verificación de resultados en fase de escritura,
memoria de datos
Toda la prueba tiene dos fases, la fase de lectura y la fase de FAS Resultado esperado Resultado obtenido de
escritura. Ambas funcionan en la misma dirección, lo que E lectura
cambia es el tipo de lectura/escritura a realizar, es decir , las 70, 000011111100000000000 000011111100000000000
operaciones descritas en la figura Tipos de entrega de datos 80 01010110011 01010110011
en el modo lectura de la memoria de datos. 90, 000000000000111100000 000000000000111100000
Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira. 9
100 01010110011 01010110011
110, 000000000000000000000 000000000000000000000
120 00000001111 00000001111
130, 000000000000000000000 000000000000000000000
140 00000001111 00000001111
150, 000011110000000000000 000011110000000000000
160 00000001111 00000001111
170, 000000000000111100000 000000000000111100000
180 00000001111 00000001111

Luego del desarrollo de todo lo anterior, es necesario hacer


ciertas aclaraciones:

- La prueba en su fase de escritura utilizo para cada


tipo de instrucción una lectura, es decir, después de
escribir la información se leía la dirección a la cual se Testbench memoria de instrucciones
le añadió la información, esto con el fin de facilitar el
proceso de validación de datos. Resultados y análisis
- Al ser una prueba continua en la que la posición
usada como prueba se cambió más de una vez, los Los resultados arrojados por el módulo son los siguientes:
resultados finales podrían mostrar valores
completamente diferentes a los que se encuentran en 1. Address=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
el archivo, esto es debido a que no se está Instr=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
modificando el archivo de texto, solo se están
haciendo cambios en ejecución con los datos 2. Address=00000000000000000000000000001111,
cargados a la matriz. Cabe resaltar también que Instr=11111100100111111111000001101111
gracias a esta misma característica se puede
determinar si el módulo funciona de manera correcta. 3. Address=00000000000000000000000000001010,
Instr=00000000000000000000011001100011

Gracias a los resultados analizados en las tablas de fases de 4. Address=00000000000000000000000000000001,


lectura y escritura, se puede determinar que el módulo Instr=00000000110000000000001010110011
diseñado para representar la memoria de datos funciona de
manera correcta, esto es por lo siguiente: 5. Address=00000000000000000000000000111111,
Instr=10000011000000000000000000000000
- Los datos tanto en fase de lectura como en fase de
escritura concuerdan. Cabe tener en cuenta que lso datos
esperados fueron calculados directamente a mano, y que Como se ha desarrollado hasta el momento, para verificar los
su procedimiento no se consideró necesario debido a que resultados se debe comparar con el archivo de texto. Para este
no es un cálculo complejo. caso tenemos lo siguiente:
- Se pudo validar el correcto posicionamiento, es decir el
uso de los tipos de instrucciones como B, H,W, B(U) y La instrucción esperada para el resultado 2 es:
H(U) además del correcto cambio de información ya que
las ultimas líneas, particularmente las fases 150-160 y
170-180 mostraban el pequeño historial de cambios en la
dirección 1.

• Memoria de instrucciones
Dirección 15
Testbench
La instrucción esperada para el resultado 3 es:
El banco de pruebas definido para la memoria de
instrucciones fue el siguiente:

____________________________
10 Scientia et Technica Año 2022, No 01, Mes 09 de 2022. Universidad Tecnológica de Pereira.

Dirección 10

La instrucción esperada para el resultado 5 es:

Dirección 63

De lo anterior se puede concluir que el módulo funciona de


manera correcta conforme al archivo de texto y el diseño
planteado.
Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira. 11

III. CONCLUSIONES

Del desarrollo de este documento se concluye que:

- Se es importante conocer el trabajo interno de un


procesador, tanto por cultura general como
conciencia sobre las maquinas que se están usando
actualmente.
- El desarrollo de actividades previas permite preparar
de manera más integra la solución de una actividad
más compleja.

Con respecto a los análisis de los módulos de memorias:

- Se pudo validar correctamente el funcionamiento de


cada una delas memorias.
- Las pruebas realizadas intentaron abarcar
posibilidades que permitieran determinar el correcto
funcionamiento de los módulos
- Se hace necesario el uso de diagramas de bloques ya
que estos permiten agilizar el proceso de
entendimiento de los módulos.

REFERENCIAS

[1]. L. F. Miguel. (2022, Sep.).LABORATORIO #2


ARQUITECTURA DE COMPUTADORAS.
[Online]. Disponible:
https://www.edaplayground.com/x/FwF4

____________________________

También podría gustarte