CTRL
-rotella del mouseIndice
Circuiti digitali con la scheda PSOC
La scheda PSOC (Programmable System on Chip) contiene un microcontrollore e dei componenti analogici e digitali a logica programmabile. Utilizzando l'ambiente di sviluppo PSOC Creator si può disegnare al PC un circuito digitale che realizzi una determinata funzione logica (collegando porte logiche, ingressi, uscite e altri componenti) e in seguito programmare il chip presente sulla scheda per ottenere in hardware un'implementazione del circuito digitale. Questo è possibile perché il chip contiene una serie di blocchi analogici e digitali che possono essere configurati e collegati tra loro in base al progetto creato su PC con PSOC Creator. Il microcontrollore e gli altri dispositivi presenti sul chip permettono di ampliare le possibilità della scheda ma per i nostri scopi sarà sufficiente utilizzare i blocchi digitali più elementari per realizzare funzioni che altrimenti sarebbero complesse da cablare con le sole porte logiche.
Hardware
Le schede che utilizziamo sono il modello CY8CKIT-059 (qui il manuale) e hanno questo aspetto:
La parte sinistra della scheda è separabile e contiene il programmatore e il connettore USB per il collegamento al PC. La scheda si alimenta:
- dalla presa USB (5V) quando collegata al PC
- dai piedini VDD e GND con una tensione tra 3.3 V e 5.5 V
Quando si usano VDD e GND il programmatore non è alimentato ed è bene che la USB sia scollegata.
Per i segnali digitali in ingresso e in uscita useremo i piedini da P0_0 in avanti sul bordo della scheda.
Software
Nel PC è installato PSOC Creator versione 4.4 (scaricabile gratuitamente qui) e il pacchetto CY8CKIT059SetupOnlyPackage_RevSA.exe specifico per il modello CY8CKIT-059 (scaricabile dalla pagina del prodotto). Quando si avvia PSOC Creator compare una finestra che chiede di registrare il prodotto; non è necessario farlo.
Creare un progetto con PSOC Creator
L'ambiente di sviluppo permette di creare progetti e salvarli in un Workspace. Un Workspace permette di raggruppare più progetti e salvarli in una cartella sul disco. Per le attività di laboratorio useremo un unico Workspace che conterrà tutti i nostri progetti.
Per creare un nuovo progetto e, solo la prima volta un nuovo Workspace, usare il tasto Create Project o dal menu la voce File|New|Project. Nella procedura guidata che segue:
- selezionare Target kit: CY8CKIT-059 (PSoC 5LP)
- Empty Schematic
- scegliere un nome e una posizione per il Workspace poi scegliere un nome per il progetto e cliccare su Finish
A questo punto l'ambiente di sviluppo mostra una finestra bianca dove creare il circuito logico. Questa pagina può sempre essere raggiunta dalla finestra Workspace Explorer (sulla sinistra) facendo doppio click su TopDesign.cysch nel progetto su cui si sta lavorando. Per creare il circuito si selezionano i componenti, raggruppati per categoria nella finestra Component Catalog (sulla destra). Ad esempio si possono inserire ingressi e uscite digitali (da Ports and Pins) e porte logiche (da Digital|Logic) trascinandoli al centro della pagina. Supponiamo di voler creare un semi-sommatore; serviranno:
- due ingressi digitali
- due uscite digitali
- una porta XOR e una AND
Con un doppio click sul simbolo è possibile cambiare le proprietà dei componenti piazzati, ad esempio cambiando il nome dei pin o il numero di ingressi di una porta. Per collegare i componenti si usa lo strumento Wire disponibile nella barra degli strumenti posizionata in verticale alla sinistra della finestra centrale (o si preme il tasto W
sulla tastiera). Si procede in questo modo1):
- con un click su un terminale di un componente si comincia a tracciare il collegamento
- con i click successivi si crea un punto di passaggio intermedio (utile se il collegamento non è una linea diritta)
- con un click sul terminale di un secondo componente si termina il collegamento
Il risultato sarà un circuito logico tipo quello in figura.
A questo punto bisogna abbinare ingressi e uscite presenti nello schema ai piedini della scheda. Questo si fa dalla finestra Pins che si apre facendo doppio click sulla voce corrispondente nella finestra Workspace Explorer (per vederla può essere necessario espandere la vista ad albero del progetto avendo selezionato la la scheda Source). Nella nuova vista si possono abbinare gli ingressi e le uscite indicati nella tabella sulla destra a dei piedini sulla scheda. Per farlo trasciniamo uno alla volta ingressi e uscite sui piedini della scheda, per esempio da P0[0]
a P0[3]
come mostrato nell'immagine seguente (il quadrato verde significa che l'ingresso/uscita è abbinato a un piedino correttamente).
A questo punto si salva il progetto e si genera il file che serve a programmare la scheda PSoC con la voce Build|Build nomeprogetto dal menu (l'operazione richiede un po' di tempo). Se il processo è andato a buon fine si leggerà Build Succeeded nella finestra dei messaggi in basso (Output).
Per caricare il progetto sulla scheda si procede in questo modo:
- si collega la scheda a una porta USB del PC
- si sceglie la voce Debug|Select target and program… dal menu
- si seleziona la scheda (se non compare premere il pulsante
Port Acquire
) - si preme il bottone
Ok
per programmare la scheda
Nella finestra dei messaggi ci sarà una conferma se il processo è andato a buon fine.
Per il collaudo si scollega la scheda dal PC e la si alimenta ponendo 5V nel piedino VDD e 0V su GND. Se si usano le schede minilab queste tensioni sono già disponibili sulla breadboard. Oltre a questo è possibile collegare ai piedini di ingresso della scheda i segnali digitali ottenuti coi deviatori e collegare alle uscite i LED della minilab per testare velocemente il corretto comportamento del circuito logico.
Creare un componente
Creiamo un componente da riutilizzare in PSOC creator:
- dalla scheda Components nella finestra Workspace Explorer cliccare col tasto destro sul progetto e scegliere Add Component Item
- scegliere un nome, ad esempio Full Adder e, dopo aver selezionato Symbol Wizard cliccare su Create New
- elencare i nomi dei terminali e specificare se si tratta di ingressi o uscite poi selezionare OK
- comparirà un simbolo con ingressi e uscite
- sempre nella scheda Components cliccare col tasto destro sul nome del componente creato e scegliere di nuovo Add Component Item
- nella tabella, alla voce Implementation, scegliere Schematic poi Create New
- disegnare il circuito logico del componente come in un normale progetto ma utilizzando per ingressi e uscite gli elementi Digital Input Terminal e Digital Output Terminal dalla barra degli strumenti sulla sinistra al posto dei pin del Component Catalog
- Per ingressi e uscite del componente usare gli stessi nomi dati ai terminali del componente quando si è creato il simbolo
A questo punto è possibile utilizzare il componente appena creato che sarà disponibile, dalla finestra Component Catalog, nella scheda Default dentro la cartella Components. Ad esempio si possono utilizzare quattro FullAdder per realizzare un circuito logico che somma due numeri da quattro bit. Attenzione però, per il bit meno significativo il riporto della colonna precedente non c'è e va collegato componente Logic Low '0' (non si può lasciare un piedino del componente scollegato).