SlideShare a Scribd company logo
Struttura Dati per Sistemi Embedded su FPGA D ynamic  R econfigurability  in   E mbedded   S ystems   D esign Paolo Roberto Grassi: paolo.grassi @dresd.org
Outline Introduzione Contesto del Lavoro Motivazione del Progetto Problematiche Sistemi Embedded su FPGA Descrizione delle FPGA FPGA e Board FPGA e Core Descrizione del Lavoro Struttura Dati Implementazione Relazioni tra gli oggetti del DB Conclusioni e Sviluppi Futuri
Contesto del Lavoro L’idea di costruire una struttura dati nasce all’interno del progetto “DFDK” (DRESD Free Delevopment Kit) presso il gruppo DRESD DFDK è un progetto che conta di creare un tool per lo sviluppo di sistemi embedded su FPGA attraverso: Elevata automatizzazione del flusso di progetto Verifica progressiva del layout Completamento automatico del layout del sistema
Motivazione del Lavoro La motivazione principale era quella di creare una struttura dati per DFDK Ben presto ci si è accorti che non era solo DFDK a necessitare di una struttura dati Tanti altri tools e algoritmi avevano bisogno di appoggiarsi su una struttura dati omogenea e unica al fine di potersi combinare più facilmente
Problematiche Problematiche affini al mondo delle basi di dati: Descrizione degli oggetti presenti nel sistema Descrizione delle relazioni tra questi oggetti Eliminazione delle ridondanze di dati Garantire l’integrità dei dati In figura è possibile vedere come varie metodologie o algoritmi possono utilizzare la stessa struttura dati pur implementando delle sotto-strutture ad hoc per il problema da affrontare
Descrizione delle FPGA Non volendosi addentrare nei dettagli, verrà specificata solo la terminologia utilizzata FPGA : termine autoesplicativo per indicare le FPGA GRID : questo termine, se legato alla descrizione delle FPGA, indica la suddivisione dell'FPGA in macroblocchi quali: processori, memorie, CLB,... RPM GRID : termine che indica una suddivisione a grana più ne di quella effettuata per le grid. Si usa per descrivere il collocamento dei blocchi funzionali contenuti nelle grid, quali le slice. PINOUT : termine che descrive le parti di I/O della FPGA verso il mondo esterno. Se a questo termine si affianca  GLOBAL , ci si riferisce a tutta la piedinatura utilizzata per le alimentazioni o comunque riservate al dispositivo e quindi non utilizzabile dalla logica programmabile.
FPGA e Board BOARD : termine autoesplicativo per identificare una specifica board PERIPHERAL : termine che identica le periferiche presenti sulla board, le loro caratteristiche e come sono connesse alla stessa GENERIC : termine che, se associato alle periferiche, indica i parametri cui sono settate le periferiche. Indicano, ad esempio, il baudrate, la larghezza degli ingressi, il tipo di configurazione usata,... Sono utili per conoscere come dovranno essere configurati i cores al ne di garantire il corretto funzionamento e utilizzo della periferica. PORT : termine che indica le interfacce di comunicazione della periferica. Oltre ad indicare quali sono, indica anche, rispetto alla board desiderata, come e dove sono collegate all'FPGA presente su di essa.
FPGA e Core CORE : unità funzionale descritta in un linguaggio di programmazione hardware PORT : se associata ai core, intende un ingresso o una uscita del core GENERIC : parametri che possono essere usati all'interno dei core per una maggiore e più facile customizzazione di parti di esso.
Struttura Dati BOARD_FPGA  ( id_board ,  fpga_device ,  fpga_package ) BOARDS  ( id , vendor, name, revision, short_description, long_description) CORE  ( name ,  major_version ,  minor_version , description, category, role, interrupt, bandwith) CORE_CATEGORY  ( name ) CORE_GENERICS  ( core_name ,  core_major_version ,  core_minor_version ,  name , type, default_value) CORE_MASTER_SLAVE  ( master_name ,  master_major_version ,  master_minor_version ,  slave_name ,  slave_major_version ,  slave_minor_version ) CORE_PORTS  ( core_name ,  core_major_version ,  core_minor_version ,  name , direction, type, begin, end, default_value) CORE_VHDL  ( core_name ,  core_major_version ,  core_minor_version ,  filename ) FPGA  ( device ,  package , vendor, family) FPGA_GLOBAL_PINOUTS  ( device ,  package ,  pin_name , pin_type) FPGA_GRID  ( device ,  package ,  rpm_x ,  rpm_y , oset_x, oset_y, type) FPGA_PINOUTS  ( device ,  package ,  rpm_x , rpm_y, bank, pin_name, pin_type) FPGA_RPM_GRID  ( device ,  package ,  rpm_x ,  rpm_y , type) PERIPHERAL_GENERICS  ( id_board ,  peripheral_name ,  generic_name , value) PERIPHERAL_PORTS  ( id_board ,  peripheral_name ,  name , ucf_loc_string, ucf_iostandard_string, ucf_period_string, initial_val) PERIPHERALS  ( id_board ,  name , description)
Implementazione L’implementazione ha accoppiato un database relazionale con un linguaggio di programmazione ad oggetti Nello specifico sono stati utilizzati SQL e C++ Per poter sfruttare al meglio questi linguaggi, si è scelto di creare la struttura dati in SQL, gestendo facilmente tutti vincoli di integrità dei dati, e una serie di classi C++ che interrogano il DB e ne estraggono le informazioni Queste classi istanziano degli oggetti che contengono le informazioni richieste dal database
Implementazione L’oggetto A copre la tabella A, l’oggetto B copre la tabella B e qualsiasi interazione tra le due tabelle deve passare per forza tra gli oggetti
Relazioni tra gli Oggetti del DB Gli oggetti c++ hanno la stessa struttura del database e servono solo a disaccoppiare l’interfaccia utente dal reale salvataggio dei dati
Conclusioni e Sviluppi Futuri Il lavoro ha portato alla realizzazione di una struttura dati per progettazione di sistemi embedded su FGPA. Non si è solo fermato alla implementazione reale della struttura dati nel linguaggio scelto, ma ha dato il via ad un flusso di lavoro legato alla descrizione delle entità distinte che, se composte, formeranno il sistema embedded. Vista l'efficacia del lavoro, si sta pensando di utilizzare tale struttura per altri progetti oltre DFDK.  Questa estensione avrà sicuramente bisogno di essere analizzata con cura, affrontandone razionalmente tutti gli aspetti di crescita.

