Scaling data

Hello All,

I am using the UNIFORM procedure in VHDL to generate random numbers. UNIFORM generates random numbers in the range 0.1 to 0.99999. I wish to generate random signed and unsigned numbers of variable widths(integer range). I would like to get some ideas on how I should scale this data? Right now, when i convert the real output from real to integer to signed, it just gives me an output of wither 0 or 1 . Your comments would be appreciated

Thank you

Reply to
FPGA
Loading thread data ...

Try multiplying it by a scaling factor before you convert it to integer.

Reply to
Chris Maryan

Let the real random number you generated be "my_random_number". Let the random integer (my_random_integer) you want to generate be in the range "my_range_low" to "my_range_high". Then after using UNIFORM on "my_random_number", you would do

my_random_integer

Reply to
sudhi

Actually it returns reals in the range 0.0 to 1.0 (exclusive), that is i can return 0.0, but not 1.0.

As a previous reply states, you need to multiply the returned value by (real type) scaling factor before conversion to unsigned, and remember t offset if converting to signed.

Reply to
RCIngham

Thank you very much everyone.

Reply to
Anuja

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.