Introduzione alla piattaforma Pynq

Documenti analoghi
PYNQ: Python for Zynq. La PYNQ-Z1 board è basata su un Zynq System-on-Chip (SOC)

CPE ALL-IN-ONE WIRELESS 5GHz DA ESTERNO ART

WDC10 InstaShow Aggiornamento firmware SOP

Configurazione MP-3G. Energy Management System GUIDA ALLA CONFIGURAZIONE DELL MP-3G

Importante. Contenuto della scatola

L installazione dell adattatore Ethernet/Wireless Wi-lly0.1 è studiata per risultare estremamente semplice.

Manuale configurazione rete, accesso internet a tempo e posta elettronica

Sistema operativo Mac OS X

Version /28/2013. Manuale Utente. Wireless N H.264 Day/Night Network Camera DCS-933L

QUICK START icontrol+/icontrolight

ACCESS POINT GO-RT-N150 GUIDA ALLA CONFIGURAZIONE DEL SERVIZIO

ADSL Modem :: Ericsson B-Quick (HM120d)

Manuale telecamere IP

DECODER E PLAYER AUDIO PER IL LIVE STREAMING MANUALE PER L UTENTE

Manuale di installazione router modem ADSL generico

MBD-R100 Guida rapida alla configurazione del Modem Router/Wireless gatway Huawei B660/B683 (VERSIONE CON E SENZA USCITA RJ11 PER TEL.

HSL OR. Essegibi - HSL OR - User s Manual COD Descrizione

MANUALE 3DPRN ware 1

AiM Manuale Utente. Race Studio 3 Track Manager. Versione 1.00

Configurazione Postazioni di Controllo. Document ID: sv_control_station_it_v17_02

Software Scalabile: Controllo di potenza in real-time: Real-time alerts:

Prima di iniziare la procedura d installazione, verificare che siano disponibili tutte le informazioni e le attrezzature necessarie

MANUALE D UTILIZZO DI UNITO-WIFI

Manuale Kit di Monitoraggio Monofase

Guida all'installazione

Manuale Sistema di Monitoraggio Retrofit Monofase

MANUALE PER L OPERATORE Versione software: 1.0

SUPPORTO TECNICO ROUTER ADSL OFFICE CONNECTION CREATO DA FABIO SCARDONI

Laboratorio Apprendimento Automatico

MANUALE D UTILIZZO DI UNITO-WIFI

MD60LOG GUIDA UPDATE FW3.5

su Windows XP con schede D-Link DWL 650+

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Contenuto della confezione. Elenco dei termini. Powerline Adapter

BIPAC-711C2 / 710C2. Modem / Router ADSL. Guida rapida all avvio

Collegamento del Prodotto

Telefono Aastra 6725ip Microsoft Lync Guida introduttiva

Utilizzo collegamento remoto

Manuale d uso software MeteoGraf1 per la gestione dei report giornalieri provenienti da datalogger Geoves serie Micro

b r o a d b A N d r o u t e r 4 p o r t s 1 0 / m b p s

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. ATOS su Windows 32 bit e 65 bit

Capitolo 2 Risoluzione di problemi

Guida rapida alla configurazione del Modem Router/Wireless gatway Huawei B970b Brand Vodafone

Configurazione di una LAN in ambiente Windows

F524. Energy Data Logger. Manuale installatore.

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. OBERTHUR su Windows 32 bit e 65 bit

Sistema operativo Linux Ubuntu

DISTRIBUZIONE PER L INFORMATICA MOBILE. GUIDA ALL INSTALLAZIONE DEL CODICE QUANTITÀ SU D6100 E D6500 (s.o. Windows Mobile)

Version /08/2016. Manuale Utente. Wireless AC1200 Dual-Band Gigabit ADSL2+/VDSL2 Modem Router DSL-3782

Gateway Patton FXO Serie 4110

PROCEDURA D INSTALLAZIONE DEL SOFTWARE DELLA CARTA TS-CNS. ACTALIS su Windows 32 bit e 65 bit

GUIDA ALL USO DEL SERVIZIO WiFiNext E RISOLUZIONE DELLE PRINCIPALI PROBLEMATICHE

Wireless studenti - Windows XP

Domande frequenti: KWB Comfort Online

Guida di Wi-Fi Direct

Brainstorm. Troubleshooting. 1- Come trovare l indirizzo ip di un pc?... 2 Windows XP... 2 Windows Windows Mac OS X...

Guida Rapida per la configurazione di una rete di strumenti Electrex con Yocto net e il software Energy Brain:

IP150 (cod. PXDIP15)

Version /03/02. Manuale Utente. Pocket Cloud Router DIR-879

F450. Gateway OpenBacnet. Manuale Software.

Creazione di un flusso audio base tra dispositivi Barix

Guida all uso dei servizi Mail:

Xesar. Messa in funzione Scheda di rete

MANUALE VONETS VAR11N-300

ELCART. Manuale di istruzioni/scheda tecnica

TS-CNS. Tessera Sanitaria Carta Nazionale dei Servizi. Manuale di installazione e configurazione. Versione del

Wireless personale - Windows XP

Guida all installazione di Fiery proserver

Application Commissioning Luci Ambiente 400 m2

Sistema videoconferenza AVAYA XT4300 Regione Toscana Guida rapida all utilizzo

SISTEMA DI MONITORAGGIOCONDIZIONATORI MULTI SPLIT GUIDA RAPIDA DI INSTALLAZIONE

Guida rapida installatore EMC.W DL1 EMC.W. Modulo Wi-Fi

GUIDA ALL INSTALLAZIONE DI R CONTENUTO

Note per gli utenti dell'interfaccia wireless LAN

JD-7 4K. Manuale d Uso. jepssen.com 02

BIPAC 5102 / 5102S / 5102G

Configurazione Stampante in WinDrakkar. Documentazione Utente. WinDrakkar

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Installazione scheda di comunicazione Wifi Rev Ra.Store-K

Imagicle Hotel. Guida alla configurazione delle centrali Aastra.

Presentazione con PowerPoint

Features Operating Frequency: 860 to 960 MHz (software. Benefits Small size & Low cost Short Range UHF Controller

Accedere alla propria area riservata dal sito del CAF. Inserire le proprie credenziali e premere ACCEDI

I N S T A L L A Z I O N E D I M I S T R A L L A T O C L I E N T

Manuale Configurazione PDL WINDOWS

CardioChek Link Manuale d'uso

ATTIVAZIONE SERVIZIO NOTIFICHE SMS

Manuale di installazione

La Back Office Console consente di costruire lo scheletro degli schema.

ADATTATORE ANALOGICO VOISPEED V-6019 WHITE. Quick Start

GUIDA RAPIDA Z-GPRS2. Datalogger / RTU multiprotocollo avanzato con modem GSM/GPRS e I/O integrato 1. PREPARAZIONE DEL SOFTWARE DI CONFIGURAZIONE

Server di rete USB over IP con 4 porte USB 2.0

Mod DS A LBT 8563 SOFTWARE DI PROGRAMMAZIONE PER MODULO DI CHIAMATA E CENTRALINO 2VOICE

Istruzioni per il cambio della password della casella di posta

CardioChek Link Manuale d'uso

EFA Automazione S.r.l. SB3Conf Help V1.00 (01 ITA).doc pag. 1 / 10

Troubleshooting Procedura di risoluzione problemi

ACCENSIONE E VERIFICHE DA FARE

ELCART. Manuale di istruzioni/scheda tecnica

Configuratore software per centrali Serie 1043/5x0 Sch.1043/541

Transcript:

Introduzione alla piattaforma Pynq Marco D. Santambrogio marco.santambrogio@polimi.it Emanuele Del Sozzo emanuele.delsozzo@polimi.it Lorenzo Di Tucci lorenzo.ditucci@mail.polimi.it Giuseppe Natale giuseppe.natale@polimi.it Marco Rabozzi marco.rabozzi@polimi.it Alberto Scolari alberto.scolari@polimi.it Ver. aggiornata al 24 Ottobre 2016

Agenda Introduzione a Pynq NumPy matplotlib 2

Pynq Board 650Mhz dual-core Cortex-A9 processor 512MB DDR3 FPGA: ZYNQ XC7Z020-1CLG400C Per maggiori informazioni: http://www.pynq.io/home.html 3

Piattaforma Pynq USB Jupyter server Micro SD (Linux OS + Jupyter notebook) HDMI (out, in) PMOD Ethernet Pynq API Processore ARM Overlay (base.bit) GPIO: leds, buttons, switches connettori audio FPGA: logica programmabile Pynq Board 4

Accedere a Jupyter Accesso diretto con connessione punto-punto tra PC e scheda: 1. Configurare una rete statica sulla porta ethernet del proprio PC utilizzando come IP: 192.168.2.1 e come netmask: 255.255.255.0 2. Verificare la posizione dei jumper sulla Pynq, collegare il cavo di alimentazione ed il cavo di ethernet 3. Accendere la Pynq 4. Accedere a Jupyter dall indirizzo: 192.168.2.99:9090 5

1) Configurazione di rete (utenti Mac OS X) Tramite spotlight aprire le preferenze di sistema Entrare in Network 6

1) Configurazione di rete (utenti Mac OS X) Selezionare la connessione Ethernet Configurare IPv4 su manualmente ed impostare 192.168.2.1 come indirizzo IP e 255.255.255.0 come netmask 7

