linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] Nuovi Arduini

Diego Guella diego.guella a sircomtech.com
Mer 23 Maggio 2018 11:07:20 UTC
Il 23/05/2018 09:39, Enrico Colombini ha scritto:
> On 23-May-18 08:40, Diego Guella wrote:
>> Ricordati di queste se ti interessano le FPGA:
>>
>> https://www.xilinx.com/products/boards-and-kits/arty.html
>> https://www.xilinx.com/products/boards-and-kits/1-elhae0.html
>>
>> Sono in vendita già da parecchio tempo, e ce ne sono altre con prezzi 
>> sotto i 100$
>
> Un paio d'anni fa mi sono già studiato un po' di VHDL con questo :
>
> http://papilio.cc/index.php?n=Papilio.PapilioOne
Vedo che mettono molto l'accento "Open Source" su questa board, ma credo 
questo ambito si riferisca solo ai file del progetto.
Ad esempio, rendono disponibile un file UCF, che è un file da dare in 
pasto ai tool di Xilinx, i quali però non sono open source.
E quel file non sarà "digerito" dai tool che gestiscono il progetto per 
una FPGA Altera/Intel, come quella sulla board Arduino.
I file di layout della board, forse invece potrebbero essere abbastanza 
"condivisibili" tra tool diversi (ma non conosco i software CAD open 
source).

Da questo punto di vista, tutte le evaluation board non sono molto 
differenti e sono già allo stesso livello di "open-source ready" (e per 
forza, altrimenti non ci potresti fare granchè, nemmeno valutarne 
l'acquisto!).

Tu cosa usavi per progettare su quella board? I tool di Xilinx (ISE, 
EDK, ecc..) o altro?


> Del nuovo Arduino mi interessa vedere il sistema di costruzione a 
> moduli, accessibile (dicono) anche ai non elettronici.
>
> E soprattutto vedere se si possano anche creare nuovi moduli.
Non so se tu abbia già lavorato con la toolchain di Xilinx, ma quella ti 
permette (con Xilinx Platform Studio, XPS, incluso in EDK) di gestire il 
tuo progetto in un modo abbastanza familiare (alla "PC"), incentrato sul 
soft-processor MicroBlaze (è un processore che viene realizzato 
all'interno dell'FPGA, creando registri, ALU, e tutto il resto usandone 
la logica interna) e un bus di sistema principale, al quale andrai a 
collegare tutte le tue periferiche che faranno il "lavoro sporco" in HDL 
(che è il linguaggio con cui si programma l'hardware: tra i più usati 
VHDL, Verilog, e ora SystemVerilog, SystemC, ...).
XPS è in realtà simile a un IDE, che lancia di volta in volta altri tool 
che stanno sotto (infatti, su Winzoz viene installato anche Cygwin).
Con XPS puoi aggiungere periferiche al sistema (drag & drop), collegarle 
sul bus (un click), assegnare loro un indirizzo, e poi gestirle dal 
MicroBlaze programmando in C.
Poi ti puoi creare i tuoi nuovi moduli/periferiche, e gestirli con la 
stessa interfaccia.
Molti moduli sono già pronti, e utilizzabili liberamente a patto che su 
resti su Xilinx (incluso il Microblaze).
Il compilatore per il Microblaze (che viene gestito dal tool) si chiama 
"mb-gcc", direi che ricorda qualcosa no? ;-)
Puoi anche far girare Linux sul Microblaze, anche se io l'ho sempre 
usato senza OS. Al giorno d'oggi non dovrebbe essere troppo difficile.

Quindi diciamo che, usando le periferiche già pronte, anche per un non 
elettronico, ma informatico, è abbastanza semplice da capire e usare.
Il problema è/era nell'alto costo del tool: Xilinx Platform Studio costa 
500$ di licenza da solo.
Il bello è, che con queste "nuove" schedine hai il tool incluso nel 
prezzo, anche se lockato sul modello di FPGA specifico della board che 
hai acquistato!


Il nuovo Arduino, integrando una FPGA Intel/Altera, dovrà per forza di 
cose legarsi ai loro tool, e quindi non sarai "libero" di passare a 
Xilinx, o Lattice, ecc...
Oppure avranno inventato un IDE loro, open-source, e con magari una 
libreria di moduli/periferiche già pronti?


> Purtroppo per gli FPGA non mi pare esista uno strumento open source 
> paragonabile alla toolchain gcc e bisogna ogni volta dipendere dal 
> tool dello specifico costruttore con relative licenze, attivazioni, 
> incompatibilità, obsolescenze programmate, ecc.
Già.
Qui non è come con GCC che compili da C e finisci direttamente in codice 
macchina x86, ma c'è un altro passaggio di mezzo, del quale non credo ci 
libereremo presto: il passaggio da HDL a RTL (per i non addetti ai 
lavori: RTL è un linguaggio che descrive i collegamenti tra elementi 
logici digitali semplici, come porte logiche, flip-flop, ecc), e da RTL 
al bitstream che configura tutta la logica interna dell'FPGA (questo è 
simile al "binario eseguibile" che noi diamo in pasto ai nostri x86, e 
viene caricato dall'FPGA all'accensione da una memoria non volatile).
I tool del produttore possono fare la sintesi HDL -> RTL (sintesi si può 
tradurre come "compilazione" per i non addetti), oppure si possono usare 
altri tool più costosi ed evoluti.
Ma la parte finale, il Place&Route e configurazione delle celle logiche 
dell'FPGA, deve ancora essere fatta da un tool del produttore.
Oltretutto, se usi XPS con i moduli/periferiche comodi che ti danno 
loro, questi sono sempre su licenza d'uso gratuita, a patto che tu usi 
il tutto su un device Xilinx.
Se ti realizzi tutto da solo in HDL, potresti passare a un altro 
produttore, ma appunto perderesti la comodità dei "blocchetti a moduli" 
e la facilità d'uso anche per un non-elettronico.

Per quanto riguarda le "obsolescenze programmate", non credo facciano 
parte del mondo degli FPGA: ad esempio, la Spartan-3 presente sulla 
board che hai citato è ancora supportata, forse non più venduta così 
com'è, ma sicuramente viene venduta nelle "nuove" versioni Spartan-3E e 
Spartan-3A.
Si tratta comunque di periferiche vecchie ben più di 10 anni, che in 
alcune incarnazioni finiscono su satelliti, aerei, ecc.: tutte cose che 
hanno una vita decisamente lunga.


> Sono curioso di vedere che approccio abbiano scelto e se ciò potrebbe 
> davvero 'democratizzare' lo sviluppo per FPGA come dicono.
Democratizzarlo nel senso di farlo conoscere alle masse, speriamo!
Ma arrivare al livello di avere tutta una toolchain open-source... Credo 
che siamo ancora mooolto lontani, di decenni a questo risultato.
Primo, tutti i produttori dovrebbero rendere disponibile dei file che 
descrivono l'architettura interna dei loro FPGA, con licenze di utilizzo 
libere.
Poi, si dovrebbe sviluppare una community per, appunto, realizzare 
questi tool open-source indipendenti: si tratta di valanghe di ore di 
ingegneri elettronici (e non... il Place & Route va a toccare problemi 
matematici molto complessi) a lavoro.
Penso sia più vicino a un'utopia, ma non si sa mai!


Ciao,
Diego

P.S.: Ho cercato anch'io di descrivere meglio alcune parti. Per te 
saranno ovvie, ma così rendiamo il nostro discorso un po' più 
comprensibile anche ai non-elettronici ;-)



Maggiori informazioni sulla lista Lug