You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			VHDL
		
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			VHDL
		
	
library ieee;
 | 
						|
use ieee.std_logic_1164.all;
 | 
						|
use ieee.numeric_std.all;
 | 
						|
 | 
						|
library work;
 | 
						|
use work.glibc_random_helpers.all;
 | 
						|
 | 
						|
package glibc_random is
 | 
						|
    function pseudorand(a: integer) return std_ulogic_vector;
 | 
						|
    function pseudorand1 return std_ulogic;
 | 
						|
end package glibc_random;
 | 
						|
 | 
						|
package body glibc_random is
 | 
						|
    function pseudorand(a: integer) return std_ulogic_vector is
 | 
						|
        variable tmp1, tmp2, tmp3, tmp4: std_ulogic_vector(31 downto 0);
 | 
						|
        variable ret: std_ulogic_vector(63 downto 0);
 | 
						|
    begin
 | 
						|
        tmp1 := std_ulogic_vector(to_unsigned(random, 32));
 | 
						|
        tmp2 := std_ulogic_vector(to_unsigned(random, 32));
 | 
						|
        if a <= 32 then
 | 
						|
            ret := tmp1 & tmp2;
 | 
						|
        else
 | 
						|
            tmp3 := std_ulogic_vector(to_unsigned(random, 32));
 | 
						|
            tmp4 := std_ulogic_vector(to_unsigned(random, 32));
 | 
						|
 | 
						|
            ret := tmp1(15 downto 0) & tmp2(15 downto 0) & tmp3(15 downto 0) & tmp4(15 downto 0);
 | 
						|
        end if;
 | 
						|
 | 
						|
        return ret((a-1) downto 0);
 | 
						|
    end;
 | 
						|
 | 
						|
    function pseudorand1 return std_ulogic is
 | 
						|
        variable tmp: std_ulogic_vector(31 downto 0);
 | 
						|
    begin
 | 
						|
        tmp := std_ulogic_vector(to_unsigned(random, 32));
 | 
						|
        return tmp(0);
 | 
						|
    end;
 | 
						|
end package body glibc_random;
 |