Giter Site home page Giter Site logo

bananahell / oac-riscv Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 0.0 43.68 MB

Trabalho de Organização e Arquitetura de Computadores, UnB - 2020/2

VHDL 58.48% HTML 2.66% Verilog 7.13% Standard ML 0.04% Stata 1.34% Scheme 0.01% Tcl 28.73% Assembly 1.59%
arquitetura-de-computadores ula processador risc-v computer-architecture alu unb oac

oac-riscv's Introduction

OAC - Processador RiscV Monociclo

Trabalho de Organização e Arquitetura de Computadores
Pedro Nogueira - 14/0065032
UnB - 2020/2

Projeto de um processador monociclo na arquitetura RISC-V na plataforma Quartus.
O trabalho por completo foi dividido em várias partes, cada uma contendo um PDF de especificações e um trecho nesse README com explicações de seu propósito no trabalho inteiro.
Cada parte vai ser feita em VHDL, que fica logo na root do projeto, e terá um testbench respectivo, que fica na pasta simulation/modelsim.

Primeira parte - Gerador de imediatos

Alguns tipos de instruções carregam nelas um número que é diretamente injetado na operação desejada. Este é chamado de imediato.
O imediato deve ser extraído da instrução conforme o tipo dela, e essa primeira parte certifica que essa extração ocorra corretamente.
Obs: os imediatos devem ser extendidos para fazer operações de forma que eles tenham 32 bits, então qualquer imediato que não tenha 32 bits extende o sinal à esquerda.

  • Tipo R: não contém imediato.

  • Tipo I:

I[11] = instr[31]
I[10..5] = instr[30..25]
I[4..0] = instr[24..20]
  • Tipo S:
S[11] = instr[31]
S[10..5] = instr[30..25]
S[4..0] = instr[11..7]
  • Tipo SB:
SB[12] = instr[31]
SB[11] = instr[7]
SB[10..5] = instr[30..25]
SB[4..1] = instr[24..21]
SB[0] = 0
  • Tipo UJ:
UJ[20] = instr[31]
UJ[19..12] = instr[19..12]
UJ[11] = instr[20]
UJ[10..5] = instr[30..25]
UJ[4..1] = instr[24..21]
UJ[0] = 0
  • Tipo U:
U[31..20] = instr[31..20]
U[19..12] = instr[19..12]
U[11..0] = 0

Segunda parte - ULA

A ULA (Unidade Lógico-Aritmética) é o componente responsável pelas operações lógico-aritméticas do processador, como adições, subtrações, comparações bit a bit, comparações de números por inteiro, etc.
Para fazer isso, o circuito da ULA recebe dois vetores de 32 bits cada Ain e Bin sendo os dados a serem processados em si, recebe um código de operação (OpCode) de 4 bits que representa qual operação deve ser executada, retorna um vetor de 32 bits Zout com a resposta da operação, e retorna um bit zeroOut que é ativado em situações de comparações.
A especificação da ULA desse projeto pede 14 operações, mas para aproveitar os 4 bits de seleção por completo adicionarei duas instruções ao final. Com isso, as instruções presentes nessa ULA são:

  • 0000: ADD A B -> Z = A+B (soma com sinal)
  • 0001: SUB A B -> Z = A-B (subtração com sinal)
  • 0010: AND A B -> Z = A&B (comparação AND bit a bit)
  • 0011: OR A B -> Z = A|B (comparação OR bit a bit) .
  • 0100: XOR A B -> Z = A⊕B (comparação XOR bit a bit)
  • 0101: SLL A B -> Z = A<l<B (shift A pra esquerda B vezes logicamente)
  • 0110: SRL A B -> Z = A>l>B (shift A pra direita B vezes logicamente)
  • 0111: SRA A B -> Z = A>>B (shift A pra direita B vezes aritmeticamente) .
  • 1000: SLT A B -> Z = 1; se A<B (com sinal)
  • 1001: SLTU A B -> Z = 1; se A<B (sem sinal)
  • 1010: SGE A B -> Z = 1; se A≥B (com sinal)
  • 1011: SGEU A B -> Z = 1; se A≥B(sem sinal) .
  • 1100: SEQ A B -> Z = 1; se A=B
  • 1101: SNE A B -> Z = 1; se A!=B
  • 1110: ???
  • 1111: ???

oac-riscv's People

Contributors

bananahell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.