![]() |
|
|
|
#1 |
|
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; nfirtaps |
|
|
|
|
#2 |
|
Posts: n/a
|
"nfirtaps" <> wrote in message news: oups.com... > 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 |
|