• Labs

Lab 4: Lógica Combinacional

Individual

Esse laboratório é para ser realizado individualmente.

Esse laboratório introduz o modelo de desenvolvimento baseado em testes que será utilizado em todos os projetos.

or16.vhd

Iremos trabalhar implementando o módulo or16 que é uma parte do projeto B.

Abra o terminal na pasta b_logComb/ e execute:

$ pytest -k or16

O mesmo irá executar a compilação dos arquivos src/*.vhd e realizar testes unitários em cada um do módulo, como os módulos não estão implementados e como estamos forçando o teste do or16 devemos ter um erro nesse módulo.

Esse erro acontece pois o módulo não possui nenhuma implementação:

-- or16.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Or16 is
    port ( 
            a:   in  STD_LOGIC_VECTOR(15 downto 0);
            b:   in  STD_LOGIC_VECTOR(15 downto 0);
            q:   out STD_LOGIC_VECTOR(15 downto 0));
end entity;

architecture arch of Or16 is
begin


end architecture;

Vamos agora editar esse arquivo para realizar sua implementação. Esse módulo deve realizar uma OR entre as entras a e b e colocar o resultado na saída q, para isso insira a seguinte linha no arquivo

q <= a or b;

Teste novamente (./testeLogicaCombinacional.py) agora deve passar:

Uma vez implementando, testado e validado, podemos fazer o commit e enviar para o repositório do grupo esse novo branch. Essa modificação deve ser salva em novo branch or16. Dentro do terminal (na pasta do projeto B):

$ git checkout -B or16-SEU-USER
$ git commit -am "funcionando e testado"
$ git push origin or16-SEU-USER

Note

trocar SEU-USER pelo seu usuário insper, para evitar conflito quando forem enviar para o git.

Com o branch enviado ao github você deve gerar um pull-request para o mediador verificar e aprovar ou não a sua implementação.

Para o Mediador 1

Como vocês estão realizando isso individualmente, o mediador do projeto vai receber vários PRs desse branch, você só deve aceitar um, já que todos fizeram o mesmo.

and16.vhd

Agora você vai fazer o desenvolvimento do módulo and16.vhd. Esse componente recebe dois vetores de 16 bits (a e b) e realizada uma AND bit a bit (q(0) = a(0) and b(0) ....). Para implementar você deve seguir os passos a seguir:

  1. Abrir o arquivo de teste e descomentar o módulo and16.vhd
  2. Fazer a implementação em vhdl
  3. Testar
  4. Criar uma branch
  5. Fazer um commit
  6. Enviar a implementação

Tip 2

Esse vai ser o fluxo para quase todos os projetos que iremos realizar na disciplina.

mux2way.vhd

Teoria 3

Para implementar esse módulo, leia a teoria em: VHDL/Combinacional.

Faça a implementação do mux2way.vhd, usando os mesmos passos anteriores.

Note

Para testar todos os módulos, executar:

$ pytest -s

Próximos passos

Agora é começar a trabalhar nos demais módulos do projeto, leia a descrição do Projeto B na página de projetos.

Scrum Master 4

Você é scrum? Então tem várias tarefas pela frente! Acesse a página Util -> Vixi! Sou scrum master e siga os passos lá!