Konvertierung von numeric_std unsigned std_logic_vector zu in vhdl

Ich habe eine Frage im Zusammenhang mit der Umrechnung von numeric_std auf std_logic_vector. Ich bin mit gleitender-Mittelwert-filter code, den ich online sah und Filterung meiner ADC-Werte auf stabile Werte.

Dem filter-Paket, 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;

In meine top-level-Datei, ich nenne das MAF_filter Verfahren.

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

Den adc_dat ist definiert als:

adc_dat : out std_logic_vector (23 downto 0);

Möchte ich umwandeln der Ausgabe von der MAF_Filter zu std_logic_vector (23 downto 0). Kann jemand sagen wie kann ich umwandeln filter-Ausgang 'y' , 'std_logic_vector'?

Vielen Dank!

InformationsquelleAutor user3008991 | 2013-11-20

Schreibe einen Kommentar