Anda di halaman 1dari 19

Percobaan III

SYNTHESITABLE MIPS32 MICROPROCESSOR


BAGIAN I:INSTRUCTION
SET,REGISTER,DAN MEMORY
Erikson Mangihut Tua Silaban (14S16028)
Tanggal Percobaan : 25/10/2018
NWS3103 Praktikum Arsitektur Sistem Komputer
Laboratorium Sistem Digital
Teknik ElektroInstitut Teknologi Del

Abstrak— In this module III experiment with the  Praktikan dapat membuat instruction
synthesizable title MPIS32 ® microprocessor part I: memory, data memory dan register dari
Instruction set, register, MIPS32® dalam kode VHDL yang
and memory. As for this experiment, four experiments synthesizable dan dapat disimulasikan
will be conducted relating to the design dengan Altera® Quartus® II v9.1sp2.
microprocessor ® MPIS32 component. The software
used to support the smooth running of this experiment
is Altera Quartus. The main objective of this
experiment is to understand architecture
microprocessor ®MPIS32, understands the instruction Adapun peralatan yang mendukung praktikum ketiga
set from ®MPIS32 and is able to use in Assembly ini, adalah sebagai berikut ini :
Language Simple program, able to simulate the
®MPIS32 program in spim simulation, able to make  Komputer Desktop / Laptop dengan sistem
instruction sets, data operasi Microsoft® Windows™ 7/8/8.1.
Memory and registers from ®MPIS32 are made to
VHDL code, where the results will be simulated with  Altera® Quartus® II v9.1sp2 Web Edition
Altera. atau Altera® Quartus® II v9.1sp2
Subscription Edition. (Altera® Quartus® II
Keywords: VHDL, MPIS32, register, instruction v10 atau yang lebih baru juga dapat
memory, data memory. digunakan, namun tidak terdapat simulator.
Praktikan harus menggunakan Mentor
Graphics® ModelSim® untuk melakukan
I. PENDAHULUAN simulasi).

Adapun yang menjadi tujuan dilakukannya percobaan  PCSpim sebagai simulator MIPS32® (untuk
ketiga ini adalah sebagai berikut ini : Microsoft® Windows™ 8/8.1, diperlukan
mengunduh dan memasang Microsoft® .Net
 Praktikan memahami arsitektur Framework 3.5 terlebih dahulu).
mikroprosesor MIPS32® beserta datapath
eksekusinya.  Notepad++ sebagai teks editor.

 Praktikan memahami instruction set dari


MIPS32® dan dapat membuat program
sederhana dalam bahasa assembly yang dapat
dieksekusi pada MIPS32®.
II. LANDASAN TEORETIS
 Praktikan dapat melakukan simulasi eksekusi
program MIPS32® pada program simulasi A. Bahasa VHDL
SPIM dan memahami cara setiap instruksi VHDL (Very High Speed Integrated Circuit
dieksekusi. Hardware Description Language) atau VHSIC
Hardware Description Language adalah bahasa untuk
mendeskripsikan perangkat keras yang digunakan
dalam desain elektronik digital dan mixed-signal,
contohnya Field-Programmable Gate Array (FPGA)
atau Integrated Circuit (IC). Sistem digital sangat erat
kaitannya dengan sinyal. Sinyal dapat dianalogikan
sebagai wire dan dapat berubah ketika input berubah.
Dalam VHDL, terdapat definisi sinyal bernama
std_logic yang sesuai dengan standar IEEE 1164.
Terdapat sembilan jenis nilai sinyal yang
didefinisikan dalam std_logic. Untuk menggunakan Setiap entitas desain dalam file VHDL yang
nilai sinyal standar std_logic, dapat menggunakan berbeda dapat dipanggil dan dirangkai menjadi
library yang telah tersedia yaitu rangkaian yang lebih besar. Hal ini sangat penting
ieee.std_logic_1164.all. dilakukan dalam melakukan desain hardware.
Pertama, hardware yang akan didesain harus kita
pecah-pecah menjadi komponen-komponen logika
yang cukup kecil, contohnya menjadi multiplexer,
adder, flip-flop, dan sebagainya. Kemudian, kita
mendesain masing-masing komponen logika tersebut
dan melakukan simulasi fungsional dan simulasi
timing untuk setiap komponen untuk meyakinkan
bahwa setiap komponen dapat berfungsi dengan baik.
Setelah itu, kita menggabungkan masing-masing
komponen untuk membentuk entitas desain yang lebih
Tidak seperti bahasa Verilog HDL, VHDL merupakan besar (top level entity). Langkah pertama dalam
bahasa yang case insensitive. Abstraksi utama dalam membentuk top level entity adalah dengan
bahasa VHDL disebut entitas desain (design entity) mendefinisikan top level entity tersebut seperti halnya
yang terdiri atas input, output, dan fungsi yang kita membuat entitas desain biasa. Kemudian, pada
didefinisikan secara benar. Entitas desain dalam arsitektur top level entity, kita memanggil desain
VHDL terdiri atas dua bagian, yakni : entitas lain menggunakan construct component.
Construct component ini
 Deklarasi Entitas (entity declaration) yang
mendefinisikan antarmuka entitas tersebut memiliki isi yang sama persis dengan deklarasi entitas
terhadap dunia luar (contohnya port input dan desain yang akan dipanggil oleh top level entity.
port output). Kemudian, kita harus melakukan instansiasi masing-
 Arsitektur Entitas (entity architecture) yang masing komponen dan menghubungkan port input dan
mendefinisikan fungsi dari entitas port output dari masing-masing komponen dengan top
(contohnyarangkaian logika di dalam entitas level design atau dengan komponen lain.
tersebut).

Pendefinisian arsitektur dapat dilakukan secara


behavioral maupun secara structural. Setiap entitas
desain harus disimpan dalam file VHDL yang terpisah
dengan nama file sesuai dengan nama entitas yang
dideklarasikan (contohnya nama_entity.vhd ). Berikut
ini template deklarasi sebuah entitas dan arsitektur
entitas tersebut dalam bahasa VHDL.

Contoh berikut digunakan untuk merealisasikan 2-to-


1 multiplexer 4-bit dari empat buah 2-to-1 multiplexer
1-bit.
berupa kumpulan 2-to-1 multiplexer yang
disusun secara bertahap dengan
boolean_expr sebagai selektor dan
value_expr sebagai nilai sinyal yang dapat
dipilih, dan dapat dilihat pada gambar
berikut ini :

 Selected CSA. Assignment sinyal dilakukan


dengan construct WITH-SELECT. Hasil
implementasi Selected CSA akan berupa satu
buah n-to-1 multiplexer dengan
select_expression sebagai selektor dan
Terdapat tiga jenis concurent signal assignment value_expr_3 sebagai nilai sinyal yang dapat
(CSA) dalam bahasa VHDL, yaitu simple CSA, dipilih
conditional CSA, dan selected CSA. Ketiga jenis
concurent signal assignment tersebut dijelaskan
menggunakan contoh sebagai berikut.

 Simple CSA. Assignment sinyal dilakukan


dengan ekspresi logika biasa. Hasil
implementasi Simple CSA akan berupa
gerbang logika biasa, dan dapat dilihat pada
gambar berikut ini :

Selain concurent signal assignment, dalam bahasa


