mercoledì 9 dicembre 2015

A.S. 2015/16 - Esercitazioni di laboratorio per la materia TECNOLOGIA E PROGETTAZIONE/2

ESERCITAZIONE 8 - Ordinamento (18/05/16)
Ordinare gli elementi presenti in un vettore definito in ram

PROCEDIMENTO / SPECIFICHE INIZIALI
riservare uno spazio di memoria da utilizzare per un vettore chiamato data
- ordinare in ordine crescente gli elementi presenti nel vettore, utilizzando un algoritmo scelto a piacere
- esempio di direttive da usare
.text
DATA_RAW_BASE .field DATA_RAW, 32 ;INDIRIZZO DI DATA_RAW
DATA_VALID_BASE .field DATA_VALID, 32 ;INDIRIZZO DI DATA_VALID
MEDIA_ADR .field MEDIA, 32 ;INDIRIZZO DI MEDIA
COEFF .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
COEFF_BASE .field COEFF, 32 ;INDIRIZZO DI COEFF


RIFERIMENTI / LINK

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 7 - Operazioni sui vettori (30/03/16)

OBIETTIVI
Definizione di aree da allocare per vettori 
- Uso dell'indirizzamento indiretto e indicizzato nell'elaborazione di vettori

PROCEDIMENTO / SPECIFICHE INIZIALI
- allocare un vettore di costanti in rom
- riservare due spazi di memoria da utilizzare per due vettori chiamati data_raw e data_valid
- inizializzare il vettore data_raw con la funzione di fibonacci. fibo[i]=fibo[i-1]+fibo[i-2]
- il vettore data_valid conterrà i seguenti valori: dat_valid[i]=data_raw[i]*coeff[i]
- calcolare la media dei valori presenti in data_valid e salvarla nella cella di memoria Media

RIFERIMENTI / LINK
- slide del corso
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 6 - Operazioni aritmetiche

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 5 - Istruzioni di spostamenti dati (16/02/16)
Esercizi sull'utilizzo delle istruzioni LDR, STR, MOV e ADD.

OBIETTIVI
familiarizzare con l'IDE CCS (Code Composer Studio)
- comprendere l'utilizzo delle istruzioni di spostamento dati

PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
Creare un nuovo progetto (New CCS Project)
 .Target -> TM4C123GH6PM 
 .Connection -> Stellaris In-Circuit Debug Interface
 .Project name -> SpostamentoDati_v10
 .Empty Assembly-only Project
- Rispettare le convenzioni per la scrittura di codice Assembler
- aggiungere al progetto il file main.s presentato durante la lezione in classe utilizzando il template che trovate in fondo al post precedentemente menzionato
- impostare l'entry point del programma
 . proprità del progetto -> build -> ARM linker -> Advanced options -> Symbol management ->
   -> Specify program entry -> inserire il nome della Label da cui far iniziare l'esecuzione (es. main)
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione

;FRAMMENTO_CODICE
;caricamento di numeri immediati a 16 bit in esadecimale o ottale
;R0=0xF ;hex number
;R0=0xF0 ;hex number
;R0=0xF00 ;hex number
;R0=0xF010 ;hex number
;R0=10 ;octal number =0x8
;R0=101 ;octal number =0x41

;FRAMMENTO_CODICE
;caricamento di un numero immediato a 32 bit 
;utilizzando le istruzioni MOV e MOVT 
;R0=0xABB1FEDE

;FRAMMENTO_CODICE
;eseguire la somma di due dati immediati a 16 bit, 
;usando le istruzioni MOV e ADD. 
;Tradurre il seguente pseudo codice:
;R0=0x1
;R1=0xFF
;R0+=R1 

;FRAMMENTO_CODICE
;eseguire la somma di due dati immediati a 32 bit, 
;usando le istruzioni MOV, MOVT e ADD. 
;Tradurre il seguente pseudo codice:
  ;R0=0x12AA34BB
  ;R1=0x11020301
  ;R0=R0+R1

