Scaling data

Feb 03, 2008 4 Replies

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


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

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

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.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required