Quartus II e Half Adder, misurare frequenza massima

Sezione dedicata al linguaggio di descrizione hardware per logiche programmabili

Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 16 Mar 2012, 23:42

Ho creato un semplice half adder:

LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY adder IS
PORT (
x, y : IN STD_LOGIC ;
s : OUT STD_LOGIC;
c : OUT STD_LOGIC
) ;
END adder;

ARCHITECTURE adder OF adder IS
BEGIN
s <= x XOR y;
c <= x AND y;
END adder;

volevo capire dopo quanto tempo l'uscita s e c assume il valore corretto ma purtroppo sembra che TimeQuest funzioni solamente con un clock nel progetto (correggetemi se sbaglio), come posso fare?

Il tempo dipende inoltre dai pin che assegno alle porte? (non ho ancora assegnato i pin)

Ciao e grazie a tutti
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Quartus II e Half Adder, misurare frequenza massima

Postby deluca » 17 Mar 2012, 10:47

Non ti puoi porre questo quesito.....
Dal solo codice VHDL dubito fortemente che potrai risalire al tempo che impiega qualcosa a fare qualcosa.

Tutto chiaramente dipende dal tempo di propagazione delle porte ed in questo caso la configurazione non è strettamente
legata alle porte logiche ma al circuito RTL che il sintetizzatore realizza a partire dalla tua desrcizione HW.
Il tempo dipende da tanti fattori fisici e dal tipo di tecnologia costruttiva, dalla distanza dalla LE dal pin di uscita etc etc etc.
(non è come nelle vecchie GAL o PAL, dove a priori potevi calcolare il tempo totale di propagazione)

Chiaramente tutto questo se non hai un circuito sincrono.... senza un clock.
Allora potresti rimediare in due modi esenziali:

1) via hardware -> State logic Analizer, con una grande larghezza di banda
2) via simulatore -> Effettuando simulazione post sintesi / post route scrivendo un buon testbench.

Ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 17 Mar 2012, 12:25

Grazie per la risposta,
Volevo capire a scopo didattico quanto può essere veloce un semplice half hadder sulla FPGA mettiamo il caso sia utilizzata come semi sommatore e basta.

Purtroppo deve escludere la soluzione hardware, non dispongo ancora di un analizzatore logico che credo sia molto costoso per una banda adeguata a queste frequenze.
Cercherò di concentrarmi sulla soluzione simulativa (sempre a scopi didattici)

Giustamente il solo codice VHDL non basta, ho scordato di specificare la scheda che uso (ho solo questa al momento): è una DE0-Nano con a bordo un Cyclone IV EP4CE22F17C6N, volevo capire più o meno il tempo della sola FPGA per fare la semisomma senza considerare ritardi legati al PCB.

Come sospettavo dunque i pin sulla FPGA determinano il percorso dei segnali e possono influenzare la prestazioni del circuito, grazie per la conferma.

Ho provato a cercare simulazione post-sintesi ed ho trovato l'interessante tutorial [url]file:///C:/altera/11.1sp2/quartus/common/help/tutorial_quartusii_simulation_vhdl.pdf[/url], peccato che QSim non supporti la Cyclone IV (ho dovuto installare l'ultima versione di Quartus 11.1 per far funzionare il pannello di controllo dimostrativo della scheda e perlomeno con questa versione non è supportato)

Ho visto che bisogna utilizzare ModelSim, peccato, dal tutorial sembrava molto più semplice QSim con il Wave Editor.
Ora l'ho installato e proverò a capire come funziona tramite i tutorial forniti col programma, grazie per il momento

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 19 Mar 2012, 10:48

Ho preso un minimo di dimestichezza con ModelSim ed ho imparato che ci sono due tipi di simulazione: funzionale (non considera i ritardi) e temporale (considera i ritardi).

Mi ha aiutato molto il tutorial ftp://ftp.altera.com/up/pub/Altera_Material/11.0/Tutorials/Using_ModelSim.pdf

Ho eseguito un'analisi funzionale e come aspettato il sommatore funziona correttamente, sono passato quindi alla analisi temporale e mi sono venuti alcuni dubbi:

1) Nelle impostazioni del device di Quartus in Settings/EDA Tool Settings/Simulation se scelgo come formato per le netlist di uscita VHDL la scala dei tempi risulta non modificabile, perchè? Seguendo il tutorial ho scelto Verilog come formato ma non ho ben capito se è una limitazione della versione web di Quartus e quali sono le conseguenze.

