Anda di halaman 1dari 11

Percobaan III

SYNTHESITABLE MIPS32 MICROPROCESSOR BAGIAN I:


INSTRUCTION SET,REGISTER,DAN MEMORY

Eglin Noverinda Situmeang (14S16043)


Tanggal Percobaan : 25/10/2018
[NWS3103] [Arsitektur Sistem Komputer]
[Lab Dasar Teknik Elektro] – Teknik Elektro
Institut Teknologi Del

Abstrak— In this experiment, the practitioner will understand about the C


II. LANDASAN TEORETIS
language compilation process into machine language. Among these
processes will be understood assembly language that occurs in the compiler
process. In it there will be an understanding of stack and procedure calls. A. Altera® Quartus® II
Starting from the C language compilation process using GCC, the C
language compilation process uses GCC with the help of batch files,
dismantling object files, optimization compilation programs in GCC, Pada modul praktikum ini tidak akan dibahas terlalu
compiling several code files with GCC, using makefile in GCC, header dalam cara-cara melakukan simulasi pada Altera®
files, calling procedures with stack memory and run the fibbonachi
program. Quartus® II karena diasumsikan praktikan telah
memperoleh pengalaman menggunakan program ini baik
Key Word : Assambly Language, GCC, Optimation,Compilation, untuk simulasi fungsional dan simulasi timing saat
Stack Memory
mengambil Praktikum Sistem Digital pada tingkat II. Versi
Altera® Quartus® II yang disarankan untuk digunakan
dalam praktikum ini adalah Altera® Quartus® II v9.1sp2
I. Pendahuluan
Pada percobaan ini praktikan menggunakan bahasa karena pada versi ini terdapat simulator fungsional dan
VHDL (Very High Speed Integrated Circuit Hardware timing yang telah terintegrasi. Versi Altera® Quartus® II
Description Language) atau VHSIC Hardware Description yang lebih baru tidak terdapat simulator fungsional dan
Language merupakan bahasa untuk mendeskripsikan timing sehingga praktikan harus menggunakan Mentor
perangkat keras yangdigunakan dalam desain elektronik Graphics® ModelSim® untuk melakukan simulasi.
digital dan mixed-signal. Pada praktikum
SYNTHESIZABLE MIPS32® MICROPROCESSOR Langkah pertama untuk menggunakan Altera® Quartus®
BAGIAN I: INSTRUCTION SET, REGISTER, DAN II adalah membuat project terlebih dahulu. Untuk membuat
MEMORY diharapkan praktikan mencapai beberapa project, gunakan new project wizard kemudian ikuti
tujuan, yaitu : petunjuk-petunjuk yang ada. Beri lokasi dan nama project
yang diinginkan. Pilih dokumen-dokumen yang akan
dimasukkan ke dalam project (kita dapat melewati langkah
1. Praktikan memahami arsitektur mikroprosesor
MIPS32® beserta datapath eksekusinya. ini terlebih dahulu). Kemudian pilih device yang akan
digunakan. Untuk praktikum ini, kita tidak akan melakukan
implementasi pada FPGA karena praktikum ini hanya
2. Praktikan memahami instruction set dari MIPS32®
dan dapat membuat program sederhana dalam berupa simulasi saja. Oleh karena itu, kita dapat memilih
bahasa assembly yang dapat dieksekusi pada FPGA dengan spesifikasi tertinggi baik untuk Altera®
MIPS32®. Cyclone™ maupun Altera® Stratix™. Setelah project
dibuat, kita dapat mulai bekerja di dalamnya.
3. Praktikan dapat melakukan simulasi eksekusi
program MIPS32® pada program simulasi SPIM
dan memahami cara setiap instruksi dieksekusi. Untuk melakukan simulasi, kita harus melakukan
kompilasi terhadap project yang kita buat. Kompilasi yang
4. Praktikan dapat membuat instruction memory, data dilakukan bisa kompilasi penuh maupun hanya Analysis &
memory dan register dari MIPS32® dalam Synthesis saja. Kompilasi penuh akan memakan waktu yang
kodeVHDL yang synthesizable dan dapat lebih lama karena semua proses meliputi Analysis &
disimulasikan dengan Altera® Quartus® II Synthesis, Fitter,
v9.1sp2. dan Assembler akan dilakukan. Kompilasi penuh ini akan
memberi kita gambaran terutama dari sisitiming analysis.
Sedangkan dengan Analysis & Synthesis, kita telah
mendapat rangkaian yang kita buat dan dapat dilakukan Tahap berikutnya, instruksi yang telah diambil
simulasi fungsional. (fetched) dari instruction memory berpindah ke
tahap instruction decode. Pada tahap ini, instruksi
B. Mikroprosesor MIPS32® dengan lebar 32-bit akan dipecah sesuai
formatinstruksi yang digunakan. Penjelasan
MIPS32® (Microprocessor without Interlocked mengenai decoding instruksi ini dapat dilihat
Pipeline Stages) merupakan sebuah mikroprosesor 32- pada bagian selanjutnya.
bit yang dikembangkan oleh MIPS Technologies.
Mikroprosesor ini merupakan reduced instruction set
computer (RISC). Mikroprosesor ini sering digunakan 3. Execute / Address Calculation (EX)
sebagai bahan pembelajaran mata kuliah Arsitektur
Sistem Komputer diberbagai universitas dan sekolah Tahap ini merupakan tahap sebagian besar
teknik. operasi aritmatika dan logika pada arithmetic and
logical unit (ALU) dilakukan. Pada tahap ini juga
Dalam kehidupan nyata, arsitektur mikroprosesor terdapat tempat untuk meneruskan alamat register
MIPS® sering digunakan dalam sistem embedded kembali ke tahap instruction decode sebagai
seperti perangkat Windows™ CE, router,residential deteksi hazard.
gateway, dan konsol video game seperti Sony®
PlayStation®, Sony® PlayStation® 2 (PS2™), dan 4. Data Memory (MEM)
Sony® PlayStation® Portable (PSP®).
Pada tahap ini, data disimpan dan/atau diambil
Beberapa turunan arsitektur MIPS®. Sumber: dari data memory. Data memory hanya dapat
Wikipedia disimpan atau dibaca jika ada sinyal MemRead
dan/atau MemWrite yang sesuai sehingga operasi
baca dan/atau tulis pada data memory dapat
dilakukan.

