Por que no microprocessador 8085, a frequência do relógio é dividida por dois?

16

Por que a freqüência de clock produzida é de 6,144 MHz, mas internamente (processador 8085) usa apenas 3,072 MHz? Além disso, o que leva ao valor específico de 6,144 em um relógio.

Encontrei uma resposta no yahoo .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

mas devo admitir que ainda não entendi bem. Algum de vocês poderia jogar algumas linhas sobre isso, por favor?

loxxy
fonte
2
a resposta do Yahoo é muito, muito ruim. Por favor, perdoe-me se você conhece o escritor.
Kortuk
hmm, acabei de usar microprocessadores este semestre, então não tenho idéia de como isso poderia estar errado. Acho que recebi a resposta aqui ... obrigado.
Loxxy 20/09/10
11
O MC6800 era ainda mais exigente. Ele possuía duas entradas de relógio (phi1, phi2, mudança de fase de 180 graus) que precisavam não se sobrepor , ou seja, uma fase precisava ser baixa por alguns ns antes que a outra pudesse subir. Havia um oscilador extra IC (MC6810?) Para gerar esses sinais de clock.
Coalhada
11
@ Curd Nasty timing e ele teve que balançar muito perto dos dois trilhos de suprimentos (raro naquela época). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. O MC6810 era um chip de RAM estático de 128 x 8 (!).
Spehro Pefhany

Respostas:

15

Uma razão para dividir um relógio por dois é obter uma onda quadrada de ciclo de trabalho de 50%. Pode ser que o 8085 use internamente ambas as bordas do relógio e não funcionaria se metade do ciclo fosse muito mais curta que a outra.

Nos dias em que o 8085 era novo, aqueles bons osciladores enlatados não eram comuns, e as pessoas costumavam montar circuitos de relógio com cristais discretos, capacitores e portas lógicas. Dividir por dois garante que você tenha espaçamentos ascendentes e descendentes igualmente espaçados.

Quanto aos 6.144MHz, você encontrará que ele pode ser dividido por um número inteiro para obter valores de taxa de transmissão comuns, pelo menos até 38400.


acompanhamento ...

Olhando para uma folha de dados da Intel para o 8085, há três declarações interessantes

  1. O 8085 incorpora todos os recursos que o gerador de clock 8224 e o controlador do sistema 8228 forneceram para o 8080A

  2. X1 e X2: estão conectados a uma rede de cristal, LC ou RC para acionar o gerador de relógio interno. A frequência de entrada é dividida por 2 para fornecer a frequência operacional interna do processador.

  3. CLK: Saída do relógio para uso como relógio do sistema. O período de CLK é duas vezes o período de entrada X1, X2.

Portanto, especulações sobre o uso das bordas ímpares do relógio para deslocar coisas internamente de lado, torna-se aparente que, quando projetaram o 8085, a Intel estava substituindo a necessidade de um controlador de relógio especial, integrando esse recurso ao chip. Dividir a base de tempo do X1-X2 pela metade antes de enviá-la como CLK garante que o sistema obtenha um bom ciclo de trabalho uniforme, se nada mais.

JustJeff
fonte
11
frequentemente estágios diferentes no microcontrolador precisam estar fora de fase devido ao atraso lógico. usar um oscilador de velocidade mais alta e dividir e usar as duas arestas diferentes para diferentes conjuntos de lógica pode reduzir bastante o custo do dispositivo. O JustJeff está no ponto certo ao usar um oscilador que é um múltiplo das taxas de clock padrão. Pode fazer transferências de alta velocidade muito fácil.
Kortuk
2
Tem certeza da declaração do ciclo de serviço? Fiquei com a impressão de que um ciclo de instruções pode exigir vários ciclos de clock (por exemplo, um ciclo de instruções composto por um ciclo de busca e um ciclo de execução). Tenho certeza que até mesmo PICs modernos têm um ciclo de instrução de 4 estágios, razão pela qual há toda a Fosc / 4 ao longo da folha de dados
ajs410
11
@ ajs410 - o 8085 definitivamente levaria vários ciclos de relógio para concluir uma instrução; todos os micros de 8 bits da época (que eu conheço) precisaram de pelo menos dois relógios para fazer qualquer coisa. O que estou me referindo aqui é puramente interno ao chip. Se você olhar os diagramas de blocos para essas bestas antigas, poderá ver que elas têm alguns barramentos internos, registros temporários e assim por diante, e é isso que especulo que possa estar usando as duas arestas. Qualquer ciclo de barramento externo seria executado entre bordas da mesma polaridade.
precisa saber é o seguinte
6

