laporan tugas praktikum arsitektur dan organisasi komputer
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)