Simulazione del design FPGA senza avere l'hardware reale


9

Sono nuovo di FPGA e attualmente sto prendendo la classe HDL (in particolare Verilog). Ho una conoscenza sufficiente della progettazione digitale come circuiti combinatori e sequenziali.

Voglio creare un progetto simile a quello mostrato in questo video di YouTube .

So anche che Xilinx ISE può elaborare segnali logici e simulare forme d'onda. Ha funzionalità extra come ottenere i segnali di ingresso tramite USB, fotocamera, ecc. E emetterli sul tuo computer.

È possibile eseguire questo progetto (come una simulazione al computer) senza acquistare una vera scheda FPGA? Voglio dire, posso costruire, programmare ed eseguire quel progetto sul mio computer, e collegare la mia fotocamera tramite USB, quindi lasciare che i segnali video in arrivo vengano elaborati da simulatori HDL come Xilinx ISE, ecc. (Senza acquistare davvero una scheda FPGA e sintetizza il tuo progetto lì, al momento non ho il budget per averne uno)

(Quello che intendo davvero è interfacciare il design HDLl con fonti del mondo reale, codice C, ecc.)


5
Non so se puoi farlo con il simulatore di Xilinx, ma qualcosa come Icarus Verilog lascerà la tua interfaccia di simulazione al codice C che potrebbe ottenere dati da fonti del mondo reale; tuttavia è probabile che gli ordini di grandezza vengano eseguiti più lentamente rispetto al tempo reale, quindi l'elaborazione di una sorgente video live sarebbe difficile.
Chris Stratton,

1
oh, ecco la frase che
sto

2
@vvavepacket ha votato i commenti / post per ringraziare il commentatore / poster.
Chetan Bhargava,

1
L'FPGA nel video sembra Altera DE2. È compreso tra 200 e 600 USD a seconda della licenza e del chip. Ci sono simulatori su csc.kth.se/~emille/niisim
Niklas

2
Terasic DE0-nano è all'ordine di $ 80 e può interfacciarsi con fotocamere e LCD; in realtà hanno dimostrazioni di ciò sul loro sito web. Non affiliato con loro, ma il DE0-nano ha un FPGA piuttosto carino su una scheda a prezzi decenti. Ho sempre odiato il costo della maggior parte delle schede di sviluppo.
akohlsmith,

Risposte:


5

Gli strumenti Xilinx non possono interfacciarsi in tempo reale per quanto ne so, né ModelSim (utilizzato dall'IDE Libero di Actel)
non conosco i simulatori open source, ci sono alcuni progetti piuttosto esotici là fuori quindi è possibile che ci sia qualcosa che potrebbe fare questo.

Tuttavia, questa potrebbe essere una risposta che non hai chiesto (lo eliminerò se non è utile), ma prenderei in considerazione la costruzione della tua scheda FPGA per fare questo o almeno iniziare lungo la strada verso di essa. Ho inciso la mia prima scheda FPGA e sebbene fosse molto semplice (la scheda non è il processo ;-)), mi ha insegnato moltissimo abbastanza rapidamente.

Professionisti:

  • Economico
  • Fai un salto nel profondo e scopri tutto ciò che devi sapere sulle considerazioni sull'hardware. Ti obbliga a leggere prima la maggior parte dei fogli di dati e a scrivere il tuo codice di avviamento, che IMHO è spesso migliore dell'approccio di apprendimento e plug and play della scheda di sviluppo.
  • Metti alla lavagna solo quello che ti serve.
  • Ti spingi oltre verso il tuo obiettivo di un vero design funzionante con forse lo stesso sforzo / ricerca di capire come simulare tutto in tempo reale.

Contro:

  • È ancora necessario acquistare un programmatore, sebbene su eBay siano disponibili versioni economiche dei programmatori Xilinx / Altera.
  • Se la progettazione e i problemi di integrità PCB / segnale non sono qualcosa su cui desideri concentrarti, allora potresti non essere interessato a gran parte delle conoscenze da acquisire facendolo in questo modo.

Capisco che l'attacco alla tua scheda probabilmente non è necessario, l'ho fatto solo perché avevo lì gli FPGA, era impaziente e non volevo aspettare 2 settimane prima che arrivasse un PCB. Ci sono offerte estremamente economiche qui per schede a 2 strati, che farebbero almeno per eseguire il tuo progetto (possibilmente a velocità più basse di quanto eventualmente desiderato - normalmente il numero minimo di strati per un design FPGA ad alta velocità sarebbe 4, ma questi sono molto più costoso)

In ogni caso, Spirit Circuits fa un accordo PCB completamente libero a 2 strati "bare bones" (uno al mese, un disegno, nessuna maschera o serigrafia) che è utile per un design unico.
Inoltre, per schede prototipo economiche a 2 e 4 livelli, ITead e Seed Studio costano solo $ 10 per 10 schede (o forse 5 a quel prezzo).


prendere molto interessante questo! e incoraggiante anche
davidbak,

6

Il webpack ISE Xilinx standard (la versione gratuita che è possibile scaricare da xilinx.com) include un simulatore chiamato iSim. Non è un grande simulatore, ma è perfettamente funzionante e il prezzo è giusto.

Anche se non ho usato gli strumenti Altera, mi sorprenderebbe se non fosse incluso un simulatore.

Ma ... Devi sapere cosa può e non può fare un simulatore. Per i principianti, non può simulare un FPGA in esecuzione alla massima velocità. In effetti, sono abbastanza lenti. A seconda della complessità dell'FPGA da simulare, non mi sorprenderebbe vederlo impiegare 1 minuto per simulare 1 ms di "tempo simulato". Se si desidera simulare un'ora di "tempo simulato", occorrerebbero 1000 ore di tempo reale.