Na época em que esse chip foi projetado, as pessoas usavam o menor número possível de transistores na CPU, para torná-los pequenos o suficiente para caber nos chips disponíveis.

Suspeito que praticamente todos os "registradores" (tanto os registros do conjunto de instruções visíveis pelo programador quanto também as travas internas da microarquitetura) em uma CPU daquela época armazenassem dados em uma trava D transparente ou algo semelhante. Atualmente, há muitos transistores em um chip, por isso é mais simples usar chinelos D-master escravo completos, mesmo que eles usem o dobro de transistores.

Muitas instruções pegam dados de algum registro A, combinam-no com outros dados com a ALU e armazenam o resultado novamente no registro A. Isso é muito fácil de fazer se o registro A for implementado com um flip-flop D mestre-escravo completo.

Porém, se o registro A for uma trava D transparente, você precisará de relógios não sobrepostos. Você usa um pulso em um relógio para armazenar algum resultado intermediário em algum lugar (enquanto o registro A mantém sua saída constante) e, em seguida, um pulso em outro relógio para carregar o registro A com o novo valor (enquanto o registro intermediário mantém sua saída constante).

Isso requer um relógio de duas fases. A maneira mais fácil de criar um relógio de duas fases não sobreposto (naqueles dias em que os transistores eram escassos) era um pequeno circuito externo que pega um relógio de entrada e o divide por dois.

Com o passar do tempo, as pessoas descobriram como colocar cada vez mais transistores em um CI. Assim, as pessoas que projetam CPUs integram cada vez mais as coisas em torno da CPU em um sistema de computador completo no chip da CPU.

Lendo nas entrelinhas do artigo de sinal de relógio da Wikipedia , tenho a impressão de que as pessoas que projetaram o 8085 e o 6502 e outros chips daquela época tinham pouco mais de espaço do que a geração anterior de CPUs integradas e decidiram o melhor o uso daquela sala era colocar esse pequeno circuito externo no chip. Mas eles mantiveram todos os registros com a mesma trava D fechada de antes.

É por isso que a frequência do relógio é dividida por dois. Você pode pensar no primeiro pulso de relógio externo que gera um pulso no sinal de relógio interno phase_one para atualizar esse registro de resultado intermediário e no segundo pulso do relógio externo que gera um pulso no sinal de relógio interno phase_two para atualizar o registro visível do programador.

davidcary
fonte
Se uma trava nunca ultrapassa alguns microssegundos sem ser recarregada, pode-se simplificar ainda mais o circuito, para que uma "trava" nada mais seja do que uma passagem de um transistor e um inversor.
supercat
11
Desde que escrevi o texto acima, examinei o design do 6502; muitos dos barramentos internos são conduzidos incondicionalmente altos em uma fase do relógio e, durante a outra fase do relógio, um registro selecionado pode reduzir os bits apropriados. Se houver, por exemplo, cinco registradores que podem enviar para o barramento, isso significa que, em vez de precisar de um dispositivo de pull-up para cada saída do registro, o chip pode simplesmente usar um dispositivo de pull-up comutado e dois dois transistores com fio para cada registro puxar o ônibus para baixo, se apropriado. Eu esperaria que o 8085 quase certamente use truques semelhantes.
supercat
2

