Diga en VHDL que tengo una entidad con como entrada un vector de 8 bits:
libary ieee;
use ieee.std_logic_1164.all;
entity example is
port(
clk : in std_logic;
inputvector : in std_logic_vector(7 downto 0);
outputvector : out std_logic_vector(2 downto 0)
);
end entity example;
Quiero generar la posición del bit más significativo siendo uno en el vector de entrada (comenzando con el conteo desde cero).
Por ejemplo, si \ $ \ text {inputvector} = [\ underset {7} 0, \ underset {6} 0, \ underset {5} 1, \ underset {4} 0, \ underset {3} 1 , \ underset {2} 1, \ underset {1} 0, \ underset {0} 1] \ $, el bit más significativo es el bit \ $ 5 \ $. Y como \ $ (5) _ {\ text {decimal}} = (101) _ \ text {binary} \ $, la salida debe ser \ $ \ text {outputvector} = [1, 0,1] \ $.
¿Qué necesito para escribir en la arquitectura de example
para lograr esto?
Gracias de antemano.
Editar: Cómo haría esto en Matlab o Python (con from numpy import ceil, log2
):
ceil(log2(x)) - 1
con x
el valor de entrada. Entonces \ $ x = (101101) _ \ text {binary} = (45) _ \ text {decimal} \ $ daría
>> ceil(log2(45)) - 1
ans =
5