Anda di halaman 1dari 16

PERCOBAAN 1

POINTER, STRUCTURE, ARRAY, DAN OPERASI DALAM LEVEL BIT


Sari Feronika Nadapdap (14S17017)
Tanggal percobaan : 06 November 2019
14S3102 Praktikum Arsitektur Sistem Komputer
Laboratorium Sistem Digital – Teknik Elektro
Institut Teknologi Del

Abstrak - In this practicum, module III there are  sederhana dalam bahasa assembly yang
4 assignments experiments related to component dapat dieksekusi pada MIPS32®.
design MIPS32® microprocessor. Software used
 Praktikan dapat melakukan simulasi
for pratikum including functioning Altera
eksekusi program MIPS32® pada
Quartus® II v9.1 sp2 to do circuit synthesis and
simulation and Notepad ++ to create program program simulasi SPIM dan memahami
code in VHDL Language. That result obtained in cara setiap instruksi dieksekusi.
this experiment that is praktikan know how to  Praktikan dapat membuat instruction
make instruction memory, data memory and memory, data memory dan register dari
registers in VHDL Language as well as doing MIPS32® dalam kode VHDL yang
synthesizable and functional simulations and synthesizable dan dapat disimulasikan
timings. dengan Altera® Quartus® II v9.1sp2.

Keywords : VHDL, MIPS, Instruction memory,


Data Memory, Register.
II. LANDASAN TEORETIS
I. PENDAHULUAN
Dalam praktikum ini dipelajari perancangan pada Bahasa VHDL
mikriprosesor MIPS32®. Perancangan dilakukan
yaitu dengan membuat sebuah instruction VHDL (Very High Speed Integrated Circuit
memory, data memory, dan juga register dengan Hardware Description Language) atau VHSIC
arsitektur MIPS32®. Dalam praktikum kali ini Hardware Description Language merupakan
sangat diperlukan penguasaan terhadap bahasa bahasa untuk mendeskripsikan perangkat keras
VHDL dikarenakan dalam pendefinisan yang digunakan dalam desain elektronik digital
komponen hingga pembuatan kode program dan mixed-signal, contohnya Field-
dilakukan dalam Bahasa VHDL baik secara Programmable Gate Array (FPGA) atau
behavioral maupun structural. Setelah dilakukan Integrated Circuit (IC). Sistem digital sangat erat
kompilasi, rangkaian yang dibuat selanjutnya kaitannya dengan sinyal. Sinyal dapat
diverifikasi dengan simulasi functional dan dianalogikan sebagai wire dan dapat berubah
timing pada Altera Quartus 9.1 sp2. ketika input berubah. Dalam VHDL, terdapat
definisi sinyal bernama std_logic yang sesuai
Adapun tujuan yang ingin dicapai dalam dengan standar IEEE 1164. Terdapat sembilan
praktikum ini adalah : jenis nilai sinyal yang didefinisikan dalam
 Praktikan memahami arsitektur std_logic. Untuk menggunakan nilai sinyal
mikroprosesor MIPS32® beserta standar std_logic, kita dapat menggunakan
datapath eksekusinya. library yang telah tersedia yaitu
 Praktikan memahami instruction set dari ieee.std_logic_1164.all.
MIPS32® dan dapat membuat program
<fungsi yang didefinisikan>
END <nama_arsitektur>;

Setiap entitas desain dalam file VHDL yang


berbeda dapat dipanggil dan dirangkai menjadi
rangkaian yang lebih besar. Hal ini sangat penting
dilakukan dalam melakukan desain hardware.
Pertama, hardware yang akan didesain harus kita
pecah-pecah menjadi komponen-komponen
Tidak seperti bahasa Verilog HDL, VHDL logika yang cukup kecil, contohnya menjadi
merupakan bahasa yang case insensitive. multiplexer, adder, flip-flop, dan sebagainya.
Abstraksi utama dalam bahasa VHDL disebut Kemudian, kita mendesain masing-masing
entitas desain (design entity) yang terdiri atas komponen logika tersebut dan melakukan
input, output, dan fungsi yang didefinisikan simulasi fungsional dan simulasi timing untuk
secara benar. Entitas desain dalam VHDL terdiri setiap komponen untuk meyakinkan bahwa setiap
atas dua bagian. komponen dapat berfungsi dengan baik. Setelah
itu, kita menggabungkan masing-masing
 Deklarasi Entitas (entity declaration) yang komponen untuk membentuk entitas desain yang
mendefinisikan antarmuka entitas tersebut lebih besar (top level entity).
terhadap dunia luar (contohnya port input dan
port output). Langkah pertama dalam membentuk top level
entity adalah dengan mendefinisikan top
 Arsitektur Entitas (entity architecture) yang levelentity tersebut seperti halnya kita membuat
mendefinisikan fungsi dari entitas (contohnya entitas desain biasa. Kemudian, pada arsitektur
rangkaian logika di dalam entitas tersebut). top level entity, kita memanggil desain entitas lain
Pendefinisian arsitektur dapat dilakukan secara menggunakan construct component. Construct
behavioralmaupun secara structural. component ini memiliki isi yang sama persis
dengan deklarasi entitas desain yang akan
Setiap entitas desain harus disimpan dalam file dipanggil oleh top level entity. Kemudian, kita
VHDL yang terpisah dengan nama file sesuai harus melakukan instansiasi masing-masing
dengan nama entitas yang dideklarasikan komponen dan menghubungkan port input dan
(contohnya nama_entity.vhd ). Berikut ini port output dari masing-masing komponen
template deklarasi sebuah entitas dan arsitektur dengan top level design atau dengan komponen
entitas tersebut dalam bahasa VHDL. lain.

LIBRARY IEEE; LIBRARY IEEE;


