FPGA, primi passi


11

Bene, questa è una continuazione della mia domanda su FPGA qui .

Alla fine ho selezionato un Digilent Atlys con un FPGA Spartan 6, non ho alcuna esperienza precedente di FPGA anche se ho lavorato un po 'con i microcontroller.

Ho trascorso gli ultimi giorni a leggere le schede tecniche dell'FPGA e penso che sarebbe una buona scelta iniziare con Verilog. Non sono riuscito a trovare alcun esempio di codice e anche le schede tecniche non sono adatte ai principianti.

Voglio fare un po 'di mano su programmazione, simulazione, sintesi ora e questo è quello che voglio fare

  1. Genera una frequenza dispari, diciamo 54Mhz dall'FPGA (funziona su un clock da 100Mhz) e instradalo verso uno dei pin. Probabilmente avrei dovuto usare DCM o PLL per questo, ma non hai idea di come iniziare qui?

  2. Implementare una sorta di I2C read write dall'FPGA.

Quello che sto cercando è un riferimento, possibilmente online o un libro che mi dia esempi di codice e descrizione di ciascuno dei componenti hardware disponibili all'interno dell'FPGA, come DCM, slice, clb ecc.

Immagino che dovrebbe farmi iniziare nel mondo di FPGA.

Risposte:


13

Esempi di codice

Passa su OpenCores e troverai decine di progetti open source. Ce ne sono molti scritti in Verilog e coprono la gamma dai dispositivi I / O ai processori.

Inoltre, non dimenticare le numerose note applicative disponibili da Xilinx. Sono molto utili con i propri dispositivi.

Flusso di progettazione

Prendi un libro o due sul flusso di progettazione in modo da ottenere una panoramica dei passaggi coinvolti nella progettazione FPGA. In sintesi, coinvolgeranno:

  1. Design entry - nel tuo caso, Verilog.
  2. Simulazione funzionale - utilizzando vari strumenti.
  3. Sintesi - nel tuo caso, usando gli strumenti XE ISE di Xilinx.
  4. Simulazione: per verificare il progetto post-sintesi perché alcuni aspetti di Verilog non sono sintetizzabili.
  5. Posiziona e instrada - utilizzando gli strumenti Xilinx ISE.
  6. Implementazione: download del design sull'FPGA.
  7. Testing.

Componenti FPGA

Per quanto riguarda l'uso dei componenti FPGA, ci sono diversi modi per usarli. Supponendo che si stia utilizzando una voce di progettazione Verilog, è possibile inferire o creare un'istanza dei diversi componenti.

L'inferenza generalmente implica che lo strumento di sintesi scelga i componenti migliori da usare in base alla funzionalità richiesta. Il miglior esempio di questo sarebbe progettare un sommatore.

Facendo q <= a + bo q = a + bpuoi inferire un sommatore. Entrambi inferiranno il sommatore, ma c'è una differenza quando si utilizza la sintassi di blocco / non blocco.

L'istanza generalmente implica la chiamata del componente esatto della libreria nel codice. Alcuni componenti non possono essere facilmente dedotti nel codice, come DCM. È possibile utilizzare gli strumenti e gli esempi ISE per ulteriori informazioni al riguardo.

L'elenco effettivo dei componenti stessi è fornito da Xilinx nella Guida alle librerie .

Protip

Il modo migliore per imparare questo è in realtà sperimentare brevi frammenti di codice ed eseguirli attraverso la sintesi ISE per vedere cosa sputa. Ci sono anche molti esempi nel set di strumenti ISE stesso.


5

I riferimenti assoluti saranno le guide dell'utente di Spartan 6 . Ad esempio, la Guida alle risorse di clock (UG382) illustra come configurare i DCM. Per esempi di come appare il codice attuale, ISE ne ha un database. Apri Modelli di lingua (la lampadina nella barra degli strumenti), quindi cerca nella lingua (VHDL o Verilog) -> Istantanea primitiva del dispositivo -> famiglia di chip (Spartan-6) -> Componenti dell'orologio.

I dettagli specifici della tua scheda sono disponibili da Digilent, in particolare ti consigliamo l'UCF (che nomina tutti gli IO) e il manuale di riferimento (che spiega i circuiti periferici).

La struttura generale della tua lingua, incluso come creare un componente, è probabilmente meglio presa da libri ed esempi. Non ho usato Verilog, quindi non ho suggerimenti specifici. Tuttavia, i modelli includono anche frammenti di vari contratti generici.


Sei specializzato in VHDL? Per quanto riguarda l'UCF, perché sarebbe importante lavorare con la scheda Digilent?
Kevin Boyd,

1
Non mi specializzo come tale - non ho studiato Verilog. L'UCF è il file che descrive a quali pin si connettono le porte, nonché le esigenze di clock. Senza di essa, i pin vengono assegnati in modo casuale, il che non corrisponde alla scheda esistente.
Yann Vernier,

Ho capito la parte relativa all'assegnazione dei pin per quanto riguarda le esigenze di clock?
Kevin Boyd,

1
I vincoli temporali riguardano cose come la frequenza di clock, i tempi di configurazione e di attesa. Otterrai comunque le informazioni nell'analisi dei tempi, ma specificando i requisiti nel file dei vincoli è possibile rilevare gli strumenti quando falliscono e, eventualmente, fare di più per soddisfare le tue esigenze quando è al limite.
Yann Vernier,

1

Per l'orologio si utilizza il megacore DLL / PLL.


Lo spartano 6 ha DCM e PLL, non ancora trovato DLL. Dopo aver cercato nei forum ho scoperto che Xilinx ha uno strumento chiamato Core Generator che può essere configurato per generare risorse di clock.
Kevin Boyd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.