VHDL juga dikenal dengan construct PROCESS yang
berfungsi melakukan assignment sinyal secara
sekuensial. Sebuah proses (PROCESS) dapat
dianalogikan sebagai bagian dari rangkaian yang dapat
aktif dan dapat nonaktif. Sebuah proses akan
 Conditional CSA. Assignment sinyal diaktifkan ketika sinyal-sinyal (SIGNAL) dalam
dilakukan dengan construct WHEN-ELSE. daftar sensitivitas (sensitivity list) mengalami
Hasil implementasi Conditional CSA akan perubahan nilai. Ketika diaktifkan, semua ekspresi dan
pernyataan (statement) akan dieksekusi secara membutuhkan sebuah feedback pada Logic Cell untuk
sekuensial hingga akhir dari proses tersebut. mengimplementasikan fungsi memory. Hal ini akan
menyebabkan analisis timing statis tidak dapat
dilakukan.

Salah satu komponen memory yang paling sering


Terdapat dua jenis construct yang digunakan dalam
digunakan adalah register. Register terdiri atas
construct PROCESS, yaitu construct IF-THEN-ELSE dan
beberapa buah flip-flop yang disusun sedemikian rupa
construct CASE. Kedua jenis construct tersebut
sehingga membentuk elemen penyimpanan. Register
diberikan sebagai contoh berikut ini:
juga dapat dipakai untuk mengimplementasikan
rangkaian sekuensial contohnya finite state machine.

Dalam bahasa VHDL, kita juga dapat mendefinisikan


beberapa jenis elemen memory. Dua jenis elemen
memory yang sering digunakan dalam bahasa VHDL B. Altera® Quartus® II
adalah Gated D Latch dan D Flip-flop. Gated D Latch Pada modul praktikum ini tidak akan dibahas terlalu
memiliki karakteristik yaitu output akan berubah dalam cara-cara melakukan simulasi pada Altera®
mengikuti input saat clock high (atau clock low, Quartus® II karena diasumsikan praktikan telah
tergantung implementasi). Sedangkan D Flip-flop memperoleh pengalaman menggunakan program ini
memiliki karakteristik yaitu output akan berubah baik untuk simulasi fungsional dan simulasi timing
mengikuti input saat transisi clock dari low ke high saat mengambil Praktikum Sistem Digital pada
(atau high ke low, tergantung implementasi). Untuk tingkat II. Versi Altera® Quartus® II yang disarankan
elemen memory lain seperti Gated S-R Latch, T Flip- untuk digunakan dalam praktikum ini adalah Altera®
flop, dan JK Flip-flop juga dapat diimplementasikan Quartus® II v9.1sp2 karena pada versi ini terdapat
pada bahasa VHDL namun mereka jarang digunakan. simulator fungsional dan timing yang telah
terintegrasi. Versi Altera® Quartus® II yang lebih
baru tidak terdapat simulator fungsional dan timing
sehingga praktikan harus menggunakan Mentor
Graphics® ModelSim® untuk melakukan simulasi.

Langkah pertama untuk menggunakan Altera®


Quartus® II adalah membuat project terlebih dahulu.
Untuk membuat project, gunakan new project wizard
kemudian ikuti petunjuk-petunjuk yang ada. Beri
lokasi dan nama project yang diinginkan. Pilih
Penggunaan Latch dalam implementasi rangkaian dokumen-dokumen yang akan dimasukkan ke dalam
menggunakan bahasa VHDL sebaiknya dihindari project (kita dapat melewati langkah ini terlebih
kecuali kita mengetahui apa yang kita lakukan. Dalam dahulu). Kemudian pilih device yang akan digunakan.
proses sintesis, implementasi Latch ini akan Untuk praktikum ini, kita tidak akan melakukan
memberikan kita warning. Sebagian besar perangkat implementasi pada FPGA karena praktikum ini hanya
FPGA milik Altera tidak memiliki elemen dasar berupa simulasi saja. Oleh karena itu, kita dapat
berupa Latch. Dengan demikian sebuah Latch harus memilih FPGA dengan spesifikasi tertinggi baik
dibuat menggunakan Logic Cell. Sayangnya, hal ini untuk Altera® Cyclone™ maupun Altera® Stratix™.
Setelah project dibuat, kita dapat mulai bekerja di
dalamnya.

Untuk melakukan simulasi, kita harus melakukan


kompilasi terhadap project yang kita buat. Kompilasi
yang dilakukan bisa kompilasi penuh maupun hanya
Analysis & Synthesis saja. Kompilasi penuh akan
memakan waktu yang lebih lama karena semua proses
meliputi Analysis & Synthesis, Fitter, dan Assembler
akan dilakukan. Kompilasi penuh ini akan memberi
kita gambaran terutama dari sisi timing analysis.
Sedangkan dengan Analysis & Synthesis, kita telah
mendapat rangkaian yang kita buat dan dapat
dilakukan simulasi fungsional.

C. Mikroprosesor MIPS32®
MIPS32® (Microprocessor without Interlocked Terdapat lima tahap yang dilakukan ketika
Pipeline Stages) merupakan sebuah mikroprosesor 32- mikroprosesor MIPS32® melakukan eksekusi suatu
bit yang dikembangkan oleh MIPS Technologies. instruksi. Kelima tahap tersebut adalah sebagai
Mikroprosesor ini merupakan reduced instruction set berikut.
computer (R ISC). Mikroprosesor ini sering digunakan
sebagai bahan pembelajaran mata kuliah Arsitektur  Instruction Fetch (IF) Tahap instruction fetch
Sistem Komputer diberbagai universitas dan sekolah berfungsi mengatur aliran instruksi yang
teknik. akan diolah pada tahap berikutnya. Instruksi
yang sedang dijalankan merupakan instruksi
Dalam kehidupan nyata, arsitektur mikroprosesor yang berasal dan disimpan dari memory. Pada
MIPS® sering digunakan dalam sistem embedded arsitektur ini, memory dipisahkan menjadi
seperti perangkat Windows™ CE, router,residential dua bagian yaitu instruction memory yang
gateway, dan konsol video game seperti Sony® berfungsi menyimpan instruksi-instruksi
PlayStation®, Sony® PlayStation® 2 (PS2™), dan yang akan dieksekusi dan data memory yang
Sony® PlayStation® Portable (PSP®). berfungsi untuk menyimpan data untuk
menghindari structural hazard. Dengan
demikian, arsitektur ini menganut Harvard
Architecture.

 Instruction Decode (ID) Tahap berikutnya,


instruksi yang telah diambil (fetched) dari
instruction memory berpindah ke tahap
instruction decode. Pada tahap ini, instruksi
dengan lebar 32-bit akan dipecah sesuai
format instruksi yang digunakan. Penjelasan
mengenai decoding instruksi ini dapat dilihat
pada bagian selanjutnya
.
 Execute / Address Calculation (EX) Tahap
ini merupakan tahap sebagian besar operasi
aritmatika dan logika pada arithmetic and
logical unit (ALU) dilakukan. Pada tahap ini
juga terdapat tempat untuk meneruskan
alamat register kembali ke tahap instruction
decode sebagai deteksi hazard.
MIPS32® yang masing-masing register memiliki
 Data Memory (MEM) Pada tahap ini, data kegunaannya masing-masing. Semua register pada
disimpan dan/atau diambil dari data memory. MIPS32® dapat diakses menggunakan address
Data memory hanya dapat disimpan atau dengan lebar 5-bit. Tabel berikut merupakan daftar
dibaca jika ada sinyal MemRead dan/atau register yang tersedia dalam MIPS32® beserta
MemWrite yang sesuai sehingga operasi baca fungsinya masing-masing.
dan/atau tulis pada data memory dapat
dilakukan.

 Write Back (WB) Tahap terakhir ini


