Continue to Site

Reply to thread

Greetings! I am trying to find best way for random generator in specific range and was wondering what are the best practices for now.

I have array of 360 numbers each of one is +4 of previous:

[CODE]constant possible_values : t_int_array :=(4,8,12, n+4...1432,1436);[/CODE]


And I'd like to have some function that accepts seed/code and output numbers from this array in random way. Numbers may also be not initially stored in array, but also generated in some function during execution. This will save some on-chip RAM.


For now I am still looking for proper way of such limitation pure LFSR, since it will just generate me random numbers, and not what I need. Maybe there is some graceful way to do it, to not add conditions like (if result > 1436 then generate again)


That's some example vhdl block I created for demonstration:

[CODE]

library IEEE;

use IEEE.std_logic_1164.all;


entity offset_generator is

     port(

         clk : in STD_LOGIC;

         reset : in STD_LOGIC;

         seed : in STD_LOGIC_VECTOR(32 downto 0);

         result : out STD_LOGIC_VECTOR(10 downto 0)

         );

end offset_generator;




architecture offset_generator of offset_generator is

signal s_result : STD_LOGIC_VECTOR(10 downto 0) := (others => '0');


    type t_int_array is array(natural range 0 to 360) of natural range 0 to 1436;

    constant possible_values : t_int_array :=(4,8,12,16,....,1432,1436);

   

    signal s_seed : STD_LOGIC_VECTOR(32 downto 0) := (others => '0');

   

         

    function GET_RANDOM (seed : in STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is

    begin

        return INSERT_IMPLEMENTATION_HERE;

    end;

   

begin

    result <= s_result;

   

    process( clk )

    begin

        if (rising_edge(clk)) then

            if (reset = '1') then

                s_seed <= seed;

            else

                s_result <= GET_RANDOM(s_seed);

            end if;

        end if;

    end process;  

end offset_generator;[/CODE]


Part and Inventory Search

Back
Top