Relógio de travamento
Pontuação - 53.508 (dos quais apenas 36.828 são usados ativamente devido ao design em forma de L)
Gravação de alta qualidade - https://1drv.ms/u/s!ArQEzxH5nQLKhvt_HHfcqQKo2FODLQ
Padrão Golly - https://1drv.ms/u/s!ArQEzxH5nQLKhvwAmwCY-IPiBuBmBw
Princípios Orientadores -
- Como essa foi a primeira vez que utilizei um autômato celular, evitei juntar grandes componentes pré-fabricados. Uma abordagem válida que eu não tomei seria um somador binário começando em zero e adicionando continuamente um à última saída, seguido por um conversor binário em BCD, desmultiplexador de display, decodificador de 7 segmentos e display de 7 segmentos.
- Deve ser possível iniciar o relógio a frio. Eu me impus a restrição adicional de que uma única cabeça de elétron colocada em uma célula condutora específica deveria iniciar corretamente o relógio. Eu não queria exigir uma sincronização manual cuidadosa de muitos flip-flops díspares e elementos de tempo individuais antes de iniciar a simulação.
Parte I: O contador de minutos
Matemática
A contagem de 0 a 9 em binário (para o dígito de minutos menos significativo) é a seguinte -
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
Lendo que, como colunas, o menos significativo (fluxo de bits de 2 ^ 0 unidades) vai 01010101, o fluxo de 2 ^ 1 unidades vai 0011001100, o fluxo de 2 ^ 2 unidades vai 0000111100 e o fluxo de 2 ^ 3 unidades vai 0000000011.
O primeiro é fácil - basta virar flip 01 para sempre. O terceiro é um fluxo de quatro 1s, seis 0s, fase deslocada em seis zeros. O quarto é um fluxo de oito 0s e dois 1s.
O segundo é um pouco mais difícil, pois possui uma assimetria desagradável. No entanto, percebo que (onde. É operador concat):
0011001100. 0011001100 = 0011001100. NOT (1100110011) = 00110011001100110011 XOR 00000000001111111111 = 5 (0011) XOR 00000000001111111111
(Aliás, como mencionado anteriormente, a maioria do meu relógio é executado em um relógio de 60 batidas. A onda de comprimento duplo 00000000001111111111 é onde entra a necessidade do relógio de 120 batidas).
desenhar
Os fluxos de saída de cima para baixo vão Unidades de Minutos (2 ^ 0, 2 ^ 1, 2 ^ 2, 2 ^ 3) e, em seguida, Dezenas de Minutos (2 ^ 0, 2 ^ 2, 2 ^ 1). Observe que os dois fios inferiores estão cruzados.
- Relógio principal de 120 batidas.
- Onde colocar um elétron para uma partida a frio. Sem nenhuma cauda de elétrons, ele se divide em duas direções, mas o diodo imediatamente acima captura uma delas, fornecendo um bom elétron de bicicleta circulando e contornando o circuito de 120 batidas.
- Relógio secundário de 12 batidas.
- A bobina do condutor + diodo inicia o relógio secundário de 12 batidas. As palavras não podem descrever o quão complicado esse pedacinho era para sincronizar. Você precisa sincronizar os relógios de 120 e 60 batidas e, em seguida, sincronizar os pseudo-relógios de 12 e halteres de 12 batidas e frequência, seguidos por amarrar o relógio de 24 batidas ao relógio de 120 batidas, caso contrário, o portão XOR não funcionará. .
- Mudança de fase.
- Chinelo de dedo. Um único elétron na entrada atinge a linha definida primeiro e, depois de um período muito específico, atinge a linha de redefinição, fornecendo precisamente um pulso para dentro, um pulso para fora.
- Adicionando humps aqui - na linha de redefinição, aumenta o atraso entre definir e redefinir no flip-flop. Cada corcunda extra dá um pulso extra. O flip-flop abaixo tem nove hips extras, então dez pulsos entre definir e redefinir.
- Portão XOR para minha linha complicada de 2 ^ 1 unidades de minutos.
- A porta AND-NOT e comprimentos de peça muito específicos significam que cada pulso de elétron que passa dobra novamente e aniquila o elétron atrás. Metade da frequência. Cria um relógio de 24 batidas a partir da fonte secundária de 12 batidas.
- Relógio secundário de 60 batidas, que na verdade faz a maior parte do trabalho. É mais fácil iniciar um relógio rápido a partir de um mais lento, então o relógio mais lento (120 batidas) é o mestre, mesmo que seja pouco usado. O relógio de 60 batidas é o coração dessa coisa.
- Fio de realimentação que transporta elétrons somente quando o relógio de 60 batidas está correndo. É usado em conjunto com uma porta AND-NOT para impedir que o relógio seja reiniciado repetidamente a partir do master de 120 batidas. Caso contrário, muitas coisas horríveis acontecem e Ctrl-Z é o salvador.
- O diodo de onde o relógio de 60 batidas é iniciado.
- Todo esse dispositivo é um flip-flop, AND gate e AND-NOT gate combinados. Dá uma trava. Um pulso inicia, um pulso pára.
- Laço de fio para calibrar a trava para 10 pulsos ligados, 10 pulsos desligados para uma entrada de um em dez pulsos. Sem ele, temos 12 pulsos ligados e 8 pulsos desligados. Essas presilhas de dez em dez formam os componentes básicos dos blocos de dez minutos da mesma maneira que os chinelos de 6 mícrons (1 pulso) formaram os componentes básicos das unidades de minutos.
- O pulso inicial de partida a frio causou todos os tipos de problemas, incluindo dois batimentos fora de fase com os relógios que ele inicia. Isso atrapalha as travas. Esse portão AND captura e descarta pulsos fora de sincronia - em particular o pulso inicial.
- Essa é uma parte do design do qual me arrependo um pouco em retrospecto. Ele pega um elétron, o divide em cinco e aniquila os cinco elétrons atrás, levando 111111 a 100000.
- Isso pega um elétron e o costura na frente. Duas fases à frente para ser preciso. Leva 100000 e faz 101000. Combinado com a parte 16, obtivemos 111111 -> 100000 -> 101000. Em retrospecto, eu gostaria de ter feito 111111 -> 101010 -> 101000; teria alcançado o mesmo efeito em menos espaço.
- Os padrões acima são então empurrados para dentro da trava inferior para obter 20 ligado, 40 desligado. Isso é dividido, a metade é deslocada em 20 unidades e, em seguida, elas formam os dois fluxos de bits de alta ordem das dezenas de minutos.
Parte II: O Contador de Horas
Explicação
A entrada para o contador de horas é um único pulso de elétron, uma vez por hora. O primeiro passo é reduzi-lo a um único pulso de elétron, uma vez a cada doze horas. Isso é alcançado usando várias primitivas "trava e captura".
Uma "trava" é um flip-flop de 6 mícrons conectado a uma porta AND-NOT e AND para fornecer uma trava on / off de 6 mícrons. Uma "captura" pega um fluxo contínuo de elétrons como entrada, permite a primeira passagem e depois aniquila todos os outros elétrons por trás, até que o fluxo termine no ponto em que a captura é redefinida.
A colocação de uma trava, seguida de uma trava, em série, resulta em um elétron em -> gire a trava, um elétron na outra extremidade (restante preso em trava). Em seguida, o segundo elétron in -> desliga a trava, apanha silenciosamente as redefinições. Efeito líquido: o primeiro elétron passa, o segundo elétron é aniquilado e assim por diante, independentemente do tempo de atraso entre esses elétrons .
Agora encadeie dois "trava e trava" em série, e você tem apenas um em cada quatro elétrons passando.
Em seguida, pegue uma terceira "trava e trava", mas desta vez incorpore uma quarta trava inteira e trava na linha SET do flip-flop, entre o portão AND-NOT e o SET do flip-flop. Vou deixar você pensar sobre como isso funciona, mas desta vez apenas um em cada três elétrons passa, independentemente de quanto tempo o atraso entre esses elétrons .
Finalmente, pegue um em quatro elétrons e um em três, combine-os com uma porta AND, e apenas um em cada doze elétrons passará. Esta seção inteira é o rabisco bagunçado de caminhos para o canto superior esquerdo do contador de horas abaixo.
Em seguida, pegue o elétron a cada doze horas e divida novamente em um a cada hora, mas coloque cada um em um fio condutor diferente. Isso é conseguido usando o condutor espiral longo com treze pontos de saída.
Pegue esses elétrons - um a uma hora em diferentes condutores e atinja uma linha SET de flip-flop. A linha RESET no mesmo flip-flop é atingida pelo condutor da próxima hora, emitindo sessenta pulsos por fio por hora.
Finalmente - pegue esses pulsos e passe-os para sete bytes e meio de ROM (Memória Somente Leitura) para emitir os fluxos de bits BCD corretos. Veja aqui uma explicação mais detalhada da ROM do WireWorld: http://www.quinapalus.com/wires6.html
desenhar
- Entrada de um elétron por hora.
- Primeira trava.
- Primeira captura.
- "Trava e trava" incorporada em uma linha externa "Trava e trava".
- E portão.
- Trava AM / PM (ativada / desativada uma vez a cada doze horas).
- Cada laço de fio tem 6x60 = 360 unidades de comprimento.
- Flip / Flop virou de lado para criar um perfil menor.
- Sete bytes e meio de ROM.
Notas
- Devido ao seu design de um elétron por minuto, 6 mícrons, execute a simulação a seis gerações por minuto (uma geração a cada 10 segundos) para um relógio em tempo real.
- A linha AM / PM é alta (1) para AM e baixa (0) para PM. Pode parecer uma maneira um tanto incomum de escolher, mas há justificativa. Durante uma partida a frio do relógio, a linha AM / PM é naturalmente baixa (0) inicialmente. Assim que a linha AM / PM é puxada alta (1), isso indica que a contagem começou às 12:00. Toda saída antes deste ponto deve ser desconsiderada, toda saída após esse ponto é considerada significativa.
Links Úteis