digunakan untuk mengalirkan data dari data
memory atau hasil perhitungan arithmetic
and logical unit (ALU) ke register untuk
dapat menjalankan instruksi selanjutnya.
Dalam praktikum ini, kita akan melakukan
implementasi mikroprosesor MIPS32® yang
sederhana. Mikroprosesor MIPS32® yang akan MIPS32® memiliki instruksi dengan lebar 32-bit.
diimplementasikan tidak memiliki pipeline dan semua Instruksi-instruksi yang dimiliki MIPS32® dapat
instruksi selesai dieksekusi dalam satu siklus clock. dilihat lebih lengkap pada lembar lampiran. Terdapat
Dengan demikian, kita akan membuat mikroprosesor tiga buah format dasar dari instruksi MIPS32®. Ketiga
Single-Cycle MIPS32® menggunakan bahasa VHDL
format dasar instruksi tersebut adalah instruksi tipe-R,
yang synthesizable. Diagram arsitektur mikroprosesor
Single-Cycle MIPS32® yang akan kita buat diberikan instruksi tipe-I, dan insruksi tipe-J. Format ketiga
sebagai berikut. instruksi dasar tersebut dapat dilihat pada gambar
berikut. Komponen dari ketiga format dasar instruksi
tersebut dijelaskan pada tabel selanjutnya.

Dalam praktikum ini, mikroprosesor Single-Cycle


