Arquitectura de Computadores Ano lectivo de 2006/07 1º Projecto

Transcrição

Arquitectura de Computadores Ano lectivo de 2006/07 1º Projecto
Arquitectura de Computadores
Ano lectivo de 2006/07
1º Projecto
(para ser apresentado e discutido no dia 26 de Março de 2007)
Objectivos
Este projecto tem por objectivo o desenvolvimento de modelos estruturais e comportamentais de
dois tipos de adicionadores de 16 bits, do tipo Ripple Carry e Carry Lookahead, e ainda de uma
Register File de 16x16. Estes componentes serão utilizados mais tarde nos projectos que se seguem.
Parte 1
O objectivo desta parte do projecto consiste em analisar três somadores de 16 bits cada um. O
processo de análise ajudará a compreender o binómio (complexidade, tempo de propagação)
através de uma figura de mérito dada pelo produto nº total de portas * tempo máximo de propagação.
Os três somadores são:
ƒ Do tipo Ripple carry (RC)
ƒ Do tipo Full Carry Lookahead (CLA)
ƒ Do tipo carry lookahead hierárquico (CLAH)
Nota: o segundo tipo, CLA, implementa Carry Lookahead sobre os 16 bits, enquanto que o Carry
Lookahead hierárquico implementa CLA sobre grupos de 4 bits.
Deverá assegurar-se que as restrições que se seguem são para ser implementadas:
ƒ Máximo de 4 entradas por porta lógica;
ƒ Admita que as portas lógicas NAND, NOR, NOT e XOR têm um tempo máximo de
propagação de 1 unidade;
ƒ Admita que as portas AND e OR têm um tempo máximo de propagação de 2 unidades;
ƒ Outros circuitos (por exemplo MUXs, descodificadores, etc) devem ser expressos em
termos de portas lógicas elementares, para se poderem calcular os tempos máximos de
propagação e o número total de portas.
Para cada tipo de somador, desenvolva uma arquitectura em VHDL (ou em Verilog, ou noutra
linguagem à sua escolha) do tipo estrutural, e obtenha a figura de mérito correspondente, baseada
nos cálculos que fez sobre o tempo máximo de propagação do somador e o número total de portas
que usa.
Implemente ainda um programa de teste (Testbench) para cada um dos adicionadores. Os
Testbenches devem demonstrar os correctos funcionamentos dos circuitos na altura da demonstração do
projecto. O processo que incluir nos Testbenches deve permitir testar os três somadores de igual
forma (devem usar o mesmo conjunto de variações dos sinais de entrada), por forma a obter os
mesmos resultados em todos os casos.
Parte 2
Desenvolva um modelo comportamental e um modelo estrutural de uma Register File com dois
portos de leitura e um porto de escrita. Segue-se um diagrama de blocos da Register File.
A definição de entidade VHDL que se segue estabelece o modelo (incompleto) pretendido para a
Register File. As designações em itálico são para serem preenchidas nos projectos.
entity reg_file is
port (
C : in word; -- dados para o porto de escrita
Caddr : in nibble; -- selecção do registo para C
A,B : out word; -- dados dos portos de leitura
Addr,Baddr : in nibble; -- selecção dos registos para A e B
load : in bit; -- enable síncrono de escrita no porto C
clear : in bit; -- clear assíncrono activo a 0
clk : in bit); -- clock para flip-flops edge triggered que
-- comutam nos flancos ascendentes
end entity reg_file;
Quando o sinal load vem activado (a H), um flanco ascendente em clk faz com que o dado
presente no porto C venha escrito no registo endereçado por Caddr. Se o sinal load não estiver
activo, o flanco ascendente não tem efeito.
Quando o sinal clear vier activo, todos os registos verão os seus conteúdos ficar a 0. O sinal
clear é assíncrono e activo a 0.
Pretendem-se implementer duas arquitecturas para a Register File.
A primeira deverá ser do tipo comportamental. Nesse caso, os registos devem vir representados
como um array de palavras de 16 bits, e um processo deve actualizar o conteúdo dos registos e as
suas saídas, respectivamente para uma operação de escrita e para as operações de leitura.
A segunda arquitectura deve ser do tipo estrutural. Neste caso, a arquitectura deverá incluir todas
as instanciações de componentes (flip-flops, portas lógicas, etc.) que forem necessárias, e não deve
incluir código do tipo comportamental.
Implemente ainda um programa que sirva de teste (Testbench) para a Register File, que demonstre o
correcto funcionamento desta aquando da demonstração do projecto. O processo que incluir no programa
de teste deve permitir testar as duas arquitecturas de igual forma, por forma a obter os mesmos
resultados nos dois casos.