blob: 780d66567c358172239914f37c268b8d9071359f [file] [log] [blame]
/*
* Copyright (c) 2021, Marcos Medeiros
* Licensed under BSD 3-clause.
*/
// Aritmética de ponto fixo
`ifndef __FIXPT
`define __FIXPT
`define FIXPT_REAL_BITS 22
`define FIXPT_FRACTION_BITS 10
`define FIXPT_SIZE 32
`define FIXPT_SIZE_L 64
`define FIXPT_INT(n) {n,`FIXPT_FRACTION_BITS'b0}
`define FIXPT_TO_INT(n) (n[`FIXPT_SIZE-1:`FIXPT_FRACTION_BITS])
`define FIXPT_FRAC(n) (n[`FIXPT_FRACTION_BITS-1:0])
`define FIXPT_MUL(a,b) ($signed(({ {`FIXPT_SIZE{a[`FIXPT_SIZE-1]}}, (a)}) * (b)) >>> `FIXPT_FRACTION_BITS)
`define FIXPT signed [`FIXPT_SIZE -1:0]
`define FIXPT_L signed [`FIXPT_SIZE_L-1:0]
`define MIN(a,b) (((a)<(b))?(a):(b))
`define MAX(a,b) (((a)>(b))?(a):(b))
`define SATURATE(min,max,a) `MIN((max),`MAX((min),(a)))
`endif