More Related Content

PPT
Xml annessi e connessi
PPTX
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
PPT
3rd 3DDRESD: DRESD status @ July 2008
PPT
design of FPGA based traffic light controller system
PDF
Vlsi design
PPT
Smart Traffic Light Controller
DOCX
design of FPGA based traffic light controller system
PPTX
Traffic light controller
Xml annessi e connessi
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
3rd 3DDRESD: DRESD status @ July 2008
design of FPGA based traffic light controller system
Vlsi design
Smart Traffic Light Controller
design of FPGA based traffic light controller system
Traffic light controller

Similar to 3rd 3DDRESD: DB (20)

PDF
A query-to-hardware compiler for FPGA architectures
PPT
DHow2 - L4
PDF
Fpga il componente universale 2010-11-09
PPT
3rd 3DDRESD: BSS
PDF
DHow2 - L5
PDF
Software libero nei sistemi embedded
PDF
Architettura dei Calcolatori 06 Elementi Architetturali Di Base
PDF
Relazione Progetto cRIO
PDF
Relazione Progetto cRio
PPT
Thesis Ardemagni Sangalli Slide It
PDF
Progettazione e sviluppo di un software applicativo su un single board computer
PDF
Tesiandroid
PDF
Introduzione ai sistemi embedded 2010-10-14
PDF
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
PPT
Elementidi informatica
PDF
Presentazione Progetto CRio
PDF
Presentazione Progetto cRio
PDF
Lezione 10 (21 marzo 2012)2
ODP
Lezioni 2009
PPT
Thesis Amicucci Slides IT
A query-to-hardware compiler for FPGA architectures
DHow2 - L4
Fpga il componente universale 2010-11-09
3rd 3DDRESD: BSS
DHow2 - L5
Software libero nei sistemi embedded
Architettura dei Calcolatori 06 Elementi Architetturali Di Base
Relazione Progetto cRIO
Relazione Progetto cRio
Thesis Ardemagni Sangalli Slide It
Progettazione e sviluppo di un software applicativo su un single board computer
Tesiandroid
Introduzione ai sistemi embedded 2010-10-14
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Elementidi informatica
Presentazione Progetto CRio
Presentazione Progetto cRio
Lezione 10 (21 marzo 2012)2
Lezioni 2009
Thesis Amicucci Slides IT
Ad