1) Configurazione di rete (utenti Windows) Dal cerca, aprire Centro connessioni di rete e condivisione Cliccare sulla connessione di rete LAN (o Ethernet) 8

1) Configurazione di rete (utenti Windows) Cliccare su proprietà Selezionare TCP/IPv4 e cliccare su proprietà 9

1) Configurazione di rete (utenti Windows) Selezionare Utilizza il seguente indirizzo IP ed impostare 192.168.2.1 come IP e 255.255.255.0 come netmask 10

2) Configurazione e collegamento Pynq 1. Verificare che la micro SD sia inserita 2. Verificare che la posizione del jumper JP4 sia come in figura (avvio tramite scheda micro SD) 3. Verificare che la posizione del jumer JP5 sia come in figura (alimentazione tramite cavo USB) e verificare che il Power Switch sia su OFF * 4. Inserire il cavo USB e collegarlo al PC 5. Inserire il cavo di rete e collegarlo al PC *per alimentare la scheda da alimentatore a muro spostare il jumper JP5 su REG 11

3) Accensione Pynq 1. Spostare il Power Switch su ON 2. Attendere che LD1 2 e LD1 3 siano accessi ed in particolare che il LED verde DONE sia acceso 3. Una volta pronta la board, si accenderanno anche gli altri LED 2 1 3 12

