Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - How to print a long unsigned ?

 
Thread Tools Search this Thread
Old 09-22-2003, 04:33 PM   #1
Default How to print a long unsigned ?



Dear all,

I have a long unsigned:
o: out unsigned (99 downto 0)
which I want to print in decimal.

I can use the write procedure of the std.textio package, after a conversion to
integer:
write(L, to_integer(o))
But this fails when o >= 2**32.

In std_logic_textio, write is overloaded on std_logic_vector. So
write(L, std_logic_vector(o)) works fine but unfortunately print the
value in binary.

I looked at some contribution packages providing a printf-like feature. But none
is able to handle values > 32 bits.

Do you know of any procedure to print long unsigneds in decimal ? (Hexa would be
okay even if not the perfect solution.)

Thanks in advance.

(non-spammers will remove all 'x')
--
Ce message a ete poste via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/


Lolo
  Reply With Quote
Old 09-22-2003, 07:33 PM   #2
Mike Treseler
 
Posts: n/a
Default Re: How to print a long unsigned ?
Lolo wrote:

> Do you know of any procedure to print long unsigneds in decimal ? (Hexa would be
> okay even if not the perfect solution.)


Heres an unsigned to hex string function:

http://groups.google.com/groups?q=arg_pad_left

-- Mike Treseler



Mike Treseler
  Reply With Quote
Old 09-22-2003, 08:32 PM   #3
VhdlCohen
 
Posts: n/a
Default Re: How to print a long unsigned ?
>I have a long unsigned:
> o: out unsigned (99 downto 0)
>which I want to print in decimal.


Use the image package at my site. I updated to use the use ieee.numeric_std
package.
library IEEE;
use IEEE.Std_Logic_1164.all;
use IEEE.Std_Logic_TextIO.all;
use ieee.numeric_std.all;
-- use IEEE.Std_Logic_Arith.all;

library Std;
use STD.TextIO.all;

package Image_Pkg is
function Image(In_Image : Time) return String;
function Image(In_Image : Bit) return String;
function Image(In_Image : Bit_Vector) return String;
function Image(In_Image : Integer) return String;
function Image(In_Image : Real) return String;
function Image(In_Image : Std_uLogic) return String;
function Image(In_Image : Std_uLogic_Vector) return String;
function Image(In_Image : Std_Logic_Vector) return String;
function Image(In_Image : Signed) return String;
function Image(In_Image : UnSigned) return String;

function HexImage(InStrg : String) return String;
function HexImage(In_Image : Bit_Vector) return String;
function HexImage(In_Image : Std_uLogic_Vector) return String;
function HexImage(In_Image : Std_Logic_Vector) return String;
function HexImage(In_Image : Signed) return String;
function HexImage(In_Image : UnSigned) return String;

function DecImage(In_Image : Bit_Vector) return String;
function DecImage(In_Image : Std_uLogic_Vector) return String;
function DecImage(In_Image : Std_Logic_Vector) return String;
function DecImage(In_Image : Signed) return String;
function DecImage(In_Image : UnSigned) return String;
end Image_Pkg;

----------------------------------------------------------------------------
Ben Cohen Publisher, Trainer, Consultant (310) 721-4830
http://www.vhdlcohen.com/
Author of following textbooks:
* Using PSL/SUGAR with Verilog and VHDL
Guide to Property Specification Language for ABV, 2003 isbn 0-9705394-4-4
* Real Chip Design and Verification Using Verilog and VHDL, 2002 isbn
0-9705394-2-8
* Component Design by Example ", 2001 isbn 0-9705394-0-1
* VHDL Coding Styles and Methodologies, 2nd Edition, 1999 isbn 0-7923-8474-1
* VHDL Answers to Frequently Asked Questions, 2nd Edition, isbn 0-7923-8115
------------------------------------------------------------------------------


VhdlCohen
  Reply With Quote
Old 09-23-2003, 01:22 AM   #4
Jim Lewis
 
Posts: n/a
Default Re: How to print a long unsigned ?
I have not seen any packages that handle printing bigger
than 31/32 bits of data. Ben Cohen's above throws out bits
above 31/32. So does the one that part of the Free Model Foundry.


Printing Hex
=======================
If hex is ok, the easy way is to use std_logic_textio and do:
hwrite(L, std_logic_vector(o));

While std_logic_textio is not a standard, under the IEEE P1164
it is a candidate to become a standard.

One annoying feature of std_logic_textio is that the
array must be sized n*4. Hence if your array is not a multiple
of 4, you must pad it (hopefully we will get to fix this).


Bruteforcing Decimal to work
===============================
If you are using the package numeric_std, use / and mod
to break your number into 4 pieces (use 10**9 = the largest
power of 10 that fits into 31/32 bits). Now you can
print by using write(L, to_integer(i), left, 9) ;


There is a proposal to extend std_logic_textio when it
gets standardized to have a dwrite and a dread.

There is also a proposal to add these for bit_vector under
the vhdl-200x-ft effort. See: http://www.eda.org/vhdl-200x/vhdl-200x-ft


If you find anything better than what I suggested, please
pass it along to either the working groups or to myself
as I am helping with both of the above efforts.


Cheers,
Jim Lewis
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
Jim Lewis
Director of Training private.php?do=newpm&u=
SynthWorks Design Inc. http://www.SynthWorks.com
1-503-590-4787

Expert VHDL Training for Hardware Design and Verification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~


Lolo wrote:

> Dear all,
>
> I have a long unsigned:
> o: out unsigned (99 downto 0)
> which I want to print in decimal.
>
> I can use the write procedure of the std.textio package, after a conversion to
> integer:
> write(L, to_integer(o))
> But this fails when o >= 2**32.
>
> In std_logic_textio, write is overloaded on std_logic_vector. So
> write(L, std_logic_vector(o)) works fine but unfortunately print the
> value in binary.
>
> I looked at some contribution packages providing a printf-like feature. But none
> is able to handle values > 32 bits.
>
> Do you know of any procedure to print long unsigneds in decimal ? (Hexa would be
> okay even if not the perfect solution.)
>
> Thanks in advance.
>
> (non-spammers will remove all 'x')




Jim Lewis
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Help configuring DP-311P Print Server with Verizon Wireless Router Surek Hardware 0 04-07-2009 12:23 AM
Netflix: how long is long? lilydied@aintitcoolmail.com DVD Video 25 11-18-2005 08:46 PM
140+ New DVDs FOR SALE - Sealed - Great Resale Potential Sylassa DVD Video 0 04-01-2005 07:16 AM
DVD and CD Cover Print Anonymous DVD Video 0 09-19-2004 05:23 AM
DVD Cover Print The Password Master DVD Video 1 06-19-2004 09:20 AM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46