+ Post New Thread
Results 1 to 8 of 8
  1. #1
    Member level 2
    Points: 462, Level: 4

    Join Date
    Jan 2016
    Posts
    43
    Helped
    1 / 1
    Points
    462
    Level
    4

    how to call decimal values in verilog

    hy
    i am working in a image processing based project using FPGA. i want to call my features into addition block which are decimals in the range of 0.1 to 0.9. Can anyone tell me some techniques to convert these numbers into fixed point binary?

    •   Alt7th March 2017, 11:17

      advertising

        
       

  2. #2
    Super Moderator
    Points: 44,897, Level: 51
    Awards:
    Most Frequent Poster

    Join Date
    Apr 2014
    Posts
    9,187
    Helped
    2212 / 2212
    Points
    44,897
    Level
    51

    Re: how to call decimal values in verilog

    Hi,

    simply use "1...9" as integers.
    And imagine as there was a "0." before it.

    Or use them as integers and divide them by 10...if you really need this.
    ****

    Maybe you need to give a bit more information, why you especially need to know that it is a value between 0 and 1.

    Klaus



    •   Alt7th March 2017, 11:28

      advertising

        
       

  3. #3
    Full Member level 3
    Points: 1,357, Level: 8

    Join Date
    Jul 2014
    Posts
    173
    Helped
    12 / 12
    Points
    1,357
    Level
    8

    Re: how to call decimal values in verilog

    hi,

    sometimes i will use this for conversion

    http://www.exploringbinary.com/binary-converter/

    then what is the fixed integer & fractional length ?

    regards


    2 members found this post helpful.

    •   Alt8th March 2017, 04:28

      advertising

        
       

  4. #4
    Member level 2
    Points: 462, Level: 4

    Join Date
    Jan 2016
    Posts
    43
    Helped
    1 / 1
    Points
    462
    Level
    4

    Re: how to call decimal values in verilog

    can anyone explain about the roundoff to the nearest power of 2 concept? can i use this for converting my decimals into rounded integer and then into binary



  5. #5
    Super Moderator
    Points: 26,615, Level: 39
    ads-ee's Avatar
    Join Date
    Sep 2013
    Location
    USA
    Posts
    6,048
    Helped
    1482 / 1482
    Points
    26,615
    Level
    39

    Re: how to call decimal values in verilog

    Nearest power of two is finding the 2^N that is nearest to your number.

    e.g.
    Code:
    2 => 2^1 (2)
    5 => 2^2 (4), or 2^3 (8, for round up)
    13 => 2^4 (16)
    As you can see this won't help at all for converting between decimals and binary.

    BTW in hardware all decimal numbers are stored as binary values, there are no 10 state FFs. So if you look at the following code:
    Code:
    wire [3:0] a;
    assign a = 10;
    // 10 in binary is 1010
    // a[0] = 1'b0
    // a[1] = 1'b1
    // a[2] = 1'b0
    // a[3] = 1'b1
    For your original question the easiest thing to do is scale all your numbers by *10. Using any kind of 2^N scaling will never give you an exact 0.9 value. What you need to do is determine your required integer and fractional bit widths to obtain the accuracy you desire.


    1 members found this post helpful.

    •   Alt8th March 2017, 18:12

      advertising

        
       

  6. #6
    Member level 2
    Points: 462, Level: 4

    Join Date
    Jan 2016
    Posts
    43
    Helped
    1 / 1
    Points
    462
    Level
    4

    Re: how to call decimal values in verilog

    can you tell me how to choose an effective scaling factor? whether it should be only *10 s or any other number?



  7. #7
    Super Moderator
    Points: 26,615, Level: 39
    ads-ee's Avatar
    Join Date
    Sep 2013
    Location
    USA
    Posts
    6,048
    Helped
    1482 / 1482
    Points
    26,615
    Level
    39

    Re: how to call decimal values in verilog

    You scale based on the number of bit of precision you require.


    1 members found this post helpful.

  8. #8
    Member level 4
    Points: 1,080, Level: 7
    Altaero's Avatar
    Join Date
    Dec 2013
    Location
    St-Petersburg, Russia
    Posts
    78
    Helped
    24 / 24
    Points
    1,080
    Level
    7

    Re: how to call decimal values in verilog

    Fixed point arithmetics is absoultely the same as integer arithmetics, in fact it IS integer arithmetics. It's up to you where to put decimal point.


    1 members found this post helpful.

--[[ ]]--