4) Accesso a Jupyter sulla Pynq All interno del browser (preferibilmente Google Chrome), digitare l indirizzo: 192.168.2.99:9090 Per accedere usare la password xilinx 13

Ripristino configurazione di rete Dopo aver lavorato con la Pynq, per poter utilizzare nuovamente la connessione di rete via cavo ethernet dal proprio PC è necessario ripristinare le configurazioni di rete Di base, la scheda di rete è configurata tramite DHCP: Max OS x Windows 14

Accedere a file e cartelle sulla Pynq (Mac OS X) Aprire il finder Dal menu di Finder, andare su vai e su connessione al server (oppure premere +K da tastiera) 15

Accedere a file e cartelle sulla Pynq (Mac OS X) Inserire l indirizzo della Pynq (192.168.2.99) e premere su connetti Selezionare Utente registrati ed usare xilinx come utente e xilinx come password 16

Accedere a file e cartelle sulla Pynq (Mac OS X) Confermare la condivisione del volume xilinx cliccando su OK In Finder e sul desktop comparirà un nuovo elemento condiviso, cliccandoci sarà possibile visualizzare files e cartelle presenti nella micro SD, in particolare la cartella jupyter_notebooks contterrà tutti i files generati tramite Jupyter 17

Accedere a file e cartelle sulla Pynq (Windows) Aprire esplora risorse Nella barra del percorso inserire \\192.168.2.99\xilinx Inserire xilinx come user e password 18

LED, Switch e Pulsanti La Pynq dispone di: 6 LED comandabili direttamente da Python (di cui 2 RGB) 2 Switch e 4 Pulsanti di cui è possibile leggere lo stato 19

Pynq API per LEDs, Switch e Button Import delle librerie: Per utilizzare i LED: Per utilizzare i LED RGB: Per utilizzare gli Switch Per utilizzare i Button O in alternativa in un unico import 20

LED Per utilizzare un LED occorre prima creare un oggetto specificando l id del LED da usare (da 0 a 3) Per accendere un led: Per spegnere un led: Per negare lo stato corrente del led: Per leggere lo stato corrente del led: 21

LED RGB Per utilizzare un LED RGB occorre prima creare un oggetto specificando l id del LED RGB da usare (da 4 a 5) Per accendere un led: Per spegnere un led: Value deve assumere un valore tra 0 e 7 Per leggere lo stato corrente del led: 22

Button / Switch Come per i LED, anche per Button e Switch occorre prima di tutto creare un oggetto specificando l id del Button/Switch (tra 0 e 3 per i Button, 0 e 1 per gli Switch) Per leggere il valore di un Button o Switch si usa la funzione read: 23

LED blinking Sfruttando la libreria time e la funzione sleep è possibile fare lampeggiare un LED: 24

