11.520 generazioni per conteggio degli orologi / 10.016 x 6.796 scatole / 244.596 conteggi pop
Ecco qua ... È stato divertente.
Bene, il design non è certamente ottimale. Né dal punto di vista del riquadro di delimitazione (quelle cifre a 7 segmenti sono enormi ), né dal conteggio iniziale della popolazione (ci sono alcune cose inutili e alcune cose che potrebbero sicuramente essere rese più semplici) e la velocità di esecuzione - beh ... I non sono sicuro.
Ma, ehi, è bellissimo. Guarda:
Eseguirlo!
Ottieni il design da questo senso . Copia l'intero testo del file negli appunti.
Novità : ecco una versione con indicatori AM e PM per i più esigenti.
Vai al simulatore di vita Conway JavaScript online . Fai clic su Importa , incolla il testo del disegno. Dovresti vedere il design. Quindi, vai alle impostazioni e imposta il passaggio di generazione su 512, o qualcosa attorno a quelle linee, o dovrai aspettare per sempre per vedere l'aggiornamento del display dell'orologio.
Fai clic su Esegui , aspetta un po 'e lasciati stupire!
Collegamento diretto alla versione nel browser.
Si noti che l'unico algoritmo che rende utilizzabile questo enorme design è l'hashlife. Ma con questo, puoi ottenere l'intero orologio avvolgente in pochi secondi. Con altri algoritmi, non è pratico nemmeno vedere l'ora che cambia.
Come funziona
Utilizza la tecnologia p30. Solo cose di base, alianti e astronavi leggere. Fondamentalmente, il design va dall'alto verso il basso:
- In cima c'è l'orologio. È un orologio d'epoca 11520. Si noti che sono necessarie circa 10.000 generazioni per assicurarsi che il display sia aggiornato in modo appropriato, ma il design dovrebbe essere stabile con un orologio di periodo più piccolo (circa 5.000 o giù di lì - l'orologio deve essere multiplo di 60).
- Quindi, c'è la fase di distribuzione dell'orologio. L'aliante dell'orologio viene copiato in un albero bilanciato, quindi alla fine, ci sono 32 alianti che arrivano nello stesso preciso momento sul palco dei contatori.
- Il contatore è realizzato usando un fermo RS per ogni stato e per ogni cifra (contiamo in decimale). Quindi ci sono 10 stati per la cifra destra dei minuti, 6 stati per la cifra sinistra dei minuti e 12 stati per le ore (qui vengono unite entrambe le cifre delle ore). Per ciascuno di questi gruppi, il contatore si comporta come un registro a scorrimento.
- Dopo la fase di conteggio, ci sono le tabelle di ricerca. Convertono gli impulsi di stato in modo da visualizzare le azioni ON / OFF dei segmenti.
- Quindi, il display stesso. I segmenti sono semplicemente realizzati con più stringhe di LWSS. Ogni segmento ha il suo fermo per mantenere il suo stato. Avrei potuto creare un semplice OR logico degli stati delle cifre per sapere se un segmento deve essere ATTIVO o DISATTIVO e liberarmi di questi blocchi, ma ci sarebbero problemi per i segmenti non cambianti, quando le cifre cambiano (a causa di ritardi del segnale). E ci sarebbero lunghe correnti di alianti che arrivano dalla tabella di ricerca ai segmenti delle cifre. Quindi non sarebbe così bello. E doveva essere. Sì.
Comunque, in realtà non c'è nulla di straordinario in questo design. Non ci sono reazioni sorprendenti che sono state scoperte in questo processo, né combinazioni davvero intelligenti a cui nessuno aveva pensato prima. Solo pezzi presi qua e là e messi insieme (e non sono nemmeno sicuro di averlo fatto nel modo "giusto" - in realtà ero completamente nuovo a questo). Ha richiesto molta pazienza, tuttavia. Far graffiare tutti quegli alianti al momento giusto nella posizione giusta.
Possibili ottimizzazioni:
- Invece di copiare e distribuire lo stesso clock radice alle n celle contatore, avrei potuto mettere lo stesso blocco orologio n volte (una volta per ogni cella contatore). Questo sarebbe in realtà molto più semplice. Ma poi non sarei in grado di regolarlo facilmente cambiando l'orologio in un unico punto ... E ho un background elettronico, e in un circuito reale, sarebbe terribilmente sbagliato.
- Ogni segmento ha il proprio fermo RS. Ciò richiede che le tabelle di ricerca emettano entrambi gli impulsi R e S. Se avessimo un latch che alterherebbe il suo stato da un impulso di input comune, potremmo rendere le tabelle di ricerca dimezzate. C'è un tale fermo per il punto PM, ma è enorme e non riesco a trovare qualcosa di più pratico.
- Rendi il display più piccolo. Ma non sarebbe così bello. E doveva essere. Sì.