![]() |
|
|
|
#1 |
|
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 valentin tihomirov |
|
|
|
|
#2 |
|
Posts: n/a
|
On Thu, 30 Jun 2005 15:46:28 +0300, "valentin tihomirov"
<> wrote: >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: 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. Jonathan Bromley |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Digital DIGEST - LIVE UPDATE Issue 41 | Ablang | DVD Video | 0 | 01-05-2004 11:54 PM |
| Re: odd motherboard issue | hootnholler | A+ Certification | 0 | 12-19-2003 06:34 AM |
| Digital DIGEST - LIVE UPDATE Issue 40 | Ablang | DVD Video | 0 | 12-15-2003 02:45 PM |
| Digital DIGEST - LIVE UPDATE Issue 39 | Ablang | DVD Video | 0 | 11-29-2003 02:17 AM |
| Digital DIGEST - LIVE UPDATE Issue 38 | Ablang | DVD Video | 0 | 11-09-2003 01:31 AM |