MIPS32® yang akan diimplementasikan harus dapat
menjalankan sembilan buah instruksi sebagai berikut:
D. Instruction Set dan Register Mikroprosesor
MIPS32®
Mikroprosesor MIPS32® memiliki set instruksi
yang sederhana dibandingkan dengan mikroprosesor
milik Intel®. Sebelum kita melangkah lebih jauh
untuk melihat instruksi-instruksi dasar pada
MIPS32®, kita perlu melihat register yang tersedia
pada MIPS32®. Terdapat 32 buah register pada
lain. Isi dari setiap register yang ditampilkan dalam
format heksadesimal. Bagian kedua merupakan Text
E. Simulasi MIPS32® menggunakan PCSpim Display yang berisi program dalam bahasa assembly,
Sebelum mendesain mikroprosesor Single-Cycle kode instruksi dalam heksadesimal, dan alamat
MIPS32®, ada baiknya mempelajari terlebih dahulu instruksi tersebut. Bagian ketiga merupakan Data and
bagaimana sebuah instruksi dieksekusi oleh Stack
mikroprosesor MIPS32® tersebut dapat menggunakan Display yang berisi isi memory dalam MIPS32® yang
sebuah simulator untuk melakukan eksekusi program menampung data-data serta stack. Bagian keempat
yang dibuat pada mikroprosesor MIPS32® lalu merupakan SPIM Message yang berisi laporan dari
melihat hasilnya. Simulator MIPS32® yang akan simulator ketika terjadi galat. Bila dalam program
digunakan dalam praktikum ini adalah PCSpim. bahasa assembly yang kita buat terdapat perintah
Simulator PCSpim dapat diunduh di untuk menampilkan sesuatu ke layar (mirip dengan
http://el3111.bagus.my.id. Perhatikan bahwa program printf dalam bahasa C), maka output ke layar tersebut
ini membutuhkan Microsoft® .Net Framework 2.0 akan ditampilkan dalam jendela konsol termasuk
untuk dapat berjalan. Untuk praktikan yang apabila program meminta pengguna memasukkan
menggunakan Microsoft® Windows® XP, input. Untuk memulai penggunaan PCSpim pertama
Microsoft® Windows® 8, dan Microsoft® kali, Anda akan diminta untuk menjalankan program
Windows® 8.1 harus memasang Microsoft® .Net sederhana. Buatlah program dalam bahasa assembly
Framework 2.0 terlebih dahulu. Microsoft® .Net dengan menyalin kode program di bawah ini
Framework 2.0 dapat diunduh di menggunakan teks editor Notepad++. Simpan file
http://el3111.bagus.my.id dalam paket instalasi tersebut dengan nama add.asm. Kalimat di sebelah
Microsoft® .Net Framework 3.5. Setelah instalasi kanan tanda # merupakan komentar dan tidak akan
selesai PCSpim, kita dapat langsung menjalankan dieksekusi oleh simulator. Ubah konfigurasi PCSpim
PCSpim dari start menu. Khusus untuk pengguna agar menjalankan simulasi menggunakan Bare
Microsoft® Windows® edisi 64-bit, terkadang Machine dengan membuka menu Simulator lalu
PCSpim akan memberikan pesan error karena tidak submenu Settings.
dapat menemukan file exceptions.s. Untuk
mengatasinya, pilih menu Simulator lalu klik submenu
Settings. Pada bagian Load exception file, ganti alamat
file exceptions.s.

Sebelum : C:\Program Files\PCSpim\exceptions.s


Sesudah : C:\Program Files Buka file add.asm menggunakan PCSpim dengan
(x86)\PCSpim\exceptions.s membuka menu File lalu Open. Bila terjadi kesalahan
sintaks dalam pemrograman bahasa assembly,
PCSpim akan mengeluarkan pesan galat. Periksa
kembali program yang dibuat lalu simpan program
tersebut sebelum dibuka kembali menggunakan
PCSpim. Bila program berhasil dibuka, kita dapat
melihat bahwa file bahasa assembly telah
diterjemahkan menjadi instruksi-instruksi dalam
bahasa heksadesimal dan disimpan dalam instruction
memory. Untuk memulai eksekusi, kita harus
mengeset nilai program counter (PC). Program
counter (PC) merupakan bagian dari mikroprosesor
yang menyimpan address instruksi yang akan
dieksekusi. Pada bagian Register Display, terlihat
Jendela dari PCSpim dibagi menjadi empat bahwa PC bernilai 0x00000000. Ubah nilai PC
bagian. Bagian pertama merupakan Register Display tersebut menjadi 0x00400000 dengan membuka menu
yang berisi isi dari setiap register pada MIPS32® Simulator, lalu submenu Set Value. Tuliskan PC pada
meliputi 32 general purpose register dan beberapa kotak isian paling atas dan 0x00400000 pada kotak
floating point register serta beberapa register yang isian paling bawah. Hal ini dilakukan karena program
yang kita buat dimulai pada address tersebut. Tekan waveform telah sesuai dengan address yang
tombol F10 pada keyboard untuk melakukan eksekusi dimasukkan.
satu instruksi. Tekan tombol F10 hingga instruksi dari
program yang kita tulis dapat dieksekusi. Perhatikan
bahwa saat instruksi pertama dilakukan, nilai register Berikut ini merupakan program yang digunakan pada
8 berubah menjadi 0x07 dan PC berubah menjadi percobaan pertama ini, adapun programnya dapat
0x00400004. Tekan kembali tombol F10 pada dilihat pada kolom berikut :
keyboard untuk melakukan eksekusi satu instruksi
berikutnya dan perhatikan yang terjadi pada register 9. -- Praktikum EL3111 Arsitektur Sistem Komputer
-- Modul :3
Tekan kembali tombol F10 pada keyboard untuk -- Percobaan :1
melakukan eksekusi satu instruksi berikutnya dan -- Tanggal : 25 Oktober 2018
-- Kelompok :-
perhatikan yang terjadi pada register 10. Hasil -- Rombongan :-
penjumlahan kedua bilangan tersebut disimpan pada -- Nama (NIM) 1 : erikson mangihut tua
silaban(14S16028)
register 10. -- Nama File : instrucMEM.vhd
-- Deskripsi : Implementasi instruction
memory

LIBRARY 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 (


III. HASIL DAN ANALISIS 0);
ADDR : IN std_logic_vector (31 DOWNTO

clock : IN std_logic;
reset : IN std_logic;
INSTR : OUT std_logic_vector (31
A. Tugas 1 : Perancangan Instruction DOWNTO 0)
);
Memory END ENTITY;

Dalam mikroprosesor Single-Cycle MIPS32® ARCHITECTURE behavior OF instrucMEM IS


yang akan kita realisasikan, instruction memory TYPE ramtype IS ARRAY (31 DOWNTO 0) OF
std_logic_vector (31 DOWNTO 0);
memiliki lebar data sebesar 32-bit dan lebar address SIGNAL mem: ramtype;
sebesar 32-bit. Untuk praktikum ini, yang akan BEGIN
PROCESS (reset,ADDR,mem)
dilakukan adalah merealisasikan BEGIN
instruction memory yang dapat menampung 32 buah IF (reset='1') THEN
INSTR <=
instruksi. Dengan demikian, tidak semua address (OTHERS => '0');
terpakai dalam praktikum ini. Hanya 32 address paling ELSE
INSTR <=
awal saja yang dipakai. Instruction memory memiliki mem(conv_integer (ADDR));
sebuah port input yang menerima address dengan END IF;
END PROCESS;
lebar 32-bit dan sebuah port output yang
mengeluarkan instruksi dengan lebar data 32-bit. -- Isi dalam instruction memory
Terdapat pula port input clock untuk mengendalikan mem(0) <= X"00000022";
mem(1) <= X"8c010000";
rangkaian ini. mem(2) <= X"8c020004";
mem(3) <= X"8c030008";
1. Implementasikan desain instruction memory mem(4) <= X"00842022";
mem(5) <= X"00822020";
dalam bahasa VHDL dengan menyalin kode mem(6) <= X"0043282a";
VHDL berikut ini menggunakan teks editor mem(7) <= X"10a00002";
mem(8) <= X"00411020";
Notepad++. Sesuaikan identitas pada header. mem(9) <= X"1000fffb";
Simpan file ini dengan nama mem(10) <= X"ac040000";
mem(11) <= X"1000ffff";
instrucMEM.vhd. END behavior;
2. Simulasikan secara fungsional dan timing
desain tersebut setelah melakukan analysis &
synthesis terlebih dahulu. Perhatikan apakah
Setelah program diatas dijalankan, maka diperoleh B. Tugas 2 : Perancangan Instruction
hasil simulasi functional yang dapat dilihat pada Memory dengan Altera® MegaFunction
gambar beriku ini : ALTSYNCRAM

Pada bagian ini, hal yang akan dilakukan dalah


memanfaatkan sebuah template desain yang telah
tersedia dalam Altera® Quartus® II yaitu Altera®
MegaFunction ALTSYNCRAM. Template ini dapat
digunakan untuk merealisasikan synchronous RAM
dan ROM dalam desain yang telah dibuat. Selain itu,
dapat juga menggunakan inisialisasi isi memory dari
file eksternal berformat .mif (memory initialization
Dengan menggunakan simulasi functional pada file).
Altera Quartus, hasil yang diperoleh tersebut
kemudian akan dicocokkan kembali pada kode  Implementasikan desain instruction memory
VHDLnya. Adapun untuk sinyal ADDRnya dalam bahasa VHDL dengan menyalin kode
menggunakan bilangan hexadecimal, dan sinyal VHDL berikut ini menggunakan teks editor
resetnya bernilai 0. Jika diperhatikan hasil simulasi Notepad++. Sesuaikan identitas pada header.
functional diatas, terlihat bahwa sederetan alamat Simpan file ini dengan nama
hasilnya sesuai dengan alamat yang ada pada instruction_memory.vhd.Perhatikan bahwa
construction memory, hal ini menunjukkan bahwa bila desain tidak dapat disintesis akibat tidak
insruction memory telah bekerja dengan baik dimana mencukupinya FPGA yang digunakan untuk
mampu meneruskan alamat input yang berisi bit merealisasikan elemen memory, modifikasi
instruksi menjadi bit instruksi yang disesuaikan berikut ini harus dilakukan. Ubah lebar
dengan output. address menjadi 16-bit. Dengan demikian,
beberapa konfigurasi harus diubah.
Berikutnya setelah dilakukannya simulasi
functional maka kemudian dilakukan simulasi timing, Sebelum: ADDR : IN
adapun hasil dari simulasi timing dapat dilihat pada STD_LOGIC_VECTOR (31
gambar dibawah ini : DOWNTO 0);
Sesudah: ADDR : IN
STD_LOGIC_VECTOR (15
DOWNTO 0);
Sebelum: address_a : IN
STD_LOGIC_VECTOR
(31 DOWNTO 0);
Sesudah : address_a : IN
STD_LOGIC_VECTOR
(15 DOWNTO 0);
Apabila diperhatikan gambar hasil simulasi Sebelum : widthad_a => 32,
functional dan timing maka akan terlihat persamaan Sesudah : widthad_a => 16,
keduanya, dimana terlihat bahwa output yang didapat
menampilkan urutan dan nilai yang sama antar Dengan demikian, kita harus berhati-hati
keduanya, namun ada juga perbedaan keduanya dalam memasukkan address karena lebar
dimana pada simulasi timing terdapat delay satu address bukan lagi 32-bit melainkan 16-bit.
periode dari rentang input sampai output, adapun  Buatlah inisialisasi memory dalam bentuk file
tindakan yang perlu dilakukan untuk mengatasi hal ini memory initialization file menggunakan teks
adalah melakukan implementasi D- lacth yang editor Notepad++ dengan menyalin isi file
berguna untuk meakukan penahanan input sehingga berikut ini. Simpan file ini dengan nama
dapat terjadi sinkronisasi antara input dan outputnya. imemory.mif pada lokasi yang sama dengan
tempat instruction_memory.vhd berada.
 Simulasikan secara fungsional dan timing
desain tersebut setelah melakukan analysis &
synthesis terlebih dahulu. Perhatikan apakah PORT MAP
(
waveform telah sesuai dengan address yang clock0 => clock,
dimasukkan. Bandingkan dengan hasil address_a => ADDR,
q_a => sub_wire0
simulasi pada Tugas 1. );
END structural;
Berikut ini merupakan program yang digunakan
pada percobaan kedua ini, adapun programnya dapat
dilihat pada kolom berikut : Setelah program diatas dijalankan, maka
diperoleh hasil simulasi functional yang dapat dilihat
-- Praktikum EL3111 Arsitektur Sistem Komputer
-- Modul :3
pada gambar beriku ini :
-- Percobaan :2
-- Tanggal : 25 Oktober
2018
-- Kelompok :-
-- Rombongan :-
-- Nama (NIM) 1 : erikson mangihut tua
silaban(14S16028)
-- Nama File : instruction_memory.vhd
-- Deskripsi : Implementasikan desain
instruction memory

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all; Dari hasil simulasi diatas dapat dilihat bahwa
hasil dari ADDR dan INSTRnya sesuai dengan yang
ENTITY instruction_memory IS PORT (
ADDR : IN STD_LOGIC_VECTOR (15 dibuat di codingan. Dapat dilihat juga bahwa pada
DOWNTO 0); percobaan 1 dan 2 instruction memory bekerja dengan
clock : IN STD_LOGIC := '1';
baik secara fungsional. Sebelum dilakukan perubahan
INSTR : OUT STD_LOGIC_VECTOR (31 lebar address untuk input (ADDR dan address_a) serta
DOWNTO 0)
);
widthad_a, desain yang dibuat tidak dapat disintesis
END ENTITY; dikarenakan tidak mencukupinya FPGA yang
digunakan untuk merealisasikan elemen memory.
ARCHITECTURE structural OF instruction_memory IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 Kemudain dilakukanlah perubahan, sehingga setelah
DOWNTO 0); dilakukan perubahan maka diperoleh hasil sinyal
COMPONENT altsyncram
GENERIC seperti diatas.
(
init_file : STRING; Berikutnya setelah dilakukannya simulasi
operation_mode : STRING;
widthad_a :
functional maka kemudian dilakukan simulasi timing,
NATURAL; adapun hasil dari simulasi timing dapat dilihat pada
width_a :
NATURAL
gambar dibawah ini :
);

