Hardware Reference
In-Depth Information
subtype tAdr is tUnsigned(... downto 0 );
constant ROM: tMem:=Anfangswert;
Der Speicherinhalt ist der Anfangswert. Für einen kleinen Speicher können
die Anfangswerte mit einer Zuordnungsliste festgelegt werden:
constant ROM: tMem:=( 0 => x"0f" , 1 => x"c3" , 2 => x"a4" , 3 => x"12" ,
others => x"00" )
Für einen größeren Festwertspeicher ist eine Funktion, die den zu speichernden
Inhalt - z.B. das Programm für einen Prozessor - aus einer Datei liest und als
Anfangswert übergibt, wünschenswert. In dem nachfolgenden Beispiel geht es
wieder im Wesentlichen um das Thema Textverarbeitung.
Die Beispieltextdatei soll je Zeile eine beliebige Anzahl von Bytes enthal-
ten, dargestellt durch zwei Hexadezimalziffern, gefolgt von Leerzeichen, dem
Zeilenumbruch oder dem Dateiende:
AF 09 87 D4 2A 95 12 BC C4 3C D6 E3 EC 79 45 C5
DE AB 24 38 8D A6 B3 ...
In dem in Abschnitt 3.3.3 skizzierten Package »Tuc.Eingabe« ist ein Daten-
objekt für ein Leseband vereinbart, das mit der Funktion
procedure read( file f:text; pstr: tPString)
mit einer Zeile aus einer Textdatei geladen und von dem mit Get-Prozeduren
Zeichenfolgen für unterschiedliche Datenobjekte abgeräumt werden können.
Für das Abräumen der zweistelligen Hexadezimalzahlen werden die Prozedur
procedure get_char(pstr: inout tPString; pos: out natural;
CharTab:string);
die ein Zeichen aus einer Zeichentabelle »CharTab« abräumt und deren Ta-
bellenposition zurückgibt, und die Prozedur
procedure skip(pstr: inout tPString; TrennzeichenTab:string);
die Trennzeichen abräumt, benötigt (siehe Anhang A.2.3). Daraus wird eine
Prozedur zum Abräumen von Bytes zusammengesetzt, die nach demselben
Schema wie die Abräumprozeduren für andere Datenobjekte aufgebaut ist:
constant HexZiffern:string:= "0123456789ABCDEF" ;
procedure get_Byte(pstr: inout tPString; w: out tByte) is
constant ptr:positive:=pstr.pta;
variable z0, z1:natural;
begin
skip(pstr, " " );
get_char(pstr, z1, HexZiffern);
if pstr.Status=ok then
get_char(pstr, z0, HexZiffern);
if pstr.Status=ok then
Search WWH ::




Custom Search