|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | ||
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 1
|
[VHDL](o algoritmo) Normalizzazione di un numero binario
Sto realizzando una Floating Point Unit a precisione variabile e avrei bisogno di un modulo che faccia la normalizzazione.
L'idea è scorrere il mio vettore di bit e, non appena trovo il primo 1 (da sinistra), scrivere dentro una variabile (out_shift_esp_int) di quanto è lo shift (poi un altro modulo lo effettua, sfruttando quel numero). Ho già realizzato un codice che lo fa in maniera "fissa": Quote:
Ho successivamente realizzato una versione parametrica. Però non sembra funzionare (l'uscita non è quella che dovrebbe essere). Quote:
Non è necessaria la conoscenza del linguaggio VHDL, sarebbe utile anche un consiglio sull'algoritmo da utilizzare, poi ci penso io ad implementarlo, se possibile. Vi ringrazio in anticipo. ![]() P.S.: Non essendoci la possibilità di lasciare indentato il codice, ho provveduto a colorarlo, il maniera da renderlo più leggibile. Ultima modifica di giovafrankie : 25-11-2015 alle 16:53. Motivo: Correzione impaginazione |
||
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Nel frattempo, hai provato a vedere su opencores? Tipo questo: Codice:
--
-- VHDL Architecture HAVOC.FPnormalize.FPnormalize
--
-- Created:
-- by - Guillermo
-- at - ITESM, 10:51:00 07/16/03
--
-- Generated by Mentor Graphics' HDL Designer(TM) 2002.1b (Build 7)
--
-- hds interface_start
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY FPnormalize IS
GENERIC(
SIG_width : integer := 28
);
PORT(
SIG_in : IN std_logic_vector (SIG_width-1 DOWNTO 0);
EXP_in : IN std_logic_vector (7 DOWNTO 0);
SIG_out : OUT std_logic_vector (SIG_width-1 DOWNTO 0);
EXP_out : OUT std_logic_vector (7 DOWNTO 0)
);
-- Declarations
END FPnormalize ;
-- hds interface_end
ARCHITECTURE FPnormalize OF FPnormalize IS
BEGIN
PROCESS(SIG_in, EXP_in)
BEGIN
IF (SIG_in( SIG_width-1 )='1') THEN
SIG_out <= '0' & SIG_in(SIG_width-1 DOWNTO 2) & (SIG_in(1) AND SIG_in(0));
EXP_out <= EXP_in + 1;
ELSE
SIG_out <= SIG_in;
EXP_out <= EXP_in;
END IF;
END PROCESS;
END FPnormalize;
http://opencores.org/project,fpuvhdl
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ma è normale che un moltiplicatore richieda meno risorse di un sommatore?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Su un ASIC no, un sommatore è più piccolo.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ma gli FPGA non hanno generalmente moltiplicatori limitati? Tipo massimo 18x18 bit? In questo caso per una moltiplicazione a 32 bit servirebbero 3 moltiplicazioni 18x18 (16 x 16 sarebbero sufficienti) e 3 somme, con conseguente maggior consumo di risorse rispetto a una normale somma.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
In ogni caso dipende anche dall'FPGA che usi e dal sintetizzatore. Se provi con Quartus a sintetizzare per diversi modelli vedi risultati diversi. Già se provi differenti versioni delle cyclone o se confronti cyclone con Stratix mi sa che esce diverso.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:14.





















