Coder Social home page Coder Social logo

mekhyw / z01.1-fenix Goto Github PK

View Code? Open in Web Editor NEW

This project forked from insper/22a-z01.1

1.0 0.0 3.0 188.31 MB

VHDL, FPGA, Fron nand to tetris

Home Page: https://mekhyw.github.io/Z01.1-Fenix/

License: Other

Shell 3.15% Python 11.19% Mathematica 0.31% VHDL 44.60% Assembly 11.07% Stata 0.83% Verilog 0.35% Fortran 0.01% Tcl 3.65% Hack 9.49% Java 15.34%

z01.1-fenix's Introduction

Vídeo dos Projetos

Segue link para vídeo projeto B

https://youtu.be/wfmpuPC8tjU

Segue link para vídeo do projeto C

https://www.youtube.com/watch?v=58nf77r0mHc

Segue os links para os vídeos do projeto D

Ram8: https://www.youtube.com/shorts/bf-MWOfZLzs?&ab_channel=HugeCharles Pc: https://www.youtube.com/shorts/SwkH8cJDaZo?&ab_channel=HugeCharles

Segue os Links projeto E

Quadrado LCD: https://www.youtube.com/shorts/jd5lTPvAv2s?&ab_channel=JohnnyDeppBalls

LCD_Linha: https://www.youtube.com/shorts/WKaP04cUGEI?&ab_channel=GoViralMusic

LCD_NOME_GRUPO: https://www.youtube.com/shorts/7DBE9txE90s?&ab_channel=Clips.YTshorts

SwLed: https://www.youtube.com/watch?v=Gq56dSBVSJc

SwLed2: https://www.youtube.com/shorts/1uqbfyDdFfI?&ab_channel=JohnnyDeppBalls

Desenvolvendo um computador do ZERO!

Material disponível no site

Clonando

$ # Clone o repositório
$ git clone https://github.com/Insper/Z01.1
$ cd Z01.1
$ # instale e/ou atualize o Z01.1
$ ./updateZ01tools.sh
$ # instale as dependencias python
$ pip install -r requirements.txt --user

z01.1-fenix's People

Contributors

arthur-barreto avatar linkolnr avatar mekhyw avatar antonioaemartins avatar renan-tr avatar pedropaulomorenocamargo avatar g3mha avatar paulofalcao2002 avatar

Stargazers

 avatar

z01.1-fenix's Issues

Comparador16

Arquivo : Comparador16.vhd
Descrição : Verifica se o vetor de saída (16 bits) é igual a zero (zr) e se menor que Zero (ng). Caso igual a zero, faz com que o sinal zr seja igual a '1' e caso contrário '0'. Se o sinal de entrada for negativo faz com que ng receba '1' e '0' caso contrário.
Dependência: Não tem.
Pseudo-código:

if(a == 0):
  zr = 1
else:
  zr = 0

if (a < 0):
  ng = 1
else:
  ng = 0

Forma de onda

Para cada teste realizado, deve-se carregar a interface gráfica e tirar um print da forma de onda do módulo com os testes aplicados a ele (LAB-7). Essa imagem deve ser salva na mesma pasta dos arquivos VHDL (src/rtl/) e com o mesmo nome dos módulos. A pasta no final do projeto deve possuir os seguintes arquivos:

/src/rtl/
         Add16.vhd
         Add16.png
         ALU.vhd
         ALU.png
         Comparador16.vhd
         Comparador16.png
         FullAdder.vhd
         FullAdder.png
         HalfAdder.vhd
         HalfAdder.png
         Inc16.vhd
         Inc16.png
         Inversor16.vhd
         Inversor16.png
         Zerador16.vhd
         Zerador16.png

Add16

Arquivo : Add16.vhd
Descrição : Adiciona dois vetores de 16 bits resultando em um vetor de 16 bits (sem carry out do bit mais significativo - MSB).
Dependência: FullAdder
Deve utilizar o FullAdder via port map.

OR de 16 bits

Arquivo : Or16.vhd
Descrição : OR bit a bit entre duas palavras de 16 bits.

FullAdder

Arquivo : FullAdder.vhd
Descrição : Adiciona três bits, dois referentes às entradas e o outro referente ao carry in. O resultado é um bit com a soma e outro com o carry out.
Dependência: Não tem.

Counter Down

Arquivo: ConceitoA/CounterDown.vhd
Arquivo Teste: tests/CoubterDown.vhd
Dependência: FlipFlopT

NOR 8 Way

Arquivo : Nor8Way.vhd
Descrição : NOR entre 8 bits, resulta em uma única saída

OR 8 Way

Arquivo : Or8Way.vhd
Descrição : OR entre 8 bits, resulta em uma única saída

