by legacy » 08 Sep 2018, 10:12
il linguaggio vhdl non ha problemi a definire operatori come + o *; i guai arrivano nella sintesi perche' bisogna vedere SE e COSA l'hardware (FPGA, CPLD, ...) ha a disposizione "gia' pronto" per soddisfare la richiesta, altrimenti tocca implementare l'altoritmo della moltiplicazione a manina
su FPGA e CPLD ci sono sempre stati e ci saranno sempre le unita' fondamentali sommatrici con granularita' al bit e propagazione del carry, e non ci sono problemi a comporre sommatori piu' grandi con latenza massima 1, mentre per quanto riguarda la moltiplicazione ...
sulle CPLD non c'e supporto hw
su vecchie FPGA, p.e. Xilinx Spartan2, non c'e' supporto
su meno vecchie FPGA, p.e. Xilinx Spartan3, c'e' supporto ma bisogna "guidare" il sintetizzatore
su moderne FPGA, p.e. Xilinx Sparta6,7, c'e' supporto DSP-slice, ISE-v14 e Vivado usano le risorse con malizia
le DSP-slice sono circuiti "gia' pronti" capaci di fare moltiplicazioni a 16-o-18bit con latenza tipicamente 6 colpi di clock; se servono moltiplicatori a 32 bit tocca compore moduli con la dovuta logica ed aritmetica di contorno, con latenza totale tipicamente di 12-14 colpi di clock.
FIR e IIR usano tipicamente unita' MAC (moltpica e accumula), in fixedpoint con logica satura