X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/rpi-motor-control.git/blobdiff_plain/9dcb99960f5cf6f9624e905e390ba596b411c84f..4122d986c4db1750a942225183f0b25f639e373c:/pmsm-control/util.vhdl diff --git a/pmsm-control/util.vhdl b/pmsm-control/util.vhdl new file mode 100644 index 0000000..a8bfa98 --- /dev/null +++ b/pmsm-control/util.vhdl @@ -0,0 +1,51 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package util is + -- ceil(log2(n)) + function ceil_log2(n: natural) return natural; + -- ceil(a/b) + function ceil_div(a: integer; b: integer) return integer; + -- + function max(left, right: integer) return integer; + function min(left, right: integer) return integer; +end; + +--- + +package body util is + + function ceil_log2(n: natural) return natural is + begin + if n <= 1 then + return 0; + else + if n mod 2 = 0 then + return 1 + ceil_log2(n/2); + else + return 1 + ceil_log2((n+1)/2); + end if; + end if; + end function ceil_log2; + + function ceil_div(a: integer; b: integer) return integer is + begin + return (a+b-1)/b; + end function ceil_div; + + function max(left, right: integer) return integer is + begin + if left > right then return left; + else return right; + end if; + end; + + function min(left, right: integer) return integer is + begin + if left < right then return left; + else return right; + end if; + end; + +end util;