library ieee;  use ieee.std_logic_1164.all;

package stimulus_generators is

  procedure all_possible_values ( signal bv : out bit_vector;
				  delay_between_values : in delay_length );

  procedure all_possible_values ( signal bv : out std_ulogic_vector;
				  delay_between_values : in delay_length );

  procedure all_possible_values ( signal bv : out std_logic_vector;
				  delay_between_values : in delay_length );

end package stimulus_generators;


----------------------------------------------------------------


package body stimulus_generators is

  type digit_table is array ( natural range 0 to 1 ) of bit;
  constant digit : digit_table := ( '0', '1' );


  function natural_to_bv ( nat : in natural;
      	      	      	   length : in natural ) return bit_vector is

    variable temp : natural := nat;
    variable result : bit_vector(0 to length - 1);

  begin
    for index in result'reverse_range loop
      result(index) := digit( temp rem 2 );
      temp := temp / 2;
    end loop;
    return result;
  end function natural_to_bv;


  procedure all_possible_values ( signal bv : out bit_vector;
				  delay_between_values : in delay_length ) is
  begin
    bv <= natural_to_bv(0, bv'length);
    for value in 1 to 2**bv'length - 1 loop
      wait for delay_between_values;
      bv <= natural_to_bv(value, bv'length);
    end loop;
  end procedure all_possible_values;


  procedure all_possible_values ( signal bv : out std_ulogic_vector;
				  delay_between_values : in delay_length ) is
  begin
    bv <= To_StdULogicVector(natural_to_bv(0, bv'length));
    for value in 1 to 2**bv'length - 1 loop
      wait for delay_between_values;
      bv <= To_StdULogicVector(natural_to_bv(value, bv'length));
    end loop;
  end procedure all_possible_values;


  procedure all_possible_values ( signal bv : out std_logic_vector;
				  delay_between_values : in delay_length ) is
  begin
    bv <= To_StdLogicVector(natural_to_bv(0, bv'length));
    for value in 1 to 2**bv'length - 1 loop
      wait for delay_between_values;
      bv <= To_StdLogicVector(natural_to_bv(value, bv'length));
    end loop;
  end procedure all_possible_values;

end package body stimulus_generators;

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>