docs: bring datasheet/ into the main repo under hardware/v2/docs
Was a separate, untracked directory (DataSheet/) outside the repo. Renamed to lowercase and moved in as hardware/v2/docs/datasheet/, with its own .gitignore for LaTeX build byproducts (compiled PDFs stay tracked, .aux/.log/.toc/etc do not). Now versioned and shares this repo's own remote instead of living untracked on disk. Content: IT+EN LaTeX chapter sources, reference manufacturer PDFs, and compiled datasheet PDFs including the 2026-09-07 SDRAM upgrade addendum (AS4C32M16SB-7BIN part/pinout/timing) in the v2-en chapters. Note: hardware/v2/docs/DatasheetLatex/ (and the v1 sibling) is a separate, already-tracked, differently-structured LaTeX document that predates this move -- left untouched, not merged, since its chapter set and content differ and merging was not requested. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
\chapter{Panoramica del sistema}
|
||||
\label{ch:overview}
|
||||
|
||||
\section{Obiettivo del progetto}
|
||||
FPGA-Neural implementa un \textbf{Neural Network Engine riusabile in hardware FPGA}.
|
||||
L'insieme è composto da tre elementi: l'FPGA, che è il vero acceleratore; una RAM
|
||||
dedicata fisicamente associata all'FPGA e non condivisa con l'host; e un'interfaccia
|
||||
host indipendente dal sistema operativo, inizialmente SPI (con possibile estensione
|
||||
futura a Dual~SPI).
|
||||
|
||||
Il principio fondante è la separazione fra chi \emph{esegue} il calcolo e chi lo
|
||||
\emph{usa}: il calcolo della rete neurale avviene interamente dentro l'FPGA, mentre
|
||||
il sistema host fornisce solo configurazione, parametri di rete, dati di ingresso,
|
||||
controllo e lettura dei risultati. L'host non fa parte del datapath computazionale.
|
||||
Sistemi host possibili includono SoC Linux, sistemi tipo Raspberry~Pi, ESP32,
|
||||
microcontrollori e PC di sviluppo: la stessa architettura di engine deve poter essere
|
||||
usata in sistemi completamente diversi.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[font=\footnotesize,node distance=8mm]
|
||||
\node[fnblockD,minimum width=42mm,minimum height=20mm] (host){\textbf{HOST}\\[2pt]
|
||||
{\scriptsize Configurazione}\\{\scriptsize Addestramento}\\{\scriptsize Controllo}};
|
||||
\node[fnblockT,below=14mm of host,minimum width=42mm,minimum height=20mm] (fpga)
|
||||
{\textbf{FPGA}\\[2pt]{\scriptsize Neural Network Engine}\\{\scriptsize Compute / Control}};
|
||||
\node[fnblock,below=14mm of fpga,minimum width=42mm,minimum height=13mm] (ram)
|
||||
{\textbf{RAM dedicata}\\{\scriptsize pesi / bias / buffer}};
|
||||
\draw[fnbus] (host) -- node[fnlbl,right]{SPI / Dual SPI} (fpga);
|
||||
\draw[fnbus] (fpga) -- node[fnlbl,right]{bus parallelo} (ram);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\section{Configurazione hardware contro configurazione di rete}
|
||||
Il progetto distingue con precisione fra l'\textbf{architettura hardware}
|
||||
dell'acceleratore e i \textbf{parametri della rete neurale}.
|
||||
|
||||
L'architettura fisica dell'engine è definita al momento della sintesi e
|
||||
dell'implementazione dell'FPGA. I parametri hardware tipici sono \code{N\_INPUTS},
|
||||
\code{N\_NEURONS}, \code{N\_LAYERS}, \code{PARALLEL}, \code{DATA\_WIDTH},
|
||||
\code{ACC\_WIDTH}: sono parametri Verilog risolti in fase di sintesi e determinano il
|
||||
datapath contenuto nel bitstream. I parametri della rete --- pesi, bias, parametri di
|
||||
attivazione e di quantizzazione, costanti specifiche --- vengono invece caricati a
|
||||
runtime attraverso l'interfaccia host e memorizzati nella RAM associata all'FPGA.
|
||||
|
||||
\begin{fnnote}[Principio architetturale centrale]
|
||||
Una build fissa il \emph{soffitto} della macchina (numero massimo di layer, larghezza
|
||||
massima, \code{PARALLEL}); l'host configura la rete \emph{reale} --- numero di layer,
|
||||
larghezza ingressi/uscite per-layer, attivazione per-layer e parametri addestrati ---
|
||||
interamente a runtime, via SPI, nella memoria locale dell'FPGA. Un solo bitstream
|
||||
serve qualunque topologia fino a quel soffitto.
|
||||
\end{fnnote}
|
||||
|
||||
\section{Boot e inizializzazione}
|
||||
L'FPGA viene configurato all'accensione tramite il consueto meccanismo di
|
||||
configurazione (caricamento del bitstream da flash SPI). Il bitstream definisce
|
||||
l'architettura hardware dell'engine; l'host non costruisce dinamicamente il datapath
|
||||
durante il funzionamento normale, ma configura i dati di rete su cui il datapath già
|
||||
esistente opera.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[font=\scriptsize,node distance=4.5mm,start chain=going below,
|
||||
every node/.style={on chain}]
|
||||
\node[fnblockA,minimum width=60mm](p){Power-on};
|
||||
\node[fnblock,minimum width=60mm]{Configurazione FPGA (bitstream da flash)};
|
||||
\node[fnblockT,minimum width=60mm]{Neural Network Engine disponibile};
|
||||
\node[fnblock,minimum width=60mm]{Inizializzazione host (SPI)};
|
||||
\node[fnblock,minimum width=60mm]{Caricamento parametri di rete / pesi / bias};
|
||||
\node[fnblockD,minimum width=60mm]{Engine pronto};
|
||||
\begin{scope}[every path/.style={fnarrow}]
|
||||
\foreach \a/\b in {1/2,2/3,3/4,4/5,5/6}{}
|
||||
\end{scope}
|
||||
\foreach \i [count=\j from 2] in {1,...,5}{
|
||||
\draw[fnarrow] (chain-\i) -- (chain-\j);}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\section{Addestramento e inferenza}
|
||||
Addestramento e inferenza sono concettualmente separati. La prima implementazione non
|
||||
richiede che l'FPGA esegua l'addestramento: i pesi possono essere calcolati
|
||||
esternamente (PC/Linux/altro host) e trasferiti via SPI nella RAM dell'FPGA, che poi
|
||||
esegue l'inferenza. Questo riduce drasticamente la complessità dell'hardware iniziale,
|
||||
senza precludere una futura implementazione di training assistito o interamente
|
||||
hardware (Fase~8 della roadmap, cap.~\ref{ch:roadmap}). Durante l'inferenza l'host
|
||||
fornisce solo i dati di ingresso e recupera il risultato, ottenendo calcolo
|
||||
deterministico, carico ridotto sull'host, parallelismo hardware, latenza prevedibile e
|
||||
indipendenza dall'architettura della CPU host.
|
||||
|
||||
\section{Filosofia di progetto e riuso}
|
||||
Il progetto va inteso come una \emph{piattaforma di accelerazione neurale FPGA
|
||||
riusabile} più che come una singola rete. L'applicazione determina dimensione degli
|
||||
ingressi, topologia, numero di layer e neuroni, parallelismo, precisione numerica,
|
||||
funzioni di attivazione, requisiti di memoria e prestazioni; il processo di
|
||||
generazione hardware produce l'implementazione FPGA corrispondente. La stessa
|
||||
architettura HDL rimane concettualmente invariata mentre i parametri di sintesi
|
||||
generano implementazioni appropriate ai diversi target applicativi.
|
||||
Reference in New Issue
Block a user