5. Write Back (WB)

Tahap terakhir ini digunakan untuk mengalirkan


data dari data memory atau hasil
perhitunganarithmetic and logical unit (ALU) ke
register untuk dapat menjalankan instruksi
selanjutnya.

C. Bahasa VHDL
Terdapat lima tahap yang dilakukan ketika VHDL (Very High Speed Integrated Circuit Hardware
mikroprosesor MIPS32® melakukan eksekusi Description Language) atau VHSIC Hardware
suatuinstruksi. Kelima tahap tersebut adalah sebagai Description Language merupakan bahasa untuk
berikut. mendeskripsikan perangkat keras yang digunakan dalam
desain elektronik digital dan mixed signal, contohnya
1. Instruction Fetch (IF) Field-Programmable Gate Array (FPGA) atau Integrated
Tahap instruction fetch berfungsi mengatur aliran Circuit (IC). Sistem digital sangat erat kaitannya dengan
instruksi yang akan diolah pada tahap berikutnya. sinyal. Sinyal dapat dianalogikan sebagai wire dan dapat
Instruksi yang sedang dijalankan merupakan berubah ketika input berubah. Dalam VHDL, terdapat
instruksi yang berasal dan disimpan dari memory. definisi sinyal bernama std_logic yang sesuai dengan
Pada arsitektur ini, memory dipisahkan menjadi standar IEEE 1164. Terdapat sembilan jenis nilai sinyal
dua bagian yaitu instruction memory yang yang didefinisikan dalam std_logic. Untuk menggunakan
berfungsi menyimpan instruksi-instruksi yang akan nilai sinyal standar std_logic, kita dapat menggunakan
dieksekusi dan data memory yang berfungsi untuk library yang telah tersedia yaitu ieee.std_logic_1164.all.
menyimpan data untuk menghindari structural
hazard. Dengan demikian, arsitektur ini menganut Tidak seperti bahasa Verilog HDL, VHDL merupakan
Harvard Architectur bahasa yang case insensitive. Abstraksi utama dalam
bahasa VHDL disebut entitas desain (design entity) yang
2. Instruction Decode (ID) terdiri atas input, output, dan fungsi yang didefinisikan
secara benar. Entitas desain dalam VHDL terdiri atas dua
bagian
masing-masing komponen dan menghubungkan port input
1. Deklarasi Entitas (entity declaration) yang dan port output dari masing-masing komponen dengan top
mendefinisikan antarmuka entitas tersebut level design atau dengan komponen lain.
terhadap dunia luar (contohnya port input dan
port output) Contoh berikut digunakan untuk merealisasikan 2-to-1
multiplexer 4-bit dari empat buah 2-to-1 multiplexer 1-bit.
2. Arsitektur Entitas (entity architecture) yang
mendefinisikan fungsi dari entitas (contohnya LIBRARY IEEE;
rangkaian logika di dalam entitas tersebut). USE IEEE.STD_LOGIC_1164.ALL;
Pendefinisian arsitektur dapat dilakukan secara ENTITY Mux2_4b IS
behavioral maupun secara structural. PORT (
);
Setiap entitas desain harus disimpan dalam file VHDL yang END Mux2_4b;
terpisah dengan nama file sesuai dengan nama entitas yang A_IN : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
dideklarasikan (contohnya nama_entity.vhd ). Berikut ini B_IN : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
template deklarasi sebuah entitas dan arsitektur entitas S_IN : IN STD_LOGIC;
tersebut dalam bahasa VHDL C_OUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)
ARCHITECTURE Structural OF Mux2_4b IS
LIBRARY IEEE; COMPONENT Mux2 IS
USE IEEE.STD_LOGIC_1164.all; PORT (
ENTITY <nama_entity> IS A : IN STD_LOGIC;
PORT( B : IN STD_LOGIC;
<nama_port_1> : <tipe_port> STD_LOGIC; S : IN
<nama_port_2> : <tipe STD_LOGIC_VECTOR(n STD_LOGIC; D :
DOWNTO 0) OUT STD_LOGIC
);
); END COMPONENT;
END <nama_entity>; BEGIN
mux2_0 : Mux2
ARCHITECTURE <nama_arsitektur> OF <nama_entity> PORT MAP
IS mux2_1 : Mux2
BEGIN
<fungsi yang didefinisikan> (
END <nama_arsitektur>; A => A_IN(0),
B => B_IN(0),
S => S_IN,
Setiap entitas desain dalam file VHDL yang berbeda dapat D => C_OUT(0)
dipanggil dan dirangkai menjadi rangkaian yang lebih besar. PORT MAP
Hal ini sangat penting dilakukan dalam melakukan desain
hardware. Pertama, hardware yang akan didesain harus kita );
pecah-pecah menjadi komponen-komponen logika yang mux2_2 : Mux2
cukup kecil, contohnya menjadi multiplexer, adder, flip- PORT MAP
flop, dan sebagainya. Kemudian, kita mendesain masing- (
masing komponen logika tersebut dan melakukan simulasi A => A_IN(1),
fungsional dan simulasi timing untuk setiap komponen B => B_IN(1),
untuk meyakinkan bahwa setiap komponen dapat berfungsi S => S_IN,
dengan baik. Setelah itu, kita menggabungkan masing- D => C_OUT(1
masing komponen untuk membentuk entitas desain yang );
lebih besar (top level entity). mux2_3 : Mux2
PORT MAP
Langkah pertama dalam membentuk top level entity adalah (
dengan mendefinisikan top level entity tersebut seperti A => A_IN(2),
halnya kita membuat entitas desain biasa. Kemudian, pada B => B_IN(2),
arsitektur top level entity, kita memanggil desain entitas lain S => S_IN,
menggunakan construct component. Construct component D => C_OUT(2)
ini memiliki isi yang sama persis dengan deklarasi entitas );
desain yang akan dipanggil oleh top level entity. Kemudian, END Structural;
kita harus melakukan instansiasi
Terdapat tiga jenis concurent signal assignment (CSA) WITH select_expression SELECT
dalam bahasa VHDL, yaitu simple CSA,conditional CSA, signal_name <= value_expr_1 WHEN choice_1,
dan selected CSA. Ketiga jenis concurent signal assignment value_expr_2 WHEN choice_2,
tersebut dijelaskan menggunakan contoh sebagai berikut. value_expr_3 WHEN choice_3,
...
1. Simple CSA. Assignment sinyal dilakukan dengan value_expr_n WHEN OTHERS;
ekspresi logika biasa. Hasil implementasi Simple
CSA akan berupa gerbang logika biasa.

ARCHITECTURE Behavioral OF
Example IS
BEGIN
f <= (x1 AND x3) OR (NOT x3 AND
x2);
g <= (NOT x3 OR x1) AND (NOT x3
OR x4); Selain concurent signal assignment, dalam bahasa VHDL
END Behavioral; juga dikenal dengan construct PROCESS yang berfungsi
melakukan assignment sinyal secara se kuensial. Sebuah
proses (PROCESS) dapat dianalogikan sebagai bagian dari
rangkaian yang dapat aktif dan dapat nonaktif. Sebuah
proses akan diaktifkan ketika sinyal-sinyal (SIGNAL) dalam
daftar sensitivitas (sensitivity list) mengalami perubahan
nilai. Ketika diaktifkan, semua ekspresi dan pernyataan
(statement) akan dieksekusi secara sekuensial hingga akhir
dari proses tersebut.
2. Conditional CSA. Assignment sinyal dilakukan
dengan construct WHEN-ELSE.Hasil implementasi PROCESS (sensitivity_list)
Conditional CSA akan berupa kumpulan 2-to-1 declarations;
BEGIN
multiplexer yang disusun secara bertahap dengan
sequential_statement_1;
boolean_expr sebagai selektor dan value_expr
sequential_statement_2;
sebagai nilai sinyal yang dapat dipilih.
...
sequential_statement_n;
signal_name <= value_expr_1 WHEN
END PROCESS
boolean_expr_1 ELSE
value_expr_2 WHEN boolean_expr_2
Terdapat dua jenis construct yang digunakan dalam
ELSE
construct PROCESS, yaitu construct IF-THEN-ELSE dan
value_expr_3 WHEN boolean_expr_3
construct CASE. Kedua jenis construct tersebut diberikan
ELSE
... sebagai contoh berikut ini.
value_expr_n;
ARCHITECTURE ARCHITECTURE
Behavioral OF mux2to1 IS Behavioral OF mux2to1 IS
BEGIN BEGIN
PROCESS (w0, w1, s) PROCESS (w0, w1, s)
BEGIN BEGIN
IF s = '0' THEN CASE s IS
f <= w0; WHEN '0' =>
ELSE f <= w0;
f <= w1; WHEN OTHERS =>
END IF; f <= w1;
END PROCESS; END CASE;
3. Selected CSA. Assignment sinyal dilakukan END Behavioral; END PROCESS;
dengan construct WITH-SELECT. Hasil END Behavioral;
implementasi Selected CSA akan berupa satu buah
n-to-1 multiplexer dengan select_expression Dalam bahasa VHDL, kita juga dapat mendefinisikan
sebagai selektor dan value_expr_3 sebagai nilai beberapa jenis elemen memory. Dua jenis elemen memory
sinyal yang dapat dipilih. yang sering digunakan dalam bahasa VHDL adalah Gated D
Latch dan D Flip-flop. Gated D Latch memiliki karakteristik
yaitu output akan berubah mengikuti input saat clock high
(atau clock low, tergantung implementasi). Sedangkan D
Flip-flop memiliki karakteristik yaitu output akan berubah
mengikuti input saat transisi clock dari low ke high (atau
high ke low, tergantung implementasi). Untuk elemen
memory lain seperti Gated S-R Latch, T Flip-flop, dan JK
Flip-flop juga dapat diimplementasikan pada bahasa VHDL
namun mereka jarang digunakan. D. Simulasi MIPS32® menggunakan PCSpim

Sebelum kita mendesain mikroprosesor Single-Cycle


MIPS32®, ada baiknya kita mempelajari terlebih dahulu
bagaimana sebuah instruksi dieksekusi oleh
mikroprosesor MIPS32® tersebut. Kita dapat
menggunakan sebuah simulator untuk melakukan
ENTITY latch IS ENTITY flipflop IS eksekusi program yang kita buat pada mikroprosesor
PORT ( PORT ( MIPS32® lalu melihat hasilnya. Simulator MIPS32®
D : IN STD_LOGIC; D : IN STD_LOGIC ; yang akan digunakan dalam praktikum ini adalah
Clk : IN STD_LOGIC; Clk : IN STD_LOGIC ; PCSpim. Simulator PCSpim dapat diunduh di
Q : OUT STD_LOGIC Q : OUT STD_LOGIC http://el3111.bagus.my.id.
); );
END latch; END flipflop ; Perhatikan bahwa program ini membutuhkan
ARCHITECTURE ARCHITECTURE Behavior Microsoft® .Net Framework 2.0 untuk dapat berjalan.
Behavioral OF latch IS OF flipflop IS Bagi praktikan yang menggunakan Microsoft®
BEGIN BEGIN Windows® XP, Microsoft® Windows® 8, dan
PROCESS ( D, Clk ) PROCESS ( Clock ) Microsoft® Windows® 8.1 harus memasang Microsoft®
BEGIN BEGIN .Net Framework 2.0 terlebih dahulu.Microsoft® .Net
IF Clk = '1' THEN IF Clock'EVENT AND Framework 2.0 dapat diunduh dihttp://el3111.bagus.my.id
Q <= D; Clock='1' THEN dalam paket instalasi Microsoft® .Net Framework 3.5.
END IF; Q <= D ; Setelah instalasi selesai PCSpim, kita dapat langsung
END PROCESS; END IF ; menjalankan PCSpim dari start menu. Khusus untuk
END Behavioral; END PROCESS ; pengguna Microsoft® Windows® edisi 64-bit, terkadang
END Behavior ; PCSpim akan memberikan pesan error karena tidak dapat
menemukan file exceptions.s. Untuk mengatasinya, pilih
menu Simulator lalu klik submenu Settings. Pada bagian
Penggunaan Latch dalam implementasi rangkaian
Load exception file, ganti alamat file exceptions.s.
menggunakan bahasa VHDL sebaiknya dihindari kecuali
kita mengetahui apa yang kita lakukan. Dalam proses
Sebelum : C:\Program Files\PCSpim\exceptions.s
sintesis, implementasi Latch ini akan memberikan kita
warning. Sebagian besar perangkat FPGA milik Altera tidak
Sesudah : C:\Program Files (x86)\PCSpim\exceptions.s
memiliki elemen dasar berupa Latch. Dengan demikian
sebuah Latch harus dibuat menggunakan Logic Cell.
Sayangnya, hal ini membutuhkan sebuah feedback pada
Logic Cell untuk mengimplementasikan fungsi memory. Hal
ini akan menyebabkan analisis timing statis tidak dapat
dilakukan.

Salah satu komponen memory yang paling sering digunakan


adalah register. Register terdiri atas beberapa buah flip-flop
yang disusun sedemikian rupa sehingga membentuk elemen
penyimpanan. Register juga dipakai untuk
mengimplementasikan rangkaian sekuensial contohnya
finite state machine.
GCC memiliki fitur makefile yang berfungsi untuk
menulis daftar nama file kode di dalam project tersebut.
Kita cukup memberikan GCC nama makefile lalu GCC
akan melakukan proses kompilasi untuk semua file B. Percobaan 2 : Perancangan Instruction
tersebut untuk kemudian menggabungkannya pada file Memory dengan Altera® Quartus® II Mega
executable. Function ALTSYNCRAM

Pada percobaan ini hampir sama dengan percobaan


A. HASIL DAN ANALISIS pertama. Pada bagian ini, kita akan memanfaatkan sebuah
A. Percobaan 1 : Implementasikan desain template desain yang telah tersedia dalam Altera®
instruction memory dalam bahasa VHDL Quartus® II yaitu Altera® MegaFunction
ALTSYNCRAM. Selain itu, kita dapat menggunakan
Instructiom memory memiliki lebar data dengan lebar inisialisasi isi memory dari file eksternal berformat .mif
address sebesar 32 bit dan memiliki port input yang (memory initialization file). mplementasikan desain
menerima address dengan lebar 32-bit dan sebuah port instruction memory dalam bahasa VHDL. Terjadinya
output yang mengeluarkan instruksi dengan lebar data 32 perubahan dalam code VHDL seperti :
bit dan 32 buah D flip flop. Simulasikan secara fungsional
dan timing desain tersebut setelah melakukan analysis & Sebelum: ADDR : IN STD_LOGIC_VECTOR (31
synthesis terlebih dahulu. Perhatikan apakah waveform telah DOWNTO 0);
sesuai dengan address yang dimasukkan dan memiliki set
end time 80ns. Sesudah: ADDR : IN STD_LOGIC_VECTOR (15
DOWNTO 0);
Analisis :
Sebelum: address_a : IN STD_LOGIC_VECTOR
(31 DOWNTO 0);

Sesudah : address_a : IN STD_LOGIC_VECTOR


(15 DOWNTO 0);

Sebelum : widthad_a => 32,


Sesudah : widthad_a => 16,

harus berhati-hati dalam memasukkan address


karena lebar address bukan lagi 32-bit melainkan 16-bit. 2
Hasil Simulasi menggunakan Function: Simulasikan secara fungsional dan timing desain
tersebut setelah melakukan analysis & synthesis terlebih
dahulu. Perhatikan apakah waveform telah sesuai dengan
address yang dimasukkan. Bandingkan dengan hasil
simulasi pada Tugas 1

Hasil Simulasi menggunakan Function :


Hasil simulasi menggunakan Timing : Percobaan 1

Setelah mengamati hasil simulasi dengan menggunakan Percobaan 2


Altera Quartus II berdaasarkan dari waveform yang
menghasilkan output yang dipengaruhi oleh inputannya
seperti pada set end time juga mempengaruhi bentuk dari
output yang dihasilkan. Ketika inputan ADRR
‘0000000’akan diperoleh hasil output ‘00000022’ ketika
inputan ‘00000001’ memiliki output ‘8C010000’ dan untuk Hasil percobaan function percobaan 1
inputan ‘00000002’ menghasilkan output ‘8C020004’.
dibandingkan dengan percobaan 2 terjadi
Adapun perbedaan antara functional dan timing terdapat
dalam delay pada timing yang mempengaruhi cepat atau perbedaan percobaan pertama menggunakan
lambatnya output. address 32 bit sedangkan pada percobaan 2
menggunakan 16 bit pada percobaan saat inputan
‘0007’ menghasilkan output ‘10A00000’ sedangkan Sesudah : WR_DATA : IN STD_LOGIC_VECTOR (7
DOWNTO 0)
pada percobaan 1 output masih ‘00000000’
Sebelum : address_a : IN STD_LOGIC_VECTOR
(31 DOWNTO 0);
Hasil Simulasi menggunakan timing : Sesudah : address_a : IN STD_LOGIC_VECTOR (7
DOWNTO 0);
Percobaan 1 Sebelum : q_a : OUT STD_LOGIC_VECTOR (31
DOWNTO 0);
Sesudah : q_a : OUT STD_LOGIC_VECTOR (7
DOWNTO 0);
Sebelum : data_a : IN STD_LOGIC_VECTOR (31
DOWNTO 0)
Sesudah : data_a : IN STD_LOGIC_VECTOR (7
DOWNTO 0)
Percobaan 2 Sebelum : widthad_a => 32, Sesudah :
widthad_a => 8,
Sebelum : width_a => 32
Sesudah : width_a => 8

imulasikan secara fungsional dan timing desain tersebut


setelah melakukan analysis & synthesis terlebih dahulu.
Perhatikan apakah waveform telah sesuai dengan address
Hasil percobaan function percobaan 1 yang dimasukkan.
dibandingkan dengan percobaan 2 terjadi perbedaan
percobaan pertama menggunakan address 32 bit Hasil Simulasi menggunakan function :
sedangkan pada percobaan 2 menggunakan 16 bit
pada percobaan saat inputan. 0001’ menghasilkan
output ‘00000000’ sedangkan pada percobaan 1
inputan ‘00000001’output masih ‘00000022’ dan
inputan pada percobaan 1 masil berbentuk 32 bit.
Hasil Simulasi mengguakan Timing :

C. Percobaan 3 Disassembly File Objek

Dalam mikroprosesor Single-Cycle MIPS32® yang akan


kita realisasikan, data memory memiliki lebar data sebesar
32-bit dan lebar address sebesar 32-bit. Untuk praktikum ini, Nilai pada port output ‘RD_Data’ telah sama dengan
kita akan merealisasikan data memory yang dapat nilai input ‘WR_Data’. Namun, ada beberapa kondisi
menampung 256 buah data. Data memory memiliki port yang harus terpenuhi terlebih dahulu. Nilai port
input memasukkan data dengan lebar data 32-bit. Terdapat ‘clock’ harus ‘High’, begitu juga dengan nilai input
pula port input clock untuk mengendalikan rangkaian ini, ‘WR_EN’ yang juga harus ‘High’ agar nilai yang
port input untuk mengaktifkan mode tulis (write enable), didapatkan sesuai
dan port input untuk mengaktifkan mode baca (read enable).

merealisasikan elemen memory, modifikasi berikut ini harus


dilakukan. Ubah lebar address menjadi 8-bit dan lebar data
menjadi 8-bit Dengan demikian, beberapa konfigurasi harus D. Percobaan 4 : Perancangan Register
diubah sebagai berikut.
Dalam mikroprosesor Single-Cycle MIPS32® yang akan
Sebelum : ADDR : IN STD_LOGIC_VECTOR (31 DOWNTO kita realisasikan, terdapat 32 buah register yang masing-
0); masing memiliki lebar data 32-bit. Register ini memiliki dua
Sesudah : ADDR : IN STD_LOGIC_VECTOR (7 buah port input untuk memasukkan address 32-bit dari data
DOWNTO 0); yang akan dibaca dan memiliki satu buah port input untuk
Sebelum : RD_Data : OUT STD_LOGIC_VECTOR (31 memasukkan address 32-bit tempat data akan ditulis. Selain
DOWNTO 0); itu terdapat dua buah port output tempat keluarnya data 32-
Sesudah : RD_Data : OUT STD_LOGIC_VECTOR (7 bit yang dibaca dan satu buah port input tempat masuknya
DOWNTO 0);
data 32-bit yang akan ditulis. Terdapat pula port input untuk
Sebelum : WR_DATA : IN STD_LOGIC_VECTOR (31
DOWNTO 0)
clock dan port input untuk sinyal untuk mengaktifkan mode
tulis (write enable). Penggunaan urutan register ini sesuai
dengan table register MIPS32® pada landasan teoretis
praktikum. Perhatikan bahwa nilai register 0 harus tetaplah
nol. 1. Implementasikan desain register dalam bahasa 2. Tahap tahap eksekusi instruksi dalam
VHDL dengan deklarasi entitas sebagai berikut. Simpan file mikroprocessor adalah Instruction Fetch,
ini dengan nama reg_file.vhd. Instruction Decode, Execute, Data Memory, dan
Write Back
Sinkronisasikan proses baca tulis yang terjadi pada register.
Proses pembacaan data pada register berlangsung pada saat 3. Fungsi Altera® Megafunction ALTSYNCRAM
falling edge clock sedangkan penulisan data pada register untuk meraliasisasikan synchronous RAM dan
berlangsung pada saat rising edge clock. 4. Simulasikan ROM dalam desain rangkaian yang dibuat.
secara fungsional dan timing desain tersebut setelah
melakukan analysis & synthesis terlebih dahulu. Perhatikan
apakah waveform telah sesuai dengan address yang 4. Perbedaan microprocessor MIPS32® dengan
dimasukkan. microprocessor Single-Cycle MIPS32® adalah pada
microprocessor MIPS32® tidak ada papelome dan
Hasil Simulasi menggunakan function : semua instruksi selesesai dieksekusi dalam satu
siklus clock

F. REFERENSI
[1] Haryoni, Andri. dkk., Praktikum Arsitektur Sistem
Hasil Simulasi menggunakan timing :
Komputer, Sekolah Teknik Elektro dan Informatika
ITB, Bandung, 2017.

2. Mervin T. www.scribd.com. NWS_3102_Modul_ASK_


2016_Final

Namun, ada sedikit perbedaan antara simulasi Functional


dan Timing. Pada simulasi Timing, ada sedikit delay pada
tempat-tempat tertentu, sehingga output yang didapatkan
menjadi agak terlambat jika dibandingkan dengan hasil pada
simulasi Functional.

E. SIMPULAN
1. Counter adalah bagian dari microprocessor yang
menyimpan address instruksi yang akan dieksekusi

Lampiran
i. Source Code 1 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE
-- Praktikum NWS3103 Arsitektur Sistem Komputer IEEE.STD_LOGIC_ARITH.ALL; USE
-- Modul :3 IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Percobaan :1 LIBRARY altera_mf;
-- Tanggal : 26 Oktober 2017 USE altera_mf.altera_mf_components.ALL;
-- Kelompok :3 ENTITY Tugas1 IS PORT (
-- Rombongan :1 ADDR : IN std_logic_vector (31
-- Nama (NIM)1 : Eglin Noverinda (14S16043) DOWNTO 0);
-- Nama File : instrucMEM.vhd clock : IN std_logic;
-- Deskripsi : Implementasi instruction memory reset : IN std_logic;
INSTR : OUT std_logic_vector (31
DOWNTO 0) -- Praktikum NWS3103 Arsitektur Sistem Komputer
); -- Modul :3
END ENTITY; -- Percobaan :2
-- Tanggal : 26 Oktober 2017
ARCHITECTURE behavior OF Tugas1 IS -- Kelompok :3
TYPE ramtype IS ARRAY (31 DOWNTO 0) OF -- Rombongan :1
std_logic_vector (31 DOWNTO 0); -- Nama (NIM)1 : Eglin Noverinda (14S16043)
SIGNAL mem: ramtype; -- Nama File : instruction_memory.vhd
BEGIN -- Deskripsi : Implementasi instruction
PROCESS (reset,ADDR,mem) memory
BEGIN
IF (reset='1') THEN LIBRARY ieee;
INSTR <= (OTHERS => '0'); USE ieee.std_logic_1164.all;
ELSE LIBRARY altera_mf;
INSTR <= mem(conv_integer USE altera_mf.all;
(ADDR));
END IF; END ENTITY instruction_memory IS
PROCESS; PORT (
-- Isi dalam instruction memory ADDR : IN STD_LOGIC_VECTOR (31
mem(0) <= X"00000022"; DOWNTO 0); -- alamat
mem(1) <= X"8c010000"; mem(2) <= clock : IN STD_LOGIC := '1'; -- clock
X"8c020004"; mem(3) <= INSTR : OUT STD_LOGIC_VECTOR (31
X"8c030008"; mem(4) <= DOWNTO 0) -- output
X"00842022"; mem(5) <= );
X"00822020"; mem(6) <= END ENTITY;
X"0043282a"; mem(7) <=
X"10a00002"; mem(8) <= ARCHITECTURE structural OF
X"00411020"; instruction_memory IS
mem(9) <= X"1000fffb"; SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31
mem(10) <= X"ac040000"; DOWNTO 0);
mem(11) <= X"1000ffff"; -- signal keluaran output
END behavior; COMPONENT altsyncram
-- komponen memori
GENERIC
(
ii. Source code 2 init_file : STRING; -- name of the .mif file
operation_mode : STRING; -- the operation
Imemory.mif mode
widthad_a : NATURAL; -- width of address_a[]
width_a : NATURAL -- width of data_a[]
WIDTH=32; -- number of bits of data per word );
DEPTH=256; -- the number of addresses
ADDRESS_RADIX=HEX; PORT
DATA_RADIX=HEX; (
CONTENT clock0 : IN STD_LOGIC ;
BEGIN address_a : IN STD_LOGIC_VECTOR (31
00 : 8c020000; DOWNTO 0);
04 : 8c030001; q_a : OUT STD_LOGIC_VECTOR (31
08 : 00430820; DOWNTO 0)
0C : ac010003; );
10 : 1022ffff; END COMPONENT;
14 : 1021fffa;
06 : 0043282a;
07 : 10a00002; iii. Source Code 3
09 : 1000fffb;
10 : ac040000; -- Praktikum NWS3103 Arsitektur Sistem Komputer
11 : 1000ffff; -- Modul :3
END
-- Percobaan :3
-- Tanggal : 26 Oktober 2017
-- Kelompok :3 q_a => ???????????, -- isi yang sesuai
-- Rombongan :1 data_a => WR_Data
-- Nama (NIM)1 : Eglin Noverinda (14S16043) );
-- Nama File : data_memory.vhd
-- Deskripsi : Implementasi desain data ENTITY data_memory IS
memory PORT (
ADDR : IN STD_LOGIC_VECTOR (31
ENTITY data_memory IS DOWNTO 0); -- alamat
PORT ( WR_EN : IN STD_LOGIC; --Indikator
ADDR : IN STD_LOGIC_VECTOR (31 Penulisan
DOWNTO 0); -- alamat RD_EN : IN STD_LOGIC; --Indikator
WR_EN : IN STD_LOGIC; --Indikator Pembacaan
Penulisan clock : IN STD_LOGIC := '1'; -- clock
RD_EN : IN STD_LOGIC; --Indikator RD_Data : OUT STD_LOGIC_VECTOR (31
Pembacaan DOWNTO 0);
clock : IN STD_LOGIC := '1'; -- clock WR_Data : IN STD_LOGIC_VECTOR (31
RD_Data : OUT STD_LOGIC_VECTOR (31 DOWNTO 0)
DOWNTO 0); );
WR_Data : IN STD_LOGIC_VECTOR (31 END ENTITY;
DOWNTO 0)
); COMPONENT altsyncram
END ENTITY; -- komponen memori
GENERIC
COMPONENT altsyncram (
-- komponen memori init_file : STRING; -- name of the .mif file
GENERIC operation_mode : STRING; -- the operation
( mode
init_file : STRING; -- name of the .mif file widthad_a : NATURAL; -- width of address_a[]
operation_mode : STRING; -- the operation width_a : NATURAL -- width of data_a[]
mode );
widthad_a : NATURAL; -- width of address_a[]
width_a : NATURAL -- width of data_a[] PORT
); (
wren_a : IN STD_LOGIC; -- Write Enable
PORT Activation
( clock0 : IN STD_LOGIC ; -- Clock
wren_a : IN STD_LOGIC; -- Write Enable address_a : IN STD_LOGIC_VECTOR (31
Activation DOWNTO 0); -- Address Input
clock0 : IN STD_LOGIC ; -- Clock q_a : OUT STD_LOGIC_VECTOR (31
address_a : IN STD_LOGIC_VECTOR (31 DOWNTO 0); -- Data Output
DOWNTO 0); -- Address Input data_a : IN STD_LOGIC_VECTOR (31
q_a : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) -- Data Input
DOWNTO 0); -- Data Output );
data_a : IN STD_LOGIC_VECTOR (31 END COMPONENT;
DOWNTO 0) -- Data Input
); altsyncram_component : altsyncram
END COMPONENT; GENERIC MAP
(
altsyncram_component : altsyncram init_file => "dmemory.mif", operation_mode
GENERIC MAP => "SINGLE_PORT", widthad_a => 32,
( width_a => 32
init_file => "dmemory.mif", operation_mode )
=> "SINGLE_PORT", widthad_a => 32, PORT MAP
width_a => 32 (
) wren_a => ???????????, -- isi yang sesuai
PORT MAP clock0 => clock,
( address_a => ADDR,
wren_a => ???????????, -- isi yang sesuai q_a => ???????????, -- isi yang sesuai
clock0 => clock, data_a => WR_Data
);
address_a => ADDR,
iv. Source Code 4

-- Praktikum NWS3103 Arsitektur Sistem Komputer


-- Modul :3
-- Percobaan :2
-- Tanggal : 26 Oktober 2017
-- Kelompok :3
-- Rombongan :1
-- Nama (NIM)1 : Eglin Noverinda (14S16043)
-- Nama File : reg_file.vhd
-- Deskripsi : Implementasi desain register dalam
bahasa VHDL

ENTITY reg_file IS
PORT (
clock : IN STD_LOGIC; -- clock
WR_EN : IN STD_LOGIC; -- write enable
ADDR_1 : IN STD_LOGIC_VECTOR (4 DOWNTO
0); -- Input 1
ADDR_2 : IN STD_LOGIC_VECTOR (4 DOWNTO
0); -- Input 2
ADDR_3 : IN STD_LOGIC_VECTOR (4 DOWNTO
0); -- Input 3
WR_Data_3 : IN STD_LOGIC_VECTOR (31
DOWNTO 0);-- write data
RD_Data_1 : OUT STD_LOGIC_VECTOR(31
DOWNTO 0);-- read data 1
RD_Data_2 : OUT STD_LOGIC_VECTOR(31
DOWNTO 0) -- read data 2
);
END ENTITY;

Anda mungkin juga menyukai