Practica 7 Arquitectura de Computadoras
Practica 7 Arquitectura de Computadoras
Practica 7 Arquitectura de Computadoras
UPIIZ “ZACATECAS.”
Arquitectura de Computadoras
Práctica 7
Alumno
Semestre
Quinto Semestre
Grupo
5CM1
19 de Noviembre de 2024,
Zacatecas, Zac
Introducción
Objetivo
Marco teórico
Unidad de Control
Señales de Control
FPGAs y VHDL
Las FPGAs (Field Programmable Gate Arrays) son dispositivos programables que
permiten implementar sistemas digitales personalizados. En esta práctica se utiliza
una FPGA Xilinx Spartan 3, ideal para proyectos educativos y de prototipado
debido a su capacidad de implementar arquitecturas complejas como
procesadores RISC-V. El diseño y simulación del sistema se realiza en VHDL
(VHSIC Hardware Description Language), un lenguaje estándar para la
descripción y modelado de sistemas digitales que permite trabajar con diseños
estructurales y comportamentales.
La implementación de la unidad de control en una FPGA no solo refuerza los
conceptos de arquitectura y diseño digital, sino que también proporciona
experiencia práctica en la síntesis y validación de circuitos digitales en un entorno
profesional. Esto prepara a los estudiantes para enfrentar desafíos reales en el
diseño de hardware y optimización de arquitecturas computacionales.
Desarrollo
Esta practica se conforma de tres componentes que trabajan en conjunto para poder
construir una unidad de control, a continuacion se explican los tres:
● Componente pccontrol
Este componente es responsable de generar la señal PCSrc, que controla los
saltos en el contador de programa (PC). Su propósito principal es determinar si el
procesador debe continuar ejecutando la próxima instrucción en orden secuencial
o realizar un salto condicional, basado en los valores de las banderas Z, N, C y V,
así como en el opcode y el campo funct3 de la instrucción. Las señales derivadas
de la entrada flags tienen los siguientes significados: la bandera Z (Zero) indica, al
estar en '1', que el resultado de la comparación o resta de dos operandos es igual
a cero; la bandera N (Negative) señala, al estar en '1', que el resultado de dicha
comparación es negativo; la bandera C (Carry) indica, al estar en '1', que la
comparación generó un acarreo; y finalmente, la bandera V (Overflow) señala, al
estar en '1', que el resultado de la comparación produjo un desbordamiento. Estas
señales son clave para evaluar las condiciones que determinan la ejecución de
saltos condicionales.
Estas señales son fundamentales para evaluar las condiciones necesarias para
los saltos condicionales.
Después de realizar lo anterior, el sistema verifica los valores de funct3 y el
opcode, lo que permite identificar el tipo de instrucción, siendo en este caso de
tipo B según el código del opcode. A continuación, se analiza el valor de funct3
para evaluar las condiciones específicas de cada instrucción de salto. Para la
instrucción BEQ, cuando funct3 = "000”, el salto ocurre si la bandera Z está activa,
indicando que el resultado de la operación es igual a 0. En el caso de la
instrucción BNE, cuando funct3 = "001", el salto ocurre si Z = 0, lo que indica que
el resultado no fue 0. Para la instrucción BLT, donde funct3 = "100", el salto ocurre
si el resultado de una operación XOR entre las señales N y V es 1. Para la
instrucción BGE, con funct3 = "101", el salto se realiza si la negación de la
operación XOR entre N y V da como resultado 1. En la instrucción BLTU, cuando
funct3 = "110", el salto ocurre si la negación de la señal de entrada C es 1.
Finalmente, para la instrucción BGEU, con funct3 = "111", se realiza el salto si la
señal C es igual a 1. Estas verificaciones determinan las condiciones bajo las
cuales se ejecuta cada salto.
Después de analizar todas las comparaciones necesarias para determinar cuándo
PCSrc debe ser '1' o cuándo corresponde un salto de línea, concluimos que, si no
se cumple ninguno de los casos evaluados, PCSrc se establece en '0'. Esto indica
que el procesador debe continuar ejecutando la siguiente instrucción en orden
secuencial.
● Componente decoder
● Unidad de control
Finalmente, en el componente de unidad de control, relacionamos los dos
componentes anteriores, donde este es el elemento responsable de coordinar el
funcionamiento del procesador. Su tarea principal consiste en producir las señales
de control requeridas para que los módulos internos operen de forma conjunta,
garantizando una ejecución eficiente de las instrucciones.
Simulación
En la imagen siguiente se observa como la salida PCSrc va cambiando según los
valores de Flags en la operación de tipo B, las otras salida se mantienen
constantes según las condiciones indicadas. Para el tipo R, las condiciones
cambian de manera que los valores son diferentes según sea el caso, por ejemplo,
para el valor de ALUControl depende totalmente de lo que vale funct3 y funct7.
Por otro lado, en la operación de tipo I, además de los valores determinados para
las otras salidas, el valor de ALUControl depende de igualmente de funct3 y
funct7. Igualmente en la operación de tipo Load el valor SS depende solamente de
funct3, por lo que las otras salidas solo dependen del tipo de operación.
Finalmente las operaciones de tipo S, JAL, JALR, LUI y AUIPC solo dependen de
las condiciones dadas para su tipo de operación. Esto se puede observar en la
imagen siguiente.
Conclusión
Al finalizar la práctica, se logró implementar y verificar la funcionalidad de una
unidad de control para un procesador basado en la arquitectura RISC-V, utilizando
un diseño modular compuesto por los componentes PCControl y Decoder. A
través de la descripción en VHDL y la síntesis en una FPGA Xilinx Spartan 3, se
pudo observar cómo las señales de control generadas permitieron coordinar
correctamente las operaciones del procesador, incluyendo la gestión del contador
de programa, la configuración de la ALU y la interacción con el banco de registros
y la memoria.