More from Marco Santambrogio (20)

PPT
RCIM 2008 - - hArtes Atmel
PDF
RCIM 2008 - - UniCal
PDF
RCIM 2008 - - ALTERA
PDF
DHow2 - L6 VHDL
PDF
DHow2 - L6 Ant
PDF
RCIM 2008 - - ALaRI
PDF
RCIM 2008 - Modello Scheduling
PDF
RCIM 2008 - HLR
PDF
RCIM 2008 -- EHW
PDF
RCIM 2008 - Modello Generale
PDF
RCIM 2008 - Allocation Relocation
PPT
RCIM 2008 - - hArtes_Ferrara
PDF
RCIM 2008 - Janus
PDF
RCIM 2008 - Intro
PPT
DHow2 - L2
PPT
DHow2 - L1
PPT
RCW@DEI - Treasure hunt
PDF
RCW@DEI - ADL
PPT
RCW@DEI - Design Flow 4 SoPc
PPT
RCW@DEI - Real Needs And Limits
RCIM 2008 - - hArtes Atmel
RCIM 2008 - - UniCal
RCIM 2008 - - ALTERA
DHow2 - L6 VHDL
DHow2 - L6 Ant
RCIM 2008 - - ALaRI
RCIM 2008 - Modello Scheduling
RCIM 2008 - HLR
RCIM 2008 -- EHW
RCIM 2008 - Modello Generale
RCIM 2008 - Allocation Relocation
RCIM 2008 - - hArtes_Ferrara
RCIM 2008 - Janus
RCIM 2008 - Intro
DHow2 - L2
DHow2 - L1
RCW@DEI - Treasure hunt
RCW@DEI - ADL
RCW@DEI - Design Flow 4 SoPc
RCW@DEI - Real Needs And Limits
Ad

