ceil(log2())を求める函数を作る / architecture内に

p.357
前回と同じ函数を今度はarchitectureの宣言部に記述する。reusabilityの観点からすると好ましくない。

entity test_circuit is
    generic(
        BITS: natural := 8
    );
    port(
        inp : in  positive range 1 to 2**BITS-1;
        outp: out natural  range 0 to BITS
    );
end entity;

architecture rtl of test_circuit is
   -- 函数の中身を記述する。
    function ceil_log2 (input: positive) return natural is
        variable result: natural := 0;
    begin
        while 2**result < input loop
            result := result + 1;
        end loop;
        return result;
    end function;
begin
    outp <= ceil_log2(inp);
end architecture;