Task 1 (2p + 0.25p + 0.25p) Implementați un modul care să aprindă și se stingă un LED la un anumit interval de timp. Astfel, vom folosi un FSM simplu, cu doar două stări. După simularea cu succes a circuitului, completați fișierul xdc și încărcați soluția pe FPGA.

  • În prima stare, LED-ul va fi stins, se va aștepta un anumit interval de timp (1s), iar apoi trece in starea 2.
  • Starea a doua, în care va petrece același interval de timp, dar aprins.

Urmăriți TODO-urile din schelet!

Task 2 (2.5p + 0.25p + 0.75p) Chiar dacă a trecut Craciunul, acum știm destul de multe pentru a realiza o simplă instalație de pom. Implementați un FSM care să producă următoarea secvență folosind LED-urile. După simularea cu succes a circuitului, completați fișierul xdc și încărcați soluția pe FPGA.

  • “*” înseamnă că LED-ul este aprins;
  • ”-” înseamnă că LED-ul respectiv este stins;
  • T00, T01, …, T14 sunt stările posibile ale LED-urilor;
  • Durata tranziției de la starea Tn la Tn+1 trebuie să fie de o secundă.
        t00 *-*-*-*-
        t01 -*-*-*-*
        t02 *-*-*-*-
        t03 -*-*-*-*
        t04 *------*
        t05 -*----*-
        t06 --*--*--
        t07 ---**---
        t08 --*--*--
        t09 -*----*-
        t10 *------*
        t11 -**-*--*
        t12 *---**-*
        t13 *---*-**
        t14 -**-*--*
        mergi la t00

Hint!
Pentru întârzierea tranziției trebuie să folosiți un timer. Timer-ul este un circuit simplu care numără într-un contor tranzițiile ceasului. Astfel, pentru cronometrare folosiți frecvența ceasului ca să aflați câte tranziții trebuie numărate. Apoi, blocați FSM-ul în starea curentă până când contorul ajunge la valoare dorită.
Pentru simulare, va trebui să micșorați intervalul cronometrat.

Task 3 (2.5p + 0.5p + 1p) Implementați un modul care să simuleze comportamentul unui semafor pentru pietoni controlat prin apăsarea unui buton. După simularea cu succes a circuitului, completați fișierul xdc și încărcați soluția pe FPGA.

  1. În starea inițială sunt aprinse primele 4 LED-uri (simulând culoarea rosie a semaforului).
  2. Când este primit semnalul de la buton, cronometrați un interval de 2 secunde.
  3. După expirarea celor 2 secunde, tranziționați în starea următoare, unde se aprind celelalte 4 LED-uri. Acestea rămân aprinse pentru încă 2 secunde.
  4. La expirarea cuantei de timp alocate pentru culoarea verde, se revine la starea inițială.

Pentru a asigura o funcționare corectă pe un circuit real, trebuie să folosiți în mod normal un debouncer, pe care să îl atașați butonului folosit (vezi secțiunea Switch debouncing din laborator).
Pentru simulare tratați intrările de tip buton ca fiind deja eșantionate, deoarece schimbarea de semnal se produce instantaneu, fara niciun fel de zgomot.

Bonus (3p) Considerăm ADN-ul unei specii ca fiind o succesiune de nucleotide: adenină(A), guanină(G), citozină(C) şi timină(T). Implementați un modul care să identifice exemplarele mutante, care au în succesiunea de nucleotide secvenţa GGTC. Trebuie să creaţi un automat Moore care:

  1. Primeşte la fiecare pas câte o nucleotidă;
  2. Dacă identifică un exemplar mutant, se blochează într-o stare rezervată.

Porturi modul:

  • intrări: clock, reset (pentru posibilitatea introducerii altui ADN) şi cele 4 nucleotide; (pentru nucleotide putem folosi butoane, adică porturi pe un 1 bit)
  • ieșire: mutant (un LED care, dacă este aprins, semnalează detecţia unui mutant).

FSM-ul trebuie să fie capabil să identifice pattern-ul menționat și să trateze corect inclusiv input-urile eronate. (Spre exemplu: “ATCG” este greșit, “AAAAAAA” este greșit, “GGTC” este corect, “ATCGGTC” este corect, “GGGGGTC” este corect, “GGTCA” este corect)

Completați fișierul xdc pentru modulul de detecție al mutanților (Task 4) și încărcați soluția pe FPGA.

  • intrări: un switch pentru resetare şi 4 push-buttons pentru nucleotide;
  • ieșiri: un led care se aprinde cand se detecteaza un mutant.
soc/laboratoare/04/todo.txt · Last modified: 2024/03/28 11:42 by teodor_stefan.dutu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0