USE IEEE. STD_LOGIC_1164. all; USE IEEE. STD_LOGIC_1164. ALL;
ENTITY <nama_entity> IS ENTITY Mux2_4b IS
PORT( PORT (
); );
END <nama_entity>; END Mux2_4b;
<nama_port_1> : <tipe_port> STD_LOGIC; A_IN : IN STD_LOGIC_VECTOR (3
<nama_port_2> : <tipe_port> DOWNTO 0);
STD_LOGIC_VECTOR(n DOWNTO 0) B_IN : IN STD_LOGIC_VECTOR (3
ARCHITECTURE <nama_arsitektur> OF DOWNTO 0);
<nama_entity> IS S_IN : IN STD_LOGIC;
BEGIN C_OUT : OUT STD_LOGIC_VECTOR (3
DOWNTO 0)
ARCHITECTURE Structural OF Mux2_4b concurent signal assignment tersebut dijelaskan
IS menggunakan contoh sebagai berikut.
COMPONENT Mux2 IS
PORT (  Simple CSA. Assignment sinyal dilakukan
A : IN STD_LOGIC; dengan ekspresi logika biasa. Hasil implementasi
B : IN STD_LOGIC; Simple CSA akan berupa gerbang logika biasa.
S : IN
STD_LOGIC; D :
OUT STD_LOGIC ARCHITECTURE Behavioral OF Example
); IS
END COMPONENT; BEGIN
BEGIN f <= (x1 AND x3) OR (NOT x3 AND x2);
mux2_0 : Mux2 g <= (NOT x3 OR x1) AND (NOT x3 OR x4);
PORT MAP END Behavioral;
(
);  Conditional CSA. Assignment sinyal dilakukan
mux2_1 : Mux2 dengan construct WHEN-ELSE. Hasil
A => A_IN(0), implementasi Conditional CSA akan berupa
B => B_IN(0), kumpulan 2-to-1 multiplexer yang disusun secara
S => S_IN, bertahap dengan boolean_expr sebagai selektor
D => C_OUT(0) dan value_expr sebagai nilai sinyal yang dapat
PORT MAP dipilih.
(
);
signal_name <= value_expr_1 WHEN
mux2_2 : Mux2
boolean_expr_1 ELSE
A => A_IN(1),
value_expr_2 WHEN boolean_expr_2 ELSE
B => B_IN(1),
value_expr_3 WHEN boolean_expr_3 ELSE
S => S_IN,
...
D => C_OUT(1)
value_expr_n;
PORT MAP
(
);  Selected CSA. Assignment sinyal dilakukan
mux2_3 : Mux2 dengan construct WITH-SELECT. Hasil
A => A_IN(2), implementasi Selected CSA akan berupa satu
B => B_IN(2), buah n-to-1 multiplexer dengan select_expression
S => S_IN, sebagai selektor dan value_expr_3 sebagai nilai
D => C_OUT(2) sinyal yang dapat dipilih.
PORT MAP
( WITH select_expression SELECT
END Structural; signal_name <= value_expr_1 WHEN
A => A_IN(3), choice_1,
B => B_IN(3), value_expr_2 WHEN choice_2,
S => S_IN, value_expr_3 WHEN choice_3,
D => C_OUT(3) .. .
); value_expr_n WHEN OTHERS;

Terdapat tiga jenis concurent signal assignment Selain concurent signal assignment, dalam
(CSA) dalam bahasa VHDL, yaitu simple CSA, bahasa VHDL juga dikenal dengan construct
conditionalCSA, dan selected CSA. Ketiga jenis PROCESS yang berfungsi melakukan
assignment sinyal secara se kuensial. Sebuah
proses (PROCESS) dapat dianalogikan sebagai tergantung implementasi). Sedangkan D Flip-
bagian dari rangkaian yang dapat aktif dan dapat flop memiliki karakteristik yaitu output akan
nonaktif. Sebuah proses akan diaktifkan ketika berubah mengikuti input saat transisi clock dari
sinyal-sinyal (SIGNAL) dalam daftar sensitivitas low ke high (atau high ke low, tergantung
(sensitivity list) mengalami perubahan nilai. implementasi). Untuk elemen memory lain
Ketika diaktifkan, semua ekspresi dan pernyataan seperti GatedS-R Latch, T Flip-flop, dan JK Flip-
(statement) akan dieksekusi secara sekuensial flop juga dapat diimplementasikan pada bahasa
hingga akhir dari proses tersebut. VHDL namun mereka jarang digunakan.

PROCESS (sensitivity_list) ENTITY latch IS ENTITY flipflop IS


