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???
Vhdl-creazione di un'entità per operazioni in virgola fissa
0
voti
[3] Re: Vhdl-creazione di un'entità per operazioni in virgola fi
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.
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.
1
voti
[4] Re: Vhdl-creazione di un'entità per operazioni in virgola fi
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
Boiler
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
Boiler

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


