ma 2 automat celular

4
2015/02/28 17:05 1/4 Tema 2 - Automat celular AC Wiki - http://elf.cs.pub.ro/ac/wiki/ Tema 2 - Automat celular Responsabili: Alexandra Tincu, Bryan Negrescu, Marina Dumitrache Deadline soft (fără penalizări): 7.12.2014 ora 23:59; Deadline hard: 14.12.2014 ora 23.59 Data publicării: 24.11.2014 Data ultimei actualizării: 24.11.2014, 02:30 Istoric modificări: Obiective Tema are ca scop familiarizarea cu modul de descriere a automatelor cu stări în limbajul Verilog, precum și cu modul de organizare a acceselor la o memorie externă. Descriere și cerințe Implementați în Verilog un circuit secvențial sincron care simulează execuția unui automat celular pentru o lume unidimensională finită cu dimensiunea de 64 de celule. Fiecare celulă se poate afla într-una din două stări notate cu 0 și, respectiv, 1. Execuția automatului celular constă în calcularea unei noi generații a lumii pe baza unei reguli, pornind de la generația curentă. Valoarea nouă a unei celule se calculează doar pe baza valorii curente a celulei și a vecinilor imediați ai acesteia. Pentru calcularea unei noi generații se folosesc întotdeauna doar valorile celulelor din generația curentă. O regulă constă în asocierea tuturor configurațiilor posibile pentru cele trei celule (celula din centru și vecinii ei) cu valorea nouă a celulei din centru. Pentru aceasta, celulele sunt notate astfel: L - vecin stânga, C - celula din centru, R - vecin dreapta. Celulele aflate la marginea lumii se consideră că au vecinii întotdeauna în starea 0. Tab. 1 conține o astfel de regulă, denumită regula 110. Configurație (L C R) 111 110 101 100 011 010 001 000 Valoare nouă (C) 0 1 1 0 1 1 1 0 Tab. 1: Regula 110 Prima linie a tabelului conține toate configurațiile posibile ale celor trei celule necesare pentru a calcula o celulă din generația următoare. Cea de-a doua linie conține valoarea nouă a celulei. Regula poartă numele de 110 deoarece interpretând a doua linie a tabelului ca un număr binar pe 8 biți obținem: . Alte reguli pot fi obținute ușor prin schimbarea valorilor de pe a doua linie a tabelului. Implementare

Upload: dumitru-vlad

Post on 12-Nov-2015

216 views

Category:

Documents


4 download

DESCRIPTION

automat-celularautomat-celular

