Enumerated integer type

C

Colin Beighley

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
 
C

Colin Beighley

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

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)?
 
B

backhus

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
 

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,994
Messages
2,570,223
Members
46,810
Latest member
Kassie0918

Latest Threads

Top