Inoltre, un FPGA simulato non può comunicare direttamente con cose come la tua porta USB. L'FPGA simulato comunica con un "banco di prova". Il testbench è un blocco di codice VHDL o Verilog che alimenta gli input dell'FPGA (o parti dell'FPGA) e verifica l'output dell'FPGA. Puoi fare alcune cose piuttosto complesse in un banco di prova, come usare numeri in virgola mobile, leggere e scrivere file ed eseguire logiche impossibili da sintetizzare.


1
Altera ha edizioni gratuite di Quartus che includono ModelSim. La versione gratuita di ModelSim limita la velocità di simulazione e la versione gratuita di Quartus limita il numero di core della CPU utilizzati per sintetizzare, ma per il resto sono perfettamente funzionanti.
akohlsmith,

1
Altera ModelSim non supporta la co-simulazione di VHDL e Verilog nello stesso design.
shuckc,

3

Non conosco alcun simulatore che si interfaccia direttamente ai segnali che arrivano su una porta USB (o altro hardware).

Almeno in teoria, sarebbe possibile scrivere alcuni software che prendano i segnali in arrivo su una porta e tradurli in un file testbench che un simulatore potrebbe elaborare. Sfortunatamente, non conosco alcun software esistente per farlo, e scriverlo da solo sarebbe decisamente non banale.


allora il modo migliore è quello di ottenere una scheda
fpga

In realtà non è necessario passare attraverso un file testbench se si dispone di un simulatore che supporta un'interfaccia per codificare in modo personalizzato un tale VPI, tuttavia, dato che il simulatore eseguirà ordini di grandezza più lenti del tempo reale, potrebbe essere più facile gestire con i dati acquisiti in un file che può essere letto alla velocità della simulazione.
Chris Stratton,

@ChrisStratton Sono interessato all'idea dei dati acquisiti in un file. Qualche risorsa per quello? Grazie
WantIt,

Dipenderebbe interamente dalle periferiche che si desidera utilizzare come origini dati.
Chris Stratton,

3

Dovrai utilizzare interfacce di co-simulazione (DPI, VPI, VHPI, FLI) che ti consentano di scrivere codice che si agganci nel simulatore e quindi di collegare tra RTL in esecuzione in simulazione e hardware reale sulla tua macchina.

I problemi significativi che incontrerai (a parte le interfacce scarsamente documentate) sono legati alla sincronizzazione e ai tempi. L'esecuzione di RTL in simulazione è molto più lenta dell'hardware reale: sarà necessario essere in grado di scorrere le interazioni con l'interfaccia esterna per adattarsi alla velocità di simulazione. Ad alcune interfacce hardware non piacerà! Ad esempio, se si utilizza TCP, potrebbe essere necessario spostare i timer nello stack del kernel per evitare ritrasmissioni spurie, ecc.

Icarus supporta VPI ed è gratuito in modo da poter sperimentare senza spendere soldi per le licenze. Potresti voler esaminare i framework esistenti che eseguono alcuni dei carichi pesanti di co-simulazione e forniscono un'astrazione più pulita al simulatore. Uno di questi framework è Cocotb , una libreria open source che fornisce un'interfaccia Python al simulatore. ( Dichiarazione di non responsabilità: sono uno degli sviluppatori di cocotb.)

Un esempio che può essere rilevante: ieri ho messo a dura prova RTL per rispondere alle richieste di ping e creato un banco di prova che apre un'interfaccia TUN. È quindi possibile eseguire il ping dell'interfaccia utilizzando il pingcomando e RTL in esecuzione in simulazione riceve il ping e risponde. L'intero banco di prova ha meno di 50 righe di Python! Il codice sorgente per questo esempio è su Github e funziona su Icarus sotto Linux.


0

Nella stragrande maggioranza dei casi, tutto ciò che fai nella simulazione rimane nella simulazione. Non è possibile accedere all'hardware reale da esso: è necessario disporre di un modello di simulazione dell'hardware reale.

Tuttavia, se sei disposto a impegnarti, la maggior parte dei simulatori ha un'interfaccia con codice arbitrario. In Verilog è un'interfaccia abbastanza standard per come la capisco, quindi il lato di Verilog porterà tra i simulatori. In VHDL-land, esiste un modo standard di farlo, ma almeno uno dei grandi venditori ha il suo modo di farlo!

Ricorda inoltre che l'interfaccia in tempo reale (ovvero alla velocità con cui l'FPGA lo farebbe) è molto improbabile - e il resto della tua simulazione (HDL) non funzionerà neanche in tempo reale. Come notato nei commenti, l'elaborazione simulata in tempo reale del video non è fattibile in questo modo.

Personalmente, non ho mai avuto bisogno di provare questo, trovo che sono più produttivi scrivere modelli dell'hardware ed eseguire tutto in VHDL.

Ma non trascurare i vantaggi di fare la simulazione: è un modo molto più rapido per scoprire se le cose funzionano (compilazioni richiedono pochi secondi) quindi costruire flussi di bit (compilazioni richiedono decine di minuti o ore) e provarli nell'hardware.


Falso, vedere i commenti alla domanda.
Chris Stratton,

OK, avrei dovuto essere più chiaro - Stavo limitando la mia risposta al livello "Sono nuovo a FPGA" :) Risposta aggiornata
Martin Thompson,
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.