O principal objetivo de um professor é assegurar os melhores resultados de aprendizagem para os seus alunos. 


2025-2026, AC, LDSA, Grupo 7

Grupo 7 (LDSA)

Autores: Pedro Formosinho, Manuel Homem, Miguel Santos

Data: 27 de dezembro, 2025

Introdução

Este projeto consiste no desenvolvimento de uma arquitetura de processador de 16 bits em VHDL, no âmbito da Unidade Curricular de Arquitetura de Computadores. O objetivo central é implementar um processador simplificado do tipo RISC (Reduced Instruction Set Computer) para compreender a interligação entre os principais blocos funcionais de um sistema computacional.

 

Datapath
Diagrama de blocos

 Mapa de Bits das Instruções 

O processador utiliza instruções de tamanho fixo de 16 bits. O formato das instruções é: 

  • Opcode (Código da operação) - 4 bits 
  • Rd (Registo de destino) - 3 bits 
  • I (Bit Imediato, indica se a operação usa um valor imediato ou um registo) - 1 bit 
  • Rs2 / Imm (Valor do Imediato, ou valor do registo destino) – 8 bits 

A ordem fica: Opcode [15 downto 12] + Rd [11 downto 9] + I [Bit 8] + Rs2/Imm [7 downto 0].

Tabela de instruções 1

Tabela de instruções 2

(…)


Estrutura e Descrição dos Módulos 

O projeto foi desenvolvido em VHDL utilizando o Vivado, visando um dispositivo da família Zynq-7000 (xc7z007sclg400-2). A arquitetura segue um modelo modular hierárquico, onde o módulo de topo que é o Processador integra o Caminho de Dados (Datapath) e a Unidade de Controlo. 

Abaixo apresenta-se a descrição dos módulos constituintes identificados na hierarquia do projeto: 

  • Processador.vhd (Módulo topo): É a entidade principal que instancia e conecta todos os componentes do sistema (Memórias, ALU, PC, Registos e Unidade de Controlo), gerindo os sinais de clock e reset globais. 
  • UnidadeControlo.vhd: Responsável por descodificar as instruções provenientes da memória e gerar os sinais de controlo (seleção de MUXs, Write Enable de registos e memória, operações da ALU) para coordenar o fluxo de dados. 
  • PC.vhd (Program Counter): Registo que armazena o endereço da próxima instrução a ser executada. É atualizado a cada ciclo de clock (incremento ou salto). 
  • Instruction_Memory.vhd: Memória ROM (Read-Only Memory) que armazena o código do programa. Recebe o endereço do PC e fornece a instrução correspondente. 
  • • BancoRegistos.vhd: Contém os registos de uso geral do processador. Permite a leitura de dois operandos e a escrita de um resultado num mesmo ciclo. É composto internamente por 8 instâncias de Registo.vhd. 
  • ALU16bits.vhd (Unidade Lógica, Aritmética e Deslocamentos): O núcleo de processamento, responsável por executar operações matemáticas, lógicas e deslocamentos. Pela estrutura do projeto, esta unidade agrega sub-blocos especializados: 
    • UnidadeAritmetica.vhd: Para somas e subtrações (ADD e SUB). 
    • UnidadeLogica.vhd: Para operações lógicas AND, OR e NOT. 
    • UnidadeDeslocamento.vhd: Para operações de deslocamentos (SHL, SHR). 
  • Sign_Extend.vhd: Unidade de extensão de sinal, utilizada para converter valores imediatos de 8 bits para 16 bits, mantendo o sinal aritmético. 
  • MUX.vhd: Multiplexers utilizados para direcionar o fluxo de dados (ex: escolher entre um registo ou um valor imediato para entrar na ALU). 
  • memoria.vhd: Memória de Dados (RW – Read/Write), onde o processador pode ler (LOAD) ou guardar (STORE) resultados de operações. 
  • Adder.vhd: Somador dedicado, usado para incrementar o PC (PC + 2). 

(…)


Demonstração

(…)

Instrução 7 (LOAD): O processador transita para a instrução 1000110100000001 no PC 000c. 

  • Resultado da Operação: A operação resulta no valor 1, visível tanto na saída da ALU como no endereço em write_data, que vai ser o valor da soma do enderenço base + imediato. 
  • Configuração de Controlo: Os sinais de controlo alteram-se, destacando-se o memread em 1, permitindo a leitura da memória. 

Load

(...)

Esquemático completo

Esquemático completo



Esquemático da ALU

Esquemático da ALU



Esquemático da UA

Esquemático da UA



Esquemático da memória de instruções

Esquemático da memória de instruções

(…)


Conclusão 

A realização deste projeto permitiu a implementação e validação de um processador funcional de 16 bits em VHDL, utilizando a ferramenta Vivado. 

Desempenho: A simulação comportamental (tb_Processador.vhd) demonstrou que o processador executa corretamente as instruções sequenciais. A separação da ALU em sub-unidades (Aritmética, Lógica e Deslocamento) permitiu uma organização lógica clara. A utilização da Zynq-7000 oferece recursos lógicos mais do que suficientes para esta implementação, garantindo tempos de resposta rápidos para a frequência de relógio alvo. 

Limitações

  • Espaço de endereçamento: Sendo uma arquitetura de 16 bits, o espaço de endereçamento é limitado a 64KB (ou menos, dependendo da largura do barramento de endereços implementado), o que restringe o tamanho dos programas e dados. 
  • Período de relógio: Implementado como ciclo único, o tempo de ciclo é determinado pela instrução mais lenta (caminho crítico), limitando a frequência máxima de operação. 
  • Imediatos Curtos: No formato de instrução implementado (Tipo-I), o campo destinado ao valor imediato é de 8 bits (bits 7 a 0). Isto limita a representação direta de constantes ao intervalo de -128 a 127 (em complemento para dois). Para carregar valores de 16 bits na sua totalidade, a arquitetura exigiria a combinação de múltiplas instruções. 

Possíveis melhorias

  • Pipeline: Implementar uma arquitetura em pipeline (ex: 5 estágios: Fetch, Decode, Execute, Memory, Write-Back) para aumentar o throughput de instruções. 
  • Periféricos de I/O: Adicionar controladores para LEDs ou Switches da placa de desenvolvimento para permitir interação em tempo real, mapeando-os em memória (Memory Mapped I/O). 
  • Extensão do ISA: Incluir instruções de multiplicação em hardware ou suporte para interrupções, tornando o processador capaz de lidar com eventos assíncronos. 


Referências

  • Pereira, Conceição (2025-2026). AC Suporte ao Projeto [PowerPoint]. ISCTE Sintra.







Conheça outros projetos em destaque no ano letivo 2025-2026 seguindo esta ligação.

Comentários