
www.Usenet.com
| <-- __Chronological__ --> | <-- __Thread__ --> |
Why do you use an ALU to implement a counter? Just use a counter macro that is 32 bits, and you don't have to think. Peter Alfke Kevin Becker wrote: > > I'm designing a processor for one specific application and in my > software I have need a counter. I have a problem figuring out how to > make Add-with-carry work for this. > > I want to do v := v + i. > v and i are both 32 bit values, my ALU is 16 bits wide. > Everything is 2-complement. > > I would add the lower 16 bits, then add the higher 16 bits with carry. > My problem: "i" may be positive or negative, so there are 3 things > that can occur: > - overflow > - underflow > - none of those > > If I have only one carry bit, those 3 possibilities cannot be > represented. Am I right that in such an architecture it is impossible > to achieve what I want? How do I have to change my ALU in order to do > that? And how do I handle the sign bits in the "middle" of the 32 bit > values? If possible, I would like to avoid an additional comparison > and use only flags. > > I have looked at PicoBlaze as an example, but I could not figure out > what I am doing wrong. Please help :) Thanks, Dan
| <-- __Chronological__ --> | <-- __Thread__ --> |