declarations; PORT ( PORT (
BEGIN D : IN STD_LOGIC; D : IN STD_LOGIC
sequential_statement_1; Clk : IN ;
sequential_statement_2; STD_LOGIC; Clk : IN
... Q : OUT STD_LOGIC ;
sequential_statement_n; STD_LOGIC Q : OUT
END PROCESS; ); STD_LOGIC
END latch; );
Terdapat dua jenis constructyang digunakan ARCHITECTURE END flipflop ;
dalam constructPROCESS, yaitu constructIF- Behavioral OF latch ARCHITECTURE
THEN-ELSE dan construct CASE. Kedua jenis IS Behavior OF flipflop
construct tersebut diberikan sebagai contoh BEGIN IS
berikut ini. PROCESS ( D, Clk ) BEGIN
BEGIN PROCESS ( Clock )
IF Clk = ' 1' THEN BEGIN
ARCHITECTURE ARCHITECTURE Q <= D; IF Clock' EVENT
Behavioral OF Behavioral OF END IF; AND Clock=' 1'
mux2to1 mux2to1 END PROCESS; THEN
IS IS END Behavioral; Q <= D ;
BEGIN BEGIN END IF ;
PROCESS (w0, w1, PROCESS (w0, w1, END PROCESS ;
s) s) END Behavior ;
BEGIN BEGIN
IF s = ' 0' THEN CASE s IS
Penggunaan Latch dalam implementasi
f <= w0; WHEN ' 0' =>
f <= w0; rangkaian menggunakan bahasa VHDL
ELSE
f <= w1; WHEN OTHERS sebaiknya dihindari kecuali kita mengetahui apa
END IF; => yang kita lakukan. Dalam proses sintesis,
END PROCESS; f <= w1; implementasi Latch ini akan memberikan kita
END Behavioral; END CASE; warning. Sebagian besar perangkat FPGA milik
END PROCESS; Altera tidak memiliki elemen dasar berupa Latch.
END Behavioral; Dengan demikian sebuah Latch harus dibuat
menggunakan Logic Cell. Sayangnya, hal ini
Dalam bahasa VHDL, kita juga dapat membutuhkan sebuah feedback pada Logic Cell
mendefinisikan beberapa jenis elemen memory. untuk mengimplementasikan fungsi memory. Hal
Dua jenis elemen memory yang sering digunakan ini akan menyebabkan analisis timing statis tidak
dalam bahasa VHDL adalah Gated D Latch dan dapat dilakukan.
D Flip-flop. Gated D Latch memiliki
karakteristik yaitu output akan berubah Salah satu komponen memory yang paling sering
mengikuti input saat clock high (atau clock low, digunakan adalah register. Register terdiri atas
beberapa buah flip-flop yang disusun sedemikian lebih lama karena semua proses meliputi Analysis
rupa sehingga membentuk elemen penyimpanan. & Synthesis, Fitter, dan Assembler akan
Register juga dipakai untuk dilakukan. Kompilasi penuh ini akan memberi
mengimplementasikan rangkaian sekuensial kita gambaran terutama dari sisi timing analysis.
contohnya finite state machine. Sedangkan dengan Analysis & Synthesis, kita
telah mendapat rangkaian yang kita buat dan
Altera® Quartus® II dapat dilakukan simulasi fungsional.

Pada modul praktikum ini tidak akan dibahas Mikroprosesor MIPS21®


terlalu dalam cara-cara melakukan simulasi pada
Altera® Quartus® II karena diasumsikan MIPS32® (Microprocessor without Interlocked
praktikan telah memperoleh pengalaman Pipeline Stages) merupakan sebuah
menggunakan program ini baik untuk simulasi mikroprosesor 32-bit yang dikembangkan oleh
fungsional dan simulasi timing saat mengambil MIPS Technologies. Mikroprosesor ini
Praktikum Sistem Digital pada tingkat II. Versi merupakan reduced instruction set computer
Altera® Quartus® II yang disarankan untuk (RISC). Mikroprosesor ini sering digunakan
digunakan dalam praktikum ini adalah Altera® sebagai bahan pembelajaran mata kuliah
Quartus® II v9.1sp2 karena pada versi ini Arsitektur Sistem Komputer diberbagai
terdapat simulator fungsional dan timing yang universitas dan sekolah teknik.
telah terintegrasi. Versi Altera® Quartus® II
yang lebih baru tidak terdapat simulator Dalam kehidupan nyata, arsitektur
fungsional dan timing sehingga praktikan harus mikroprosesor MIPS® sering digunakan dalam
menggunakan Mentor Graphics® ModelSim® sistem embedded seperti perangkat Windows™
untuk melakukan simulasi. CE, router, residential gateway, dan konsol video
game seperti Sony® PlayStation®, Sony®
Langkah pertama untuk menggunakan Altera® PlayStation® 2 (PS2™), dan Sony®
Quartus® II adalah membuat project terlebih PlayStation® Portable (PSP®).
dahulu. Untuk membuat project, gunakan new
project wizard kemudian ikuti petunjukpetunjuk Terdapat lima tahap yang dilakukan ketika
yang ada. Beri lokasi dan nama project yang mikroprosesor MIPS32® melakukan eksekusi
diinginkan. Pilih dokumen-dokumen yang akan suatu instruksi. Kelima tahap tersebut adalah
dimasukkan ke dalam project (kita dapat sebagai berikut.
melewati langkah ini terlebih dahulu). Kemudian
pilih device yang akan digunakan. Untuk  Instruction Fetch (IF) Tahap instruction fetch
praktikum ini, kita tidak akan melakukan berfungsi mengatur aliran instruksi yang akan
implementasi pada FPGA karena praktikum ini diolah pada tahap berikutnya. Instruksi yang
hanya berupa simulasi saja. Oleh karena itu, kita sedang dijalankan merupakan instruksi yang
dapat memilih FPGA dengan spesifikasi tertinggi berasal dan disimpan dari memory. Pada
baik untuk Altera® Cyclone™ maupun Altera® arsitektur ini, memory dipisahkan menjadi dua
Stratix™. Setelah project dibuat, kita dapat mulai bagian yaitu instruction memory yang berfungsi
bekerja di dalamnya. menyimpan instruksi-instruksi yang akan
dieksekusi dan data memory yang berfungsi
Untuk melakukan simulasi, kita harus melakukan untuk menyimpan data untuk menghindari
kompilasi terhadap project yang kita buat. structural hazard. Dengan demikian, arsitektur
Kompilasi yang dilakukan bisa kompilasi penuh ini menganut HarvardArchitecture.
maupun hanya Analysis & Synthesis saja.
Kompilasi penuh akan memakan waktu yang
Instruction Set dan Register Mikroprosesor
 Instruction Decode (ID) Tahap berikutnya, MIPS32®
instruksi yang telah diambil (fetched) dari
instruction memory berpindah ke tahap Mikroprosesor MIPS32® memiliki set instruksi
instruction decode. Pada tahap ini, instruksi yang sederhana dibandingkan dengan
dengan lebar 32-bit akan dipecah sesuai format mikroprosesor milik Intel®. Sebelum kita
instruksi yang digunakan. Penjelasan mengenai melangkah lebih jauh untuk melihat instruksi-
decoding instruksi ini dapat dilihat pada bagian instruksi dasar pada MIPS32®, kita perlu melihat
selanjutnya. register yang tersedia pada MIPS32®. Terdapat
32 buah register pada MIPS32® yang masing-
 Execute / Address Calculation (EX) Tahap ini masing register memiliki kegunaannya masing-
merupakan tahap sebagian besar operasi masing. Semua register pada MIPS32® dapat
aritmatika dan logika pada arithmetic and diakses menggunakan address dengan lebar 5-bit.
logical unit (ALU) dilakukan. Pada tahap ini juga Tabel berikut merupakan daftar registeryang
terdapat tempat untuk meneruskan alamat tersedia dalam MIPS32® beserta fungsinya
register kembali ke tahap instruction decode masing-masing.
sebagai deteksi hazard.

 Data Memory (MEM) Pada tahap ini, data


disimpan dan/atau diambil dari data memory.
Data memory hanya dapat disimpan atau dibaca
jika ada sinyal MemRead dan/atau MemWrite
yang sesuai sehingga operasi baca dan/atau tulis
pada data memory dapat dilakukan.

 Write Back (WB) Tahap terakhir ini digunakan


MIPS32® memiliki instruksi dengan lebar 32-bit.
untuk mengalirkan data dari data memory atau
Instruksi-instruksi yang dimiliki MIPS32® dapat
hasil perhitungan arithmetic and logicalunit
dilihat lebih lengkap pada lembar lampiran.
(ALU) ke register untuk dapat menjalankan
Terdapat tiga buah format dasar dari instruksi
instruksi selanjutnya.
MIPS32®. Ketiga format dasar instruksi tersebut
adalah instruksi tipe-R, instruksi tipe-I, dan
Dalam praktikum ini, kita akan melakukan
insruksi tipe-J. Format ketiga instruksi dasar
implementasi mikroprosesor MIPS32® yang
tersebut dapat dilihat pada gambar berikut.
sederhana. Mikroprosesor MIPS32® yang akan
Komponen dari ketiga format dasar instruksi
diimplementasikan tidak memiliki pipeline dan
tersebut dijelaskan pada tabel selanjutnya.
semua instruksi selesai dieksekusi dalam satu
siklus clock. Dengan demikian, kita akan
Simulasi MIPS32® menggunakan PCSpim
membuat mikroprosesor Single-Cycle MIPS32®
menggunakan bahasa VHDL yang synthesizable.
Sebelum kita mendesain mikroprosesor Single-
Diagram arsitektur mikroprosesor Single-Cycle
Cycle MIPS32®, ada baiknya kita mempelajari
MIPS32® yang akan kita buat diberikan sebagai
terlebih dahulu bagaimana sebuah instruksi
berikut.
dieksekusi oleh mikroprosesor MIPS32®
tersebut. Kita dapat menggunakan sebuah
simulator untuk melakukan eksekusi program
yang kita buat pada mikroprosesor MIPS32® lalu
melihat hasilnya. Simulator MIPS32® yang akan
digunakan dalam praktikum ini adalah PCSpim. register yang ditampilkan dalam format
Simulator PCSpim dapat diunduh di heksadesimal. Bagian kedua merupakan Text
http://el3111.bagus.my.id. Display yang berisi program dalam bahasa
assembly, kode instruksi dalam heksadesimal,
Perhatikan bahwa program ini membutuhkan dan alamat instruksi tersebut. Bagian ketiga
Microsoft® .Net Framework 2.0 untuk dapat merupakan Data and Stack Display yang berisi
berjalan. Bagi praktikan yang menggunakan isi memory dalam MIPS32® yang menampung
Microsoft® Windows® XP, Microsoft® data-data serta stack. Bagian keempat merupakan
Windows® 8, dan Microsoft® Windows® 8.1 SPIM Message yang berisi laporan dari simulator
harus memasang Microsoft® .Net Framework ketika terjadi galat.
2.0 terlebih dahulu. Microsoft® .Net Framework
2.0 dapat diunduh di http://el3111.bagus.my.id Bila dalam program bahasa assembly yang kita
dalam paket instalasi Microsoft® .Net buat terdapat perintah untuk menampilkan
Framework 3.5. sesuatu ke layar (mirip dengan printf dalam
bahasa C), maka output ke layar tersebut akan
Setelah instalasi selesai PCSpim, kita dapat ditampilkan dalam jendela konsol termasuk
langsung menjalankan PCSpim dari start menu. apabila program meminta pengguna
Khusus untuk pengguna Microsoft® Windows® memasukkan input. Untuk memulai penggunaan
edisi 64-bit, terkadang PCSpim akan memberikan PCSpim pertama kali, Anda akan diminta untuk
pesan error karena tidak dapat menemukan file menjalankan program sederhana.
exceptions.s. Untuk mengatasinya, pilih menu
Simulator lalu klik submenu Settings. Pada Buatlah program dalam bahasa assembly dengan
bagian Load exception file, ganti alamat file menyalin kode program di bawah ini
exceptions.s. menggunakan teks editor Notepad++. Simpan
file tersebut dengan nama add.asm. Kalimat di
Sebelum : C: \Program sebelah kanan tanda # merupakan komentar dan
Files\PCSpim\exceptions.s tidak akan dieksekusi oleh simulator. Ubah
konfigurasi PCSpim agar menjalankan simulasi
Sesudah : C: \Program Files (x86) menggunakan Bare Machine dengan membuka
\PCSpim\exceptions.s menu Simulator lalu submenu Settings.

# Program untuk menjumlahkan 7 dengan 5


.text
.globl main
main:
ori $8, $0, 0x07 # masukkan angka 7 ke
register 8
ori $9, $0, 0x05 # masukkan angka 5 ke
register 9
addu $10, $8, $9 # jumlahkan dan simpan
hasilnya di register 10
# akhir dari program
Jendela dari PCSpim dibagi menjadi empat
bagian. Bagian pertama merupakan Register Buka file add.asm menggunakan PCSpim dengan
Display yang berisi isi dari setiap register pada membuka menu File lalu Open. Bila terjadi
MIPS32® meliputi 32 general purpose register kesalahan sintaks dalam pemrograman bahasa
dan beberapa floating point register serta
assembly, PCSpim akan mengeluarkan pesan
beberapa register yang lain. Isi dari setiap galat. Periksa kembali program yang dibuat lalu
simpan program tersebut sebelum dibuka address yang digunakan adalah sebesar 32 bit
kembali menggunakan PCSpim. Bila program yang dimana berarti bahwa instruction memory
berhasil dibuka, kita dapat melihat bahwa file yang direalisasikan dapat menampung 32 buah
bahasa assembly telah diterjemahkan menjadi instruksi.
instruksi-instruksi dalam bahasa heksadesimal
dan disimpan dalam instruction memory. Instruction memory memiliki port input yang
dapat menerima alamat dengan lebar 32-bit dan
Untuk memulai eksekusi, kita harus mengeset sebuah port output yang mengeluarkan instruksi
nilai program counter (PC). Program counter dengan lebar data 32 bit. Implementasi desain
(PC) merupakan bagian dari mikroprosesor yang instruction memory dilakukan dalam Bahasa
menyimpan address instruksi yang akan VHDL. Dengan menyalin kode VHDL pada
dieksekusi. Pada bagian Register Display, terlihat modul, kemudian dilakukan simulasi dengan
bahwa PC bernilai 0x00000000. Ubah nilai PC Software Altera Quartus, diperoleh hasil sebagai
tersebut menjadi 0x00400000 dengan membuka berikut:
menu Simulator, lalu submenu Set Value.
Tuliskan PC pada kotak isian paling atas dan Berikut adalah gambar dari hasil simulasi
0x00400000 pada kotak isian paling bawah. Hal functional dan simulasi timing yang diperoleh.
ini dilakukan karena program yang kita buat
dimulai pada address tersebut.

Tekan tombol F10 pada keyboard untuk


melakukan eksekusi satu instruksi. Tekan tombol
F10 hingga instruksi dari program yang kita tulis
dapat dieksekusi. Perhatikan bahwa saat instruksi Gambar simulasi functional
pertama dilakukan, nilai register 8 berubah
menjadi 0x07 dan PC berubah menjadi Berdasarkan hasil simulasing function diatas
0x00400004. Tekan kembali tombol F10 pada dapat dilihat bahwa sinyak ADDR yang
keyboard untuk melakukan eksekusi satu digunakan yaitu tipe bilangan hexadecimal, dan
instruksi berikutnya dan perhatikan yang terjadi sinyal reset diset menjadi bernilai nol. Terlihat
pada register9. Tekan kembali tombol F10 pada juga bahwa port INSTR menjadi sebuah deretan
keyboarduntuk melakukan eksekusi satu instruksi alamat yang ada pada construction memory.
berikutnya dan perhatikan yang terjadi pada
register 10. Hasil penjumlahan kedua bilangan
tersebut disimpan pada register 10.

III. HASIL DAN ANALISIS


Gambar simulasi timing
Adapun hasil dan analisis yang dapat diperoleh
dari praktikum ini adalah sebgai berikut :
Berdasarkan hasil simulasing timing seperti
Tugas 1 : Perancangan Instruction Memory gambar diatas dapat terlihat bahwa output
menghasilkan urutan dan nilai yang sama seperti
Dalam percobaan tugas 1 ini kita diminta untuk pada simulasi functional. Yang membedakan
melakukan realisasi terhadap instruction yaitu pada simulasi timing terdapat delay sekitar
memory dalam mikroprosesor Single-Cycle 1 periode mulai dari masuknya input hingga ke
MIPS32®. Adapun lebar data dan juga lebar output. Hal tersebut dapat terjadi karena adanya
sintesa rangkaian yang kurang efisien dan untuk Berdasarkan pembacaan hasil simulasi timing
mengatasi hal tersebut dilakukan implementasi diatas dapat terluhat bahwa keluaran yang
D-Latch untuk penahan input sehingga terjadi diperoleh menghasilkan urutan dan nilai yang
sinkronisasi antara input dan output. sama seprti yang terjadi pada simulasi functional.
Yang membedakan yaitu hasil dari simulasi
timing terdapat delay yang cukup besar. Delay
Tugas 2 : Perancangan Instruction Memory tersebut dapat terjadi dikarenakan dasar
dengan Altera® MegaFunction rangkaian yang belum efisien.
ALTSYNCRAM

Dalam percobaan perancangan Instruction Tugas 3: Perancangan Data Memory dengan


Memory dengan Altera® MegaFunction Altera® MegaFunction ALTSYNCRAM
ALTSYNCRAM akan dimanfaatkan sebuah
template memory desain yang telah tersedia, dalam percobaan ini akan dilakukan perancangan
yaitu Altera® MegaFunction ALTSYNCRAM. data memory dengan Altera® MegaFunction
Dimana template tersebut berfungsi sebagai ALTSYNCRAM. Adapun lebar dari data
perealisasian kesinkronan antara ROM dan RAM memory t adalah 32 bit dan alamat sebesar 32 bit.
didalam desain yang telah dibuat. Dilakukan juga Data memory memiliki 1 port input
penginisialisasian terhadap isi memory dari file yang dapat menerima alamat dengan lebar 32
eksternal dengan format .mif (memory bit dan 1 port output yang mengeluarkan data
initialization file) dimana implementasinya yang dibaca dengan lebar data 32 bit. Data
dibuat dalam bahasa vhdl. memory juga memiliki port input untuk
memasukan data yang akan ditulis dengan lebar
Terdapat bebera kendala dalam percobaan ini data 32 bit.
yaitu bergantung terhadap spesifikasi laptop yang
digunakan oleh praktikan, apabila tidak dapat
dalam 32 bit maka akan diubah ke 16 bit.
Berikut adalah gambar dari hasil simulasi
functional dan simulasi timing yang diperoleh.
Berikut adalah gambar dari hasil simulasi
functional dan simulasi timing yang diperoleh.

Gambar simulasi functional

Hasil dari pembacaan gambar simulasi functional


diatas adalah nilai RD_Data yang memiliki nilai
Gambar simulasi functional yang besar.berdasarkan hasil tersebut dapat
diketahui bahwa data memory tidak berfungsi
dengan baik.

Gambar simulasi timing


Berdasarkan pembacaan hasil simulasi functional
diatas dapat dilihat bahwa adapun fungdi read
dan write telah dapat berfungsi dengan baik.

Gambar simulasi timing

Berdasarkan pembacaan hasil simulasi timing


diatas dapat terlihat bahwa keluaran yang
diproleh berbeda dengan keluaran yang diperoleh
dari simulasi functional. Dimana perbedaannya
terdapat pada pembacaan RD_Data, dalam Gambar simulasi timing
simulasi timing terdapat delay pada RD_Data
sekitar 1 periode. Dan hasilnya tidak dapat Berdasarkan pembacaan hasil simulasi timing
terlihat dikarenakan kurangnya samling dari hasil diatas dapat terlihat bahwa keluaran yang
simulasitiming. diperoleh menghasilkan urutan dan juga nila yang
sama seprti yang diperoleh pada simulasi
functional. Yang membedakan kedua simulasi
tersebut adalah pada simulasi timing terdapat
Tugas 4: Perancangan Register delay sekitar 1.5 – 2 perioda input.

Dalam percobaan perancangan register ini akan Analisis dari pertanyaan :


direalisasikan perancangan register dengan
menggunakan microprosesor Single-Cycle Adapun lima tahap yang dilakukan MIPS32®
MIPS32®. Dalam microprosesor Single-Cycle ketika melakukan eksekusi:
MIPS32® terdapat 32 buah register dimana • Instruction Fetch (IF): Mengatur aliran
masing-masing register memiliki 32 bit lebar instruksi yang akan diolah pada tahap
data. berikutnya. Instruksi dari memory disimpan
dan dipisah menjadi dua bagian: instruction
Adapun register memiliki 2 port input yang memory yang berfungsi menyimpan instruksi-
berguna untuk memasukkan alamat dari data-data instruksi yang akan dieksekusi dan data
yang dibaca dan 1 port output yang berguna untuk memory yang berfungsi untuk menyimpan
memasukkan alamat data yang akan ditulis dan data untuk menghindari structural hazard.
yang terakhir 2 port input yang berfungsi sebagai • Instruction Decode (ID): Memecah instruksi
tempat keluaran data yang telah dibaca . sesuai format instruksi yang digunakan (R-, I-
, atau J-type)
Berikut adalah gambar dari hasil simulasi • Execute / Address Calculation (EX):
functional dan simulasi timing yang diperoleh. Mengoperasikan aritmatika dan logika pada
ALU. Terdapat tempat untuk meneruskan
alamat register kembali ke tahap ID sebagai
deteksi hazard.
• Data Memory (MEM): Menyimpan data
dan/atau diambil dari data memory.Data
memory dapat disimpan atau dibaca jika ada
sinyal MemRead dan/atau MemWrite yang
sesuai.
Gambar simulasi functional
• Write Back (WB): Mengalirkan data dari
data memory atau hasil perhitungan
Arithmetic and Logical Unit (ALU) ke register
untuk dapat menjalankan instruksi
selanjutnya.

Adapun perbedaan dari mikroprosessor IV. KESIMPULAN


MIPS32® dengan mikroprosessor Single-Cycle
MIPS32® yang digunakan pada praktikum ini Adapun kesimpulan yang dapat kita peroleh dari
adalah tidak dimilikinya pipeline pada praktikum ini adalah sebagi berikut :
mikroprosessor MIPS32® dan adapun semua  Eksekusi data pada mikroprosesor
instruksi dalam mikroprosessor MIPS32® ini MIPS32® dilakukan melalui lima tahap
selesai dieksekusi dalam satu siklus clock. yaitu Instruction Fetch (IF) yaitu sebagai
Adapun Pipeline adalah suatu teknik pengatur aliran instruksi yang akan
implementasi dengan mana berbagai instruksi diolah pada tahap berikutnya, Instruction
dapat dilaksanakan secara tumpang tindih Decode (ID) yaitu sebagai pemecah
(overlapped; hal ini mengambil keuntungan instruksi sesuai format instruksi yang
paralelisme yang ada di antara tindakan yang digunakan, Execute (EX) yaitu
diperlukan untuk mengeksekusi suatu instruksi. mengoperasikan aritmatika dan logika
pada ALU, Data memory (MEM) yaitu
Adapun fungsi register 0 yang selalu berisi nilai menyimpan data dan/atau diambil dari
0 pada mikroprosesor MIPS32® yaitu data memory, dan yang terkhir Write
dikarenakan nilai 0 yang akan sering dipanggil Back (WB) yaitu pengalir data memory
(sebagai atau hasil perhitungan Arithmetic and
initialization) sehingga diperlukan register Logical Unit (ALU) ke register untuk
tersendiri yang akan memiliki nilai konstan nol . dapat menjalankan instruksi selanjutnya.
 Perancangan terhadap microprosesor
Terdapat tiga format instruksi dasar pada
dengan arsitektur MIPS32®, dapat
MIPS32®:
dilakukan dengan mendeskripsikan tiap-
R-Type tiap komponen dalam Bahasa VHDL.
Kemudian pada tiap komponen tersebut
opcode rs rt rd Shift Funct dilakukan verifikasi baik secara
5 5 5 functional maupun timing, dimana
6 bits 5 bits 6 bits
bits bits bits selanjutnya akan disusun menjadi suatu
mikroprosesor yang utuh yang
I-Type diharapkan dapat melakukan beberapa
instruksi sederhana.
opcode rs rt (IMM)  Instruction set dari MIPS32® dapat
6 bits 5 bits 5 bits 16 bits diterjemahkan dari isi register. Dan juga
dapat direpresentasikan dengan kode
assembly yang compatible dengan
J-Type MIPS32®
opcode Address  Adapun Proses pembacaan data dalam
6 bits 26 bits register dibuat berlangsungi pada saat
falling edge clock sedangkan penulisan
data pada register dibuat berlangsung
pada saat rising edge clock. Hal tersebut
dilakukan supaya tidak terjadi proses -- Nama File :
pembacaan dan penulisan data pada instrucMEM.vhd
waktu disaat yang sama. -- Deskripsi :
 Altera® MegaFunction ALTSYNCRAM Implementasi instruction memory
memiliki sebuah template yang berguna
untuk merealisasikan synchronous RAM LIBRARY IEEE;
USE IEEE. STD_LOGIC_1164.ALL; USE
dan ROM dalam desain rangkaian yang
IEEE. STD_LOGIC_ARITH.ALL; USE
akan dibuat. Mengakibatkan kita tidak IEEE. STD_LOGIC_UNSIGNED.ALL;
perlu lagi mendefinisikan fungsi yang LIBRARY altera_mf;
ada pada template dan dapat USE altera_mf.altera_mf_components.ALL;
meminimalkan code program VHDL
yang dibuat serta lebih efisien. ENTITY instrucMEM IS PORT (
ADDR : IN std_logic_vector
(31 DOWNTO 0);
clock : IN std_logic;
V. REFERENSI reset : IN std_logic;
INSTR : OUT
[1] Bryant, Randal, dan David std_logic_vector (31 DOWNTO 0)
);
O’Hallaron.Computer Systems : A
END ENTITY;
Programmer’s Perspective 2nd
Edition. 2011. Massachusetts : Pearson ARCHITECTURE behavior OF instrucMEM
Education Inc. IS
[2] Tim Asisten Praktikum.Modul TYPE ramtype IS ARRAY (31 DOWNTO 0)
OF std_logic_vector (31 DOWNTO 0);
Praktikum ELS3 Arsitektur Sistem
SIGNAL mem: ramtype;
Komputer. Laboratorium Dasar Teknik
BEGIN
Elektro dan Sistem Digital Institut PROCESS (reset, ADDR,
Teknologi Del. Laguboti, 2019 mem)
[3] Patterson, David, dan John BEGIN
IF (reset= '1' ) THEN
Hennessy.Computer Organization
and Design: The Hardware / INSTR <= (OTHERS => '0' );
Software Interface. 2012. Waltham: ELSE
Elsevier Inc.
INSTR <= mem(conv_integer
(ADDR));
END IF; END
VI. LAMPIRAN PROCESS;

Tugas 1 -- isi dalam instruction memory


instrucMEM.vhd mem(0) <= X"00000022";
mem(1) <= X"8c010000"; mem(2) <=
-- Praktikum ELS3102 Arsitektur Sistem X"8c020004"; mem(3) <=
Komputer X"8c030008"; mem(4) <=
-- Modul :3 X"00842022"; mem(5) <=
-- Percobaan : 1 X"00822020"; mem(6) <=
-- Tanggal : 06 November 2019 X"0043282a"; mem(7) <=
-- Nama (NIM) 1 : Sari Feronika Nadapdap X"10a00002"; mem(8) <=
(1417017) X"00411020";
mem(9) <= X"1000fffb"; operation_mode : STRING;
mem(10) <= X"ac040000"; widthad_a : NATURAL;
mem(11) <= X"1000ffff"; width_a : NATURAL
END behavior; );
PORT
( clock0 : IN STD_LOGIC;
Tugas 2 address_a : IN STD_LOGIC_VECTOR(15
DOWNTO 0);
instruction_memory.vhd q_a : OUT STD_LOGIC_VECTOR (31
DOWNTO 0)
);
-- Praktikum ELS3102 Arsitektur Sistem
END COMPONENT;
Komputer
-- Modul
BEGIN
:3
INSTR <= sub_wire0;
-- Percobaan :2
altsyncram_component : altsyncram
-- Tanggal
GENERIC MAP
: 06 November 2019
(
-- Nama (NIM) 1 : Sari
init_file => "imemory.mif",
Feronika Nadapdap (1417017)
operation_mode => "ROM",
-- Nama File :
widthad_a => 16,
instruction_memory.vhd
width_a => 32
-- Deskripsi :
)
Desain instruction memory dengan
PORT MAP
menggunakan template desain Altera
(
MegaFunction ALTSYNCRAM
clock0 => clock,
address_a => ADDR,
LIBRARY ieee;
q_a => sub_wire0
USE ieee.std_logic_1164.all;
);
LIBRARY altera_mf;
END structural;
USE altera_mf.all;

ENTITY instruction_memory IS
PORT ( imemory.mif
ADDR : IN
STD_LOGIC_VECTOR (15 DOWNTO 0); WIDTH=32; -- number of bits of data per
clock : IN STD_LOGIC := word
'1'; DEPTH=256; -- the number of addresses
INSTR : OUT ADDRESS_RADIX=HEX;
STD_LOGIC_VECTOR(31 DOWNTO 0) DATA_RADIX=HEX;
); CONTENT
END ENTITY; BEGIN
00 : 8c020000;
ARCHITECTURE structural OF 04 : 8c030001;
instruction_memory IS 08 : 00430820;
SIGNAL sub_wire0 : 0C : ac010003;
STD_LOGIC_VECTOR(31 DOWNTO 0); 10 : 1022ffff;
COMPONENT altsyncram 14 : 1021fffa;
GENERIC 06 : 0043282a;
( 07 : 10a00002;
init_file : STRING; 09 : 1000fffb;
10 : ac040000; ARCHITECTURE structural OF
11 : 1000ffff; data_memory IS
END
COMPONENT altsyncram
-- komponen memori
Tugas 3 GENERIC
(
data_memory.vhd init_file : STRING; -- name
of the .mif file
operation_mode : STRING; -
-- Praktikum ELS3102 Arsitektur Sistem
- the operation mode
Komputer
widthad_a : NATURAL; --
-- Modul
width of address_a[ ]
:3
width_a : NATURAL --
-- Percobaan :3
width of data_a[ ]
-- Tanggal
);
: 06 November 2019
PORT
-- Nama (NIM) 1 : Sari
(
Feronika Nadapdap (1417017)
wren_a : IN STD_LOGIC; --
-- Nama File :
Write Enable Activation
data_memory.vhd
clock0 : IN STD_LOGIC ; --
-- Deskripsi :
Clock
Desain data memory dengan menggunakan
address_a : IN
template desain Altera MegaFunction
STD_LOGIC_VECTOR (7 DOWNTO 0); --
ALTSYNCRAM
Address Input
q_a : OUT
LIBRARY ieee;
STD_LOGIC_VECTOR (7 DOWNTO 0); --
USE ieee. std_logic_1164. all;
Data Output
LIBRARY altera_mf;
data_a : IN
USE altera_mf. all;
STD_LOGIC_VECTOR (7 DOWNTO 0) --
Data Input
ENTITY data_memory IS
);
PORT (
END COMPONENT;
ADDR : IN
STD_LOGIC_VECTOR (7 DOWNTO 0); --
BEGIN
alamat
WR_EN : IN
altsyncram_component : altsyncram
STD_LOGIC; --Indikator Penulisan
RD_EN : IN
GENERIC MAP
STD_LOGIC; --Indikator Pembacaan
(
clock : IN
init_file =>
STD_LOGIC := '1' ; -- clock
"dmemory.mif",
RD_Data :
operation_mode =>
OUT STD_LOGIC_VECTOR (7 DOWNTO
"SINGLE_PORT",
0) ;
widthad_a => 8,
WR_Data : IN
width_a => 8
STD_LOGIC_VECTOR (7 DOWNTO 0)
)
);
PORT MAP
END data_memory ;
(
wren_a => WR_EN
AND not RD_EN, -- isi yang sesuai
address_a => ADDR, USE IEEE. STD_LOGIC_1164. ALL;
clock0 => clock, USE IEEE. STD_LOGIC_ARITH. ALL;
q_a => RD_Data, -- USE IEEE. STD_LOGIC_UNSIGNED. ALL;
isi yang sesuai LIBRARY altera_mf;
data_a => WR_Data USE altera_mf. ALL;
);
END structural; ENTITY reg_file IS
PORT (
clock : IN
dememory.mif STD_LOGIC; -- clock
WR_EN : IN
WIDTH= 8; -- number of bits of data per STD_LOGIC; -- write enable
word ADDR_1 : IN
DEPTH= 256; -- the number of addresses STD_LOGIC_VECTOR (4 DOWNTO 0); --
ADDRESS_RADIX=HEX; Input 1
DATA_RADIX=HEX; ADDR_2 : IN
CONTENT STD_LOGIC_VECTOR (4 DOWNTO 0); --
BEGIN Input 2
00 : 8c; ADDR_3 : IN
01 : 8c; STD_LOGIC_VECTOR (4 DOWNTO 0); --
02 : 00; Input 3
03 : ac; WR_Data_3 : IN
04 : 10; STD_LOGIC_VECTOR (31 DOWNTO 0); --
05 : 10; write data
06 : 00; RD_Data_1 : OUT
07 : 10; STD_LOGIC_VECTOR(31 DOWNTO 0); --
08 : 10; read data 1
09 : ac; RD_Data_2 : OUT
0a : 10; STD_LOGIC_VECTOR(31 DOWNTO 0) --
END; read data 2
);
Tugas 4 END ENTITY;

ARCHITECTURE behavior OF reg_file IS


reg_file.vhd
TYPE ramtype IS ARRAY (31 DOWNTO 0)
-- Praktikum ELS3102 Arsitektur Sistem OF STD_LOGIC_VECTOR (31 DOWNTO
Komputer 0);
-- Modul SIGNAL mem: ramtype;
:3
-- Percobaan :2 BEGIN
-- Tanggal process (clock, WR_EN, ADDR_1,
: 06 November 2019 ADDR_2, ADDR_3, mem)
-- Nama (NIM) 1 : Sari begin
Feronika Nadapdap (1417017) if (clock' EVENT and clock =
-- Nama File : '0' )
reg_file.vhd then
-- Deskripsi : RD_Data_1 <=
Desain Register mem(conv_integer (ADDR_1));
RD_Data_2 <=
LIBRARY IEEE; mem(conv_integer (ADDR_2));
elsif (clock' EVENT and clock = '1'
and WR_EN = '1' )
then
mem(conv_integer
(ADDR_3)) <= WR_Data_3;
end if;
end process;
END behavior;

Anda mungkin juga menyukai