laporan tugas praktikum arsitektur dan organisasi komputer

Upload: tssuprapto-to

Post on 10-Feb-2018

252 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    1/25

    LAPORAN TUGAS PRAKTIKUM ARSITEKTUR DAN ORGANISASI KOMPUTER

    MENGGUNAKAN XILINX ISE 10.1

    Nama Kelompok:

    1. Suprapto (4611412006)

    2. Rian Fidiyani (4611412017)

    3. Riswandha Bayu H. (4611412023)

    4. Nurfatihah Azizatul M. (4611412030)

    5. Primana Oky Rahmanda (4611412031)

    PROGRAM STUDI TEKNIK INFORMATIKA

    FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

    UNIVERSITAS NEGERI SEMARANG

    TAHUN 2013

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    2/25

    PENDAHULUAN

    VHDL (sing. VHSICHardware D escription L anguage , diterjemahkan bahasa parsing

    hardware sirkuit berkecepatan sangat tinggi ) adalah sebuah bahasa parsing hardware yang

    sering digunakan untuk bahasa entri-desain untuk FPGA , CPLD dan sirkuit terpadu penggunaan

    khusus(ASIC) di dalam pengautomatan desain elektronik untuk sirkuit digit . Verilogjuga adalahbahasa parsing hardware seperti VHDL, tetapi digunakan die USA, dan VHDL pula merupakan

    bahasa utama digunakan di Europa.

    VHDL dibuat untuk membantu dalam produksi sirkuit yang semakin kompleks. Ini sesuai

    dengan Hukum Moore yang memprediksi jumlah transistor di dalam chip meningkat 2 kali lipat

    dalam setiap 18 bulan. VHDL digunakan dengan luas di bidang Pengolahan sinyal digital di mana

    kecepatan pemrosesan data memainkan peran utama.

    TUJUAN

    Membuat Instruction Memorydan Data Memorydengan menggunakan altsyncram Membuat Register File menggunakan array Simulasi desain

    PEMBAHASAN

    VHDL adalah salah satu bahasa programming HDL (Hardware Description Language).

    Terdapat beberapa perbedaan antara pemrograman dengan bahasa C atau C++ dengan HDL.

    Program dalam bahasa C atau C++ mendeskripsikan behavioral dari suatu sistem, sedangkan

    HDL digunakan untuk mendeskripsikan hardware yang digunakan dalam desain sistem digital.Selain itu, eksekusi pemrograman behavioral bersifat sekuensial (berurutan), sedangkan

    eksekusi HDL bersifat concurrent (bersamaan).

    Pemrograman HDL secara umum menggunakan format sebagai berikut.

    LIBRARY ieee;USE ieee.std_logic_1164.all;

    ENTITY ISPORT(

    : STD_LOGIC;

    : STD_LOGIC_VECTOR(n DOWNTO0));END ;

    ARCHITECTURE OF ISBEGIN

    END ;

    http://ms.wikipedia.org/wiki/Bahasa_penghuraian_perkakasanhttp://ms.wikipedia.org/w/index.php?title=FPGA&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=CPLD&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_bersepadu_penggunaan_khusus&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_bersepadu_penggunaan_khusus&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Pengautomatan_rekabentuk_elektronik&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_digit&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Verilog&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Hukum_Moore&action=edit&redlink=1http://ms.wikipedia.org/wiki/Pemprosesan_isyarat_digitalhttp://ms.wikipedia.org/wiki/Pemprosesan_isyarat_digitalhttp://ms.wikipedia.org/w/index.php?title=Hukum_Moore&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Verilog&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_digit&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Pengautomatan_rekabentuk_elektronik&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_bersepadu_penggunaan_khusus&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=Litar_bersepadu_penggunaan_khusus&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=CPLD&action=edit&redlink=1http://ms.wikipedia.org/w/index.php?title=FPGA&action=edit&redlink=1http://ms.wikipedia.org/wiki/Bahasa_penghuraian_perkakasan
  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    3/25

    Program VHDL yang telah dideskripsikan di atas dapat dibagi ke dalam 3 bagian penting.

    a) Pemanggilan libraryyang akan digunakan, dengan sintaks berikut.LIBRARY ieee;

    USE ieee.std_logic_1164.all;

    Pada syntax diatas dipanggil librarySTD_LOGIC_1164. STD_LOGIC_1164 digunakan

    untuk mendefinisikan tipe data STD_LOGIC dan STD_LOGIC_VECTOR.

    b) Bagian entity. Pada bagian entity akan dijelaskan modul apa yang dibuat, denganmenjelaskan port input dan output apa saja yang terlibat. Singkat kata, bagian entityakan

    memberi gambaran mengenai diagram blok modul yang akan dibuat. Sebagai contoh, pada

    percobaan ini akan dibuat Instruction Memory:

    Gambar : Diagram blok intruction Memory.

    Pada diagram blok diatas didapati 2 port, yaitu Address (8 bit) dan Instruction (32 bit).

    Kedua port ini dideklarasikan tipe sinyalnya (berupa input atau output), dan lebar bus yang

    digunakan (panjang data).

    1. Deklarasi port akan dilakukan dengan keyword PORT, yaitu address dan instruction.2. Tipe port menggunakan keyword IN atau OUT.3. Panjang data dapat didefinisikan dengan pilihan keyword dibawah ini :

    i. Tipe data STD_LOGIC : keyword ini memiliki panjang data 1 bit, dengan beberapanilai yang dapat direpresentasikan, diantaranya 0, 1, X, Z, U, W, L, H, .

    1. 0 dan 1: forcing logic 0 dan forcing logic 1, yang berarti sinyaldikendalikan dengan rangkaian pengendali arus.

    2. Z : high impedance. Umumnya ditemukan pada tristate buffer.3. L dan H : weak logic 0 dan weak logic 1, yang berarti sinyal

    diperoleh dari rangkaian wiredlogic yang kendali arus nya lemah.

    4. X dan W : unknown dan weak unknown secara berurutan.Unknown adalah sinyal yang mencapai batas tegangan yang dapat

    diinterpretasikan sebagai logika 0 atau logika 1.

    5. U : uninitialized. Digunakan pada simulasi untuk menandakan bahwasinyal atau variabel belum diberi value.

    6. : dont care.ii. STD_LOGIC_VECTOR(n downto 0) : keyword ini memiliki panjang data n+1 bit,

    dengan nilai yang direpresentasikan sama dengan STD_LOGIC.

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    4/25

    iii. BIT : keyword ini hanya dapat merepresentasikan nilai 0 atau 1.c) Bagian architecture bodymenjelaskan operasi internal atau organisasi dari entity.

    LANGKAH-LANGKAH PERCOBAANMembuat New Project

    Langkah membuat sebuah new project:

    1. Memilih File > New Project... The New Project Wizard appears.2. Type tutorial didalam Project Name field.3. Masukkan atau pilih lokasi (directory path) untuk new project. Secara otomatis akan

    membuat subdirectory.

    4. Verifikasi HDL dengan memilih Top-Level Source Type list.5. Klik Next untuk berpindah ke properties page.6. Isi pada tabel dengan yang ada dibawah ini:

    Product Category: All

    Family: Spartan3 Device: XC3S200 Package: FT256 Speed Grade: -4 Top-Level Source Type: HDL Synthesis Tool: XST (VHDL/Verilog) Simulator: ISE Simulator (VHDL/Verilog) Preferred Language: Verilog (or VHDL) Verify that Enable Enhanced Design Summary is selected.Biarkan secara default, akan muncul tampilan dibawah ini:

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    5/25

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    6/25

    Klik Next untuk proses pembuatan New Source, setelah itu pada langkah terakhir, NewProject sudah Komplit.

    Membuat sebuah HDL Source

    Langkah-langkahnya adalah:

    1. Klik New Source pada menu New Project Wizard.2. Pilih VHDL Module.3. Ganti pada file name counter.4. Verifikasi untuk Add to project lalu ceklist.5. Klik Next.6. Klik Next, lalu Finish pada New Source Wizard Summary.7. Klik Next, lalu Next, kemudian Finish.DATA PRAKTIKUM

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    7/25

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    8/25

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    9/25

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    10/25

    Memasukkan Templates (VHDL)

    Langkahnya:

    1. Tempatkan kursor pada begin statement dengan counter architecture.2. Buka Language Templates dengan cara Edit Language Templates3. Gunakan simbol +, lalu lakukan langkah:

    VHDL Synthesis Constructs Coding Examples Counters Binary Up/Down

    Counters Simple Counter

    4. Lalu lakukan langkah Edit Use in File.Setelah memasukkan templates maka hasilnya akan seperti dibawah ini:

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    11/25

    5. Setelah itu di Save

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    12/25

    6. Klik All Constraints Met link pada Timing Constraints field untuk melihat Timing Constraintsreport. Verifikasikan.

    7. Lalu setelah itu Close Design Summary

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    13/25

    HASIL DARI PRAKTIKUM

    PERCOBAAN

    4A. Membuat of Instruction Memory

    Input : instrucMEM.vhd, instrucMEM.vwf

    Output : instrucMEM.vwf

    Hasil waveform:

    Gambar 1: Address 0C, instruksi 00000000

    Gambar 2: Address 01, instruksi 8c010000

    Gambar 3: Address 0B, instruksi 1000ffff

    TUGAS 4A

    Input : instruction_memory.vhd, instruction_memory.vwf

    Output : instruction_memory.vwfHasil waveform:

    Gambar 4: Address 1-9

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    14/25

    PERCOBAAN

    4B. Membuat Data Memory

    Input : data_mem.vhd, data_mem.vwf

    Output : data_mem.vwf

    Hasil waveform:

    Gambar 5: Hasil simulasi data_mem

    PERCOBAAN

    4C. Membuat Register

    Input : reg_file.vhd, reg_file.vwfOutput : reg_file.vwf

    Hasil waveform:

    Gambar 6: Hasil simulasi reg_file

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    15/25

    ANALISIS

    Percobaan 4A

    Contoh kode VHDL di modul langsung disimulasikan. Hasilnya sesuai dengan yang diharapkan:

    untuk address belum di-assign dengan instruksi apapun, akan dihasilkan instruksi 0. Sementaraapabila instruksi ada di memori, isi instruction adalah isi instruksi yang disimpan.

    Tugas 4A

    Pada percobaan ini, source code pada modul tidak bisa dicompile karena lebar memori untuk

    address terlalu lebar, sehingga diubah menjadi sebesar 10 bit (widthad_a = 10, address_a :

    STD_LOGIC_VECTOR (9 DOWNTO 0)). Hasil percobaan menunjukkan bahwa program sudah

    benar, karena menghasilkan output yang mirip seperti instrucMEM.

    Instruction memory assignment yang digunakan diletakkan diluar dari kode VHDL menggunakanfile extension .mif.

    Percobaan 4B

    Dengan tools MegaWizard Plug-in Manager, dengan memilih RAM. Ada delay sekitar 1 clock

    cycle output instruction dari input yang terjadi karena program membutuhkan waktu clock

    untuk mengambil instruksi. Saat data dan wren aktif, address pada saat wren diaktifkan akan

    berisi input address yang akan ditulis. Awalnya, nilai address 00 adalah 00, lalu diberi signal

    input data 65 dan signal wren aktif, isi address 00 ditimpa menjadi 65. Kemudian address 00 ini

    akan ditimpa lagi dengan nilai input data EF di akhir aktifnya wren. Saat address 00 dibaca lagi,

    akan dihasilkan output EF karena itulah isi terakhir address tersebut.

    Percobaan 4C

    Register file MIPS-32 sebesar 8x8 bit ini dibuat dengan 2 multiplexer sebagai komponen untuk

    memilih input untuk write_data dan write_reg. Array digunakan untuk menyederhanakan

    desain register. Hasil pada Read_Data1 dan Read_Data2 sudah sesuai dengan input dari

    instruction. Penulisan register bergantung pada RegWirte dan clock karena write cycle register

    berlangsung secara synchronous. Register ini terlebih dahulu di reset agar inisialisasi

    menggunakan for loop terjadi terlebih dahulu, membuat nilai awal register jadi 00000000.

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    16/25

    KESIMPULAN

    a) Altsyncram digunakan untuk menghubungkan file eksternal untuk digunakan pada program.b) Instruksi memori bersifat Read-Only.c) Data memori harus bisa dibaca dan ditulis.d) Untuk menginisialisasi komponen altsyncram yang menggunakan memory yang kecil, dapat

    dibuat menggunakan tools MegaWizard Plug-in Manager.

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    17/25

    DAFTAR PUSTAKA

    Bryant, Randal E. dan David R. OHallaron. Computer Systems: A Programmers

    Perspective, 2nd

    Edition.Prentice Hall, 2011.

    http://praktikumarsikom.files.wordpress.com/2012/10/mif_help.pdf

    http://quartushelp.altera.com/9.1/mergedProjects/hdl/mega/mega_file_altsynch_ram.htm

    http://praktikumarsikom.files.wordpress.com/2012/10/mif_help.pdfhttp://quartushelp.altera.com/9.1/mergedProjects/hdl/mega/mega_file_altsynch_ram.htmhttp://quartushelp.altera.com/9.1/mergedProjects/hdl/mega/mega_file_altsynch_ram.htmhttp://praktikumarsikom.files.wordpress.com/2012/10/mif_help.pdf
  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    18/25

    LAMPIRAN

    A. instrucMEM.vhdLIBRARY IEEE;

    USE IEEE.STD_LOGIC_1164.ALL;

    USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

    LIBRARY altera_mf;

    USE altera_mf.altera_mf_components.ALL;

    entity instrucMEM is

    port (

    Read_address : in std_logic_vector (31 downto 0);

    clock : in std_logic;

    reset : in std_logic;

    instruction : out std_logic_vector (31 downto 0)

    );

    end entity;

    architecture behavior of instrucMEM is

    type ramtype is array (31 downto 0) of std_logic_vector (31

    downto 0);

    signal mem: ramtype;

    begin

    process (reset,Read_address)

    begin

    if (reset='1') then

    instruction '0');

    else

    instruction

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    19/25

    mem(7)

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    20/25

    altsyncram_component : altsyncram

    GENERIC MAP (

    init_file => "imemory.mif",

    operation_mode => "ROM",

    widthad_a => 10,

    width_a => 32

    )

    PORT MAP (

    clock0 => clock,

    address_a => address,

    q_a => sub_wire0

    );

    END structural;

    C. imemory.mifWIDTH=32; -- number of bits of data per word

    DEPTH=256; -- the number of addresses

    ADDRESS_RADIX=HEX;

    DATA_RADIX=HEX;

    CONTENT

    BEGIN

    00 : 8c020000;

    04 : 8c030001;08 : 00430820;

    0C : ac010003;

    10 : 1022ffff;

    14 : 1021fffa;

    06 : 0043282A;

    07 : 10A00002;

    09 : 1000FFFB;

    10 : AC040000;

    11 : 1000FFFF;

    END;

    D. data_mem.vhdLIBRARY ieee;

    USE ieee.std_logic_1164.all;

    LIBRARY altera_mf;

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    21/25

    USE altera_mf.all;

    ENTITY data_mem IS

    PORT

    (

    address : IN STD_LOGIC_VECTOR (4 DOWNTO 0);

    clock : IN STD_LOGIC := '1';

    data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

    wren : IN STD_LOGIC ;

    q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

    );

    END data_mem;

    ARCHITECTURE SYN OF data_mem1 IS

    SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);

    COMPONENT altsyncram

    GENERIC (

    clock_enable_input_a : STRING;

    clock_enable_output_a : STRING;

    init_file : STRING;

    intended_device_family : STRING;

    lpm_hint : STRING;

    lpm_type : STRING;numwords_a : NATURAL;

    operation_mode : STRING;

    outdata_aclr_a : STRING;

    outdata_reg_a : STRING;

    power_up_uninitialized : STRING;

    widthad_a : NATURAL;

    width_a : NATURAL;

    width_byteena_a : NATURAL

    );

    PORT (wren_a : IN STD_LOGIC ;

    clock0 : IN STD_LOGIC ;

    address_a : IN STD_LOGIC_VECTOR (4 DOWNTO 0);

    q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);

    data_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0)

    );

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    22/25

    END COMPONENT;

    BEGIN

    q "BYPASS",

    clock_enable_output_a => "BYPASS",

    init_file => "dmemory.mif",

    intended_device_family => "Cyclone II",

    lpm_hint => "ENABLE_RUNTIME_MOD=NO",

    lpm_type => "altsyncram",

    numwords_a => 32,

    operation_mode => "SINGLE_PORT",

    outdata_aclr_a => "NONE",

    outdata_reg_a => "CLOCK0",

    power_up_uninitialized => "FALSE",

    widthad_a => 5,

    width_a => 8,

    width_byteena_a => 1

    )

    PORT MAP (

    wren_a => wren,

    clock0 => clock,address_a => address,

    data_a => data,

    q_a => sub_wire0

    );

    END SYN;

    E. dmemory.mifWIDTH=8; -- number of bits of data per word

    DEPTH=256; -- the number of addressesADDRESS_RADIX=HEX;

    DATA_RADIX=HEX;

    CONTENT

    BEGIN

    00 : 00;

    04 : 04;

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    23/25

    08 : 80;

    0C : C0;

    END;

    F. reg_file.vhdLIBRARY ieee;

    USE ieee.std_logic_1164.all;

    LIBRARY altera_mf;

    USE altera_mf.all;

    use IEEE.numeric_std.all;

    ENTITY reg_file IS

    PORT

    (instruction : IN STD_LOGIC_VECTOR(31 DOWNTO 0);

    alu_result : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    read_data : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    reg_dst : IN STD_LOGIC;

    mem_to_reg : IN STD_LOGIC;

    reg_write : IN STD_LOGIC;

    clock : IN STD_LOGIC;

    reset : IN STD_LOGIC;

    read_data1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

    read_data2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

    END reg_file;

    ARCHITECTURE structural OF reg_file IS

    COMPONENT MUX_5

    PORT

    (

    sel : IN STD_LOGIC;

    in0 : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

    in1 : IN STD_LOGIC_VECTOR(4 DOWNTO 0);output : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)

    );

    END COMPONENT;

    COMPONENT MUX_8

    PORT

    (

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    24/25

    sel : IN STD_LOGIC;

    in0 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    in1 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    output : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

    );

    END COMPONENT;

    SIGNAL W_MUX_5 : STD_LOGIC_VECTOR(4 downto 0);

    SIGNAL W_MUX_8 : STD_LOGIC_VECTOR(7 downto 0);

    SIGNAL REG1 : INTEGER;

    SIGNAL REG2 : INTEGER;

    SIGNAL REG3 : INTEGER;

    TYPE reg_array IS ARRAY(7 DOWNTO 0) OF STD_LOGIC_VECTOR(7

    DOWNTO 0);

    SIGNAL R : reg_array;

    BEGIN

    MUX_5_component : MUX_5

    PORT MAP

    (

    sel => reg_dst,

    in0 => instruction(20 DOWNTO 16),

    in1 => instruction(15 DOWNTO 11),

    output => W_MUX_5

    );MUX_8_component : MUX_8

    PORT MAP

    (

    sel => mem_to_reg,

    in0 => alu_result,

    in1 => read_data,

    output => W_MUX_8

    );

    REG1

  • 7/22/2019 Laporan Tugas Praktikum Arsitektur Dan Organisasi Komputer

    25/25

    IF reset = '1' THEN

    R(0)