Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   VHDL (http://www.velocityreviews.com/forums/f18-vhdl.html)
-   -   Enumerated integer type (http://www.velocityreviews.com/forums/t750457-enumerated-integer-type.html)

Colin Beighley 06-24-2011 04:24 PM

Enumerated integer type
 
Hello,

I'd like to declare a type like this

type mytype is (-1,1);

However, it appears that enumerated types aren't allowed to be
integers.

Is there a way to create an integer subtype where the values of the
type are constrained to certain hand-picked values, rather than a
range? The workaround for this is to use std_logic and convert it to
signed when you need to, but it seems an integer subtype would work
better.

Colin

Colin Beighley 06-26-2011 05:18 PM

Re: Enumerated integer type
 
On Jun 24, 11:54*am, Alan Fitch <a...@invalid.invalid> wrote:
> On 24/06/11 17:24, Colin Beighley wrote:
>
>
>
>
>
>
>
>
>
> > Hello,

>
> > I'd like to declare a type like this

>
> > type mytype is (-1,1);

>
> > However, it appears that enumerated types aren't allowed to be
> > integers.

>
> > Is there a way to create an integer subtype where the values of the
> > type are constrained to certain hand-picked values, rather than a
> > range? The workaround for this is to use std_logic and convert it to
> > signed when you need to, but it seems an integer subtype would work
> > better.

>
> > Colin

>
> Enumerated types can be a mixture of character literals and identifiers.
>
> What you probably want is an integer subtype, e.g.
>
> subtype mytype is integer range -1 to 1;
>
> Because this is a subtype of integer, it can be assigned to and from
> integers and other integer subtypes.
>
> regards
> Alan
>
> --
> Alan Fitch


My problem is that I want this type to only be able to assume the
values of -1 and 1, not 0. However, I suppose the declaration of a new
type for this is inconvenient because if I want to do any math with
the type I have to convert to a new integer type if the result assumes
a value that is not (-1,1)?

backhus 06-27-2011 05:59 AM

Re: Enumerated integer type
 
On 24 Jun., 18:24, Colin Beighley <colinbeigh...@gmail.com> wrote:
> Hello,
>
> I'd like to declare a type like this
>
> type mytype is (-1,1);
>
> However, it appears that enumerated types aren't allowed to be
> integers.
>
> Is there a way to create an integer subtype where the values of the
> type are constrained to certain hand-picked values, rather than a
> range? The workaround for this is to use std_logic and convert it to
> signed when you need to, but it seems an integer subtype would work
> better.
>
> Colin


Hi,
Not sure what you are about to do with this kind of type declaration
You can declare some ordinary enumerated type like :
type mytype is (neg,pos);
Then you can access the integers then with some simple conversion
function:
function getint(a : mytype) return integer range -1 to 1; -- or
whatever you like to call that function

usage example:
xx <= xx * getint(neg);

Have a nice synthesis
Eilert


All times are GMT. The time now is 09:00 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.