PORT
(
clock0 : IN
STD_LOGIC;
address_a : IN
STD_LOGIC_VECTOR (15 DOWNTO 0);
q_a : OUT
STD_LOGIC_VECTOR (31 DOWNTO 0)
);
END COMPONENT;

BEGIN
INSTR <= sub_wire0;
altsyncram_component : altsyncram Dari hasil gambar diatas diperlukan waktu 5 ns
GENERIC MAP untuk output mencapai titik stabil dan frekuensi 200
(
init_file => "imemory.mif", MHz. Apabila dibandingkan hasil simulasi timing dari
operation_mode => "ROM", percobaan 1 dan percobaan 2 maka akan terlihat
widthad_a => 16,
width_a => 32 bahwa percobaan 1 lebih cepat 3ns untuk output
) mencapai titik stabil dan memiliki 133MHz lebih
besar dibanding percobaan 2. Perlu dilakukan memiliki port input untuk memasukkan data yang
penyesuaian nilai alamat yang dimasukkan yaitu 16 bit akan ditulis dengan lebar data 32-bit. Terdapat pula
sedangkan RAM yang digunakan 32 bit. Namun port input clock untuk mengendalikan rangkaian ini,
karena dalam implementasinya hanya digunakan 32 port input untuk mengaktifkan mode tulis (write
alamat dari 216 alamat yang tersedia. Pada percobaan enable), dan port
ini untuk mengganti nilai dari intruction digunakan input untuk mengaktifkan mode baca (read enable).
kodingan seperti di bawah dan kemudian file disimpan Karena desain yang mirip dengan desain instruction
dengan nama imemory.mif. memory, akan dimanfaatkan kembali Altera®
MegaFunction ALTSYNCRAM untuk merealisasikan
rangkaian ini. Berikut ini merupakan langkah langkah
yang dilakukan pada percobaan ketiga ini :

 Implementasikan desain data memory dalam


