Vhdl-creazione di un'entità per operazioni in virgola fissa

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentemarittone
0 2
Messaggi: 2
Iscritto il: 19 set 2013, 10:49
0
voti

[1] Vhdl-creazione di un'entità per operazioni in virgola fissa

Messaggioda Foto Utentemarittone » 27 set 2013, 8:56

Salve a tutti,
dovrei realizzare una un'entità per approssimare la funzione arcoseno iperbolico con il suo polinomio di Mac-Laurin del tipo P(x)= x - 1/(2 . 3) x^3 . Le operazioni devono essere eseguite tutte in virgola fissa, quindi anche tutti i coefficienti devono essere trasformati in virgola fissa.

Dell'entità conosco già la dichiarazione

entity asinh_x is

port (x : in signed(15 downto 0); y : out signed (31 downto 0) ; clk: in std_ulogic );

end entity;

clk è un segnale di clock per sincronizzare le operazioni.
x è un segnale in formato virgola fissa Q1.15 (compreso tra -1 e 1)
y invece ha un formato Q2.30 (compreso tra -2 e 2)


Ho scaricato ModelSim PE 10.2 c (Student Edition)
Purtroppo sono in un vicolo cieco.
Qualcuno saprebbe aiutarmi???

Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
Messaggi: 5621
Iscritto il: 9 nov 2011, 11:27
0
voti

[2] Re: Vhdl-creazione di un'entità per operazioni in virgola fi

Messaggioda Foto Utenteboiler » 27 set 2013, 22:53

Aiutarti a fare cosa?
Quale è concretamente il problema?

Boiler

Avatar utente
Foto Utentemarittone
0 2
Messaggi: 2
Iscritto il: 19 set 2013, 10:49
0
voti

[3] Re: Vhdl-creazione di un'entità per operazioni in virgola fi

Messaggioda Foto Utentemarittone » 2 ott 2013, 18:04

Il mio problema è più didattico che pratico, nel senso che dovrei creare un'entità che ha l'interfaccia che ho scritto nel mio post iniziale.
L'entità in effetti deve approssimare la funzione arcosenoiperbolico (asinh) con il suo polinomio di Mac Laurin.
Probabilmente il problema si dovrebbe ridurre ad effettuare quelle operazioni di moltiplicazioni e divisioni in virgola fissa:
y= x - 1/(2 * 3) x^3
dove x è un segnale in formato virgola fissa Q1.15 (compreso tra -1 e 1)
y invece ha un formato Q2.30 (compreso tra -2 e 2)

Non ho poi ben capito a cosa serve il segnale di clock per sincronizzare le operazioni.

Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
Messaggi: 5621
Iscritto il: 9 nov 2011, 11:27
1
voti

[4] Re: Vhdl-creazione di un'entità per operazioni in virgola fi

Messaggioda Foto Utenteboiler » 2 ott 2013, 20:02

Allora, in sostanza sono 3 problemi distinti: far capire a VHDL che vuoi usare un tipo a virgola fissa, rappresentare le operazioni e sincronizzarle.

Per la virgola fissa si usa il tipo sfixed(a downto b), dove a è il numero di bit per la parte intera e b il numero di bit per quella decimale (bit per il segno NON compreso). Se quindi instanzi un segnale del tipo sfixed(6 downto 3) ti servono 10 bit. Per avere i tipi non basta la libreria std_logic, devi caricare fixed_pkg, che è in ieee_proposed. Se cerchi con google trovi esempi a iosa.

Prima di cominciare a buttare giú codice, fatti uno schema a blocchi con entrate, uscite, operazioni, memorie... È buona cosa abituarsi a farlo prima di programmare ogni entità.
Fatto lo schema vedrai il flusso di dati dall'ingresso x all'uscita y.

Ti faccio un esempio banalissimo: qui vedi cosa intendo per un convertitore che prende in ingresso una temperatura in °C e la restituisce all'uscita in °F.

Lo schema non è completo, ma non ti rivelo tutto subito ;-)
Tu sei evidentemente libero di aggiungere nel tuo quello che credi manchi!

Se a quel punto non ti sarà chiaro a cosa serve il clock, mostra qui lo schemino e ne parliamo :ok:

Boiler


Torna a “Programmi applicativi: simulatori, CAD ed altro”