Existem muitas razões para dividir o ciclo de instruções em vários ciclos de clock. Um bom exemplo é acessar o barramento de memória principal.

A maioria dos processadores modernos são arquiteturas de Von-Neumann; isto é, seu código e dados existem no mesmo chip de memória. Bem, se você quiser ler uma instrução, e essa instrução irá carregar uma variável da memória ... são dois acessos à memória. Mas a maior parte da memória é apenas de porta única (ou seja, só pode fazer uma leitura ou gravação por ciclo). Então, como você lê as instruções e lê sua variável?

A solução é usar um ciclo de instruções em dois estágios. O primeiro estágio buscará a instrução da memória e o segundo estágio poderá ler (ou escrever!) A variável da memória principal.

Alguns chips mais antigos foram ainda mais longe. Antigamente, se seu chip tivesse 16 bits de memória endereçável, mas o barramento de endereço externo tivesse apenas 8 bits, você estaria familiarizado com o Address Latch Enable. Um ciclo de relógio envia os 8 bits superiores do endereço de 16 bits e o próximo ciclo de relógio envia os 8 bits inferiores. Um terceiro ciclo pode então ler / gravar a variável de / para a memória.

Existem outros motivos melhores para ter um ciclo de instruções com vários ciclos de duração. Uma das melhores razões é o pipelining. Esse é um truque usado pelos processadores modernos para explorar mais completamente todas as unidades de execução disponíveis em um chip; por exemplo, enquanto uma instrução está sendo executada, a próxima está sendo buscada ao mesmo tempo.

ajs410
fonte
3
Eu não acho que o OP esteja perguntando por que você espalharia uma instrução por vários relógios, mas por que o 8085 foi projetado para exigir que você o alimente com um relógio 2X (que então divide internamente) em vez de apenas pegar a intenção freqüência do relógio diretamente.
precisa saber é o seguinte
11
tudo o que você disse sobre as instruções está ativado.
precisa saber é o seguinte
1

Internamente, o núcleo do 8085A requer um relógio de duas fases. A lógica interna que deriva as duas fases do relógio também divide o relógio de entrada por dois. Como afirmado anteriormente, a razão para usar um relógio de entrada de 6,144 MHz é para fins de taxa de transmissão, o chip funcionará bem a 6 MHz. Na verdade, o chip é avaliado em 3MHz, exigindo um cristal de 6MHz, mas roda felizmente com uma 6.144MHz, proporcionando uma geração de taxa de transmissão mais fácil (um Uart pode ter uma freqüência de 6.144MHz de um oscilador que dirige o 8085 ou a 3.072MHz da saída CLK do 8085). fornecendo muitas taxas de transmissão utilizáveis). Eu ainda uso esses chips arcaicos para executar funções especiais em alguns dos meus robôs. Eu cronometro os Uarts com seu próprio oscilador e os 8085A com um oscilador de 6,4 MHz, que executa o chip a 3,2 MHz. O 3. 2MHz se divide muito bem para fornecer o relógio de 40KHz para meus transdutores ultrassônicos. Faz mais sentido usar dispositivos de IC mais modernos em meus 'bots', mas eu tenho uma tonelada de 8085, Z80, 63C09 e 63C09E, 68B09 e 68B09E, etc. com os quais realmente gosto de brincar.

Latas e fita adesiva
fonte
0

O relógio não passa de um momento em que você deseja que um evento ocorra. Agora, não preferimos o disparo de nível em circuitos digitais, porque quando é concedido mais tempo, pode ocorrer interação entre diferentes circuitos no microprocessador, levando a curtos-circuitos. Então, nós vamos para o EDGE TRIGGERING. Agora, o microprocessador não sabe quando ocorreu o disparo da borda. Ele entende apenas 1 ou 0. Portanto, um flip-flop é necessário para produzir 1 e 0 sempre que uma borda do relógio for detectada. Assim, torna-se necessário usar um flip-flop. Como resultado, a frequência do relógio é dividida por dois.

Avinash
fonte