bahasa VHDL dengan deklarasi entitas
sebagai berikut. Gunakan ALTSYNCRAM
untuk merealisasikan desain data memory.
Penggunaan ALTSYNCRAM dapat dilihat
pada kode selanjutnya. Simpan file ini
dengan nama data_memory.vhd. Perhatikan
bahwa bila desain tidak dapat disintesis
akibat tidak mencukupinya FPGA yang
digunakan untuk merealisasikan elemen
memory, modifikasi berikut ini harus
Dalam tugas 2 ini, praktikan melakukan perancangan
dilakukan. Ubah lebar
instruction memory dengan Altera . perancangan ini
address menjadi 8-bit dan lebar data menjadi
berfungsi untuk merealisasikan synkronisasi antara
8-bit Dengan demikian, beberapa
RAM dan ROM dengan desain yang akan dibuat.
konfigurasi harus diubah sebagai berikut.
Adapun software yang digunakan adalah Altera
Quaturs. Jika dibandingkan anatara tugas 1 dan tugas Sebelum : ADDR : IN STD_LOGIC_VECTOR (31
2 maka terdapat perbedaan tugas 1 dengan tugas 2 DOWNTO 0);
yaitu pada bagian jarak timing yang cukup besar atau Sesudah : ADDR : IN STD_LOGIC_VECTOR (7
delay yang cukup jauh dibandingkan dengan tugas DOWNTO 0);
sebelumya. Hal ini kemungkinan terjadi karena Sebelum : RD_Data : OUT
adanya sintesa rangkaian yang masih kurang efisien STD_LOGIC_VECTOR (31
serta ALTSYNCRAM yang cukup berat sehingg DOWNTO 0);
amenambah delay dan distorsi pada output. Sesudah : RD_Data : OUT
STD_LOGIC_VECTOR (7
DOWNTO 0);
Sebelum : WR_DATA : IN
C. Tugas 3 : Perancangan Data Memory STD_LOGIC_VECTOR (31
dengan Altera® MegaFunction DOWNTO 0)
ALTSYNCRAM Sesudah : WR_DATA : IN
STD_LOGIC_VECTOR (7
Dalam mikroprosesor Single-Cycle MIPS32® DOWNTO 0)
yang akan direalisasikan, data memory memiliki lebar Sebelum : address_a : IN STD_LOGIC_VECTOR
data sebesar 32-bit dan lebar address sebesar 32-bit. (31
Untuk praktikum ini, akan merealisasikan data DOWNTO 0);
memory yang dapat menampung 256 buah data. Sesudah : address_a : IN STD_LOGIC_VECTOR
Dengan demikian, tidak semua address terpakai dalam (7
praktikum ini. Hanya 256 address paling awal saja DOWNTO 0);
yang dipakai. Data memory memiliki sebuah port Sebelum : q_a : OUT STD_LOGIC_VECTOR (31
input yang menerima address dengan lebar 32-bit dan DOWNTO 0);
Sesudah : q_a : OUT STD_LOGIC_VECTOR (7
sebuah port output yang mengeluarkan data yang
DOWNTO 0);
dibaca dengan lebar data 32-bit. Data memory juga
Sebelum : data_a : IN STD_LOGIC_VECTOR RD_Data : OUT
STD_LOGIC_VECTOR (31 DOWNTO 0);
(31 WR_Data : IN
DOWNTO 0) STD_LOGIC_VECTOR (31 DOWNTO 0) );
Sesudah : data_a : IN STD_LOGIC_VECTOR (7 END ENTITY ;
DOWNTO 0) ARCHITECTURE structural OF data_memory IS
Sebelum : widthad_a => 32, Sesudah : widthad_a SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31
=> 8, DOWNTO 0);
COMPONENT altsyncram -- komponen memori
Sebelum : width_a => 32 GENERIC
Sesudah : width_a => 8 (
init_file : STRING; -- name
of the .mif file
Dengan demikian, harus berhati-hati dalam operation_mode : STRING;
memasukkan address karena lebar address bukan lagi -- the operation mode
widthad_a : NATURAL; --
32- bit melainkan 8-bit. Hal yang sama juga berlaku width of address_a[]
pada data karena lebar data bukan lagi 32-bit width_a : NATURAL --
width of data_a[]
melainkan 8-bit. );
PORT
 Harus dipastikan bahwa sinyal write enable (
dan read enable tidak dalam posisi high wren_a : IN STD_LOGIC; -
secara bersamaan. - Write Enable Activation
clock0 : IN STD_LOGIC ; -
 Sinkronisasikan sinyal write enable dan read - Clock
enable dengan sinyal wren_a pada address_a : IN
STD_LOGIC_VECTOR (15 DOWNTO 0); -- Address Input
ALTSYNCRAM pada saat falling edge dari q_a : OUT
clock. STD_LOGIC_VECTOR (31 DOWNTO 0); -- Data Output
data_a : IN
 Buatlah file dmemory.mif sebagai memory STD_LOGIC_VECTOR (31 DOWNTO 0) -- Data Input
initialization file seperti yang dilakukan pada
);
Tugas 2. 5. Simulasikan secara fungsional END COMPONENT ;
dan timing desain tersebut setelah
melakukan analysis & synthesis terlebih BEGIN
altsyncram_component : altsyncram
dahulu. Perhatikan apakah waveform telah GENERIC MAP
sesuai dengan address yang dimasukkan. (
init_file =>
"dmemory.mif",
Berikut ini merupakan program yang digunakan operation_mode =>
pada percobaan ketiga ini, adapun programnya dapat "SINGLE_PORT",
widthad_a => 16,
dilihat pada kolom berikut : width_a => 32
)
-- Praktikum EL3111 Arsitektur Sistem Komputer PORT MAP
-- Modul :3 (
-- Percobaan :3
-- Tanggal : 25 Oktober wren_a => WR_EN AND
2018 (NOT RD_EN),
-- Kelompok :- clock0 => clock,
-- Rombongan :- address_a => ADDR,
-- Nama (NIM) 1 : erikson mangihut tua q_a => sub_wire0,
silaban(14S16028) data_a => WR_Data
-- Nama File : data_memory.vhd );
-- Deskripsi : Implementasikan desain PROCESS (RD_EN, sub_wire0) -- Multiplexer
data memory BEGIN
LIBRARY ieee; IF (RD_EN = '1') THEN
USE ieee.std_logic_1164.all; RD_Data <= sub_wire0;
LIBRARY altera_mf; ELSE
USE altera_mf.all; RD_Data <= x"00000000";
END IF;
ENTITY data_memory IS END PROCESS;
PORT( END STRUCTURAL;
ADDR : IN
STD_LOGIC_VECTOR (15 DOWNTO 0); -- alamat
WR_EN : IN STD_LOGIC; -
-Indikator Penulisan Setelah program diatas dijalankan, maka diperoleh
RD_EN : IN STD_LOGIC; - hasil simulasi functional yang dapat dilihat pada
-Indikator Pembacaan
clock : IN STD_LOGIC := gambar beriku ini :
'1'; -- clock
timing. Kemungkinan data yang ditulis juga bergeser
ke alamat input sebelumya.

D. Tugas 4 : Perancangan Register

Dalam mikroprosesor Single-Cycle MIPS32®


yang akan kita realisasikan, terdapat 32 buah register
Apabila diperhatikan gambar diatas maka akan yang masing-masing memiliki lebar data 32-bit.
terlihat bahwa pada gambar hasil alamat memory telah Register ini memiliki dua buah port input untuk
sesuai dengan apa yang diintruksikan pada code. Hal memasukkan address 32-bit dari data yang akan
ini menunjukkan bahwa memory telah bekerja dengan dibaca dan memiliki satu buah port input untuk
baik. Pembacaan nilai data memory dilakukan apabila memasukkan address 32-bit tempat data akan ditulis.
nilai Read Input berada pada posisi High. Kemudian, Selain itu terdapat dua buah port output tempat
proses penulisan data juga telah berhasil dilakukan. keluarnya data 32-bit yang dibaca dan satu buah port
Dan proses penulisan data hanya berlangsung saat input tempat masuknya data 32-bit yang akan ditulis.
nilai input Write Enable bernilai High. Selain itu, tidak Terdapat pula port input untuk clock dan port input
dapat pula dilakukan proses penulisan dan pembacaan untuk sinyal untuk mengaktifkan mode tulis (write
data secara bersamaan. enable). Penggunaan urutan register ini sesuai dengan
Berikutnya setelah dilakukannya simulasi table register MIPS32® pada landasan teoretis
functional maka kemudian dilakukan simulasi timing, praktikum. Perhatikan bahwa nilai register 0 harus
adapun hasil dari simulasi timing dapat dilihat pada tetaplah nol.
gambar dibawah ini :
 Implementasikan desain register dalam
bahasa VHDL dengan deklarasi entitas
sebagai berikut. Simpan file ini dengan nama
reg_file.vhd.

Jika diperhatikan gambar diatas, maka diperlukan


waktu maksimal 25 ns untuk sebuah output mencapai
titik stabil sesuai dengan output yang seharusnya
dikeluarkan dan frekuensi maksimal clock 40 MHz.  Untuk elemen meory, gunakanlah deklarasi
Namun, dalam hasil percobaan yang dibuat, nilai elemen memory yang sama dengan yang
alamat yang dimasukkan hanya memiliki lebar 16 bit. digunakan pada tugas 1.
Hal ini dikarenakan chip yang dipakai tidak mampu
menanggulangi ukuran RAM yang besar hingga 32 bit.
Sehingga perlu dilakukan penyesuaian agar tetap dapat
 Sinkronisasikan proses baca tulis yang terjadi
berjalan. Tetapi , penggunaan alamat dengan lebar
pada register berlangsung pada saat falling
hanya 16 bit tidak masalah. Hal itu terjadi karena
edge clock sedangkan penulisan pada register
dalam implementasinya, hanya digunakan 256 alamat
berlangsung pada saat rising edge clock 4.
dari total 216 alamat yang tersedia. Berdasarkan hasil
Simulasikan secara fungsional dan timing
simulasi timing diatas , terlihat juga bahwa output
yang diperoleh menghasilkan nilai yang berbeda dari desain tersebut setelah melakukan analysis
hasil yang diperoleh pada simulasi functional. dan synthesis terlebih dahulu. Perhatikan
Perbedaannya terletak pada simulasi timing dimana apakah waveform telah sesuai dengan addres
hasil pembacaan RD_Data mengalami delay sekitar 1 yang dimasukkan.
periode input, sedangkan hasil data tidak terlihat
dikarenakan kurangnya sampling dari hasil simulasi
Berikut ini merupakan program yang digunakan Setelah program diatas dijalankan, maka diperoleh
pada percobaan ketiga ini, adapun programnya dapat hasil simulasi functional yang dapat dilihat pada
dilihat pada kolom berikut : gambar beriku ini :
-- Praktikum EL3111 Arsitektur Sistem Komputer
-- Modul :3
-- Percobaan :4
-- Tanggal : 25 Oktober
2018
-- Kelompok :-
-- Rombongan :-
-- Nama (NIM) 1 : Erikson Mangihut Tua
Silaban(14S16028)
-- Nama File : data_memory.vhd
-- Deskripsi : Implementasikan desain Berdasarkan hasil simulasi functional diatas terlihat
register
LIBRARY IEEE; bahwa fungsi read dan write telah berfungsi dengan
USE IEEE.STD_LOGIC_1164.ALL; baik. Hal ini ditunjukkan saat input dipanggil maka
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; akan menghasilkan alamat yang sama sesuai dengan
LIBRARY altera_mf; defenisi sebelumnya.
USE altera_mf.altera_mf_components.ALL;

ENTITY reg_file IS
Berikutnya setelah dilakukannya simulasi
PORT( functional maka kemudian dilakukan simulasi timing,
clock1 : IN STD_LOGIC; --
clock
adapun hasil dari simulasi timing dapat dilihat pada
WR_EN : IN STD_LOGIC; - gambar dibawah ini :
- 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 ;
Apabila gambar diatas diperhatikan maka terlihat
ARCHITECTURE behavior OF reg_file IS perbedaan pada simulasi timing dimana terdapat delay
TYPE ramtype IS ARRAY (31 DOWNTO 0) OF
std_logic_vector (31 DOWNTO 0); sekitar 1,5 sampai 2 perioda input. Hal ini
SIGNAL mem: ramtype; kemungkinan terjadi karena adanya sintesa rangkaian
yang masih kurang efsien. Namun jika dilihat dari
BEGIN hasil simulasi timing diatas, terlihar bahwa output
PROCESS(ADDR_1,ADDR_2,ADDR_3,clock1,WR_EN,me
m) yang diperoleh menghasilkan urutan dan nilai yang
BEGIN sama seperti pada simulasi functional.
IF (((clock1 = '1') AND (clock1'EVENT)) AND
(WR_EN = '1')) THEN
mem(conv_integer(ADDR_3)) <=
WR_Data_3;
END IF;
IF ((clock1 = '0') AND (clock1'EVENT)) THEN
RD_Data_1 <=
mem(conv_integer(ADDR_1));
RD_Data_2 <=
mem(conv_integer(ADDR_2));
END IF;
END PROCESS;

END behavior ;
Altera® MegaFunction ALTSYNCRAM
memiliki sebuah template berfungsi untuk
ANALISIS DARI PERTANYAAN merealisasikan synchronous RAM dan ROM dalam
desain rangkaian yang akan dibuat. Sehingga
keuntungannnya kita tidak perlu lagi mendefinisikan
Pada microprosesor MIPS32® terdapat 5 tahapan
fungsi yang ada pada template tersebut dan dapat
eksekusi instruksi, yaitu Instruction Fetch (untuk
meminimalkan code program VHDL yang dibuat
mengatur aliran instruksi yang akan diolah pada tahap
serta lebih efisien.
berikutnya), Instruction Decode (instruksi dengan
lebar 32-bit akan dipecah sesuai format instruksi yang Proses pembacaan data pada register dibuat terjadi
digunakan), Execute (tahap dimana sebagian besar saat falling edge clock sedangkan penulisan data pada
operasi aritmatika dan logika pada arithmetic and logic register dibuat berlangsung pada saat rising edge
unit / ALU dilakukan), Data memory / MEM clock. Hal ini agar tidak terjadi proses pembacaan dan
(penyimpanan dan/atau pengambilan data dari data penulisan data pada waktu yang sama.
memory), serta Write back (mengalirkan data dari data
memory atau hasil perhitungan ALU ke register untuk Modifikasi pada lebar data dan lebar address pada
dapat menjalankan instruksi selanjutnya).\ desain yang dibuat perlu dilakukan mengingat tidak
mencukupunya FPGA yang digunakan untuk
Perbedaan mikroprosessor MIPS32® dengan merealisasikan elemen memory. Solusi lain yang
mikroprosessor Single-Cycle MIPS32® yang dapat dilakukan yaitu dengan mengganti FPGA
digunakan pada praktikum ini yaitu pada dengan kapasistas penyimpana memory yang lebih
mikroprosessor MIPS32® tidak terdapat pipeline dan besar.
semua instruksi selesai dieksekusi dalam satu siklus
clock. Karena pada setiap eksekusi pada Hasil simulasi functional dan timing setiap
microprosessor dibutuhkan adanya nilai 0 yang akan komponen yang telah direalisasikan telah
sering dipanggil (sebagai initialization) maka bekerja/berjalan dengan baik. Hal tersbut dibuktikan
dibuatlah suatu register tersendiri yang memiliki nilai dengan hasil output yang diperoleh telah sesuai
konstan nol (yaitu register 0). dengan code VHDL yang dibuat.

Decode pada ketiga format dasar instruksi (R,I, dan Simulasi functional dan timing pada instruction
J) adalah sebagai berikut : memory, data memory dan register menghasilkan
waveform yang telah sesuai dengan address yang
Program Counter (PC) merupakan bagian dimasukan (namun pada simulasi timing terdapat
dari mikroprosessor yang menyimpan address sedikit delay).
instruksi yang akan dieksekusi. Untuk memulai
eksekusi, kita perlu melakukan pengesetan nilai
program counter menjadi suatu nilai tertentu (sesuai
kebutuhan).

Apabila terjadi pencabangan progam (branch)


pada program counter dapat diatasi dengan
penggunaan Sig_Branch pada Control Unit yang akan
menjalankan instruksi beq untuk memilih hasil
pencabangan pada program counter.

Dalam menangani proses perkalian dua buah


bilangan 32- bit, mikroprosessor MIPS32®
menggunakan 2 buah register untuk menyimpan hasil
perkalian. Dengan masing-masing register
menyimpan sebanyak 32 bit hasil perkalian. Misal
hasil perkalian memberikan bilangan 64 bit, maka bit
0-31 akan disimpan pada register pertama dan bit 32-
63 akan disimpan pada bit kedua.
IV. KESIMPULAN V. REFERENSI
 Bryant, Randal E. dan David R.
 FPGA dapat digunakan sebagai prototype O’Hallaron. Computer System: A
untuk mensimulasikan fungsi rangkaian yang Programmer’s Perspective.Prentice Hall.
telah dibuat. USA.2011.
 Dalam melakukan perancangan rangkaian  .Modul Praktikum NWS2103 Arsitektur
digital dapat dilakukan dengan menggunakan Sistem Komputer
pendekatan skematik maupun pendekatan
bahasa VHDL, dikarenakan keduanya
memberikan hasil yang benar dan sesuai.
 Tahap tahap eksekusi instruksi dalam
mikroprocessor adalah Instruction Fetch,
Instruction Decode, Execute, Data Memory,
dan Write Back.
 Fungsi Altera® Megafunction
ALTSYNCRAM untuk meraliasisasikan
synchronous RAM dan ROM dalam desain
rangkaian yang dibuat.
 Ada beberapa tahapan yang perlu dilakukan
untuk dapat memperoleh sinyal hasil
simulasi, baik fungsional (functional
simulation) maupun pewaktuan (timing
simulation), yaitu dengan mendesain
rangkaian dengan menggunakan VHDL,
kemudian desain rangkaian tersebut
dikompilasi, kemudian rangkaian tersebut
dhubungkan dengan pin IC FPGA, lalu
dilakukan penggambaran test vector agar
sinyal waveform tersebut dapat
disimulasikan dengan functional simulation
dan timing simulation.
 Functional Simulation adalah simulasi yang
mengasumsikan atau menganggap bahwa
semua Logic Element dan jalur Interkoneksi
di dalam FPGA sebagai komponen ideal
sehingga tidak ada propagasi delay selama
sinyalberjalan di dalam rangkaian (delay =
0).
 Timing Simulation merupakan model
simulasi yang memperhitungkan semua
propagasi delay yang ada.
VI. LAMPIRAN

A. TUGAS 1 B. TUGAS 2
-- Praktikum EL3111 Arsitektur Sistem -- Praktikum EL3111 Arsitektur Sistem Komputer
Komputer -- Modul :3
-- Modul :3 -- Percobaan :2
-- Percobaan :1 -- Tanggal : 25
-- Tanggal : 25 Oktober Oktober 2018
2018 -- Kelompok :-
-- Kelompok :- -- Rombongan :-
-- Rombongan :- -- Nama (NIM) 1 : erikson mangihut tua
-- Nama (NIM) 1 : erikson silaban(14S16028)
mangihut tua -- Nama File :
silaban(14S16028) instruction_memory.vhd
-- Nama File : -- Deskripsi : Implementasikan
instrucMEM.vhd desain instruction memory
-- Deskripsi : Implementasi
instruction LIBRARY ieee;
memory USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
LIBRARY IEEE; USE altera_mf.all;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY instruction_memory IS PORT (
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ADDR : IN STD_LOGIC_VECTOR (15
LIBRARY altera_mf; DOWNTO 0);
USE altera_mf.altera_mf_components.ALL; clock : IN STD_LOGIC := '1';

ENTITY instrucMEM IS PORT ( INSTR : OUT STD_LOGIC_VECTOR


ADDR : IN std_logic_vector (31 (31 DOWNTO 0)
DOWNTO 0); );
clock : IN std_logic; END ENTITY;
reset : IN std_logic;
INSTR : OUT std_logic_vector ARCHITECTURE structural OF instruction_memory
(31 DOWNTO 0) IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31
); DOWNTO 0);
END ENTITY; COMPONENT altsyncram
GENERIC
ARCHITECTURE behavior OF instrucMEM IS (
TYPE ramtype IS ARRAY (31 DOWNTO 0) init_file : STRING;
OF std_logic_vector (31 DOWNTO 0); operation_mode : STRING;
SIGNAL mem: ramtype; widthad_a :
BEGIN NATURAL;
PROCESS width_a :
(reset,ADDR,mem) NATURAL
BEGIN );
IF (reset='1')
THEN PORT
INSTR (
<= (OTHERS => '0'); clock0 : IN
ELSE STD_LOGIC;
INSTR address_a : IN
<= mem(conv_integer (ADDR)); STD_LOGIC_VECTOR (15 DOWNTO 0);
END IF; q_a :
END PROCESS; OUT STD_LOGIC_VECTOR (31 DOWNTO 0)
);
-- Isi dalam instruction memory END COMPONENT;
mem(0) <= X"00000022"; BEGIN
mem(1) <= X"8c010000"; INSTR <= sub_wire0;
mem(2) <= X"8c020004"; altsyncram_component : altsyncram
mem(3) <= X"8c030008"; GENERIC MAP
mem(4) <= X"00842022"; (
mem(5) <= X"00822020"; init_file => "imemory.mif",
mem(6) <= X"0043282a"; operation_mode => "ROM",
mem(7) <= X"10a00002"; widthad_a => 16,
mem(8) <= X"00411020"; width_a => 32
mem(9) <= X"1000fffb"; )
mem(10) <= X"ac040000"; PORT MAP
mem(11) <= X"1000ffff"; (
END BEHAVIOR; clock0 => clock,
address_a => ADDR,
q_a => sub_wire0
);
END STRUCTURAL;
BEGIN
C. TUGAS 3 altsyncram_component : altsyncram
GENERIC MAP
-- Praktikum EL3111 Arsitektur Sistem (
Komputer init_file =>
-- Modul :3 "dmemory.mif",
-- Percobaan :3 operation_mode
-- Tanggal : 25 => "SINGLE_PORT",
Oktober 2018 widthad_a =>
-- Kelompok :- 16,
-- Rombongan :- width_a => 32
-- Nama (NIM) 1 : erikson mangihut tua )
silaban(14S16028) PORT MAP
-- Nama File : (
data_memory.vhd
-- Deskripsi : wren_a =>
Implementasikan desain data memory WR_EN AND (NOT RD_EN),
LIBRARY ieee; clock0 => clock,
USE ieee.std_logic_1164.all; address_a =>
LIBRARY altera_mf; ADDR,
USE altera_mf.all; q_a =>
sub_wire0,
ENTITY data_memory IS data_a =>
PORT( WR_Data
ADDR : IN );
STD_LOGIC_VECTOR (15 DOWNTO 0); -- PROCESS (RD_EN, sub_wire0) --
alamat Multiplexer
WR_EN : IN BEGIN
STD_LOGIC; --Indikator Penulisan IF (RD_EN = '1') THEN
RD_EN : IN RD_Data <= sub_wire0;
STD_LOGIC; --Indikator Pembacaan ELSE
clock : IN RD_Data <=
STD_LOGIC := '1'; -- clock x"00000000";
RD_Data : OUT END IF;
STD_LOGIC_VECTOR (31 DOWNTO 0); END PROCESS;
WR_Data : IN END STRUCTURAL;
STD_LOGIC_VECTOR (31 DOWNTO 0) );
END ENTITY ;

ARCHITECTURE structural OF data_memory


IS D. TUGAS 4
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31
DOWNTO 0);
COMPONENT altsyncram -- komponen memori -- Praktikum EL3111 Arsitektur Sistem
GENERIC Komputer
( -- Modul :3
init_file : -- Percobaan :4
STRING; -- name of the .mif file -- Tanggal : 25
operation_mode Oktober 2018
: STRING; -- the operation mode -- Kelompok :-
widthad_a : -- Rombongan :-
NATURAL; -- width of address_a[] -- Nama (NIM) 1 : Erikson Mangihut Tua
width_a : Silaban(14S16028)
NATURAL -- width of data_a[] -- Nama File :
); data_memory.vhd
PORT -- Deskripsi :
( Implementasikan desain register
LIBRARY IEEE;
wren_a : IN USE IEEE.STD_LOGIC_1164.ALL;
STD_LOGIC; -- Write Enable Activation USE IEEE.STD_LOGIC_ARITH.ALL;
clock0 : IN USE IEEE.STD_LOGIC_UNSIGNED.ALL;
STD_LOGIC ; -- Clock LIBRARY altera_mf;
address_a : IN USE altera_mf.altera_mf_components.ALL;
STD_LOGIC_VECTOR (15 DOWNTO 0); --
Address Input ENTITY reg_file IS
q_a : OUT PORT(
STD_LOGIC_VECTOR (31 DOWNTO 0); -- clock1 : IN
Data Output STD_LOGIC; -- clock
data_a : IN WR_EN : IN
STD_LOGIC_VECTOR (31 DOWNTO 0) -- Data STD_LOGIC; -- write enable
Input ADDR_1 : IN
STD_LOGIC_VECTOR (4 DOWNTO 0); -- Input
); 1
END COMPONENT ;
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 ;

ARCHITECTURE behavior OF reg_file IS


TYPE ramtype IS ARRAY (31 DOWNTO 0)
OF std_logic_vector (31 DOWNTO 0);
SIGNAL mem: ramtype;

BEGIN
PROCESS(ADDR_1,ADDR_2,ADDR_3,clock1,W
R_EN,mem)
BEGIN
IF (((clock1 = '1') AND
(clock1'EVENT)) AND (WR_EN = '1')) THEN

mem(conv_integer(ADDR_3)) <=
WR_Data_3;
END IF;
IF ((clock1 = '0') AND
(clock1'EVENT)) THEN
RD_Data_1 <=
mem(conv_integer(ADDR_1));
RD_Data_2 <=
mem(conv_integer(ADDR_2));
END IF;
END PROCESS;

END behavior ;

Anda mungkin juga menyukai