TRANSCRIPT

  • 2015/02/28 17:05 1/4 Tema 2 - Automat celular

    AC Wiki - http://elf.cs.pub.ro/ac/wiki/

    Tema 2 - Automat celularResponsabili: Alexandra Tincu, Bryan Negrescu, Marina DumitrachelDeadline soft (fr penalizri): 7.12.2014 ora 23:59; Deadline hard: 14.12.2014 ora 23.59lData publicrii: 24.11.2014lData ultimei actualizrii: 24.11.2014, 02:30lIstoric modificri:l

    Obiective

    Tema are ca scop familiarizarea cu modul de descriere a automatelor cu stri n limbajul Verilog,precum i cu modul de organizare a acceselor la o memorie extern.

    Descriere i cerine

    Implementai n Verilog un circuit secvenial sincron care simuleaz execuia unui automat celularpentru o lume unidimensional finit cu dimensiunea de 64 de celule. Fiecare celul se poate aflantr-una din dou stri notate cu 0 i, respectiv, 1. Execuia automatului celular const n calculareaunei noi generaii a lumii pe baza unei reguli, pornind de la generaia curent.

    Valoarea nou a unei celule se calculeaz doar pe baza valorii curente a celulei i a vecinilor imediaiai acesteia. Pentru calcularea unei noi generaii se folosesc ntotdeauna doar valorile celulelor dingeneraia curent. O regul const n asocierea tuturor configuraiilor posibile pentru cele trei celule(celula din centru i vecinii ei) cu valorea nou a celulei din centru. Pentru aceasta, celulele suntnotate astfel: L - vecin stnga, C - celula din centru, R - vecin dreapta. Celulele aflate la marginealumii se consider c au vecinii ntotdeauna n starea 0. Tab. 1 conine o astfel de regul, denumitregula 110.

    Configuraie (L C R) 111 110 101 100 011 010 001 000Valoare nou (C) 0 1 1 0 1 1 1 0

    Tab. 1: Regula 110

    Prima linie a tabelului conine toate configuraiile posibile ale celor trei celule necesare pentru acalcula o celul din generaia urmtoare. Cea de-a doua linie conine valoarea nou a celulei. Regulapoart numele de 110 deoarece interpretnd a doua linie a tabelului ca un numr binar pe 8 biiobinem: . Alte reguli pot fi obinute uor prin schimbarea valorilor de pe a doualinie a tabelului.

    Implementare

  • Last update: 2014/11/24 01:43 teme:tema2 http://elf.cs.pub.ro/ac/wiki/teme/tema2

    http://elf.cs.pub.ro/ac/wiki/ Printed on 2015/02/28 17:05

    Pentru rezolvarea temei va trebui s implementai ntr-un modul Verilog un automat cu stri carecalculeaz evoluia lumii pentru regula 110. Acest modul trebuie s respecte urmtoarea interfa:

    module automaton( input clk, // synchronization signal input [7:0] rule, // next generation rule; only used forbonus points output [5:0] world_cell, // index of cell to be read/written output world_we, // write enable: 0 - cell is read, 1 -cell is written input world_out, // when reading: current cell value inworld output world_in, // when writing: new cell value in world output update_done); // next generation was calculated; mustbe active for 1 clock cycle

    Descrierea semnalelor folosite de acest modul este urmtoarea:

    clk - semnal de sincronizare cu modulul worldlrule - numrul regulii folosite; folosit doar n cazul bonusului, poate fi ignorat n restlworld_cell - indexul celulei care se dorete a fi citit sau scrislworld_we - write enable: 0 - celula este citit, 1 - celula este scrislworld_out - cnd write enable este 0 conine valoarea curent a celulei citite, ignorat n restlworld_in - cnd write enable este 1 conine valoarea care se dorete a fi scris, ignorat n restlupdate_done - indic faptul c s-a terminat calcularea unei generaii; trebuie s fie activ pentru olsingur perioad de ceas

    Este permis modificarea declarrii ieirilor n output reg.

    Automatul va interaciona cu lumea prin intermediul semnalelor world_cell, world_we,world_out, world_in. Lumea este reprezentat de un modul Verilog, implementat n tester, careare urmtoarea interfa:

    module world( input clk, // synchronization signal input [5:0] cell, // index of cell to be read/written input we, // write enable: 0 - cell is read, 1 -cell is written input in, // when writing: new cell value output out); // when reading: current cell value

    Descrierea semnalelor folosite de acest modul este urmtoarea:

    clk - semnal de sincronizare cu modulul automatonlcell - indexul celulei care se dorete a fi citit sau scris; este legat la semnalul world_cell allautomatuluiwe - write enable: 0 - celula selectat este citit, 1 - celula selectat este scris; este legat lalsemnalul world_we al automatuluiin - cnd write enable este 1 conine valoarea care se dorete a fi scris, ignorat n rest; este legatlla semnalul world_in al automatului

  • 2015/02/28 17:05 3/4 Tema 2 - Automat celular

    AC Wiki - http://elf.cs.pub.ro/ac/wiki/

    out - cnd write enable este 0 conine valoarea curent a celulei citite, trebuie ignorat n rest; estellegat la semnalul world_out al automatului

    Scrierea datelor n interiorul modulului world se face sincron cu frontul cresctor al semnalului deceas i dureaz 1 ciclu de ceas. Astfel, o valoare scris n ciclul curent va putea fi citit n ciclulurmtor.

    Ieirea out a modulului world este implementat asincron pentru a v uura proiectarea automatului.Nu abuzai de aceast funcionalitate pentru a citi mai multe valori din world ntr-un singur ciclu deceas (pe negedge sau, mai ru, folosind instruciuni nesintetizabile de ntrziere #1).

    Automatul implementat de voi va trebui s conin stri pentru a citi i scrie valori din/n lumeacurent. Citirea se face prin generarea unui index n world_cell i a valori 0 n world_we. n acestmoment modulul world va returna valoarea celulei cu indexul world_cell prin semnalulworld_out. Folosind mai multe astfel de citiri automatul va trebui apoi s calculeze valoarea noupentru o celul. Acea valoare trebuie scris napoi n modulul world prin generarea corect aindexului n semnalul world_cell, stabilirea valorii lui world_we pe 1 i asignarea valorii calculatelui world_in. La terminarea actualizrii tuturor celor 64 de celule ale lumii semnalul update_doneva trebui pus pe 1 timp de un ciclu de ceas pentru a indica finalizarea calculelor. Apoi ciclulautomatului se reia pentru a calcula o nou generaie.

    Atenie la suprascrierea celulelor deoarece vei avea nevoie s efectuai calculele cu valorile iniialeale unei generaii, nu cu cele actualizate parial.

    Bonus

    Pentru bonus va trebui ca automatul vostru s poat primi la intrare numrul regulii care se dorete afi simulat (calculat conform descrierii anterioare), putnd fi astfel folosit pentru a simula evoluiapentru oricare din reguli. Se garanteaz c aceast intrare nu va fi modificat n timpul simulrii.

    Notare10 pct: corectitudine.l+2 pct: automatul implementeaz semnalul rule.l-10 pct: folosirea construciilor nesintetizabile din Verilog (while, repeat, for cu numr variabil deliteraii etc.)-1 pct: lipsa fiierului README.l-0.5 pct: pentru fiecare zi de ntrziere; tema poate fi trimis cu maxim 7 zile ntrziere fa deltermenul specificat n enun (fa de deadline-ul soft).-0.2 pct: folosirea incorect a atribuirilor continue (assign), blocante (=) i non-blocante (

  • Last update: 2014/11/24 01:43 teme:tema2 http://elf.cs.pub.ro/ac/wiki/teme/tema2

    http://elf.cs.pub.ro/ac/wiki/ Printed on 2015/02/28 17:05

    -0.2 pct: diverse alte probleme constatate n implementare (per problem)l

    Dac tema primete 0 pe vmchecker, se pot acorda maxim 2pct pe ideea implementrii, la latitudineaasistentului. Ideea i motivele pentru care nu funcioneaz trebuie documentate temeinic n READMEi/sau comentarii. Temele care au erori de compilare vor fi notate cu 0pct.

    PrecizriArhiva temei (de tip zip) trebuie s cuprind n rdcina sa (fr alte directoare) doar:l

    fiierele surs ale automatului (extensia .v)mfiierul READMEm

    Arhiva nu trebuie s conin fiiere de test, fiiere specifice proiectelelor, modulul world etc.lConinutul fiierului README:l

    numele, grupa i denumirea temeimprezentarea general a soluiei alesemexplicarea poriunilor complexe ale implementrii (poate fi fcut i n comentarii)malte detalii relevantem

    Tema trebuie realizat individual; folosirea de poriuni de cod de la ali colegi sau de pe Internet (culexcepia site-ului de curs) poate fi considerat copiere i va fi penalizat conform regulamentului.Implementarea i testarea va fi fcut folosind mediul de dezvoltare Xilinx ISEl

    Testarea se face pe platforma vmchecker.mCheckerul conine deja un modul de top, precum i propriul modul world.m

    ResurseScheletlTesterlPDF teml

    From:http://elf.cs.pub.ro/ac/wiki/ - AC Wiki

    Permanent link:http://elf.cs.pub.ro/ac/wiki/teme/tema2

    Last update: 2014/11/24 01:43

    Tema 2 - Automat celularObiectiveDescriere i cerineImplementare

    BonusNotarePrecizriResurse