Aufrufe
vor 4 Jahren

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik Prozeduren zum Schreiben: Das Gegenstück zur Leseprozedur READ ist die Prozedur WRITE, die den Inhalt der Variablen object_name in das File file_name schreibt. WRITE (file_name, object_name); Funktion zur Prüfung auf Dateiende: Die Funktion ENDFILE liefert eine Boolesche Variable, die true bei erreichtem Dateiende ist, ansonsten false. ENDFILE (file_name); Beispiel: Initialisierung eines Arrays für die Implementierung eines ROM Das ROM kann nicht durch eine Datei, sondern muß für den wahlweisen Zugriff durch ein Array implementiert werden. Das Array wird dabei mit dem Inhalt einer Datei belegt. Dies Datenwörter sind vom Typ std_logic_vector, dessen Länge durch den ROM-Datenport bestimmt ist. Die Speichertiefe hängt vom Adressport des ROM ab. --------------------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ROM IS GENERIC ( load_file_name : STRING ); PORT ( sel : IN std_logic; END ENTITY ROM; address : IN std_logic_vector; data : INOUT std_logic_vector ); --------------------------------------------------------------- ARCHITECTURE behavioral OF ROM IS BEGIN PROCESS SUBTYPE word IS std_logic_vector(0 TO data'LENGTH - 1); TYPE storage_array IS ARRAY (NATURAL RANGE 0 TO 2**address'LENGTH - 1) OF word; VARIABLE storage : storage_array; VARIABLE index : natural; TYPE load_file_type IS FILE OF word; FILE load_file : load_file_type OPEN read_mode IS load_file_name; VHDL - SIMULATION 105

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik BEGIN -- load ROM contents from load_file index := 0; WHILE NOT ENDFILE(load_file) LOOP READ(load_file, storage(index)); index := index + 1; END LOOP; END PROCESS; END ARCHITECTURE behavioral; --------------------------------------------------------------- 3.4.3 Textdateien und Zugriff auf Textdateien Bei Textdateien handelt es sich um beliebig strukturierte ASCII-Dateien. Das Package textio in der Standardbibliothek std deklariert hierfür den Filetyp text und den Datentyp line. Das Package enthält weiterhin eine Reihe von Funktionen, mit denen verschiedene Operationen auf Zeichenketten (Strings) ausgeführt werden können. Textdateien werden mit den Prozeduren READLINE und WRITELINE zeilenweise gelesen und geschrieben. Das Lesen und Schreiben von Objekten innerhalb einer Zeile erfolgt wie bei typspezifischen Files mit den Prozeduren READ und WRITE. Prozeduren: READLINE (file_name, line_object_name); Mit der Prozedur READLINE werden (zunächst ganze) Zeilen der Datei file_name in das Objekt line_object_name übernommen. Das Objekt line_object_name ist vom Typ line. WRITELINE (file_name, line_object_name); Mit der Prozedur WRITELINE kann das Objekt line_object_name in die Datei file_name geschrieben werden. READ (line_object_name, object_name); WRITE (line_object_name, object_name); Lesen und Schreiben von Objekten innerhalb einer Zeile erfolgen mit den Prozeduren READ und WRITE. VHDL - SIMULATION 106

Verification.pdf
VHDL Kompakt - CES
Schaltungsdesign mit VHDL
VHDL Einführung
VHDL Design Guidelines