EA078 - Micro e minicomputadores: Hardware
2o Semestre de 1999 – 1a Prova - Prova II - Duração: 2 horas - Sem consulta
Questão 1(valor 2.5 pts) Responda suscintamente 5 (cinco) dos enunciados abaixo:
(0.5 pt) 1) O que é tempo de hold? Ilustre com diagrama de tempo (timing diagram).
(0.5 pt) 2) O que é um ciclo de barramento?
Um ciclo de barramento corresponde a um acesso à memória. No caso de 68000, ele consiste de 8 estados (4 ciclos de relógio) no mínimo e pode ser estendido por estados de espera.
(0.5 pt) 3) O que é contenção de barramento? Quando pode ocorrer este problema? Exemplifique com diagrama de tempo (timing diagram).
(0.5 pt) 4) Qual é a função do sinal de strobe (AS*, UDS* e LDS*)?
(0.5 pt) 5) Em que consiste a estratégia de decodificação por endereço completo? Exemplifique.
(0.5 pt) 6) Por que, em geral, os decodificadores de endereço não estão embutidos dentro de um microprocessador?
Normalmente, os projetistas de microprocessadores não conhecem o mapa de memória requerido pelos usuários. E para casos que demandam grande número de blocos de memória, vários pinos serão necessários para selecioná-los, tornando-o fisicamente inviável.
(0.5 pt) 7) A polaridade da saída de FPGA field programmable gate array é programável? Justifique.
Sim. Cada saída de FPGA corresponde à saída de uma porta XOR programável. Quando o funsível é intato, a polaridade é mantida; caso contrário, é invertida.
Questão 2 (valor 2.5 pts.)
Considere os diagramas de tempo do 68000 e os diagrmas de tempo da memória RAM Intel 5116S/L--12 em anexo. (Para as perguntas abaixo, considere OE* de 5116S/L estar sempre ativado e CS* ser derivado de DS* com os atrasos desprezíveis)
(1.0 pt) 1) Verifique a compatibilidade temporal destes dois componentes no ciclo de leitura, com 68000 trabalhando a 8 MHz. Justifique a sua resposta.
Dois componentes são temporalmente compatíves, se todas as suas restrições temporais do ciclo de leitura forem satisfeitas. Como OE* = 0, só os seguintes parâmetros da mamória devem ser verificadas:
3 x tcyc - tCLAV - tDICL,
onde tcyc (125 ns), tCLAV (max. 70 ns) e tDICL (min. 15 ns) são, respectivamente, o período do relógio, o tempo necessário para disponibilizar o endereço válido no barramento e o tempo de setup da UCP.3 x tcyc - tCLAV - tDICL - tAVSL - tDALDI - t1,
onde tDALDI (max. 90 ns), tAVSL (min. 30 ns) e t1 são, respectivamente, o tempo de setup para entrada de dados, o tempo entre o endereço válido e o sinal de strobe e o atraso entre o sinal de strobe e a ativação de CS*. Pelo enunciado do problema, t1 é desprezível, então tCLZ deve ser menor que3 x tcyc - tCLAV - tDICL - tAVSL - tDALDI.
Substituindo os valores fornecidos pelos fabricantes, é fácil verificar que as restrições temporais dos dois componentes são compatíveis, sem estados de espera.
(1.0 pt) 2) Verifique a compatibilidade temporal destes dois componentes no ciclo de escrita, com 68000 trabalhando a 8 MHz. Justifique a sua resposta.
Devemos verificar se os parâmetros temporais do ciclo de escrita da memória atendem as restrições temporais do ciclo de escrita do 68000, sem estados de espera. Para a configuração dada, as expressões que relacionam estes parâmetros são derivadas no exercício 31 do capítulo 4 do livro-texto:
Substituindo os valores fornecidos pelos fabricantes, é fácil ver que as desigualdades são satisfeitas.
(0.5 pt) 3) Serão necessários estados de espera (wait state/I>)? Justifique.
Os estados de espera são introduzidos para garantir que o sinal DTACK* vá para zero (0) pelo menos 20 ns antes do término do estado S4 (terceira borda de descida após o início do ciclo de barramento). O sinal DTACK*, por sua vez, é um sinal do escravo (no caso, da memória) para o processador, avisando-o de que os dados requisitados estão (ou quase estão) disponíveis. Quando este sinal não é gerado automaticamente pelo escravo, o projetista deve projetar um circuito que gere apropriadamente o sinal DTACK* em cada ciclo de barramento (ver Questão 3). No caso da memória, podemos derivá-lo a partir dos sinais de strobe e/ou de CS* e garantir que o tempo reservado para acesso à memória
3 x tcyc - tCLAV - tDICL,
seja maior ou igual ao tempo de acesso da memória tAA.
Vale ressaltar que para o ciclo de escrita os sinais de strobe de dados são gerados pelo processador quando estes são disponíveis no barramento. Normalmente, deriva-se então o sinal DTACK* a partir dos sinais de strobe de dados, que certamente são temporalmente compatíveis com o término do estado S4.
(1.0 pt) 1) Considere os diagramas de tempo de ciclo de leitura e de escrita do 68000 também em anexo e suponha que CS* seja igual aos sinais de strobe de dados. Analise o funcionamento do gerador através de um diagrama de tempo.
Enquanto CS*=1, CLR*=0 e todos os pinos de saída do registrador, QaQbQcQdQeQfQgQh, assumem o valor 0. No estado S2, quando UDS*/LDS*=0 (quando se inicia o acesso váido de memória), CS* que os segue também assume o valor lógico 0 e CLR*=1. Como A=B=1, então o valor lógico 1 é deslocado de Qa para Qh a cada pulso de relógio. No caso DTACK*=NOT(Qc), então após dois ciclos de relógio, Qc=1 e DTACK*=0. Segue-se então a desativação de UDS*/LDS* e CS*. Como resultado, CLR* volta a ser 0 e todas as saídas passam a ser 0 novamente.
(0.25pt) 2) Quando o conteúdo do registrador é diferente de zero? Justifique.
Quando UDS*/LDS* = 0, pois o sinal CLR*= (NOT(NOT(NOT(UDS*) OR NOT(LDS*))) AND NOT(CS*)) = NOT((UDS* AND LDS*) OR CS*) e CS*=UDS*/LDS* pelo enunciado.
(0.25 pt) 3) Quando o registrador é ``habilitado''? Justifique.
Quando UDS*/LDS* = CS* = 0, pelo mesmo motivo dado no item (2).
(0.5 pt) 4) Como se pode alterar o tempo de ativação do sinal de DTACK* em relação à ativação de CS*? Exemplifique, considerando que o tempo tenha que ser menor do que da configuração dada.
Basta alterar a conexão do DTACK* para outros pinos de saída do registrador. Se o ligarmos, por exemplo, com a saída Qb, após um ciclo de relógio, DTACK* será ativado, o que diminuirá de 2 o número de estados de espera.
(0.5 pt) 2) Esboce o mapa de memória, mostrando explicitamente os cálculos dos endereços finais e iniciais de cada bloco de memória.
Devemos mapear os 4 blocos de memória ROM, 4 blocos de memória RAM e os dois periféricos de 16 Bytes ( = 24, endereçáveis por 4 linhas) no espaço de memória de 68000 que vai de 00 0000H até FF FFFFH, procurando utilizar como endereço inicial de cada bloco um múltiplo do seu tamanho para facilitar o projeto de decodificador.
(0.5 pt) 3) Faça a tabela de decodificação de endereços.
Seja DDDD a representação em hexadecimal do último dígito do seu número de matrícula:
A23 -- A20 | A19 -- A16 | A15 -- A12 | A11 | A10 | A09 | A08 | A07 -- A04 | A03 -- A00 | |
---|---|---|---|---|---|---|---|---|---|
ROM1 | 0000 | 0000 | 0000 | 0 | 0 | 0 | X | XXXX | XXXX |
ROM2 | 0000 | 0000 | 0000 | 0 | 0 | 1 | X | XXXX | XXXX |
ROM3 | 0000 | 0000 | 0000 | 0 | 1 | 0 | X | XXXX | XXXX |
ROM1 | 0000 | 0000 | 0000 | 0 | 1 | 1 | X | XXXX | XXXX |
RAM1 | 0000 | 0000 | DDDD | 0 | 0 | 0 | X | XXXX | XXXX |
RAM2 | 0000 | 0000 | DDDD | 0 | 0 | 1 | X | XXXX | XXXX |
RAM3 | 0000 | 0000 | DDDD | 0 | 1 | 0 | X | XXXX | XXXX |
RAM4 | 0000 | 0000 | DDDD | 0 | 1 | 1 | X | XXXX | XXXX |
PERI1 | 1111 | 0000 | 0000 | 0 | 0 | 0 | 0 | DDDD | XXXX |
PERI2 | 1111 | 0000 | 0000 | 0 | 0 | 0 | 0 | DDDD+1 | XXXX |
(1.5 pt) 4) Projete um decodificador de endereço completo com uso dos decodificadores 74138 (3--8) ou 74154 (4--16).
Uma possível realização do decodificador com uso de 74138 e 74154:
Algumas observações:
Last modified: Fri Sep 10 19:20:24 BRA 1999
Sugestões para ting@dca.fee.unicamp.br
Voltar para a página do curso.