Integer arithmetic

N

nfirtaps

Can you do signend arithmetic with integer type. I am negating it here
and seem to be getting strange results.

subtype POINTER is integer range 0 to 16383;
subtype BYTECOUNT is integer range 0 to 16383;

signal readpointer : POINTER;
signal writepointer : POINTER;
signal diffpointer : BYTECOUNT;

.....

if (writepointer >= readpointer) then
diffpointer <= writepointer - readpointer;
else
diffpointer <= (16383-readpointer)+writepointer;
end if;
 
K

KJ

nfirtaps said:
Can you do signend arithmetic with integer type. I am negating it here
and seem to be getting strange results.

subtype POINTER is integer range 0 to 16383;
subtype BYTECOUNT is integer range 0 to 16383;

signal readpointer : POINTER;
signal writepointer : POINTER;
signal diffpointer : BYTECOUNT;

....

if (writepointer >= readpointer) then
diffpointer <= writepointer - readpointer;
else
diffpointer <= (16383-readpointer)+writepointer;
end if;

Try this...
subtype POINTER is integer range 0 to 16383;
subtype BYTECOUNT is integer range -16383 to 16383;

signal readpointer : POINTER;
signal writepointer : POINTER;
signal diffpointer : BYTECOUNT;
....
diffpointer <= writepointer - readpointer;

KJ
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,045
Latest member
DRCM

Latest Threads

Top