![]() |
|
|
|||||||
![]() |
VHDL - Adding a NATURAL and a STD_LOGIC_VECTOR |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Hi,
I'd like to compute the arithmetic sum of a NATURAL signal and a STD_LOGIC_VECTOR signal, and store the value into a NATURAL signal, ie. a <= b + c, with a NATURAL, b NATURAL and c STD_LOGIC_VECTOR. How should I do ? Here the compiler complains about not finding a suitable definition of the + operator. I tried various combinations of TO_INTEGER(), TO_BIT_VECTOR(), UNSIGNED(), ... but no luck. The sum works when all operands are NATURAL. I'm using Quartus II from Altera. Regards, Sebastien Sebastien Bourdeauducq |
|
|
|
|
#2 |
|
Posts: n/a
|
On Jun 8, 7:31 am, Sebastien Bourdeauducq
<sebastien.bourdeaud...@gmail.com> wrote: > Hi, > > I'd like to compute the arithmetic sum of a NATURAL signal and a > STD_LOGIC_VECTOR signal, and store the value into a NATURAL signal, > ie. a <= b + c, with a NATURAL, b NATURAL and c STD_LOGIC_VECTOR. > How should I do ? Here the compiler complains about not finding a > suitable definition of the + operator. I tried various combinations of > TO_INTEGER(), TO_BIT_VECTOR(), UNSIGNED(), ... but no luck. > The sum works when all operands are NATURAL. > > I'm using Quartus II from Altera. > > Regards, > > Sebastien use ieee.numeric_std.all; .... a <= to_integer(b + unsigned(c)); or: a <= b + to_integer(unsigned(c)); Andy Andy |
|
|
|
#3 |
|
Posts: n/a
|
"Sebastien Bourdeauducq" <> wrote in message
news: ups.com... > Hi, > > I'd like to compute the arithmetic sum of a NATURAL signal and a > STD_LOGIC_VECTOR signal, and store the value into a NATURAL signal, > ie. a <= b + c, with a NATURAL, b NATURAL and c STD_LOGIC_VECTOR. > How should I do ? Here the compiler complains about not finding a > suitable definition of the + operator. I tried various combinations of > TO_INTEGER(), TO_BIT_VECTOR(), UNSIGNED(), ... but no luck. > The sum works when all operands are NATURAL. The base VHDL language (through VHDL-2002) does not define arithmetic on std_logic_vectors. You have to use an external package (or write the addition operator yourself) to get the desired functionality. Following the IEEE standard approach, you will need to use package IEEE.numeric_std from 1076.3-1997. If IN1 and OUT1 are std_logic_vectors of the same length, and IN2 is of type NATURAL, the following assignment works: out1 <= std_logic_vector( unsigned(in1) + in2 ); This a) converts IN1 from SLV to UNSIGNED, b) performs the addition creating an UNSIGNED result, and c) converts the result back to SLV. Some alternative approaches: Using Synopsys' package IEEE.std_logic_arith: out1 <= unsigned(in1) + in2; Using Synopsys' package IEEE.std_logic_unsigned: out1 <= in1 + in2; Tim McBrayer |
|
|
|
#4 |
|
Posts: n/a
|
a <= b + to_integer(unsigned(c)); with ieee.numeric_std.all works.
Thanks ! Sebastien Bourdeauducq |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| DVD Verdict reviews: NATURAL CITY, UNO BIANCA, GODZILLA: MONSTER EDITION, and more! | DVD Verdict | DVD Video | 0 | 04-27-2006 09:21 AM |
| FS: Lot of 10 DVDs - City of God , Natural Born Killers , $60.00.............dvd#CGW253 | campu2 | DVD Video | 0 | 05-31-2005 06:38 AM |
| Natural Born Killers in a triple-pack? | Pepper | DVD Video | 0 | 06-28-2004 01:58 AM |
| Natural Born Killers music question | PW | DVD Video | 7 | 09-04-2003 03:19 AM |