verifying UNIFORM using matlab

Discussion in 'VHDL' started by FPGA, Mar 3, 2008.

  1. FPGA

    FPGA Guest

    I have written a process to generate random numbers using UNIFORM. I
    was trying to check the results using "rand" in matlab. How do i
    initialise the seed values of both these functions to the same value.
    I see that the random numbers generated by UNIFORM are different
    compared to rand when the seed values are left uninitialised.
    What do I need to change so that I get same output from both programs.

    Thanks
     
    FPGA, Mar 3, 2008
    #1
    1. Advertising

  2. FPGA

    Tricky Guest

    On Mar 3, 9:15 pm, FPGA <> wrote:
    > I have written a process to generate random numbers using UNIFORM. I
    > was trying to check the results using "rand" in matlab. How do i
    > initialise the seed values of both these functions to the same value.
    > I see that the random numbers generated by UNIFORM are different
    > compared to rand when the seed values are left uninitialised.
    > What do I need to change so that I get same output from both programs.
    >
    > Thanks


    Uninitilised positives (the seeds in this case) will take a value of 1
    when they are put into the uniform function. Unitialised types when
    used will take type'low as their value

    positive'low = 1
    std_logic'low = 'u'
    etc.

    so both of your first calls to uniform are seeding it with two 1s.

    I dont know how the seeding works in matlab. It may not even use
    positives, but the entire integer range. it is common in C to seed the
    random number generator with the system time. Does matlab do something
    similar? The C random function only has 1 seed, whereas uniform takes
    2.
     
    Tricky, Mar 4, 2008
    #2
    1. Advertising

  3. FPGA

    FPGA Guest

    On Mar 4, 4:26 am, Tricky <> wrote:
    > On Mar 3, 9:15 pm, FPGA <> wrote:
    >
    > > I have written a process to generate random numbers using UNIFORM. I
    > > was trying to check the results using "rand" in matlab. How do i
    > > initialise the seed values of both these functions to the same value.
    > > I see that the random numbers generated by UNIFORM are different
    > > compared to rand when the seed values are left uninitialised.
    > > What do I need to change so that I get same output from both programs.

    >
    > > Thanks

    >
    > Uninitilised positives (the seeds in this case) will take a value of 1
    > when they are put into the uniform function. Unitialised types when
    > used will take type'low as their value
    >
    > positive'low = 1
    > std_logic'low = 'u'
    > etc.
    >
    > so both of your first calls to uniform are seeding it with two 1s.
    >
    > I dont know how the seeding works in matlab. It may not even use
    > positives, but the entire integer range. it is common in C to seed the
    > random number generator with the system time. Does matlab do something
    > similar? The C random function only has 1 seed, whereas uniform takes
    > 2.


    I am not sure how the rand function in MATLAB works. I tried to search
    if the code of the function was described anywhere but couldnt find.
    I dont know if we can get MATLAB to generate results as UNIFORM does.
    As you said, uniform has 2 seeds while rand has 1.
    If anyone has an idea on how this can be done, please post your
    comment.
     
    FPGA, Mar 4, 2008
    #3
  4. FPGA

    Tricky Guest

    On Mar 4, 2:00 pm, FPGA <> wrote:
    > On Mar 4, 4:26 am, Tricky <> wrote:
    >
    >
    >
    > > On Mar 3, 9:15 pm, FPGA <> wrote:

    >
    > > > I have written a process to generate random numbers using UNIFORM. I
    > > > was trying to check the results using "rand" in matlab. How do i
    > > > initialise the seed values of both these functions to the same value.
    > > > I see that the random numbers generated by UNIFORM are different
    > > > compared to rand when the seed values are left uninitialised.
    > > > What do I need to change so that I get same output from both programs.

    >
    > > > Thanks

    >
    > > Uninitilised positives (the seeds in this case) will take a value of 1
    > > when they are put into the uniform function. Unitialised types when
    > > used will take type'low as their value

    >
    > > positive'low = 1
    > > std_logic'low = 'u'
    > > etc.

    >
    > > so both of your first calls to uniform are seeding it with two 1s.

    >
    > > I dont know how the seeding works in matlab. It may not even use
    > > positives, but the entire integer range. it is common in C to seed the
    > > random number generator with the system time. Does matlab do something
    > > similar? The C random function only has 1 seed, whereas uniform takes
    > > 2.

    >
    > I am not sure how the rand function in MATLAB works. I tried to search
    > if the code of the function was described anywhere but couldnt find.
    > I dont know if we can get MATLAB to generate results as UNIFORM does.
    > As you said, uniform has 2 seeds while rand has 1.
    > If anyone has an idea on how this can be done, please post your
    > comment.


    Why not generate a file containing all the stimulus for the vhdl and
    matlab model in one or the other, instead of trying to recreate the
    random sequence?
     
    Tricky, Mar 4, 2008
    #4
  5. FPGA

    FPGA Guest

    On Mar 4, 9:12 am, Tricky <> wrote:
    > On Mar 4, 2:00 pm, FPGA <> wrote:
    >
    >
    >
    >
    >
    > > On Mar 4, 4:26 am, Tricky <> wrote:

    >
    > > > On Mar 3, 9:15 pm, FPGA <> wrote:

    >
    > > > > I have written a process to generate random numbers using UNIFORM. I
    > > > > was trying to check the results using "rand" in matlab. How do i
    > > > > initialise the seed values of both these functions to the same value..
    > > > > I see that the random numbers generated by UNIFORM are different
    > > > > compared to rand when the seed values are left uninitialised.
    > > > > What do I need to change so that I get same output from both programs.

    >
    > > > > Thanks

    >
    > > > Uninitilised positives (the seeds in this case) will take a value of 1
    > > > when they are put into the uniform function. Unitialised types when
    > > > used will take type'low as their value

    >
    > > > positive'low = 1
    > > > std_logic'low = 'u'
    > > > etc.

    >
    > > > so both of your first calls to uniform are seeding it with two 1s.

    >
    > > > I dont know how the seeding works in matlab. It may not even use
    > > > positives, but the entire integer range. it is common in C to seed the
    > > > random number generator with the system time. Does matlab do something
    > > > similar? The C random function only has 1 seed, whereas uniform takes
    > > > 2.

    >
    > > I am not sure how the rand function in MATLAB works. I tried to search
    > > if the code of the function was described anywhere but couldnt find.
    > > I dont know if we can get MATLAB to generate results as UNIFORM does.
    > > As you said, uniform has 2 seeds while rand has 1.
    > > If anyone has an idea on how this can be done, please post your
    > > comment.

    >
    > Why not generate a file containing all the stimulus for the vhdl and
    > matlab model in one or the other, instead of trying to recreate the
    > random sequence?- Hide quoted text -
    >
    > - Show quoted text -


    The goal is to check that the VHDL code generates results similar to
    MATLAB . I have written the outputs of both in seperate text files. I
    am not able to initialise the rand function to generate results
    similar to MATLAB and vice versa. Called MATLAB today to get some more
    information on how they have developed the rand function. They said
    that this information is not available to the public.
    I think one of the ways to do this would be, generating a pdf function
    for both cases and showing that their random distriution is similar.

    If any of you have other ideas please post them.
     
    FPGA, Mar 4, 2008
    #5
  6. FPGA

    Tricky Guest

    On Mar 4, 3:23 pm, FPGA <> wrote:
    > On Mar 4, 9:12 am, Tricky <> wrote:
    >
    >
    >
    > > On Mar 4, 2:00 pm, FPGA <> wrote:

    >
    > > > On Mar 4, 4:26 am, Tricky <> wrote:

    >
    > > > > On Mar 3, 9:15 pm, FPGA <> wrote:

    >
    > > > > > I have written a process to generate random numbers using UNIFORM. I
    > > > > > was trying to check the results using "rand" in matlab. How do i
    > > > > > initialise the seed values of both these functions to the same value.
    > > > > > I see that the random numbers generated by UNIFORM are different
    > > > > > compared to rand when the seed values are left uninitialised.
    > > > > > What do I need to change so that I get same output from both programs.

    >
    > > > > > Thanks

    >
    > > > > Uninitilised positives (the seeds in this case) will take a value of 1
    > > > > when they are put into the uniform function. Unitialised types when
    > > > > used will take type'low as their value

    >
    > > > > positive'low = 1
    > > > > std_logic'low = 'u'
    > > > > etc.

    >
    > > > > so both of your first calls to uniform are seeding it with two 1s.

    >
    > > > > I dont know how the seeding works in matlab. It may not even use
    > > > > positives, but the entire integer range. it is common in C to seed the
    > > > > random number generator with the system time. Does matlab do something
    > > > > similar? The C random function only has 1 seed, whereas uniform takes
    > > > > 2.

    >
    > > > I am not sure how the rand function in MATLAB works. I tried to search
    > > > if the code of the function was described anywhere but couldnt find.
    > > > I dont know if we can get MATLAB to generate results as UNIFORM does.
    > > > As you said, uniform has 2 seeds while rand has 1.
    > > > If anyone has an idea on how this can be done, please post your
    > > > comment.

    >
    > > Why not generate a file containing all the stimulus for the vhdl and
    > > matlab model in one or the other, instead of trying to recreate the
    > > random sequence?- Hide quoted text -

    >
    > > - Show quoted text -

    >
    > The goal is to check that the VHDL code generates results similar to
    > MATLAB . I have written the outputs of both in seperate text files. I
    > am not able to initialise the rand function to generate results
    > similar to MATLAB and vice versa. Called MATLAB today to get some more
    > information on how they have developed the rand function. They said
    > that this information is not available to the public.
    > I think one of the ways to do this would be, generating a pdf function
    > for both cases and showing that their random distriution is similar.
    >
    > If any of you have other ideas please post them.


    In that case, why are you even trying to do this? generate a file from
    matlab that is used as the stimulus for the VHDL testbench. Then you
    do not need to use the uniform function at all, and then you are
    testing that the results match.
     
    Tricky, Mar 4, 2008
    #6
  7. FPGA

    FPGA Guest

    On Mar 4, 10:45 am, Tricky <> wrote:
    > On Mar 4, 3:23 pm, FPGA <> wrote:
    >
    >
    >
    >
    >
    > > On Mar 4, 9:12 am, Tricky <> wrote:

    >
    > > > On Mar 4, 2:00 pm, FPGA <> wrote:

    >
    > > > > On Mar 4, 4:26 am, Tricky <> wrote:

    >
    > > > > > On Mar 3, 9:15 pm, FPGA <> wrote:

    >
    > > > > > > I have written a process to generate random numbers using UNIFORM. I
    > > > > > > was trying to check the results using "rand" in matlab. How do i
    > > > > > > initialise the seed values of both these functions to the same value.
    > > > > > > I see that the random numbers generated by UNIFORM are different
    > > > > > > compared to rand when the seed values are left uninitialised.
    > > > > > > What do I need to change so that I get same output from both programs.

    >
    > > > > > > Thanks

    >
    > > > > > Uninitilised positives (the seeds in this case) will take a value of 1
    > > > > > when they are put into the uniform function. Unitialised types when
    > > > > > used will take type'low as their value

    >
    > > > > > positive'low = 1
    > > > > > std_logic'low = 'u'
    > > > > > etc.

    >
    > > > > > so both of your first calls to uniform are seeding it with two 1s.

    >
    > > > > > I dont know how the seeding works in matlab. It may not even use
    > > > > > positives, but the entire integer range. it is common in C to seed the
    > > > > > random number generator with the system time. Does matlab do something
    > > > > > similar? The C random function only has 1 seed, whereas uniform takes
    > > > > > 2.

    >
    > > > > I am not sure how the rand function in MATLAB works. I tried to search
    > > > > if the code of the function was described anywhere but couldnt find.
    > > > > I dont know if we can get MATLAB to generate results as UNIFORM does..
    > > > > As you said, uniform has 2 seeds while rand has 1.
    > > > > If anyone has an idea on how this can be done, please post your
    > > > > comment.

    >
    > > > Why not generate a file containing all the stimulus for the vhdl and
    > > > matlab model in one or the other, instead of trying to recreate the
    > > > random sequence?- Hide quoted text -

    >
    > > > - Show quoted text -

    >
    > > The goal is to check that the VHDL code generates results similar to
    > > MATLAB . I have written the outputs of both in seperate text files. I
    > > am not able to initialise the rand function to generate results
    > > similar to MATLAB and vice versa. Called MATLAB today to get some more
    > > information on how they have developed the rand function. They said
    > > that this information is not available to the public.
    > > I think one of the ways to do this would be, generating a pdf function
    > > for both cases and showing that their random distriution is similar.

    >
    > > If any of you have other ideas please post them.

    >
    > In that case, why are you even trying to do this? generate a file from
    > matlab that is used as the stimulus for the VHDL testbench. Then you
    > do not need to use the uniform function at all, and then you are
    > testing that the results match.- Hide quoted text -
    >
    > - Show quoted text -


    I have to use the UNFORM function to check if it behaves in sync with
    MATLAB. I have given up on getting the same results in matlab as in
    VHDL. I am just trying to get a pdf plot of both results. No idea on
    how to do this yet.
     
    FPGA, Mar 4, 2008
    #7
  8. FPGA

    ajjc Guest

    On Mar 4, 12:10 pm, FPGA <> wrote:
    > On Mar 4, 10:45 am, Tricky <> wrote:
    >
    >
    >
    > > On Mar 4, 3:23 pm, FPGA <> wrote:

    >
    > > > On Mar 4, 9:12 am, Tricky <> wrote:

    >
    > > > > On Mar 4, 2:00 pm, FPGA <> wrote:

    >
    > > > > > On Mar 4, 4:26 am, Tricky <> wrote:

    >
    > > > > > > On Mar 3, 9:15 pm, FPGA <> wrote:

    >
    > > > > > > > I have written a process to generate random numbers using UNIFORM. I
    > > > > > > > was trying to check the results using "rand" in matlab. How do i
    > > > > > > > initialise the seed values of both these functions to the same value.
    > > > > > > > I see that the random numbers generated by UNIFORM are different
    > > > > > > > compared to rand when the seed values are left uninitialised.
    > > > > > > > What do I need to change so that I get same output from both programs.

    >
    > > > > > > > Thanks

    >
    > > > > > > Uninitilised positives (the seeds in this case) will take a value of 1
    > > > > > > when they are put into the uniform function. Unitialised types when
    > > > > > > used will take type'low as their value

    >
    > > > > > > positive'low = 1
    > > > > > > std_logic'low = 'u'
    > > > > > > etc.

    >
    > > > > > > so both of your first calls to uniform are seeding it with two 1s.

    >
    > > > > > > I dont know how the seeding works in matlab. It may not even use
    > > > > > > positives, but the entire integer range. it is common in C to seed the
    > > > > > > random number generator with the system time. Does matlab do something
    > > > > > > similar? The C random function only has 1 seed, whereas uniform takes
    > > > > > > 2.

    >
    > > > > > I am not sure how the rand function in MATLAB works. I tried to search
    > > > > > if the code of the function was described anywhere but couldnt find.
    > > > > > I dont know if we can get MATLAB to generate results as UNIFORM does.
    > > > > > As you said, uniform has 2 seeds while rand has 1.
    > > > > > If anyone has an idea on how this can be done, please post your
    > > > > > comment.

    >
    > > > > Why not generate a file containing all the stimulus for the vhdl and
    > > > > matlab model in one or the other, instead of trying to recreate the
    > > > > random sequence?- Hide quoted text -

    >
    > > > > - Show quoted text -

    >
    > > > The goal is to check that the VHDL code generates results similar to
    > > > MATLAB . I have written the outputs of both in seperate text files. I
    > > > am not able to initialise the rand function to generate results
    > > > similar to MATLAB and vice versa. Called MATLAB today to get some more
    > > > information on how they have developed the rand function. They said
    > > > that this information is not available to the public.
    > > > I think one of the ways to do this would be, generating a pdf function
    > > > for both cases and showing that their random distriution is similar.

    >
    > > > If any of you have other ideas please post them.

    >
    > > In that case, why are you even trying to do this? generate a file from
    > > matlab that is used as the stimulus for the VHDL testbench. Then you
    > > do not need to use the uniform function at all, and then you are
    > > testing that the results match.- Hide quoted text -

    >
    > > - Show quoted text -

    >
    > I have to use the UNFORM function to check if it behaves in sync with
    > MATLAB. I have given up on getting the same results in matlab as in
    > VHDL. I am just trying to get a pdf plot of both results. No idea on
    > how to do this yet.


    Sounds like you have an ill-posed question here.

    Mathworks won't tell you how it got it's pseudo-random stream...call
    it rand(i), where rand(0)
    is the seed.(In fact, you don't even know if there is a single seed or
    any seed for that matter!)

    You have created a pseudo-random stream fpga_rand(i), where the seed
    is fpga_rand(0).
    You are going to have to be satisfied with using statistical tests to
    verify that
    your function fpga_rand passes as many of the tests as you need, or at
    least as many as the
    matlab rand function passes. Look up http://en.wikipedia.org/wiki/Diehard_tests

    alan
     
    ajjc, Mar 6, 2008
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Casper B
    Replies:
    3
    Views:
    459
    eranb
    Jan 13, 2005
  2. tobiah
    Replies:
    3
    Views:
    275
    tobiah
    Sep 14, 2006
  3. siki
    Replies:
    0
    Views:
    1,003
  4. aegis

    uniform random distribution

    aegis, Jan 30, 2005, in forum: C Programming
    Replies:
    7
    Views:
    386
    Julian V. Noble
    Jan 31, 2005
  5. Luna Moon
    Replies:
    16
    Views:
    1,426
    Giovanni Gherdovich
    Aug 8, 2008
Loading...

Share This Page