Strumenti Utente

Strumenti Sito


informatica:ae:verilogpag

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:ae:verilogpag [18/10/2013 alle 05:54 (12 anni fa)] Marco Daneluttoinformatica:ae:verilogpag [03/01/2019 alle 15:47 (7 anni fa)] (versione attuale) – [Materiale disponibile online] Marco Danelutto
Linea 3: Linea 3:
 ==== Materiale disponibile online ==== ==== Materiale disponibile online ====
  
-  * [[http://backus.di.unipi.it/~marcod/AE1011/verilog_draft_1.pdf|Pdf]] delle note sull'utilizzo di Verilog per il corso di architetture (Danelutto 2010. Contiene: Cap. 1: Installazione strumenti. Cap. 2: riferimenti Verilog. Cap. 3: Reti combinatorie. Cap. 4: Automi e Reti sequenziali. Cap. 5: Reti Sequenziali realizzare con componenti standard. Bibliografia (parziale)). (versione con il listato del test rdy corretto {{:informatica:ae:dispa_rdy.pdf|qui}}) +^ Autore ^ Titolo ^ Year ^ Link ^  
-  [[http://www.csd.uoc.gr/~hy220/2009f/lectures/verilog-notes/VerilogIntroduction.pdf|Introduzione]] al Verilog (Peter M. Nyasulu and J. Knight, 2003+| MDanelutto Note Verilog | 2015 | {{:informatica:ae:verilog2.pdf|Pdf}} | 
-  * [[http://www.ece.ucsb.edu/courses/ECE152/152A_F04Rodoplu/LabReferenceDocs/VerilogTutorial.pdf|Tutorial]] su Verilog (compatto, con esempi) (Deepak Kumar Tala, 2003)  +| Peter M. Nyasulu and J. Knight | Introduction to Verilog | 2005 | [[http://www.csd.uoc.gr/~hy220/2009f/lectures/verilog-notes/VerilogIntroduction.pdf|Pdf]] 
-  [[http://www.stanford.edu/class/ee183/handouts_win2003/VerilogQuickRef.pdf|Quick reference card]] Verilog (Rajeev Madhavan, 1995) +| Deepak Kumar Tala | Verilog tutorial | 2003[[http://www.ece.umd.edu/class/enee359a/verilog_tutorial.pdf|Pdf]]  
-  [[http://www.cs.columbia.edu/~sedwards/classes/2002/w4995-02/verilog.9up.pdf|Slides]] di un corso Verilog della Columbia University (Stephen AEdwards, 2002)+| Rajeev Madhavan | Verilog quick reference | 1995 | [[http://www.stanford.edu/class/ee183/handouts_win2003/VerilogQuickRef.pdf|Pdf]]  
 +| Stephen A. Edwards | Slides of a Verilog course | 2002 | [[http://www.cs.columbia.edu/~sedwards/classes/2002/w4995-02/verilog.9up.pdf|Pdf]] 
 +| Stuart Sutherland | Verilog HDL Quick Reference Guide | 2001 | [[http://sutherland-hdl.com/pdfs/verilog_2001_ref_guide.pdf|PDF]] |  
  
 Una buona trattazione della modellazione di reti combinatorie e sequenziali si trova anche nel Capitolo 4 del libro "Digital Design and Computer Architecture" di D. M. Harris e S. L. Harris, edito da Morgan Kaupfman.  Una buona trattazione della modellazione di reti combinatorie e sequenziali si trova anche nel Capitolo 4 del libro "Digital Design and Computer Architecture" di D. M. Harris e S. L. Harris, edito da Morgan Kaupfman. 
  
 +La quarta edizione (italiana, corrisponde alla 5a edizione inglese) dell'Hennessy Patterson (Struttura e progetto dei calcolatori) ha un'appendice (Appendix B: The Basics of Logic Design) che può essere considerata come introduzione all'utilizzo di Verilog per la modellazione dei componenti che vediamo nel corso di AE
 +
 +==== Progetti Verilog A.A. 2018-19 (Corso A) ====
 +
 +Questo {{ :informatica:ae:progettoverilog1819.pdf |documento PDF}} contiene i progetti validi per l'anno accademico 2018-19. 
  
 ==== Software utilizzato per il corso ==== ==== Software utilizzato per il corso ====
Linea 26: Linea 34:
 Segui [[utilizzo_verilog|questo link]] per le istruzioni per l'utilizzo dei tool Verilog. Segui [[utilizzo_verilog|questo link]] per le istruzioni per l'utilizzo dei tool Verilog.
  
-=== Immagine Virtual Box === +     
-Potete scaricare un'immagine VirtualBox con Ubuntu 12.04 con tutti gli strumenti già installati (iverilog e gtkwave) da [[http://backus.di.unipi.it/~marcod/AE1213/iverliog-ubuntu.tgz|questo link]] (attenzione sono 1.7G!)+===== Reti combinatorie in Verilog =====
  
-Per utilizzare l'immagine, scompattatela, quindi lanciate Virtual Box e importatela. Virtual Box può essere installata seguendo le indicazione dall'[[https://www.virtualbox.org/|home page]] VirtualBox.+Segui [[reti_combinatorie|questo link]] per le istruzioni su come implementare reti combinatorie in Verilog.
  
-=== Utilizzo presso il centro di calcolo (cli.di.unipi.it) ===  +reti combinatorie realizzate con {{https://www.eecis.udel.edu/~elias/verilog/verilog_manuals/chap_7.pdf|primitive}} 
-Al momento il compilatore Verilog (iverilog) e il simulatore (vvp) sono disponibili utilizzando nel PATH la directory /home/m/marcod/verilog/bin, o alternativamente utilizzando il path completo dei comandi+===== Reti sequenziali in Verilog =====
  
-  /home/m/marcod/verilog/bin/iverilog  +Segui [[reti_sequenziali|questo link]] per le istruzioni su come implementare reti sequenziali in Verilog.
-  /home/m/marcod/verilog/bin/vvp +
-   +
-oppure settando opportunamente il PATH nella shell+
  
-  export PATH=$PATH:/home/m/marcod/verilog/bin                (per la bash) +[[rdy2.vl|Versione corretta]] del sincronizzatore a transizione di livelli in ingresso
-  setenv PATH $PATH:/home/m/marcod/verilog/bin                (per la tcsh) +
-   +
-Non è al momento disponibile gtkwave+
  
-=== Installazione del pacchetto sul proprio computer=== +===== AE Verilog blog =====
  
-  * Ubuntu: da synaptic manager selezionare iverilog e installare via interfaccia grafica, fare altrettanto per gtkwave. Per dinotrace, vedi sezione Linux (generico) +Riporto alcune note a integrazione di quanto detto a lezione relativamente al progetto Verilog
-  * Linux (generico): scaricare i pacchetti dai loro siti (vedi sopra). Tutti e tre i pacchetti (iverilog, dinotrace e gtkwave) si installano scompattando il tar.gz, entrando nella sottodirectory e dando i comandi 1) ./configure 2) make e 3) make install (per quest'ultimo servono i diritti da superutente, oppure dovete modificare la directory di installazione (normalmente con un parametro passato al ./configure) +
-  * Windows: scaricare l'installer dal sito e farlo girare (installa sia iverilog che gtkwave) +
-  * Mac OS X: come per Linux generico. C'è anche un pacchetto macports+
  
-=== Shell === +==== Reti sequenziali ==== 
-Tutti comandi vanno dati da riga di comando: +Potete realizzare reti sequenziali, secondo il modello di Moore o di Mealy, in due modi distinti:  
 +  - realizzando un modulo Sigma e un modulo Omega, utilizzando un modulo Registro (come quello sulla dispensa) e collegandoli come nello schema classico presentato a lezione. Uscita di Omega uguale al wire di uscita del modulo, ingressi di Sigma presi dall'uscita del registro di stato e dagli ingressi del modulo, etc. *Attenzione*: gli ingressi del modulo //devono// includere il segnale di clock che serve unicamente per passarlo come ingresso al modulo Registro. Se avete avuto cura di realizzare il modulo Omega e il modulo Sigma in modo che generino le uscite con ritardi opprtuni, potrete verificare come clock più o meno lunghi del ciclo calcolato generino comportamenti diversi (errati se il clock ha un tempo di ciclo minore di quello calcolato), corretti (ma  magari un po' lenti) se il ciclo di clock è maggiore di quello calcolato con il procedimento canonico. (vedi [[esempiomoore|esempio]]) 
 +  - utilizzando il modo behavioural. Gli ingressi e le uscite del modulo sono sempre quelli del caso precedente. Vi definite una variabile di nuovo stato che assegnate in uno switch i cui casi dipendono da stato corrente (altro registro) e ingressi all'interno di una blocco <code>always @(lista delle variabili lette per il calcolo del nuovo stato)  begin ... end </code>. Assegnate il nuovo stato allo stato corrente in un <code>always @(negedge clock) begin ... end</code>. Infine, calcolate le uscite come funzione di stato corrente e (solo nel caso Mealy) degli ingressi e le assegnate alla variabile che rappresenta l'uscita del modulo con un assegnamento continuo <code> assign uscitamodulo = ... </code>. In questo caso, i ritardi per la generazione del valore dello stato successivo  e delle uscite devono essere gestiti mediante ritardi <code> #numero_t_p</code> piazzati opportunamente nella assign e nella generazione del nuovo stato all'interno dello switch. 
  
-  * Linux: aprite un Terminal +==== Timescale ==== 
-  * Windows: da Programmi -> Accessori lanciate "Prompt dei comandi" +Utilizzate il timescale di defaultconsiderando che l'unità corrisponde ad un tpQuesto vuol dire *non* mettere come istruzione del programma test bench alcuna istruzione tipo <code>`timescale  1ns / 1ps</code>
-  * Mac OS X: lanciate Terminal (è nella cartella Utility del folder Applications) +
-  *  +
-=== Compilazione ==+
-Per compilare utilizzare il comando  +
- +
-   iverilog -o nomeFileOggetto fileSorgente1.vl fileSorgente2.vl ... fileSorgenteN.vl +
-dove i vari file .vl contengono i moduli utilizzati e il nomeFileOggetto alla fine della compilazione conterrà il codice oggetto.  +
- +
-=== Per eseguire una simulazione === +
-Una volta compilato, utilizzare il comando  +
- +
-    vvp nomeFileOggetto +
-Il programma viene fatto girarevedrete a terminale le stampe dei comandi $monitor e $display. Se avete richiesto un $dumpvars con un $dumpfile("xyz.vcd") verrà creato il file xzy.vcd +
- +
-=== Visualizzazione === +
-Lanciate dinotrace o gtkwave con parametro il nome del file che contiene la traccia da visualizzare.  +
- +
-    dinotrace xyz.vcd   +
-oppure  +
- +
-    gtkwave xzy.vcd +
-     +
-===== Reti combinatorie in Verilog =====+
  
 +==== Procedimento di realizzazione del progetto ==== 
 +Il metodo corretto per svolgere il progetto è il seguente: 
 +  - studiare il problema e progettare l'unità come se fosse un esercizio di esame: 
 +      - operazioni esterne
 +      - microcodice
 +      - derivazione parte operativa e parte controllo
 +      - tempo di servizio
 +  - realizzare parte operativa e parte controllo in Verilog: 
 +      - per la parte controllo, realizzare una rete sequenziale standard (di Mealy)
 +      - per la parte operativa, realizzare una rete come assemblaggio di componenti standard
 +  - per ognuno dei moduli utilizzati (e.g. omegaPC, ALU, RegistroK, ...) preparate un test bench (modulo di test, senza parametri, che general una traccia visualizzabile con GTKwave) e controllarne la funzionalità
 +  - realizzare un programma di prova per l'intera unità
 +  - preparare la relazione
 +Potete anche provare a realizzare un'unità direttamente nel suo complesso utilizzando il modo behavioural di Verilog, ma in questo modo il successo dell'operazione non dipende da una serie di passi formali, ciascuno singolarmente verificabile, e di conseguenza debugging e tuning della soluzione sono più complicati. 
 +===== Indietro =====
  
 +Torna alla [[http://didawiki.cli.di.unipi.it/doku.php/informatica/ae/verilogpag|pagina principale]] Verilog
informatica/ae/verilogpag.1382075696.txt.gz · Ultima modifica: 18/10/2013 alle 05:54 (12 anni fa) da Marco Danelutto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki