![]() |
|
|
|||||||
![]() |
VHDL - How to print a long unsigned ? |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
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 |
|
|
|
|
#2 |
|
Posts: n/a
|
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 |
|
|
|
#3 |
|
Posts: n/a
|
>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 |
|
|
|
#4 |
|
Posts: n/a
|
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 |
|
![]() |
| Thread Tools | Search this Thread |
|
|
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 |