Disciplina: Arquitetura de Computadores Turma: 3CC Data: 18/12/12 Nota: Professor: Renato E. N. de Moraes Semestre: 2012-2 Valor: 2,0 pt Aluno: Trabalho 01 - Projeto Neander O computador NEANDER foi criado com intenções didáticas. O objetivo deste trabalho é implementar o NEANDER usando portas lógicas básicas (NAND, NOR, NOT, LATCHES, FLIP FLOPS, etc) ou componentes já prontos do simulador utilizado (memória, ULA, registrador, etc). O trabalho deve simular o NEANDER em um simulador lógico de portas para verificar o funcionamento do circuito ao realizar um pequeno programa de 10 instruções gravado na memória. O computador NEANDER tem as seguintes características: Largura de dados e endereços de 8 bits Dados representados em complemento de dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 códigos de condição: negativo (N) e zero (Z) Memória de 16 células de 8 bits 1 Unidade Aritmética e Lógica de 6 funções para trabalhar com representação em complemento de dois A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.
Projeto da Organização do NEANDER Passo 1: Projeto dos circuitos combinacionais (A) Multiplexador 2:1 de largura de 8 bits. (B) Unidade Aritmética e Lógica (UAL): conforme a seleção da UAL (selual), 6 operações diferentes podem ocorrer na UAL. A largura dos dados é de 8 bits. A UAL trabalha com representação em complemento de dois e é capaz de identificar quando o resultado é ZERO (Z) ou NEGATIVO (N). Passo 2: Projeto dos circuitos sequenciais (A) Registradores de 8-bits ACC, REM, RDM e INST(opcode) com carga e saída paralelas. Notem que todos esses registradores são iguais. (B) Registrador NZ de 2 bits com carga e saída paralelas. Onde N (negativo): indica sinal do resultado (1 se resultado é negativo e 0 se resultado é positivo). Z (zero): indica resultado igual a zero (1 se resultado é igual a zero e 0 se resultado é diferente de zero). (C) Contador de 8-bits PC com carga paralela e sinal de incremento (ver Figura 2). Figura 2: Uma alternativa para implementar o PC do NEANDER. Passo 3: Projeto da Memória (A) Memória RAM para programa e dados. A memoria será um grande banco de registradores de 16 endereços com largura de dados de 8 bits. Na memoria haverão registradores, decodificadores de endereços e o seletores. Logo, neste caso teremos A0, A1, A2 e A3 como entrada de endereço (ver Figura 3). Pode-se também utilizar uma memória pronta. Passo 4: Projeto da Unidade de Controle
A unidade de controle é uma maquina de estados finita (FSM) que controla a leitura e escrita da memória e os elementos da organização conforme os sinais do decodificador de instrução e a temporização do processador (ver Figura 4). Passo 5: Alteração na arquitetura básica NEANDER A Figura 5 mostra o conjunto de instruções básicas do NEANDER. No seu trabalho você deve acrescentar uma instrução de subtração chamada SUB. Você também deve acrescentar duas novas instruções: uma instrução equivalente ao STA e outra equivalente ao LDA mas as novas instruções devem utilizar o modo de endereçamento indireto. Passo 5: Projeto do programa de 10 instruções A memória projetada ao ser inicializada com o sinal de RESET deve conter um programa inicial de 10 instruções dos endereços 0000 a 1010. Os 6 endereços restantes da memória devem ser usados para dados do programa (variaveis a serem utilizadas). Cada grupo deverá criar um programa diferente. Seu programa deve utilizar obrigatoriamente as três novas instruções implementadas no Passo 5. Trabalhem em grupos de até 4 alunos. O projeto funcionando deve ser apresentado somente no dia 18/02/2013 por um aluno do grupo sorteado pelo professor. Quando solicitado, o aluno responsável pela apresentação deverá explicar o projeto, alterar o programa e justificar os resultados obtidos.
Figura 3: Uma alternativa para implementar a memória do NEANDER.
Figura 4: Uma alternativa para implementar o temporizador do NEANDER.
Figura 5: Conjunto de instruções do NEANDER.