2) Nella compilazione (Processing/Start compilation) ho visto che viene eseguita l'I/O Assignement Analisys ed il fitter (place & route) ma io non ho assegnato nessun pin agli input e agli output, vengono scelti automaticamente? Come faccio a sapere quali sono stati impostati? Dal Pin Planner dopo la compilazione sembra che non siano assegnati.

3) Dall'analisi temporale ho ricavato le seguenti onde:

Image

Ho notato che quando X=0 e Y=0 (l'ultima variazione nel grafico) la somma S assume il valore corretto solo dopo 8.224 ns il che limita la frequenza del mio sommatore a circa 120 MHz, mi sembra un pò lento, inoltre se non ho assegnato manualmente i pin di I/O come fa ModelSim a calcolare i timing corretti?
Con alcuni input ho notato che il ritardo è leggermente più basso, 7.2 ns ad esempio, per calcolare la frequenza massima bisogna quindi considerare tutte le possibili transizioni?

Ciao a tutti e grazie ancora per il vostro supporto
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 20 Mar 2012, 22:20

UP :)
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Quartus II e Half Adder, misurare frequenza massima

Postby deluca » 21 Mar 2012, 18:42

Zippa e allega il progetto.... gli dò un'occhiata.
Quale versione di Modelsim e di Quartus hai installato?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 21 Mar 2012, 20:17

Ho usato:
- Quartus II 32 bit Version 11.1 Build 259 01/25/2012 SJ Web Edition, Service Pack 2
- ModelSim ALTERA STARTER EDITION 10.0c, Revision: 2011.09, Date: Sep 21 2011
Dovrebbero essere le ultime versioni gratuite disponibili. L'OS è Windows 7 32 bit SP1.

Ad ogni modo per renderti meno problemi possibili se mi fai sapere la versione di Quartus e ModelSim che utilizzi disinstallo quelle che ho ed installo come le tue, così anche in futuro se devo allegare o aprire dei progetti non sorgono problemi di incompatibilità.

La dimensione massima degli allegati del forum è 256 KiB, un pò pochino per lo zip completo del progetto, l'ho caricato qui http://www.atomwave.com/FPGA/HalfAdder.zip

Grazie
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Quartus II e Half Adder, misurare frequenza massima

Postby deluca » 21 Mar 2012, 21:31

1) Nelle impostazioni del device di Quartus in Settings/EDA Tool Settings/Simulation se scelgo come formato per le netlist di uscita VHDL la scala dei tempi risulta non modificabile, perchè? Seguendo il tutorial ho scelto Verilog come formato ma non ho ben capito se è una limitazione della versione web di Quartus e quali sono le conseguenze.


Noi usiamo la versione F V 9.0 perchè abbiamo necessità di retrocompatibilità con vari progetti realizzati con fpga adesso non più supportate dalle nuove versioni.

Cmq ti faccio sapere che anche in questa versione se viene selezionata la net VHDL la scala dei tempi non è attiva.
Inoltre i tempi calcolati dal Timing Analyzer sono variabili tra porta e porta......

ad esempio tra y e s il tempo tpd è di 4.413 nsec
mentre tra x ed s è di 4.739 nsec.... (il tuo progetto su Cyclone III) la v9 non supporta cyclone IV.

tutto questo è normale perchè dipende sopratutto dalla zona del FloorPlan da dove provengono i segnali .....
Anche se non assegni i pins il sistema calcolerà i tempi di propagazione che esistono tra la zona delle LE Glue Logic usate e i banchi di IO realtivi al settore in questione.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Quartus II e Half Adder, misurare frequenza massima

Postby flz47655 » 22 Mar 2012, 11:45

Grazie per la risposta,
In automatico speravo venissero scelti pin che ottimizzino i ritardi, per fare una prova ho assegnato manualmente i Pin come in immagine:

Image

Ed in effetti è così.. non è cambiato quasi nulla coi pin manualmente assegnati, siamo sempre oltre i 7 ns di ritardo.. spero di non aver sbagliato qualche impostazione, i risultati di ModelSim sono comunque questi anche se speravo che un Cyclone IV con speed grade 6 (il più veloce) avesse degli XOR più veloci, mi sembra veramente strano che sia più lento del Cyclone III.

Ho provato a simulare un device diverso, l'EPM240T100C3 ed ho avuto in media un ritardo nella somma di 5.3 ns e di 6.2 ns per il resto, non so se può valere come "controprova" ma i risultati sono questi.

Ti ringrazio ad ogni modo per avermi aiutato ad investigare sul caso
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16


Return to VHDL x FPGA

Who is online

Users browsing this forum: No registered users and 0 guests

cron