Valores das diferentes partes do trabalho: - Somador de 1 bit - 2 pontos (0,5 para texto, 0,5 para forma(s) de onda e 1,0 para o resto) - Somador de 4 bits - 2 pontos (0,5 para texto, 0,5 para forma(s) de onda e 1,0 para o resto) - Diagrama de portas não-hieráquico - 3 pontos (0,5 para texto, 0,5 para forma(s) de onda e 2,0 para o resto) - Diagrama de portas hieráquico - 3 pontos (0,5 para texto, 0,5 para forma(s) de onda e 2,0 para o resto) Grupos e Avaliação: 1) Bruno Paes e Lucas - Nota: 7,4 - Somador de 1 bit - sem texto explicativo. -0,1 - Somador de 4 bits - não se trata de um "full-adder" - nome inapropriado, sem texto explicativo. -0,2 - Diagrama de portas não hierárquico - sem forma de onda, testbench inadequado e limitado, desrespeita a hipótese síncrona (quando clock muda nenhuma outra entrada pode mudar), não escreveu 1 na saída (somente com preset). -1,0 - Diagrama de portas hierárquico - Prática não recomendável de implementar circuito de teste dentro do testbench. A estrutura do circuito deve estar isolada do gerador de estímulos de teste. Testbench inadequado e limitado, desrespeita a hipótese síncrona (quando clock muda nenhuma outra entrada pode mudar), não escreveu 1 na saída (somente com preset). -1,3 - Documentação do trabalho muito pobre. 2) Bruno Oliveira, Jimmy e Rodrigo Belagamba - Nota: 0,0 - Não entregaram trabalho 3) Carlos - Nota: 9,7 - Somador de 1 bit - OK - Somador de 4 bits - OK - Diagrama de portas não hierárquico - implementação do diagrama OK, mas forma de onda não se sabe de onde veio, testbench com construções estranhas (sinal c controlando a oscilação do clock não serve para nada). Documentação com erros - não é quando clock muda que o dado "passa para a saída", ele é armazenado no latch de saída quando há uma borda de subida no clock, desde que preset e clear estejam ambos desativados. Não disse o que ocorre quando preset e clear estão ativados simultaneamente. -0,3 - Diagrama de portas hierárquico - OK. 4) Douglas e Rodrigo Gambarra - Nota: 9,8 - Todas as 4 implementações estão perfeitas - O testbench do flip-flop não testa todas as possibilidades relevantes. Por exemplo, o único instante em que se ativa o sinal de preset, o sinal de reset está ativado, mascarando o resultado com uma situação de entradas inválida. A documentação do flip-flop também não descreve a funcionalidade deste em relação a suas entradas de controle. -0,2 5) Franklin e Paulo - Nota: 9,0 - Documentação pobre e com uso de terminologia muito inadequada. -0,4 - Os somadores estão com implementação Ok, mas as implementações do flip-flop não foram testadas o suficiente pelo respectivo testbench. Por exemplo, em nenhuma simulação os sinais de preset e/ou clear foram ativados. -0,6 6) George - Nota: 4,5 - Nenhuma das implementações foi acompanhada de documentação. Não fez a implementação hierárquica. -4,5 - A implementação do flip flop está incorreta, pois uma NAND de 3 entradas é diferente de uma NAND de duas entradas onde uma das entradas é a saida de uma NAND de duas entradas. -1,0 7) Guilherme - Nota: 8,0 - Testes do meio-somador e do somador de 4 bits limitados. -0,5 - Somador de 4 bits não é meio somador. Erros de terminologia. Sem documentação. -1,0 - Sem documentação para a versão hieráquica do flip-flop D. -0,5 8) Hikari - Nota:0,0 - Não entregou trabalho 9) Ismael - Nota: 9,5 - Na descrição do flip-flop D existem erros e falta informação. Por exemplo a frase "Este circuito implementa uma forma de Flip-Flop Tipo D, que armazena um bit de saída do estado anterior (Q2), mostrando também a saída atual (Q1)." está errada. O certo seria: "Este circuito implementa um Flip-Flop D sensível à borda de subida do relógio. Este flip-flop armazena um bit amostrado da entrada D e o mostra na saída Q1 e o seu valor negado em Q2". Além disto, a descrição completa deve mencionar a funcionalidade do componente, dizendo o que acontece nas saídas devido a variações nas entradas D, CLK, Preset e Clear -0,3 - Na descrição da implementação hierárquica do flip-flop D, a terminologia usada é incoreta. Por exemplo, ao invés de escrever "instanciamos 6 vezes o mesmo arquivo", deve-se dizer "instanciamos 6 vezes a entidade (ou o módulo de hardware) NAND3". -0,2 10) Márcia e Vanessa - Nota: 10,0 - O trabalho está praticamente impecável. Parabéns ao grupo. Algumas recomendações para deixar os trabalhos subseqüentes ainda melhores: 1) No testbench do somador de 4 bits, vocês poderiam testar exemplos de dados que geram transbordo, tal como somar 9 com 8 (17 não é representável em 4 bits), e ver o que acontece. 2) Circuitos seqüenciais podem ser muito sensíveis a entradas de controle com valor indefinido. Como regra geral, jamais deve-se deixar tais entradas em valor indefinido em qualquer momento de simulação. Os sinais clear e preset do testbench de vocês fica 2ns em valor indefinido, o que pode em alguns circuitos comprometer todos os resultados de uma simulação. 11) Matheus Silva - Nota: 2,0 - Dos quatro projetos, entregou apenas um. -7,0 - A implementação não-hierárquica do flip flop está incorreta, pois uma NAND de 3 entradas é diferente de uma NAND de duas entradas onde uma das entradas é a saida de uma NAND de duas entradas. -0,5 - Não entregou nenhuma documentação do flip-flop. -0,5 12) Mauricio - Nota: 2,0 - Dos quatro projetos, entregou apenas um. -7,0 - A implementação hierárquica do flip flop está correta, mas o testbench está quase totalmente incorreto. Em um circuito síncrono, como dito em aula, quando uma transição de controle (no caso, a borda de subida do sinal) ocorre no sinal de relógio, todos os demais sinais DEVEM estar ESTÁVEIS. Por isto a sua simulação não funciona, pois os laços de realimentação combinacional dos latches, combinados com o modelo de atraso nulo do simulador fazem com que a simulação entre em um laço infinito de avaliação devido ao fato dos valores de saídas das portas jamais estabilizar (pois algumas transições simultâneas com o relógio criam valores que oscilam no mesmo instante de tempo de 0 para 1 e daí para zero, de forma cíclica). -0,5 - Veja um exemplo de comandos do testbench que coloquei no teu trabalho e que funcionam: architecture ArqTB of tbEntity is signal in_clk : std_logic :='0'; -- note a incialização em 0 do in_clk signal in_pre, in_clr, in_d : std_logic; begin U1 : entity work.NandProject port map(pre=>in_pre, clr=>in_clr, clk=>in_clk, d=>in_d); in_d <= '0', '1' after 20ns, '0' after 40ns, '1' after 60ns; -- você não tinha colocado valores para in_d in_pre <= '1', '0' after 20ns, '1' after 40ns; in_clr <= '1', '0' after 50ns, '1' after 55ns; -- Os sinais preset e clear sào ativos em 0 e não em 1. Assim, mudei para eles ficarem mais tempo desativados. process -- Note o processo que define uma onda periódica para o clock -- Note também que aqui quando o clock muda (nos instantes múltip[los ímpares de 7) todos os demais sinais estão estáveis. begin in_clk <= not in_clk; wait for 7ns; end process; end ArqTB; - A forma de onda acrescentada no projeto é um atalho e não um arquivo. Assim, não pude visualizar a forma de onda gerada pelo trabalho. - Não entregou nenhuma documentação do flip-flop. -0,5 13) Richard - Nota: 8,9 - A descrição dos circuitos deve abordar o procedimento de teste do mesmo, não apenas a descrição da funcionalidade e estrutura da implementação. -0,5 - Os testbenchs devem sempre testar os limites da computação.Por exemplo, se as entradas do somador de 4 bits forem 9 e 8, o que aparece na saída. Isto não foi testado. -0,2 - O testbench do flip-flop não testou o uso dos sinais de controle preset e clear. -0,4 14) Rodrigo Pinheiro - Nota: 0,0 - Não entregou trabalho 15) Thiago da Rosa - Nota: 4,5 - Os dois últimos trabalhos a serem entregues não o foram. Contudo, achei um arquivo perdido no zip do trabalho enviado (FFD.bak) que funcionava, mas sem a parte hieráquica, e com o testbench mal feito (não testava a captura de dados da entrada D, pois sempre ou o preset ou o clear, ou ambos estavam ativados durente a execução). -4,0 - Nenhuma documentação acompanhou os projetos. -1,5