LED blinking O creare semplici animazioni 25

Uso del simulatore GPIO Chi non ha a disposizione una board, può utilizzare il simulatore GPIO disponibile qui per utilizzare LED Switch e Button: http://xph.necst.it/2017/software/index.php Per utilizzare il simulatore occorre inglobare il programma in una funzione ed invocare il simulatore al termine del codice. 26

Esercizio 1 Si scriva un programma Python per Pynq che usi i 4 LED per rappresentare un contatore binario. In particolare, la pressione del pulsante (Button) b0 fa incrementare il valore del contatore. Una volta andato in overflow il contatore, il programma termina Dopo 10 pressioni di b0 27

Soluzione 1 28

Esercizio 2 Assumendo che un pulsante (Button) rappresenti un bit e che la pressione del pulsante sia associato al valore 1 (0 altrimenti), si scriva un programma Python per Pynq che, una volta calcolato il valore decimale associato alle pressione dei primi tre pulsanti, usi tale valore per accendere solamente i LED RGB corrispondenti agli Switch in posizione attiva. Il programma termina alla pressione del quarto pulsante Esempio: la pressione contemporanea del pulsante b0 e b2 corrisponde al valore binario 101, ossia al valore decimale è 5 (colore magenta) ---> rgbled.on(5) 29

Soluzione 2 30

NumPy e matplotlib

NumPy NumPy è l abbreviazione di Numerical Python: un estensione di Python pensata principalmente per il calcolo scientifico NumPy permette di utilizzare (tra le altre cose): array multidimensionali in modo semplice rispetto a Python Funzioni matematiche (algebra lineare, numeri random, ) Per usare NumPy, è necessario importarne il modulo: Documentazione: http://docs.scipy.org/doc/ 32

ndarray ndarray è un tipo di dato proprio di NumPy che permette di creare array n-dimensionali Il modo più semplice per creare un array con NumpPy è utilizzare la funzione array: array(object, dtype=none, copy=1, order=none) Parametri già inizializzati a valori di default Non è necessario inserirli a meno che non si voglia cambiarli 33

Parametri funzione array array(object, dtype=none, copy=1, order=none) object: l oggetto da cui creare l array (lista, una tupla, ecc.) dtype: il tipo dell array (bool, int, float, complex, ecc.) copy: indica se l array è creato tramite copia dell object order: lo stile di allocazione in memoria (C o Fortran) 34

Esempi creazione array OUTPUT 35

Attributi di ndarray shape: forma dell array ndim: numero di dimensioni dell array itemsize: dimesione, in byte, di ogni elemento strides: bytes da saltare per ottenere l elemento successivo di una specifica dimensione 36

Altri metodi di creazione di array zeros( shape, dtype=float, order = C ) ones( shape, dtype=none, order = C ) empty( shape, dtype=none, order = C ) 37

Altri metodi di creazione di array identity( n, dtype=none ) eye( N, M=None, k=0, dtype=float ) k indica di quanto traslare la diagonale principale di 1 k > 0: diagonale traslata a destra di k posizioni k < 0: diagonale traslata a sinistra di k posizioni 38

arange e linspace Come si può creare una lista tramite range, è possibile creare un array con due funzioni simili: arange e linspace arange è molto simile a range: arange( [start,] stop[, step,], dtype=none ) opzionali A differenza di range() accetta anche step di tipo float linspace genera una sequenza di num valori uniformemente distribuiti tra start e stop linspace( start, stop, num=50, endpoint=true, restep=false ) endpoint: se True, stop è l ultimo valore restep: se True, la funzione restituisce anche lo step tra i valori 39

Reshape e resize Le funzioni reshape e resize permettono di cambiare la forma dell array e ridimensionarlo reshape(shape) Reshape crea/restituisce una nuova struttura dati ridistribuendo gli elementi dell array (il numero di elementi non cambia) resize(new_shape) Resize lavora in-place modificando l array stesso 40

Esercizio 3 Scrivere un programma Python che, presa in ingresso una shape bidimensionale da parte dell utente: Crei una sequenza di valori coerente con quella dimensione Crei un array monodomensionale a partire dalla sequenza Crei un array bidimensionale della dimensione indicata dall utente Esempio: Shape = (2,3) Sequenza = 0, 1, 2, 3, 4, 5 Array_monodimensionale = [0, 1, 2, 3, 4, 5] Array_bidimensionale = [[0, 1, 2], [3, 4, 5]] 41

Esercizio 3 Soluzione (reshape) 42

Esercizio 3 Soluzione (resize) 43

