VHDL-Ringkas

download VHDL-Ringkas

of 19

Transcript of VHDL-Ringkas

  • 8/14/2019 VHDL-Ringkas

    1/19

    Ir. Djogi Lubis M.A.P FTIK-UHT

    VHDL-Sederhana Referensi

    I. PRIMARY DESIGN UNIT MODEL STRUCTURE

    1. Struktur Model Unit Rancangan UtamaSetiap unit rancangan VHDL terdiri dari suatu deklarasi entity dan satu atau lebih

    architectures. Setiap architecture mendifinisikan implementasi atau model yang

    berbeda dari suatu unit rancangan yang diberikan. Difinisi entity menetapkan semua

    masukan ke, dan keluaran dari modul, dan setiap generic parameter yang digunakan

    oleh implementasi yang berbeda dari suatu modul.

    2. Entity Declaration Format

    entity name is port( port definition list );-- input/output signal ports generic( generic list); -- optional generic list endname;

    Format deklarasi port:port_name: mode data_type;Mode dari suatu port menentukan arah dari sinyal-sinyal pada port tersebut,

    menggunakan salah satu dari mode sbb; in, out, buffer, atau inout.

    Mode dari port: in port

    dapat dibaca tetapi tidak dapat diperbaharui (updated) dari dalam modul,membawa informasi kedalam modul. (suatu in porttidak dapat muncul pada

    sebelah kiri dari suatusignal assignment)

    out port

    dapat diperbaharui tetapi tidak dapat dibaca dari dalam modul, membawa

    informasi keluar modul. (suatu out porttidak dapat muncul disebelah kanandarisignal assignment)

    buffer port

    Membawa informasi keluar dari modul, dapat dibaca dan diperbaharui daridalam modul.

    inout port

    Saluran dua arah, dapat diperbaharui serta dibaca dari dalam modul, dan

    memungkinkan penggunaan sumber multi update.

    Catatan: buffer hanya sebagai suatu output port saja, hanya dapat digerakkan dari

    dalam modul, sedang inout benar-benar dua arah dengan penggerak (driver) dari

    dalam dan luar modul

    Contoh

    1

  • 8/14/2019 VHDL-Ringkas

    2/19

    entity counter isport (Incr, Load, Clock: in bit;

    Carry: out bit;Data_Out: buffer bit_vector(7 downto 0);Data_In: in bit_vector(7 downto 0));

    end counter;

    Generics memungkinkan informasi static dikomunikasikan ke suatu block di-

    lingkungannya ke-semua architecture yang berada dalam satu unit desain. Dalam hal

    ini termasuktiming information (setup, hold, delay times),part sizes, dan parameter-

    parameter lainnya.

    Contoh;

    entity and_gate isport(a,b: in bit;

    c: out bit);

    generic (gate_delay: time := 5ns);end and_gate;

    3. ArchitectureSuatu architecture mendifinisikan satu implementasi khusus pada suatu unit desain, ke-

    beberapa bentuk abstraksi.

    architecture arch_name of entity_name is... declarations ...

    begin... concurrent statements ...

    end

    Declarations mencakup data types, signals, files, components, attributes,

    subprogram, dan informasi lain yang digunakan untuk diskripsi implementasinya.

    Concurrent statements menggambarkan suatu unit desain dengan satu atau lebih

    bentuk abstraksi permodelan, termasukdataflow,structure, dan / atau behavior.

    Behavioral Model: dalam bentuk ini tidak ada struktur atau teknologi yang

    diimplementasikan. Biasanya dituliskan dalam bentuk sequential, atau

    prosedural.

    Dataflow Model: menggambarkan semua bentuk aliran data, berikut dengan semua

    sinyal-sinyal pengontrolnya.

    Structural Model: sesuai dengan interkoneksi dari komponen-komponen.

    II. VHDL PACKAGESPackage dalam VHDL berisi subprogram, difinisi konstanta, dan/ atau difinisi typeyang digunakan dan yang ada dalam satu atau lebih unit-unit desain. Tiap package

    berisi suatu bagian deklarasi (declaration section), dan di dalam itu dideklarasikan

    subprograms (exportable), constants, dan types yang tersedia, serta suatu package

    body, dimana di-dalamnya didifinisikan implementasi subprogram, berikut dengan

    constants dan types yang digunakan secara internal. Bagian dekalarasi akanmerepresentasikan suatu bagian dari package yang visible untukuserdaripackage

    2

  • 8/14/2019 VHDL-Ringkas

    3/19

    tersebut atau yang menggunakannya. Implementasi yang sesungguhnya dari

    subroutines dalampackage umumnya tidak terlalu menarik bagi users darisubroutinetersebut.

    Declaration and Libraries

    1. Format deklarasi Package

    package package_name is... exported constant declarations... exported type declarations... exported subprogram declarations

    end package_name;

    Contoh:

    package ee530 isconstant maxint: integer := 16#ffff#;type arith_mode_type is (signed, unsigned);function minimum(constant a,b: in integer) returninteger;

    end ee530;

    2. Format body dari Package

    package body package_name is... exported subprogram bodies... other internally-used declarations

    end package_name;

    Contoh:

    package body ee530 isfunction minimum (constant a,b: integer) return integer is

    variable c: integer; -- local variablebegin

    if a < b thenc := a; -- a is minelse

    c := b; -- b is minend if;return c; -- return min value

    end;end ee530;

    Package Visibility: Untuk membuat semua item dari package visible untuk suatuunit desain, selalu didahului dengan use statement pada suatu unit desain.

    Contoh: use library_name.package_name.all

    3

  • 8/14/2019 VHDL-Ringkas

    4/19

    use statementdapat mendahului suatu deklarasi dari setiap entity atau architectureyang digunakan dalam package. Jika use statement mendahului deklarasi

    entity, package menjadi visible juga untuk architecture yang bersangkutan.

    User-Developed Packages Untukmeng-compile user-developed packages

    yang ada dalam library kerja yang digunakan saat itu:

    use package_name.all;

    Catatan: dalam library kerja yang digunakan saat itu adalah, std dan work,merupakan dua default libraries. The VHDL library statement dibutuhkan

    untuk membuat ieee library dan / atau suatu libraries tambahan menjadi

    visible.

    Contoh: library lib_name; -- make library visible use lib_name.pkg_name.all; -- make package visible

    VHDL Standard PackagesSTANDARD - basic type declarations (always visible by default)

    TEXTIO - ASCII input/output data types and subprograms

    Untuk membuat TEXTIO visible: use std.textio.all;

    IEEE Standard 1164 Package

    Package ini berada di dalam ieee library untuk mendukung multi-valued sinyal-

    sinyal logika dengan type declaration dan functions. Untuk membuatnya visible:

    library ieee; -- VHDL Library stmt useieee.std_logic_1164.all;

    Special 12-valued data types/functions to interface with QuickSim II and schematicdiagrams.

    library mgc_portable; -- Special Mentor Graphics Libraryuse mgc_portable.qsim_logic.all; -- Quicksim portable data types

    VHDL IDENTIFIERS, NUMBERS, STRINGS, AND

    EXPRESSIONS

    Identifiers.Identifiers dalam VHDL harus dimulai dengan huruf, dan dapat berisi kombinasi dari

    huruf, digits, dan underscores. Catatan, secara internal VHDL meng-konversi semua

    karakter kebentuk huruf besar (Upper-Case)

    Contoh:

    4

  • 8/14/2019 VHDL-Ringkas

    5/19

    Memory1, Adder_Module, Bus_16_Bit

    Numeric Constants.Numericconstants dapat didifinisikan dan dapat digunakan untuk setiap base (default pada decimal). Angka dapat disertakan dengan underscores untuk memperjelaspembacaan.

    Format:base#digits# -- base-nya harus bilangan decimal

    Contoh16#9fba# (hexadecimal)2#1111_1101_1011# (binary)16#f.1f#E+2 (floating-point, exponent is decimal)

    Bit String Literals

    Bit vector constants dispesifikasikan sebagai literal strings.Contoh

    x"ffe" (12-bit hexadecimal value)o"777" (9-bit octal value)b"1111_1101_1101" (12-bit binary value)

    Arithmetic and Logical ExpressionsEkspresi dalam VHDL sama dengan kebanyakan bahasa tingkat-tinggi lainnya.

    Elemen-elemen data harus dalam bentuktype, atausubtypes dari base type yang sama.

    Operatornya antara lain sbb:

    Logical: and, or, nand, nor, xor, not (for boolean or bit ops)

    Relational: =, /=, =

    Arithmetic: +, -, *, /, mod, rem, **, abs

    (a mod b takes sign of b, a rem b takes sign of a)

    Concatenate: & (jalinan)

    (ex. a & b makes one array)

    Contoh

    a

  • 8/14/2019 VHDL-Ringkas

    6/19

    Predefined Scalar Data Types (single objects)

    VHDL Standard:

    bit values: '0', '1' boolean values: TRUE, FALSE integer values: -(231) to +(231 - 1) {SUN Limit}

    natural values: 0 to integer'high (subtype of integer) positive values: 1 to integer'high (subtype of integer) character values: ASCII characters (eg. 'A') time values include units (eg. 10ns, 20us)

    IEEE Standard 1164 (package ieee.std_logic_1164.all) std_ulogic values: 'U','X','1','0','Z','W','H','L','-''U' = uninitialized, 'X' = unknown, 'W' = weak 'X', 'Z' = floating, 'H'/'L' = weak '1'/'0', '-' =don't care

    std_logic resolved "std_ulogic" values

    X01 subtype {'X','0','1'} of std_ulogic

    X01Z subtype {'X','0','1','Z'} of std_ulogic

    UX01 subtype {'U','X','0','1'} of std_ulogic

    UX01Z subtype {'U','X','0','1','Z'} of std_ulogic

    Predefined VHDL Aggregate Data Types bit_vector array (natural range ) of bit

    string array (natural range ) of char

    text file of "string"

    IEEE Standard 1164 Aggregate Data Types(From package: ieee.std_logic_1164.all)

    std_ulogic_vector array (natural range ) of std_ulogic

    std_logic_vector array (natural range ) of std_logic

    Contoh

    signal dbus: bit_vector(15 downto 0);dbus (7 downto 4)

  • 8/14/2019 VHDL-Ringkas

    7/19

    Example

    type word isarray (0 to 15) of bit;

    Unconstrained array: pemberian indeks dispesifikasikan ketika suatu sinyal

    atau variable dari type dideklarasikan.Contoh

    type memory is array (integer range ) of bit_vector(0 to 7);-- a type which is an arbitrary-sized array of 8-bit vectors

    variable memory256: memory(0 to 255); -- a 256-byte memory arrayvariable stack: memory(15 downto 0); -- a 16-byte memory array

    Subtype: suatu subset di[pilih dari nilai-nilai type yang diberikan. Elemen-elemen subtypes yang berbeda dan mempunyai base type yang sama dapat

    dikombinasikan dalam berbagai ekspresi (elemen-elemen yang berbeda tidak

    dapat dikombinasikan). Subtypes dapat digunakan untuk mendeteksi out-of-

    range values pada saat simulasi.Contoh

    subtype byte_signed is integer range -128 to 127; subtype byte_unsigned is integer range 0 to 255;

    Aliasesalias digunakan untuk mendifinisikan suatu pergantian nama dari suatu signal atau

    bagian dari signal. Aliases sering digunakan sebagai referensi dalam memilih

    potongan-potongan suatu bit-vector.

    Contoh.

    signal instruction: bit_vector(31 downto 0);alias opcode: bit_vector(6 downto 0) is instruction(31 downto 25);

    ...

    opcode

  • 8/14/2019 VHDL-Ringkas

    8/19

    VariablesVariabel dideklarasikan di-dalam suatu blocks, process, procedure, atau function,

    dan diperbaharui segera ketika assignment statement dieksekusi. Suatu variable dapat

    berupa scalar atau aggregate data type, dan digunakan terutama dalam diskripsi

    behavioral. Secara optional dapat di assign nilai-nilai awal (dilakukan hanya sekalisaat mengawali simulasi). Syntax dari deklarasinya sbb:

    variable symbol: type [:= initial_value];

    Contoh

    processvariable count: integer := 0;variable rega: bit_vector(7 downto 0);

    begin...count := 7; -- assign values to variablesrega := x"01";...

    end;

    SignalsSignal adalah suatu object dengan suatu histori dari nilai-nilai (terkait dengan waktu

    waktu event, atau waktu saat mana nilai sinyal berubah)

    Signals dideklarasikan memalui signal declaration statement atau entity port

    definitions, dan mungkin saja pada setiap data type. Syntax deklarasinya sbb:

    signal sig_name: data_type [:=initial_value];

    Contoh

    signal clock: bit;signal GND: bit := '0';signal databus: std_ulogic_vector(15 downto 0);signal addrbus: std_logic_vector(0 to 31);

    setiap signal mempunyai satu atau lebih penggerak (drivers) yang menentukanperubahan nilai dan timing dari signal. Setiap penggerak merupakan urutan dari

    beberapa kejadian (events) yang menunjukkan kapan dan berapa besar signal harus

    berubah. Masing-masing signal assignment menghasilkan kejadian yang berkaitan

    dengan urutan yang disesuaikan dengan schedule dari event yang baru.

    signal line x10ns '0' Driver of20ns '1' signal x

    Event ValuesTimes

    8

  • 8/14/2019 VHDL-Ringkas

    9/19

    Catatan: jika tidak ada delay yang dispesifikasikan, signal event saat itu di-schedule-

    kan untuk delta delay yang sangat kecil. Perubahan signal akan terjadi pada siklus

    simulai berikutnya.

    Contoh.(Misalkan current time is T)

    clock

  • 8/14/2019 VHDL-Ringkas

    10/19

    hasilnya adalah 1 karena 1 menindas (overrides) nilai Z yang mengambang

    (floating). Untuk dua nilai 1 dan 0, hasilnya adalah X, yang menunjukkan hasil

    yang tidak dikenal (unknown result).

    CONCURRENT STATEMENTSTerdiri dari statements:

    1) Signal Assignment

    2) Process Statement

    3) Block Statement

    4) Procedure Statement5) Component Instantiation

    6) Concurrent Assertion

    7) Generate Statement

    Concurent statement sudah termasuk di dalam difinisi architecture dan di dalamblock statements, yang merepresentasikan concurrent behavior di dalam unit

    rancangan yang dimodelkan. Statement ini dieksekusi secara asinkron, tanpa

    suatu perintah yang terdifinisi, memodelkan behavior dari elemen perangkat

    keras yang independent di dalam suatu system.

    1). Concurrent Signal AssignmentMerupakan suatu signal assignment statement yang merepresentasikan suatu proses

    yang menetapkan nilai untuk signals. Ada tiga format dasar sbb:

    1. A

  • 8/14/2019 VHDL-Ringkas

    11/19

    '1' after 1ns when En = '1' and X = '1' else'Z' after 1ns;

    -- A is a 16-bit vectorA '0'); -- set all bits of A to '0'

    Keyword others pada contoh terakhir menyatakan nilai A yang tidak dinyatakansecara eksplisit dalam daftar diatas diberi nilai 0

    2). Process StatementSuatu proses sekuensial yang independent untuk menyatakan suatu behavior dari

    beberapa bagian dari suatu rancangan. Body dari proses adalah suatu daftar dari

    sequential statements.

    Syntax:

    label:process (sensitivity list)... local declarations ...

    begin... sequential statements ...

    end process label;

    Contoh;DFF:process (clock)

    begin if clock = '1' then

    Q

  • 8/14/2019 VHDL-Ringkas

    12/19

    guard. GUARD kemudian dapat di test dalam block, pelaksanan signal assignment

    yang dipilih atau statement lain, hanya jika hasil evaluasi kondisi guard adalah TRUE.

    Contoh.

    -- D Latch: Transfer D input to Q output when Enable =

    '1'block (Enable = '1') begin

    Q

  • 8/14/2019 VHDL-Ringkas

    13/19

    end component;

    Suatu configuration specification mengindentifikasikan spesifikasi dari

    architecture yang digunakan oleh masing-masng instance dari komponen.

    (dapat juga berbentuk multiple architecture untuk komponen yang ada).

    Contoh.

    for ALL: comp1 use entity work.comp1 (equations);for ADDER1: adder use entity work.adder (equations);for ADDER2: adder use entity work.adder (dataflow);

    Dari ketiga contoh,prefix work, menunjukkan bahwa working library yang berjalanberisi model-model komponen yang ditunjuk. Pada contoh pertama, architecture

    equations dari entity comp1 digunakan untuk semua instances dari comp1. Pada

    contoh lainnya, architecture equations digunakan untuk instanceADDER1 darikomponen adder, dan architecture dataflow digunakan untuk instanceADDER2 dari

    komponen adder.

    Component Instantiation: Setiap instance dari komponen-komponen yangdideklarasikan didaftar, diberi nama, dan signals actual dihubungkan keport tersebut sbb:

    instance_name: component_name port map (port list);

    Port list dapat menggunakan salah satu dari dua format dibawah ini.

    (1) "Positional association": signals dihububgkan ke port berdasarkan atas dasar

    daftar perintah dalam deklarasi komponen.

    Ex. A1: adder port map (v,w,x,y,z)

    v,w, and y must be bit_vectors, y and z bits

    (2) "Named association": each signal-to-port connection is listed explicitly as

    "signal=>port".

    Contoh.A1: adder port map(a=>v, b=>w, s=>y, cin->x, cout->z);

    (Perintah signal tidak penting dalam format ini)

    Contoh.architecture r1 of register is

    component jkffport(J,K,CLK: in bit;

    Q,QN: out bit);end component;for ALL: jkff use entity work.jkff (equations);-- Use architecture equations of entity jkff

    for all instances

    component dffport(D,CLK: in bit;

    Q,QN: out bit);end component;for DFF1: dff use entity work.dff (equations);for DFF2: dff use entity work.dff (circuit);

    --Use different architectures of dff for instancesDFF1 and DFF2

    13

  • 8/14/2019 VHDL-Ringkas

    14/19

    beginJKFF1: jkff port map (j1,k1,clk,q1,qn1);JKFF2: jkff port map (j2,k1,clk,q2,qn2);DFF1: dff port map (d1,clk,q4,qn4);DFF2: dff port map (d2,clk,q5,qn5);

    end.

    6). Concurrent assertionSuatu concurrent assertion statement untuk mengecek kondisi (munculnya suatu event) danissues suatu report jika kondisinya not true. Ini dapat digunakan untuk mengecek timing

    violations, illegal conditions, etc. Suatu pilihan severity level dapat dilaporkan untukmenunjukkan secara alamiah kondisi yang terdeteksi.

    Syntax: assert (clear /= '1') or (preset /= '1') report "Both preset and clear are set!"

    severity warning;

    7). Generate statementGenerate statement adalah suatu iterasi atau elaborasi kondisional dari suatu diskripsi.

    Ini memberikan suatu cara yang compact untuk merepresentasikan apa yang biasanya

    menjadi suatu kelompok statements

    Contoh.

    Generate a 4-bit full adder from 1-bit full_adder stages:

    add_label: -- Note that a label is required herefor i in 4 downto 1 generate

    FA: full_adder port map(C(i-1), A(i), B(i), C(i), Sum(i));end generate;

    The resulting code would look like:

    FA4: full_adder port map(C(3), A(4), B(4), C(4), Sum(4));FA3: full_adder port map(C(2), A(3), B(3), C(3), Sum(3));FA2: full_adder port map(C(1), A(2), B(2), C(2), Sum(2));FA1: full_adder port map(C(0), A(1), B(1), C(1), Sum(1));

    SEQUENTIAL STATEMENTSTerdiri dari statements:1) Wait Statement

    2) Signal Assignment Staetement

    3) Variable Assignment Staetement

    4) Procedure Call

    5) Conditional Statements

    6) Loop Statements

    7) Procedure Statement

    8) Function Statement

    Sequential Statements digunakan untuk mendifinisikan algoritma dalam

    mengekspresikan behavior dari design entity. Statement ini dimunculkan dalamprocess statement dan dalam subprograms (fungsi dan prosedur).

    14

    http://www.eng.auburn.edu/department/ee/mgc/vhdl.html#waithttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#seq_assignhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#var_assignhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#procedure_callhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#conditionalhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#loophttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#procedure_syntaxhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#function_syntaxhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#waithttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#seq_assignhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#var_assignhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#procedure_callhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#conditionalhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#loophttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#procedure_syntaxhttp://www.eng.auburn.edu/department/ee/mgc/vhdl.html#function_syntax
  • 8/14/2019 VHDL-Ringkas

    15/19

    1). Wait statementPenundaan eksekusi dari process/subprogram sampai ada perubahan singal, atau suatu

    pendifinisiakn perioda waktu yang sudah dilalui. Kombinasi dapat saja dilakukan.

    Syntax: wait [on signal_name {,signal_name}][until condition][for time expression]

    Contoh ; eksekusi ditunda sampai satu atau dua kondisi benar (true), atau setelah 25

    nS, yang mana yang duluan.

    wait until clock = '1' or enable /='1' for 25ns;

    2). Signal assignment statementAssign suatu bentuk gelombang ke salah satu signal driver (mengedit kejadian antrian)

    Contoh: A sequence of statements

    ... when others=>sequence of statements end case;

    NOTE: case choices can be expressions or ranges.

    5). Loop statementsSequences of statements yang dapat di-ulang sampai beberapa kali dibawah control dari while atau for.

    label: while condition loop

    15

  • 8/14/2019 VHDL-Ringkas

    16/19

  • 8/14/2019 VHDL-Ringkas

    17/19

    end;-- Convert bit_vector to unsigned (natural) valuefunction b2n (B: bit_vector) return Natural is

    variable S: bit_vector(B'Length - 1 downto 0) := B;variable N: Natural := 0;

    begin

    for i in S'Right to S'Left loopif S(i) = '1' thenN := N + (2**i);

    end if;end loop;return N;

    end;

    Function Calls:

    signal databus: vector4(15 downto 0);signal internal: bit_vector (15 downto 0);variable x: integer;

    ....databus

  • 8/14/2019 VHDL-Ringkas

    18/19

    Ex. a := x sll 2; -- "shift left logical" bit_vectorx by 2 bits

    Relational operations: (=,/=,,= )Type conversion: to_bit (from integer) to_integer (from bit_vector)

    OBJECT ATTRIBUTESobject attribute mengembalikan informasi tentang suatu signal atau data type

    returns information about a signal or data type.

    Signal Condition Attributes (for a signal S)S'DELAYED(T) - value of S delayed by T time units

    S'STABLE(T) - true if no event on S over last T time units

    S'QUIET(T) - true if S quiet for T time units

    S'LAST_VALUE - value of S prior to latest change

    S'LAST_EVENT - time at which S last changed

    S'LAST_ACTIVE - time at which S last active

    S'EVENT - true if an event has occurred on S in current cycle

    S'ACTIVE - true if signal S is active in the current cycleS'TRANSACTION - bit value which toggles each time signal S changes

    Contoh;

    if (clock'STABLE(0ns)) then -- change in clock?... -- action if no clock edge

    else... -- action on edge of clock

    end if;if clock'EVENT and clock = '1' then

    Q

  • 8/14/2019 VHDL-Ringkas

    19/19

    Contoh;

    for i in (data_bus'RANGE) loop...

    for i in (d'LEFT(1) to d'RIGHT(1)) loop

    ...

    Block Attributes (of a block B)B'BEHAVIOR- true jika di block B tidak ada komponen instantiations

    B'STRUCTURE - true jika tidak ada signal assignment statements dalam

    block B

    THE TEXTIO PACKAGE -TEXTIO merupakan suatu package dari fungsi-fungsi VHDL yang membaca dan menulis text files.Untuk membuat package dikenali:

    use std.textio.all;

    Data Types:text file dari suatu strings character

    line - satu string dari text file

    Example Declarations file Prog: text is in "file_name"; --text file "file_name" variable L: line; -- read lines from file to L

    Reading Values From a File:

    readline(F, L)---- untuk membaca satu line dari "text" file F to "line" L

    read(L, VALUE, GOOD);

    membaca satu nilai dari line L ke dalam harga variable (variable VALUE)

    GOOD is TRUE if successful

    Data_type of VALUE can be bit, bit_vector, integer, real, character, string,

    or time.

    Writing values to a file:writeline(F, L);

    Menulis satu line "text" file F dari "line" L

    write(L, VALUE, JUSTIFY, FIELD);menulis satu nilai ke "line" L dari variable VALUE

    Data_type of VALUE dapat berupa bit, bit_vector, integer, real,

    character, string, or time.

    JUSTIFY adalah "left" or "right" untuk justify within the field

    FIELD adalah desired field width dari written value