La Conversion de numeric_std unsigned à std_logic_vector en vhdl

J'ai une question liée à la conversion de numeric_std à std_logic_vector. Je suis à l'aide de la moyenne mobile de filtre de code que j'ai vu en ligne et de filtrage de mes valeurs d'ADC à la stabilité des valeurs.

Le filtre de paquet code:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

package filterpack is
  subtype number is unsigned(27 downto 0);
  type numbers is array(natural range <>) of number;
  function slv_to_num(signal slv: in std_logic_vector) return number;
  procedure MAF_filter(
    signal x: in    number;
    signal h: inout numbers;
    signal y: out   number
  );
end filterpack;

package body filterpack is

function slv_to_num(signal slv: in std_logic_vector) return number is
  variable x: number := (others => '0');
begin
  for i in slv'range loop
    if slv(i) = '1' then
      x(i+4) := '1';
    end if;
  end loop;
  return x;
end function slv_to_num;

procedure MAF_filter(
    signal x: in    number;
    signal h: inout numbers;
    signal y: out   number
  ) is
begin
  h(0) <= x + h(1);       -- h[n] = x[n] + h[n-1]
  y <= h(0) - h(h'high);  -- y[n] = h[n] - h[n-M]
end MAF_filter;

end package body filterpack;

Dans mon top niveau fichier, je l'appelle le MAF_filter procédure.

Asign_x: x <= slv_to_num(adc_dat);
Filter:  MAF_filter(x,h,y);

La adc_dat est défini comme:

adc_dat : out std_logic_vector (23 downto 0);

Je veux convertir la sortie de la MAF_Filter à std_logic_vector (23 downto 0). Si quelqu'un peut dire comment puis-je convertir sortie du filtre " y " à "std_logic_vector'?

Merci Beaucoup!

InformationsquelleAutor user3008991 | 2013-11-20