martedì 27 settembre 2016

A.S. 2016/17 - Esercitazioni di laboratorio per la materia TECNOLOGIA E PROGETTAZIONE/2

ESERCITAZIONE 7_1 - Ricerca Max (14/12/16)
Ricercare il valore massimo all'interno di un vettore di byte caricato in rom

OBIETTIVI DISCIPLINARI
- Le direttive dell'assemblatore AREA, DCB, SPACE, EQU
- Chiamate a subroutine in assembler

PROCEDIMENTO / SPECIFICHE INIZIALI
Analisi
Progettazione
- realizzare il diagramma di flusso che descrive l'algoritmo
Scrivere un programma che:
- caricare in rom un vettore di 10 byte usando le direttive AREA e DCB
- riservare uno spazio di memoria in ram di 1 byte dove caricare il valore massimo trovato
Collaudo
- descrivere in maniera estremamente sintetica come si è svolto il collaudo
- allegare la cattura della finestra di debug dove si vede il valore massimo torvato e scritto in ram

GRIGLIA DI VALUTAZIONE:
[3 punti] - diagramma di flusso
[4 punti] - programma in assembler
[3 punti] - collaudo


-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 6_1 - Operazioni tra vettori
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 5_1 - Swap tra due variabili in assembler
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 4_1 - Sottrazione e salto condizionato
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 3_1 - Installazione e configurazione di Keil uVision 5

OBIETTIVI DISCIPLINARI
- Installazione dell'ide Keil uVision5
- Familiarizzazione con l'ide Keil uVision5

PROCEDIMENTO / SPECIFICHE INIZIALI
- Scaricare e installare Keil uVision, scaricare e installare TivaC MDK5 Software Packs
- Installare i drivers Stellaris ICDI Drivers per l'In-Circuit Debug Interface
- Creare un nuovo progetto Keil, scegliendo come device TM4C123GH6PM
- copiare il file c:\Keil_v5\ARM\Pack\Keil\TM4C_DFP\1.1.0\Device\Source\ARM\startup_TM4C123.s nella cartella del progetto appena creato e aggiungere il file ai sorgenti del progetto
- modificare le opzioni del target (menu flash--> configure...), impostando nel debug "use Simulator", nella scheda target disabilitare il Floating Point Hardware

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 2_1 - Istruzioni di spostamenti dati (13/10/16)
Esercizi sull'utilizzo delle istruzioni LDR, STR, MOV e ADD.

OBIETTIVI
- familiarizzare con l'IDE Keil uVision
- comprendere l'utilizzo delle istruzioni di spostamento dati
- debug delle istruzioni

PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare la cartella di lavoro (D:\Lavori\2016-17\4H\CognomeNome\)
- Fare una copia del progetto di esempio fornito
- All'interno dell'area istruzioni del template testare i seguenti frammenti di codice

  ;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 dell'IDE caricare all'indirizzo 0x20000004 il numero 12341234
  ;tramite il memory browser dell'IDE 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 dell'IDE caricare all'indirizzo 0x20000004 il numero 12341234
  ;tramite il memory browser dell'IDE 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

RIFERIMENTI / LINK
- slide del corso

-------------------------------------------------------------------------------------------------------------ESERCITAZIONE 1_1: Progetto di un moltiplicatore a 4bit
(27/09/16 - Definizione specifiche del progetto)
(11/10/16 - Definizione della macchina a stati della unità di controllo)

OBIETTIVI / ARGOMENTI TRATTATI
- Ripasso della sintassi del linguaggio VHDL
- gli automi

PROCEDIMENTO / SPECIFICHE INIZIALI
- Consegnare la relazione tecnica
- Scrivere il codice vhdl di eventuali altri blocchi composti (ci dovrà essere corrispondenza perfetta tra gli schemi e le dichiarazione delle entity in vhdl)
- Per l'Unità di Controllo, spiegarne il funzionamento, disegnare lo schema della macchina a stati e scrivere i codice vhdl corrispondente
 (Consegnare per il 14/19/16)

- Per Martedì 25/10/16 consegnare la relazione tecnica:
  1) Descrivere brevemente gli obiettivi da raggiungere
  2) Realizzare gli schemi dettagliati del progetto complessivo
  3) Descrivere il funzionamento dell'unità di controllo
  3) Realizzare il diagramma degli stati e descrivere il funzionamento dell'automa
  4) Scrivere il codice vhdl dell'unità di controllo
  5) Scrivere il codice del test bench per l'U.C. motivando gli stimoli inseriti e descrivendo gli output ottenuti

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE
OBIETTIVI / ARGOMENTI TRATTATI
PROCEDIMENTO / SPECIFICHE INIZIALI
GRIGLIA DI VALUTAZIONE:
[2 punti] - relazione: premesse teoriche/specifiche - come va inizializzato l'hw
[2 punti] - relazione: diagramma di flusso
[2 punti] - implementazione del codice in assembler (blinky_white, blinky_switch)
[2 punti] - utilizzo dell'ambiente di sviluppo (creazione progetto, debug)
[1 punto] - convenzioni di scrittura codice (intestazione, commenti, nomi var, ...)
[1 punto] - relazione: collaudo
RIFERIMENTI / LINK
-------------------------------------------------------------------------------------------------------------
Versione iniziale del 27/09/16

Nessun commento:

Posta un commento