;FRAMMENTO_CODICE
;Usare R0 come puntatore alla memoria e inizializzarlo con 0x20000000, istr. MOV e MOVT  
;Usare R1 come puntatore alla memoria e inizializzarlo con 0x20000004, istr. MOV e MOVT 
;Usare R2 come puntatore alla memoria e inizializzarlo con 0x20000008, istr. MOV e MOVT
;tramite il memory browser di CCS caricare all'indirizzo 0x20000004 il numero 12341234 
;tramite il memory browser di CCS caricare all'indirizzo 0x20000008 il numero 43214321 
;Caricare in R4 il valore della cella di memoria puntata da R1, istr. LDR
;Caricare in R5 il valore della cella di memoria puntata da R2, istr. LDR
;Calcolare la somma di R4 e R5 e scrivere il risultato nella cella di memoria 
; puntata da R0, istr. ADD e STR
;tramite il memory browser di CCS verificare che all'indirizzo 0x20000000 sia stato
; caricato correttamente il risultato della somma tra R4 e R4 
;R0=0x20000000 
;R1=0x20000004 
;R2=0x20000008
;tramite il memory browser di CCS caricare all'indirizzo 0x20000004 il numero 12341234 
;tramite il memory browser di CCS caricare all'indirizzo 0x20000008 il numero 43214321 
;(R1)->R4 
;(R2)->R5
;R3=R4+R5
;R3->(R0)
;tramite il memory browser di CCS verificare che all'indirizzo 0x20000000 sia stato

; caricato correttamente il risultato della somma tra R4 e R4 


- FRAMMENTO DI CODICE 1: eseguire la somma di due dati immediati a 16 bit, usando le istruzioni MOV e ADD. Tradurre il seguente pseudo codice:
  R0=0x1
  R1=0xFF
  R0+=R1
- FRAMMENTO DI CODICE 2: eseguire la somma di due dati immediati a 32 bit, usando le istruzioni MOV, MOVT e ADD. Tradurre il seguente pseudo codice:
  R0=0x12AA34BB
  R1=0x11020301
  R0=R0+R1
- FRAMMENTO DI CODICE 3: eseguire la somma di due dati immediati a 32 bit, usando le istruzioni LDR, STR e ADD. Tradurre il seguente pseudo codice:


RIFERIMENTI / LINK
- slide del corso

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 4 - LedBlink (13/01/16)
Scrittura e verifica di un semplice programma in assembler.

OBIETTIVI
familiarizzare con l'IDE CCS (Code Composer Studio)
- elementi di programma assembler

PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
Creare un nuovo progetto (New CCS Project)
 .Target -> TM4C123GH6PM 
 .Connection -> Stellaris In-Circuit Debug Interface
 .Project name -> LedBlink_v10
 .Empty Assembly-only Project
- aggiungere al progetto il file main.s presentato durante la lezione in classe
- impostare l'entry point del programma
 . proprità del progetto -> build -> ARM linker -> Advanced options -> Symbol management ->
   -> Specify program entry -> inserire il nome della Label da cui far iniziare l'esecuzione (es. main)
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione

RIFERIMENTI / LINK

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 3 - L'IDE Code Composer Studio (09/12/15)
Installazione IDE e driver
Scrittura e verifica di un semplice programma in assembler.

OBIETTIVI
- Installare l'IDE ed i driver della scheda
- familiarizzare con l'IDE CCS (Code Composer Studio)
- elementi di programma assembler

PROCEDIMENTO / SPECIFICHE INIZIALI
- Scaricare ed installare code composer studio
- Creare un nuovo progetto
- aggiungere al progetto il file .s presentato durante la lezione in classe
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione

ESERCITAZIONE 2 - Sonar ad Ultrasuoni 
(23/09/15 - Definizione specifiche del progetto)

PROCEDIMENTO / SPECIFICHE INIZIALI
- Realizzare gli schemi dettagliati del progetto complessivo e di eventuali blocchi composti (ci dovrà essere corrispondenza perfetta tra gli schemi e le dichiarazione delle entity in vhdl)
- determinare tutti gli stati

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 1 - Moltiplicatore a 4bit 
Progetto di un coprocessore per il calcolo della moltiplicazione.
(16/09/15 - Definizione specifiche del progetto)

OBIETTIVI / ARGOMENTI TRATTATI
- Ripasso della sintassi del linguaggio VHDL

PROCEDIMENTO / SPECIFICHE INIZIALI
Consegnare la relazione tecnica
- Realizzare gli schemi dettagliati del progetto complessivo e di eventuali blocchi composti (ci dovrà essere corrispondenza perfetta tra gli schemi e le dichiarazione delle entity in vhdl)

GRIGLIA DI VALUTAZIONE FASE1:
[2 punti] - relazione: premesse teoriche/specifiche
[2 punti] - relazione: diagramma
[4 punti] - implementazione
[1 punto] - convenzioni di scrittura codice
[1 punto] - relazione: collaudo

-------------------------------------------------------------------------------------------------------------
Versione iniziale del 09/12/15
Revisione del 16/02/16

Nessun commento:

Posta un commento