Inc16

Arquivo : Inc16.vhd
Descrição : Adiciona '1' a um vetor de 16 bits resultando em um vetor de 16 bits (sem carry out).
Dependência: Add16
Deve utilizar o add16 via port map.

Register 8

Arquivo : Register8.vhd
Dependência : BinaryDigit
Descrição : É um registrador de 8 bits criado a partir do binaryDigit porém agora para armazenar um vetor de entrada de 8 bits de tamanho.

NOT de 16 bits

Arquivo : Not16.vhd
Descrição : NOT bit a bit entre duas palavras de 16 bits.

Ram64

Arquivo : Ram64.vhd
Dependência : Ram8, Mux8Way16, Dmux8Way
Descrição : Similar a RAM8 porém com 64 endereços.

Register 32

Arquivo : Register32.vhd
Dependência : Register16
Descrição : É um registrador de 32 bits criado a partir do Register16 porém agora para armazenar um vetor de entrada de 32 bits de tamanho.

AND 16 bits

Arquivo : And16.vhd
Descrição : And bit a bit entre duas palavras de 16 bits.

Inversor16

Arquivo : Inversor16.vhd
Descrição : Inverte um vetor de entrada quando o bit de controle n (nx ou ny) for igual a '1', e não modifica o vetor de entrada caso contrário. O resultado é um novo vetor de 16 bits.
Dependência: Não tem.

Register 16

Arquivo : Register16.vhd
Dependência : Register8
Descrição : É um registrador de 16 bits criado a partir do Register8 porém agora para armazenar um vetor de entrada de 16 bits de tamanho.

Program Counter

Arquivo : PC.vhd
Dependência : inc16, mux16, reg16
Descrição : O program counter será o nosso endereçador de memória da CPU, ele será responsável por apontar para a próxima instrução a ser executada. Como normalmente um código segue um fluxo sequencial (uma linha na sequência da outra) o PC possui a habilidade de se auto incrementar a cada clock (apontando assim para a próxima instrução), mas ele tem que suportar condições (if, while, ...) rompendo com esse fluxo contínuo.

Sua lógica é descrita no pseudo código a seguir:
If reset(t-1) then
out(t)=0
else if load(t-1) then
out(t)=in(t-1)
else if inc(t-1) then
out(t)=out(t-1)+1
else
out(t)=out(t-1)

Ram512

Arquivo : Ram512.vhd
Dependência : Ram64, Mux8Way16, Dmux8Way
Descrição : Similar a RAM8 porém com 512 endereços.

Register 64

Arquivo : Register64.vhd
Dependência : Register32
Descrição : É um registrador de 64 bits criado a partir do Register32 porém agora para armazenar um vetor de entrada de 64 bits de tamanho.

Binary Digit

Arquivo: BinaryDigit.vhd
Dependência: FlipFlopD e Mux2Way
Descrição : É um registrador feito para armazenar um único bit de informação (0 ou 1). A interface do módulo consiste em uma entrada (d) para o bit a ser armazenado, um sinal de load para indicar quando o bit de entrada deve ser armazenado um sinal de clock e a saída output* que é o bit armazenado:

Ram8

Arquivo : Ram8.vhd
Dependência : Register16, Mux8Way16, Dmux8Way
Descrição : É uma memória de 8 endereços com 16 bits de largura. O componente possui como entrada o vetor input de 16 bits, o endereço a ser armazenado (address) o sinal load que indica quando é para ser armazenado e o clock. Como saída temos o valor lido no endereço especificado quando load for igual a 0. Note que sinal LOAD tem como função similar o do READ/WRITE, quando zero, indica que queremos ler o valor armazenado, quando 1 indica que queremos escrever (write) nessa posição.

ALU

Arquivo : ALU.vhd
Descrição : A entidade que faz o mapeamento de todas as demais, interligando os blocos (zerador, comparador, inversor, Add ....) em um único bloco.
Dependência: Comparador16, Zerador16, Inversor16, Add16
Deve utilizar os módulos via via port map.

Zerador16

Arquivo : Zerador16.vhd
Descrição : Zera um vetor de entrada quando o bit de controle z (zx ou zy) for igual a '1'. Não modifica o vetor de entrada se o bit for '0'. O resultado é um novo vetor de 16 bits.
Dependência: Não tem.

HalfAdder

Arquivo : HalfAdder.vhd
Descrição : Adiciona dois bits que resulta em um bit de soma e outro de carry out.
Dependência: Não tem.

Ram4k

Arquivo : Ram4k.vhd
Dependência : Ram512, Mux8Way16, Dmux8Way
Descrição : Similar a RAM8 porém com 4512 endereços.

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.