3rd 3DDRESD: DB

  • 1. Struttura Dati per Sistemi Embedded su FPGA D ynamic R econfigurability in E mbedded S ystems D esign Paolo Roberto Grassi: paolo.grassi @dresd.org
  • 2. Outline Introduzione Contesto del Lavoro Motivazione del Progetto Problematiche Sistemi Embedded su FPGA Descrizione delle FPGA FPGA e Board FPGA e Core Descrizione del Lavoro Struttura Dati Implementazione Relazioni tra gli oggetti del DB Conclusioni e Sviluppi Futuri
  • 3. Contesto del Lavoro L’idea di costruire una struttura dati nasce all’interno del progetto “DFDK” (DRESD Free Delevopment Kit) presso il gruppo DRESD DFDK è un progetto che conta di creare un tool per lo sviluppo di sistemi embedded su FPGA attraverso: Elevata automatizzazione del flusso di progetto Verifica progressiva del layout Completamento automatico del layout del sistema
  • 4. Motivazione del Lavoro La motivazione principale era quella di creare una struttura dati per DFDK Ben presto ci si è accorti che non era solo DFDK a necessitare di una struttura dati Tanti altri tools e algoritmi avevano bisogno di appoggiarsi su una struttura dati omogenea e unica al fine di potersi combinare più facilmente
  • 5. Problematiche Problematiche affini al mondo delle basi di dati: Descrizione degli oggetti presenti nel sistema Descrizione delle relazioni tra questi oggetti Eliminazione delle ridondanze di dati Garantire l’integrità dei dati In figura è possibile vedere come varie metodologie o algoritmi possono utilizzare la stessa struttura dati pur implementando delle sotto-strutture ad hoc per il problema da affrontare
  • 6. Descrizione delle FPGA Non volendosi addentrare nei dettagli, verrà specificata solo la terminologia utilizzata FPGA : termine autoesplicativo per indicare le FPGA GRID : questo termine, se legato alla descrizione delle FPGA, indica la suddivisione dell'FPGA in macroblocchi quali: processori, memorie, CLB,... RPM GRID : termine che indica una suddivisione a grana più ne di quella effettuata per le grid. Si usa per descrivere il collocamento dei blocchi funzionali contenuti nelle grid, quali le slice. PINOUT : termine che descrive le parti di I/O della FPGA verso il mondo esterno. Se a questo termine si affianca GLOBAL , ci si riferisce a tutta la piedinatura utilizzata per le alimentazioni o comunque riservate al dispositivo e quindi non utilizzabile dalla logica programmabile.
  • 7. FPGA e Board BOARD : termine autoesplicativo per identificare una specifica board PERIPHERAL : termine che identica le periferiche presenti sulla board, le loro caratteristiche e come sono connesse alla stessa GENERIC : termine che, se associato alle periferiche, indica i parametri cui sono settate le periferiche. Indicano, ad esempio, il baudrate, la larghezza degli ingressi, il tipo di configurazione usata,... Sono utili per conoscere come dovranno essere configurati i cores al ne di garantire il corretto funzionamento e utilizzo della periferica. PORT : termine che indica le interfacce di comunicazione della periferica. Oltre ad indicare quali sono, indica anche, rispetto alla board desiderata, come e dove sono collegate all'FPGA presente su di essa.
  • 8. FPGA e Core CORE : unità funzionale descritta in un linguaggio di programmazione hardware PORT : se associata ai core, intende un ingresso o una uscita del core GENERIC : parametri che possono essere usati all'interno dei core per una maggiore e più facile customizzazione di parti di esso.
  • 9. Struttura Dati BOARD_FPGA ( id_board , fpga_device , fpga_package ) BOARDS ( id , vendor, name, revision, short_description, long_description) CORE ( name , major_version , minor_version , description, category, role, interrupt, bandwith) CORE_CATEGORY ( name ) CORE_GENERICS ( core_name , core_major_version , core_minor_version , name , type, default_value) CORE_MASTER_SLAVE ( master_name , master_major_version , master_minor_version , slave_name , slave_major_version , slave_minor_version ) CORE_PORTS ( core_name , core_major_version , core_minor_version , name , direction, type, begin, end, default_value) CORE_VHDL ( core_name , core_major_version , core_minor_version , filename ) FPGA ( device , package , vendor, family) FPGA_GLOBAL_PINOUTS ( device , package , pin_name , pin_type) FPGA_GRID ( device , package , rpm_x , rpm_y , oset_x, oset_y, type) FPGA_PINOUTS ( device , package , rpm_x , rpm_y, bank, pin_name, pin_type) FPGA_RPM_GRID ( device , package , rpm_x , rpm_y , type) PERIPHERAL_GENERICS ( id_board , peripheral_name , generic_name , value) PERIPHERAL_PORTS ( id_board , peripheral_name , name , ucf_loc_string, ucf_iostandard_string, ucf_period_string, initial_val) PERIPHERALS ( id_board , name , description)
  • 10. Implementazione L’implementazione ha accoppiato un database relazionale con un linguaggio di programmazione ad oggetti Nello specifico sono stati utilizzati SQL e C++ Per poter sfruttare al meglio questi linguaggi, si è scelto di creare la struttura dati in SQL, gestendo facilmente tutti vincoli di integrità dei dati, e una serie di classi C++ che interrogano il DB e ne estraggono le informazioni Queste classi istanziano degli oggetti che contengono le informazioni richieste dal database
  • 11. Implementazione L’oggetto A copre la tabella A, l’oggetto B copre la tabella B e qualsiasi interazione tra le due tabelle deve passare per forza tra gli oggetti
  • 12. Relazioni tra gli Oggetti del DB Gli oggetti c++ hanno la stessa struttura del database e servono solo a disaccoppiare l’interfaccia utente dal reale salvataggio dei dati
  • 13. Conclusioni e Sviluppi Futuri Il lavoro ha portato alla realizzazione di una struttura dati per progettazione di sistemi embedded su FGPA. Non si è solo fermato alla implementazione reale della struttura dati nel linguaggio scelto, ma ha dato il via ad un flusso di lavoro legato alla descrizione delle entità distinte che, se composte, formeranno il sistema embedded. Vista l'efficacia del lavoro, si sta pensando di utilizzare tale struttura per altri progetti oltre DFDK. Questa estensione avrà sicuramente bisogno di essere analizzata con cura, affrontandone razionalmente tutti gli aspetti di crescita.