upc eetac_1

Projecte P12: Màquines d'estats finits


Comptadors, registres de desplaçament i altres FSM

Com a la pràctica anterior P11, la majoria dels projectes d'aquest tercer capítol requereixen el seqüent plantejament:

  1. Estudiar els esquemes i exemples de programació dels llibres i Internet

  2. Crear el circuit electrònic copiant o adaptant el que hem vist. No cal fer-lo tot a l'hora, sinó que poden anar-lo construint a mida que anem ampliant les distintes fases del projecte.

  3. Programació, la qual acabarem fent seguint tothora el nostre propi estil.  La programació també es farà créixer a mida que anem incorporant prestacions al circuit. Recordem-nos de guardar cada fase del projecte en carpetes diferents.

  4. Documentem suficientment les fases del projecte. La documentació significa que a partir d'ella hem de poder tornar a repetir el projecte un parell d'anys més tard i hem de poder explicar-lo sense gaires complicacions a altres tècnics.

   

Primer muntatge: Un semàfor

Aquest seria un típic exercici trobat a Internet, en que es pot usar la Raspberry Pi per programar amb Python un sistema senzill de semàfor. Com la majoria d'exemples que trobareu en llibres i referències, el programa no està organitzat com una màquina d'estats, i a més, per fer-ho més senzill, es fa polling al posador de pas de vianants.

muntatge

Fig.1. Muntatge amb la protoboard.

Un exercici interessant és reescriure aquesta aplicació des de la perspectiva d'una màquina d'estats, a més, tenint en compte que la molt convenient instrucció del C "switch - case" no està disponible en Python, i cal cercar alternatives (if-elif -else).

 

Segon muntatge: Un comptador binari bàsic com a FSM

La idea és comprovar que amb l'estratèria de FSM podeu programar fàcilment qualsevol sistema seqüencial.  Per exemple:

 

Tercer muntatge: Control de la il·luminació d'una aula

Amb una Raspberry Pi, controlem l'encesa i apagada de llums fluorescents

 

 

 

Altres referències similars

 

Altres materials d'interès

- Ara que hem comprovar com organitzar el nostre estil de programació, com separar les funciones de programa (processament de dades) de les funcions d'interfície d'entrades i sortides, podem usar la Raspberry Pi  en Python, o l'Arduino, com a plataformes per aprendre a dissenyar circuits combinacionals i sistemes seqüencials: taules de veritat, portes lògiques, descodificadors, cel·les de memòria, comptadors, registres, etc.