Slicing E possibile accedere a porzioni di una lista e/o array tramite l operatore di slicing : Array[inizio:fine] Inizio: indice del primo elemento da cui partire può essere omesso se uguale a 0 Fine: indice dell ultimo elemento a cui arrivare elemento non è incluso nell output dello slicing Può essere omesso se coincide con la fine dell array 44

Slicing multidimensionale E possibile applicare lo slicing anche ad array multidimensionali (non alle liste!!) array[iniziodim1:finedim1, iniziodim2:finedim2, ecc.] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 45

Operazioni numeriche su array Operazioni array / scalari: Operazioni array / array: a e b devono avere le stesse dimensioni!! 46

Operatori di confronto 47

Altre operazioni sugli array Queste funzioni evitano il dover usare dei cicli per applicare l operazione ad ogni elemento np.sin(array) np.arcsin(array) np.sinh(array) np.log(array) np.exp(array) np.sqrt(array) np.maximum(array1, array2) np.minimum(array1, array2) Per una lista completa delle funzioni matematiche fare riferimento a: http://docs.scipy.org/doc/numpy-1.10.1/reference/routines.math.html 48

Generazione numeri random NumPy fornisce il modulo random per la generazione di numeri casuali Come prima cosa, si può impostare un seed, poi è possibile generare numeri pseudo-casuali E anche possibile generare numeri causali seguendo distribuzioni statistiche 49

matplotlib La libreria matplotlib fornisce funzionalità per disegnare grafici 2D utilizzando funzioni simili a MATLAB matplotlib contiene diversi sotto moduli, in particolare faremo riferimento a pyplot Direttiva speciale per Jupyter per mostrare i grafici all interno dell area di lavoro Importa lo spazio dei nomi matplotlib.pyplot come plt Visualizza il grafico Esempio di funzione pyplot per creare un grafico Documentazione: http://matplotlib.org/ 50

Creare un grafico Per creare un grafico, si definisce l insieme di valori da disegnare con plot ed infine si visualizza il grafico con show La funzione plot può essere chiamata in diversi modi plot(lista_valori_y) plot(lista_valori_x, lista_valori_y) plot(lista_valori_x, lista_valori_y, propietà_linea) NOTA: le liste possono essere sostituite con array numpy 51

Creare un grafico (valori y) Valori sull asse X determinati automaticamente in modo incrementale partendo da 0 52

Creare un grafico (valori x-y) Lista valori Y Lista valori X Nota: le dimensioni delle due liste devono combaciare! 53

Creare un grafico (valori x-y e proprietà linea) Utilizzo di numpy per generare i dati Proprietà del tracciato: La prima lettera identifica il colore: r g b k y c m I caratteri successivi identificano il tipo di linea: -- ^ o - -. : 54

Tracciati multipli Chiamando ripetutamente la funzione plot è possibile inserire più tracciati all interno dello stesso grafico 55

Tracciati multipli Lo stesso risultato si può ottenere chiamando plot una sola volta come segue: 56

Impostare le proprietà di un grafico Definire manualmente gli intervalli degli assi X ed Y axis([x_min, x_max, y_min, y_max]) Definire la legenda degli assi xlabel(legenda) ylabel(legenda) Definire il titolo del grafico title(titolo) Abilitare la griglia grid(true) 57

Impostare le proprietà di un grafico 58

Ulteriori proprietà per le linee La funzione plot restituisce una lista di oggetti linea che possono essere utilizzati per modificare ulteriori proprietà tramite la funzione setp 59

Creare una legenda Sfruttando gli oggetti linea è possibile creare una legenda ed associare un nome a ciascuno dei tracciati: legend(lista_linee, lista_nomi) NOTA: In questo caso la funzione plot restituisce una lista di un solo elemento. Utilizzando la, dopo il nome della variabile salviamo nella variabile direttamente l unico elemento della lista. 60

Grafico scatter plot Coordinate x,y colori e area dei cerchi generati in modo casuale Trasparenza dei cerchi 61

Esercizio 4 Si scriva un programma Python che visualizzi in un grafico le intersezioni delle funzioni f e g nell intervallo [-2,10]: f x = cos x + x + 2, g x = 2 x 62

Soluzione 4 63

Esercizio 5 Si scriva un programma Python che disegni un onda triangolare dati i seguenti parametri ricevuti in input dall utente: Lunghezza d onda Ampiezza Numero di periodi 3 Periodi Ampiezza: 2.0 Lunghezza d onda: 4.0 64

Soluzione 5 65