Subtyping issue

V

valentin tihomirov

I would like to restrict the space of characters.:
subtype TMYCHAR is character ('a', '1', '.'); -- not supported

I would like the interpriter to understand that the elements are characters
so that character'pos attribute were applicable to them for ASCII code
retreival. Like
constant C: character := TMYCHAR'val(1);
constant I: intger := character'pos(C); -- must be x61

Unfortunately, VHDL supports only ranges rather than enumerations in the
specification of subtype. How would you perform the convertion:
type TMYCHAR is ('a', '1', '.');
constant C: character := TMYCHAR'val(1);



I fail to write a function TMYCHAR elements with characters :(

function GET_ASCII(MC: TMYCHAR) return character is
begin
for C in character'left to character'right loop
if C = MC then -- incompareble types
return character'pos(C);
end if;
end loop;
end;



thanks in advance
 
J

Jonathan Bromley

I would like to restrict the space of characters.:
subtype TMYCHAR is character ('a', '1', '.'); -- not supported

I would like the interpriter to understand that the elements are characters
so that character'pos attribute were applicable to them for ASCII code
retreival. Like
constant C: character := TMYCHAR'val(1);
constant I: intger := character'pos(C); -- must be x61

Unfortunately, VHDL supports only ranges rather than enumerations in the
specification of subtype.

You are trying to specify a *set* of character. Modula-2 and Pascal
supported sets. VHDL does not.
How would you perform the convertion:
type TMYCHAR is ('a', '1', '.');
constant C: character := TMYCHAR'val(1);

One possible solution...

function To_Character(C: TMYCHAR) return CHARACTER is
begin
return CHARACTER'VALUE(TMYCHAR'IMAGE(C));
end

Alternatively, try a lookup table:

type Char_Lookup is array (TMYCHAR) of CHARACTER;
constant To_Character: Char_Lookup :=
( 'a' => 'a'
, '1' => '1'
, '.' => '.'
);

In either case (function or lookup table) you can then write...

constant C: CHARACTER := To_Character('1');

HTH
--
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL, Verilog, SystemC, Perl, Tcl/Tk, Verification, Project Services

Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, BH24 1AW, UK
Tel: +44 (0)1425 471223 mail:[email protected]
Fax: +44 (0)1425 471573 Web: http://www.doulos.com

The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
 

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,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top