Saturday, 28 January 2017

Simple As Posible -1,-2,-3,Procesor DLX dan VHDL

BAB I
Komputer Sederhana SAP-1
(Simple As Possible-1)

1.1    Arsitektur SAP-1
Tujuan komputer SAP adalah menjelaskan cara kerja komputer yang paling sederhana. SAP-1 merupakan tahap pertama dalam evolusi kearah pengembangan komputer-komputer modern. Sekalipun masih kearah pengembangan komputer sederhana, operasi SAP-1 telah mewakili operasi komputer modern. Kelebihannya, arsitekturnya sederhana sehingga mudah dimengerti oleh pemula sekalipun. Gambar di bawah ini menunjukkan arsitektur SAP-1
Gambar 1.1 Arsitektur SAP-1




Penahan Tiga Keadaan (three state buffer, TSB)

Semua keluaran register menuju bus W yang dikendalikan oleh penahan tiga keadaan (three state buffer, TSB) yang memungkinkan transfer data dari register ke bus secara teratur.

Gambar 1.2 Saklar tiga keadaan (three state buffer, TSB)

Keluaran dari TSB, Dout, memungkinkan tiga kondisi: 1, 0 atau hambatan tinggi (impedansi tinggi). Pada saat ENABLE=0 maka terjadi hambatan tinggi pada TSB sehingga tidak ada data yang mengalir dari input Menuju Output.
Pada SAP-1 TSB banyak digunakan untuk menahan data dari register menuju ke bus W atau sebaliknya.
CLK,CLK,CLR,CLR
Jalur kendali umum yang hampir ada pada setiap komponen dalam komputer, fungsi umum masing-masing jalur:
® CLK :  Memicu pengaktifan komponen dengan mode active higt, akan aktif jika nilainya = 1
® CLK :  Memicu pengaktifan komponen dengan mode active higt, akan aktif jika nilainya = 0
® CLR:  Me-reset komponen dengan mode active higt, akan aktif jika nilainya = 1
® CLR:  Me-reset komponen dengan mode active higt, akan aktif jika nilainya = 0

Berikut ini adalah uraian singkat dari setiap kotak diagram dan penjelasan:
a.       Pencacah Program (Program Counter - PC)
Program disimpan pada bagian awal dari memori dengan instruksi pertama pada alamat biner 0000, intruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0010, dan seterusnya. Pencacah program, yang merupakan bagian dari unit kendali, mencacah dari 0000 sampai 1111. Tugasnya adalah mengirimkan ke memori alamat dari instruksi berikutnya yang akan diambil dan dilaksanakan. Hal ini dilaksanakan sebagai berikut.
Program Counter direset ke 0000 setiap kali sebelum komputer dijalankan. Ketika komputer mulai bekerja, pencacah program mengirimkan alamat 0000 ke memori. Kemudian mencacah program meningkatkan angka cacahannya menjadi 0001. Setelah instruksi pertama diambil dan dilaksanakan, pencacah program mengirimkan alamat 0001 ke memori. Pencacah program kembali meningkatkan angka cacahannya. Sesudah instruksi kedua diambil dan dieksekusi, pencacah program mengirimkan alamat 0010 ke memori. Dengan demikian, pencacah program dapat menentukan instuksi berikutnya yang akan diambil dan dilaksanakan.


b.        Masukan dan MAR (Memory Address Register)
Di bawah Program Counter adalah blok input dan MAR. Disini sudah termasuk register saklar untuk alamat dan data seperti dibahas dalam Pasal 9-4. Register-register saklar ini, yang merupakan bagian dari unit masukan, memungkinkan pengiriman 4 bit alamat dan 8 bit data kepada RAM. Ingatlah bahwa instruksi dan kata-data dituliskan ke dalam Ram sebelum komputer bekerja.
Memory address register (disingkat MAR: artinya register alamat memori) adalah bagian dari memori SAR-1. Selama komputer bekerja, alamat dalam pencacah program ditahan (latched) pada MAR. Sejenak kemudian, MAR mengirimkan alamat 4 bit ini ke dalam RAM, dimana operasi membaca dilaksanakan.

c.         Memori RAM (Random Access Memory) 16 x 8
RAM berperan sebagai memori utama tempat menyimpan instruksi dan data. Selama komputer beroperasi, RAM menerima alamat 4 bit dari MAR dan operasi membaca dilaksanakan.

Setelah memori dibaca, instruksi atau data akan keluar dari memori dan masuk ke dalam bus W. Instruksi  atau data yang berada dalam bus W dapat diakses oleh register-register lain.

Memori terdiri dari 16 alamat yang lebarnya 8 bit. Untuk mengakses RAM diperlukan alamat dengan lebar 2log16 bit = 4 bit. Itulah mengapa pencacah program lebarnya 4 bit.

Jalur kendali yang ada pada RAM
• CE : Mengeluarkan data 8 bit dari memori ke bus W

d.        Register Instruksi (Instruction Register)
Register instruksi merupakan bagian dari unit kendali. Instruksi yang akan dieksekusi, dibaca dari memori utama dan masuk ke dalam bus W. Pada waktu yang bersamaan, register instruksi diaktifkan ssehingga instruksi yang dibaca dari memori akan masuk ke dalam register instruksi.
Register instruksi dibagi menjadi dua bagian. Bagian atas sebanyak 4 bit dikirim ke blok engendali pengurut (Controller – Sequencer). Bagian bawah sebanyak 4 bit menuju bus W dikendalikan oleh TSB.

Jalur kendali yang ada pada Register Instruksi:
• LI : mengambil data 8 bit dari bus W
• EI : Mengendalikan data 4 bit dari register yang menuju ke bus W.  

e.         Pengendali Pengurut (Controller – Sequencer)
Blok terbawah di bagian kiri berisi pengendali-pengurut (controller-sequencer) sebelum komputer bekerja, sinyal-sinyal CLR dan CLR masing-masing dikirimkan ke pencanah program dan register instruksi. Sebagai akibatnya, pencacah program direset ke 0000 dan bersamaan ini instruksi terakhir dalam register instruksi dihapus.

Sebuah sinyal detak CLK dikirimkan ke semua register bufer; sinyal ini mensinkronkan operasi komputer, yang menjamin bahwa setiap langkah operasi akan terjadi sebagaimana mestinya. Dengan kata lain, semua transfer dalam regiter terjadi pada tepi positif dari sinyal detak CLK yang sama. Perhatikan bahwa sinyal CLK juga memasuki pencacah program.

Data 12-bit yang berasal dari pengendali-pengurut membentuk suatu kata-pengendalian komputer (seperti seorang pengawas yang memberitahu tentang apa yang harus dikerjakan). 12 kawat yang menyalurkan katakendali itu disebut bus kendali (control bus).

Kata kendali mempunyai format sbb:

CON = CpEp L MCE L 1 E 1 L AEA SuEu L B L o

Kata ini menentukan bagaimana register-register harus bereaksi terhadap tepi positif sinyal detak berikutnya. Misalnya, Ep tinggi dan M rendah berarti bahwa isi pencacah program ditahan di dalam MAP pada tepi positif berikutnya. Sebagai contoh yang lain, dan A yang rendah berrati kata RAM yang telah ditunjuk alamatnya akan ditransfer ke akumulator pada tepi positif berikutnya dari lonceng. Kelak kita akan mempelajari diagram pewaktuan yang bersangkutan untuk melihat tepatnya kapan dan bagaimana transfer data ini dilakukan.

f.       Akumulator
Accumulator (A) adalah sebuah register buffer yang menyimpan jawaban sementara (tahap menengah, intermediate) selama komputer beroperasi. Dalam Gambar 10-1 diperlihatkan bahwa akumulator mempunyai dua macam keluaran. Keluaran dua keadaan secara langsung diteruskan ke bagian penjumlahan-pengurang. Keluaran tiga-keadaan dikirimkan kepada bus W. Karena itu kata 8-bit dari akumulator secara terus menerus menggerakkan rangkaian penjumlah-pengurangan; dan kata yang sama juga muncul pada bus W bilamana EA tinggi.

g.         Penjumlah – Pengurang
SAP-1 menggunakan sebuah adder-subtractor komplemen-2. Bila Su berharga rendah, maka keluaran jumlah dari penjumlah-pengurang dalam Gambar 10-1 adalah:


S = A + B

Apalagi Su tinggi, keluarannya berupa selisih

A = A + B’

(ingat kembali bahwa komplemen-2 ekivalen dengan perubahan tanda dalam bilangan desimal)
Rangkaian penjumah-pengurang bersifat asinkron (tidak diatur oleh sinyal detak); ini berarti isi keluarannya akan berubah bila terjadinya perubahan pada kata-kata masukan. Bilamana Eu tinggi, isi yang bersangkutan akan muncul pada bus W.



h.      Register B
Register B  adalah register bufer yang digunakan dalam operasi aritmetik. Sinyal B yang rendah dan tepi positif dari sinyal detak akan mengisikan kata pada bus W ke dalam register B. Keluaran dua-keadaan dari register B kemudian menggerakkan penjumlah-pengurang, memasukkan bilangan yang akan dijumlahkan dengan atau dikurangkan dari isi akumulator.

i.        Register Keluraran
Apabila EA tinggi dan 0 rendah tepi positif sinyal detak berikutnya akan memasukkan kata dari akumulator ke dalam register keluaran.
Register ini sering disebut bandar keluaran (output port) karena data yang telah diproses dapat meninggalkan komputer melalui register ini. Dalam mikrokomputer, bandar-bandar keluaran dihubungkan dengan rangkaian perantara (interface circuits) yang menggerakkan alat-alat periferal seperti: printer, tabung sinar-katoda (CRT), teletypewriter, dan sebagainya. (Rangkaian perantara menyiapkan data untuk menggerakkan setiap alat).


1.2    Perangkat Instruksi [Instruction Set]
Instruksi dalam SAP-1 terdiri dari 2 jenis: memiliki 1 operand dan tanpa operand. Operand adalah data atau alamat data yang dioperasikan. Instruksi yang memiliki 1 operand adalah: LDA, ADD, dan SUB. Instruksi tanpa operand adalah OUT dan HLT.

Instruksi Mengacu kepada Memori (Memory Refference Instruction)
Instruksi LDA, ADD dan SUB disebut instruksi-instruksi yang mengacu momori (memory reference instruction), karena semua instruksi yang bersangkutan menggunakan data yang tersimpan dalam memori.

Instruksi-instruksi yang terdapat dalam SAP-1 sebagai berikut:

LDA (Load the Accumulator)
Instruksi LADA mengambil data dari memori dan dimasukan ke dalam akumulator.

Contoh:
LDA AH
Instruksi ini mengambil data dari alamat memori A H dan disimpan kedalam akumulator.


ADD (Adder)
Instruksi ADD menjumlahkan isi akumulator dengan data memori
Contoh:
     ADD 8 H

Instruksi ini menjumlahkan isi akumulator dengan data memori alamat 8 H. Hasil penjumlahan disimpan kembali dalam akumulator.

SUB (Subtract)
Instruksi SUB mengurangkan isi akumulator dengan isi register
Contoh :
     SUB DH
Instruksi ini akan mengurangkan isi akumulator dengan data pada alamat DH. Hasilnya disimpan kembali ke dalam akumulator.

OUT
Instruksi OUT adalah instruksi tanpa operand. Data dari akumulator secara otomatis akan diambil dan dimasukkan ke dalam register keluaran.

HLT (Halt)
Instruksi HTL berfungsi untuk menghentikan proses. Instruksi ini memberitahu kepada komputer untuk berhenti memproses data. HLT menandai akhir suatu program. Instruksi ini tidak memerlukan operan memori. Setiap program dalam SAP-1 harus diakhiri dengan HLT.

Tabel 1.1 Rangkuman Instruksi SAP-1



1.3    Pemrograman SAP-1
Di dalam pemrograman SAP terdapat kode yang akan memerintahkan komputer untuk melakukan sesuatu operasi yang disebut dengan kode operasi (operation code) yang di singkat dengan opcode. Berikut akan diberikakn kode operasi dari tiap instruksi pada SAP-1

 Siklus Instruksi
dalam menyelesaikan setiap instruksi diperlukan tahapan. Tahapan ini disebut siklus instruksi. Siklus instruksi terdiri dari 2 tahapan yaitu FETCH dan EXECUTE. Masing-masing tahap memerlukan 3 siklus detak (clock cycle) ditandai dengan T1, T2, T3, T4, T5 dan T6. Siklus detak ini diatur oleh pencacah yang disebut Ring Counter yang mengeluarkan nilai T:
T=T6,T5,T4,T3,T2,T1

Pada saat komputer mulai dijalankan, data keluaran pencacah tersebut adalah:
T= 000001
Selanjutnya akan menghasilkan 000010, 000100, 001000, 010000, 100000. Setiap instruksi diselesaikan dalam 6 keadaan T tersebut.
Penjelasan rinci masing-masing tahap sebagai berikut:
a.       Siklus Fetch
Pada siklus fetch dilakukan pengambilan instruksi dari memori dan diletakkan di dalam register instruksi. Semua instruksi melalui tahap ini. Tiga hal yang dilakukan pada tahap ini:
         Mengirim isi Pencacah Program (PC) ke dalam register pengalamatan (MAR). (Address State)
         Menambah nilai Pencacah Program dengan 1. (Increment State)
         Mengambil instruksi dari memori dan dimasukka ke dalam register instruksi.  (Memory State)
          
Tahap Pengiriman Alamat (Address State) -1
            Pada tahap ini nilai dari pencacah program (PC) dikiri ke register alamat memori (MAR). Pengendali/pengurut akan menilai kendali COS:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   1    0    1            1    1     1    0           0   0   1   1
Jalur yang aktif ada dua EP = 1 aktif high dan LM = 0 aktif low

Tahap Penambahan Nilai Pencacah dengan 1 (Increment State)- T2
                     Pada tahap ini nilai pencacah program ditambahkan dengan satu pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   1   0    1    1            1    1     1    0           0   0   1   1
Jalur yang aktif ada dua CP = 1. Nilai Pencacah ditambah 1.

Tahap Pengambilan Instruksi dari Memori (Memory State) – T3
Pada tahap ini data memori RAM yang ditunjuk oleh MAR dikeluarkan menuju bus. sementara itu, data dari bus W masuk ke dalam register instruksi. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    1    0            0    1     1    0           0   0   1   1
Jalur yang aktif CE dan LI = 0, keduanya aktif low.
Siklus Fetch Keseluruhan
              Tahap pengalamatan (address state), penambahan nilai pencacah (increment state) dan pengambilan instruksi dari memori (memory state) disebut juga dengan siklus fetc.
b.        Siklus Eksekusi
Eksekusi instruksi dikendalikan oleh Pengendali/Pengurut (Controller/Sequencer). Masing – masing tahap eksekusi T4, T5 dan T6 berbeda – beda untuk setiap instruksi Instruksi LDA
pada instruksi LDA hanya T4 dan T5 yang aktif, sementara  tahap T6 tidak ada yang aktif. Tahapan pada instruksi LDA:
         Pada tahap T4 alamat memori dikirim dari register instruksi ke MAR.
         Pada tahap T5 data dari memori diambil dan masuk ke register akumulator.
         Pada tahap T6 tidak melakukan apa-apa

Tahap Pengiriman Alamat – T4
       pada tahap ini nilai 4 bit operand dari register instruksi masuk ke MAR. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    0    1            1    0     1    0           0   0   1   1
Jalur yang aktif LM dan EI = 0, keduanya aktif low.

Tahap Pengambilan Data – T5
       Pada tahap ini data 8 bit dari memori diambil dan dimaskkan ke dalam akumulator. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    1    0            1    1     0    0           0   0   1   1
Jalur yang aktif CE dan LA = 0, keduanya aktif low.

Siklus Instruksi LDA Keseluruhan
Instruksi ADD dan SUB
       Pada instruksi ADD dan SUB data operand diambil dari memori dan dijumlahkan dengan akumulator hasilnya disimpan kembali ke dalam akumulator. tahapan pada instruksi ADD dan SUB :
         Pada tahap T4 alamat memori dikirimdari register instruksi kedalam MAR
         Pada tahap T5 data dari memori diambil dan masuk ke register B.
•      Pada tahap T6 data dari retister B dioperasikan dengan akumilator dan hasilnya disimpan dalam akumulator. Perbedaan instruksi ADD dan SUB pada tahap 6.

Tahap Pengiriman Alamat – T4
          Tahap ini sama persis dengan instruksi LDA. Nilai alamat 4 bit dari regiter instruksi masuk ke daam register alamat memori (MAR).
Tahap Pengambilan Data – T5
Pada tahap ini data 8 bit dari memori diambil dan dimasukan ke dalam register B.  Pengendali/Pengurut akan mengirim nilai kendali CON:

CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    1    0            1    1     1    0           0   0   0   1
Jalur yang aktif CE dan LB = 0, keduanya aktif low.

Tahap Pengoperasian ADD/SUB Data – T6
          Pada tahap ini data 8 bit dari akumulator dan register B dioperasikan (ADD/SUB) hasilnya disimpan dalam akumulator. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    1    1            1    1     0    0           0   1   1   1
Jalur yang aktif EU = 1 aktif high dan LA=0 aktif low.

Operasi SUB
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0    1    1            1    1     0    0           1   1   1   1
Jalur yang aktif SU, EU aktif high dan LA=0 aktif low.

Siklus Instruksi ADD/SUB Keseluruhan
Instruksi OUT
          Instruksi OUT memerlukan satu tahap T4 yaitu memindahkan data dari akumulator ke dalam register keluaran. Pengendali/Pengurut akan mengirim nilai kendali CON:
CON  =  Cp Ep M              1 1 A EA         Su Eu B o                      
          =   0   0         1                       1                  1    1    1    1                0   0             1          0

Jalur yang aktif EA=1 aktif high dan LB=0 aktif low.


1.4    Pengendali/Pengurut [Controller/Sequencer] SAP-1
Bagian terpenting dalam SAP-1 adalah register pengendali/pengurut. Pada kompter modern bagian ini adalah unit kendali (control unit) yang berfungsi mengatur seluruh jalannya komponen. Pada setiap tahap /siklus tidak semua komponen aktif. Semuanya ditentukan oleh keluaran dari bagian pengendali/pengurut ini. Keluaran kendali lebarnya 12 bit, yang masing-masing bitnya mengendalikan seluruh register dalam SAP-1. Setiap tahap dari T1 sampai T6L, pengendali mengeluarkan sinyal kendali sebanyak 6 buah. Sinyal kendali yang keluar dari pengendali/pengurut dinamakan mikroinstruksi.
• ROM Alamat 16 x 4
Alamat
Isi
Rutin
0000
0011
LDA
0001
0110
ADD
0010
1001
SUB
0011
XXXX
Tidak ada
0100
XXXX
Tidak ada
0101
XXXX
Tidak ada
0110
XXXX
Tidak ada
0111
XXXX
Tidak ada
1000
XXXX
Tidak ada
1001
XXXX
Tidak ada
1010
XXXX
Tidak ada
1011
XXXX
Tidak ada
1100
XXXX
Tidak ada
1101
XXXX
Tidak ada
1110
1100
OUT
1111
XXXX
Tidak ada

• Pencacah Presetable
Pencacah Presettable akan mencacah dari 0000 sampai 0011. Selanjutnya tergantung dari kode operasi yang masuk dari ROM Alamat. Jika Instruksinya LDA maka nilai pencacah berikutnya adalah 0011, jika instruksinya OUT maka nilai pecacah berikutnya 1100.


• ROM Kendali 16 x 12
Alamat
Isi
Rutin
Bit aktif
0H
5E3H
Fetch
Ep M
1H
BE3H

Cp
2H
263H

1
3H
1A3H
LDA
M 1
4H
2C3H

A
5H
3E3H

Tidak ada
6H
1A3H
ADD
M 1
7H
2E1H

B
8H
3C7H

A u
9H
1A3H
SUB
M 1
AH
2E1H

B
BH
3CFH

A u u
CH
3F2H
OUT
u o
DH
3E3H

Tidak ada
EH
3E3H

Tidak ada
FH
X
X
Tidak dipakai




BAB II
Komputer Sederhana SAP-2
(Simple As Possible
– 2)
 Perbedaan SAP-1 dengan SAP-2
§ Penambahan register-register baru.
§ Penambahan lebar bus menjadi 16 bit (lebar data yang dioperasikan ALU tetap 8 bit).
§ RAM yang tersedia 64 KB.
§ Penambahan kemampuan logika pada ALU.
§ Adanya flag (bendera).
§ Peningkatan jumlah instruksi dari 5 ke 43 instruksi (42 instruksi + 1 instruksi No operation).

2.1 Arsiktektur SAP-2

Register Masukan atau Bandar Masukan

SAP-2 mempunyai dua buah bandar masukan, bernomor 1 dan 2. Enkoder papan tombol (keyboard) heksadesimal dihubungkan dengan bandar I untuk memasukkan instruksi dan data heksadesimal melalui bandar ini. Perhatikan bahwa enkoder papan tombol heksadesimal mengirimkan sebuah sinyal READY ke bit 0 dari bandar 2. Sinyal ini menunjukkan kapan data di bandar I telah menjadi absah (valid).
Perhatikan pula bahwa sinyal SERIAL IN memasuki penyemat 7 dari bandar 2. Dalam pembahasan kemudian akan diberikan suatu contoh yang memperlihatkan bagaimana cara mengubah data masukan seri menjadi data masukan parelel.

Pencacah Program (Program Counter)

Kini, pencacah program memiliki saluran 16-bit, dan karena itu dapat mencacah dari

PC = 0000 0000 0000 0000
Sampai
            PC = 1111 1111 1111 1111
           
Ini ekivalen dengan 0000H sampai FFFFH, atau 0 sampai 65.536 desimal.
Sinyal CLR yang rendah akan mereset PC sebelum setiap operasi komputer. Dengan demikian peorosesan data selalu dimulai dengan instruksi yang disimpan dalam lokasi memori 0000H.

MAR dan Memori

Selama siklus pengambilan, MAR menerima alamat 16-bit dari pencacah program. Keluaran dua-keadaan dari MAR selanjutnya mengirimkan alamat lokasi memori yang dikehendaki. Memori mempunyai sebuah ROM 2K yang beralamat 0000H sampai 07FFH. ROM ini berisi sebuah program, yang disebut monitor. Program ini menganalisasi komputer pada waktu dinyalakan. Menafsirkan masukan-masukan papan tombol, dan sebagainya. Sisa dari memori sistem merupakan sebuah RAM 62K yang beralamat dari 0800H sampai FFFFH.

RAM 64 KB
§ Kapasitas RAM 64 kB dari alamat 0000 H sampai FFFF H.
§ 2 kB pertama (0000 H s/d 07FF H) untuk program monitor : serangkaian program untuk menampilkan isi input register dan output register ke monitor.
§ 62 kB berikutnya untuk instruksi dan data.

Register Data Memori (Memory Data Register, MDR)
MDR adalah sebuah register tempat menyimpan sementara data yang dibaca atau akan dimasukkan ke dalam memori. Pada saat operasi membaca memori (Memory Read), data dalam memori akan masuk ke dalam MDR untuk diteruskan ke bus W. Pada saat operasi menulis memori (Memory Write) data dari bus W akan diteruskan ke dalam memori.

Register Instruksi (Instruction Register, IR)
Register Instruksi menyimpan dan menerjemahkan kode operasi instruksi. 8 bit kode operasi diteruskan ke Pengendali/Pengurut. SAP-2 memiliki lebar kode operasi 8 bit. Sama dengan prosesor 8080/8085. Dengan lebar kode operasi 8 bit, SAP-2 mampu mendefinisikan instruksi sampai 28 =  256 buah instruksi, walau demikian pada SAP-2 hanya didefinisikan 42 instruksi.

Pengendali-Pengurut

Pengendali-pengurut menghasilkan kata-kata kendali atau mikroinstruksi yang akan mengkoordinasi atau mengarahkan operasi komputer. Karena SAP-2 memiliki perangkat instruksi yang lebih luas, maka perangkat keras dari bagian pengendali-pengurut menjadi lebih rumit. Dipihak lain meskipun kata CON menjadi lebih panjang, tetapi ide pokoknya tetap sama: kata kendali atau mikroinstruksi menentukan bagaimana register-register bereaksi terhadap tepi pulsa detak positif berikutnya.

Akumulator

Keluaran dua-keadaan dari akumulator dikirim ke ALU; sedangkan keluaran tiga- keadaan dari akumulator ini dihubungkan dengan bus W. Karena itu, kata 8-bit dalam akumulator secara kontinu menggerakkan ALU, akan tetapi kkata yang sama juga muncul pada bus bilamana EA menjadi aktif.

ALU dan Bendera

ALU-ALU standar tersedia secara komersial sebagai rangkaian terpadu. ALU ini memiliki 4 atau lebih dari 4 bit kendali yang menentukan operasi aritmetik atau operasi logika pada kata-kata A dan B. ALU yang dipakai dalam SAP-2 mengandung operasi aritmetik dan logika.
Dalam buku ini, bendera (flag) merupakan sebuah flip-flop yang mengikuti dan mengawasi perubahan keadaan selama komputer beroperasi. Komputer SAP-2 mempunyai dua macam bendera. Bendera tanda (sign flag) akan diaktifkan bilamana isi akumulatr berubah menjadi negatif selama eksekusi dari beberapa instruksi. Bendera nol (zero flag) akan diaktifkan bilamana isi akumulator menjadi nol.

Register TMP, Register B, dan Register C

Sebagai pengganti peranan register B dalam menahan data yang akan dijumlahkan atau dikurangkan dengan isi akumulator, di sini digunakan sebuah register sementara (disingkat TMP dari kata temporary). Register ini memberikan kebebasan lebih luas dalam menggunakan register B. Di samping  register TMP dan register B, SAP_2 juga menggunakan register C. Dengan ini, pemindahan data selama komputer bekerja dapat dilakukan secara  lebih fleksibel.

Register Keluaran 3 dan 4
Register yang berfungsi mengkomunikasikan hasil proses dengan pengguna. Pengguna dapat melihat hasil operasi pada peraga heksadesimal.

2.2 Jalur Dua-Arah
Pada SAP-2 terdapat jalur yang memiliki dua arah dan jalur yang memiliki satu arah. Beberapa register yang menggunakan jalur dua arah adalah Pecacah Program, Register Data Memori, Akumulator A, Register TEMP, B dan C,

2.3 Perangkat Instruksi [Instruction Set] pada SAP-2
Instruksi terdiri dari 2 bagian, yaitu kode operasi (operation code, opcode) dan yang dioperasikan (operand). Kode operasi lebarnya 8 bit, menempati satu alamat di RAM.

Contoh instruksi dengan operand yang berbeda-beda
ADD B                       : Kode operasi 80 dan tidak membutuhkan memori untuk operand.
MVI A, 18 H              : Kode operasi 3E membutuhkan satu alamat RAM untuk operand.
STA 4861 H                : Kode operasi 32 membutuhkan 2 alamat RAM untuk operand,

Misal ketiga instruksi tersebut disimpan pada RAM secara berurutan mulai alamat 1000 H, maka peta isi RAM sebagai berikut :






















Kode Operasi
SAP-2 memiliki lebar kode operasi 8 bit yang memungkinkannya untuk memiliki sampai 256 instruksi. Tidak semua kombinasi kode operasi didefinisikan instruksinya. SAP-2 hanya memiliki 42 instruksi dan 1 instruksi kosong NOP (No Operation) :
Jenis – jenis instruksi
Beberapa instruksi memiliki kesamaan logika proses. Instruksi – instruksi yang memiliki beberapa kesamaan dikumpulkan dalam satu jenis instruksi. Instruksi 42 buah pada SAP-2 dapat dikategorikan pada beberapa jenis instruksi:
         Instruksi Mengacu Memori (Memory Reference Instruction, MRI)
         Instruksi Register (Register Instruction)
         Instruksi Lompat dan Pemanggilan (Jump and Call Instruction)
         Instruksi Logika (Logic Instruction)
         Instruksi lain – lain.
Siklus Instruksi
Secara garis besar, suatu instruksi diselesaikan dengan tiga tahap. Pengambilan (fetch), penerjemah (decode) dan eksekusi (execute). Siklus pengambilan dalam SAP-2 adalah sama dengan SAP-1 memerlukan tiga tahap yang meliputi tahap T1 (pengalamatan), tahap T2(penambahan pencacah program) dan tahap T3 (pengambilan data dari memori). Akhir siklus pengambilan, kode operasi berada dalam register instruksi.
Siklus berikutnya penerjemahan kode operasi dilakukan oleh pengendali/pengurut. Hasil penerjemahan instruksi menentukan kendali apa yang dikeluarkan (CON) oleh pengendali pada tahap eksekusi.


2.4 Instruksi Mengacu Memori [Memori Reference Instruction, MRI]
LDA (Load the Accumulator)
Instruksi LDA berfungsi mengambil data memori alamat tertentu dan dipindahkan kedalam akumulator.
Format instruksi:
            LDA alamat
Contoh
            LDA 1500 H
Insturksi ini memindahkan data memori alamat 1500 H ke dalam Akumulator.

STA (Store the Accumulator)
Instruksi STA mengambil data pada akumulator dan dipindahkan ke dalam memori alamat tertentu.
Format instruksi :
            STA alamat
Contoh
            STA 1501 H

MVI (Move Immediate)
Instruksi MVI adalah instruksi transfer data yang memindahkan 8 bit data ke dalam register. Register yang terlibat sebagai operand adalah register A, B, dan C.
Format instruksi:
            MVI register, byte
Contoh
            MVI A, 45 H
            MVI B, 5E H
            MVI C, F3 H
Setelah ketiga instruksi ini dijalankan maka nilai register A=45 H, B = 5E H dan C = F3 H





 2.5 Instruksi Register [Register Instruction]
Instruksi MRI elibatkan pengaksesan memori dua kali, yaitu pada saat siklus pengambilan dan eksekusi. Proses pengaksesan memori memerlukan waktu yang lebih lama dari pada pengaksesan register. Pada instruksi register proses perpindahan data tidak menggunakan memori. Data dapat dipindahkan antar – register secara langsung sehingga waktu proses lebih cepat.

MOV (Move)
Instruksi ini berfungsi menyalin data dari satu register ke register lain. Register – register yang terlibat dalam instruksi ini adalah register A, B dan C.
Format instruksi:
MOV register, register
Contoh
MOV A, B

Instruksi ini menyalin data dari register B ke register A. Instruksi – instruksi MOV selengkapnya sebagai berikut:
MOV A, B
MOB A, C
MOV B, A
MOV B, C
MOV C, A
MOV C, B
ADD dan SUB (Substract)
Instruksi register ini berfungsi menambah (ADD) atau mengurangi (SUB) nilai Akumulator dengan nilai register tertentu dan hasilnya disimpan pada akumulator. Register yang terlibat sebaga operand adalah register B dan C.
Format instruksi
            ADD register, SUB register
Contoh
            ADD B

Setelah insstruksi ini dieksekursi maka nilai A = A + B. Logika proses ini berlaku untuk instruksi – instruksi lain yang sejenis, seperti :
            ADD C  ; A = A + C
            ADD B  ; A = A - B
            ADD C  ; A = A – C

INR (Increment) dan DCR (Decrement)
Intruksi register ini berfungsi menambahkan nilai 1 (INR) atau menurangkan nilai 1 (DCR) pada register. Register yang terlibat sebagai operand adalah A, B dan C.
Format instruksi:
            INR register, DCR register
Contoh
            INR A
Setelah intruksi ini dieksekursi maka nilai A = A + 1. Logika proses ini berlaku untuk instruksi – instruksi lain yang sejenis, seperti ;
INR B             ; B = B + 1
INR C             ; C = C + 1
DCR A            ; A = A - 1
DCR B                        ; B = B - 1
DCR C                        ; C = C – 1

2.6 Instruksi Lompat dan Pemanggilan [Jump and Call Instruction]
JMP (Jump)
Intruksi lompatan tidak bersyarat. Prosesor langsung mengalihkan eksekusi program sesuai dengan alamat tujuan lompatan.
Format instruksi
            JMP alamat
Contoh
            JMP 2500 H
Intruksi ini memberitahu prosesor untuk menjalankan intruksi pada alamat 2500 H. Prosesor ini mengubah nilai pencacah program dengan alamat 2500H.
            Pencacah program ¬2500H

JM (Jump if Minus)
Instruksi lompat bersyarat. Prosesor akan memeriksa bendera (flag)  sign keluaran dari ALU pada oerasi sebelumnya. Jika bendera (flag) sign bernilai 1, artinya hasilnya negatif, maka lompatan akan dilakukan. Jika sebaliknya maka lompatan tidak dilakukan

Sign flag = 0 jika nilai Akumulator ≥ 0
Sign flag = 1 jika nilai Akumulator < 1
Format intruksi
            JM alamat
Contoh
            Asumsi : nilai register A = 45 H, B = 10 H dan C = 60 h
            SUB B                        ; A = A – B = 45 H – 10 H =35
            JM 1000 H
            SUB C                        ; A = A – C
            JM 2600 H
Setelah intruksi pertama dieksekusi nilai A positif. Pda instruksi berikutnya (JM 1000H) kondisi syarat untuk lompat tidak dipenuhi maka prosesor mengerjakan instruksi berikutnya (SUB C).

JZ (Jump if Zero)
Instruksi lompat bersyarat. Prosesor akan memeriksa bendera (flag) Zero keluaran dari LAU pada operasi sebelumnya. Jika bendera (flag) Zero bernilai 1, artinya hasilnya nol, maka lompatan akan dilakukan. Jika sebaliknya maka nompatan tidak dilakukan.
Zero flag = 0 jika nillai Akumulator ≠ 0
Zero flag = 1 jika nilai Akumulator = 0
Format instruksi
            JZ alamat
Contoh
            JZ 2500 H
Instruksi ini memberitahu prosesor untuk menjalankan instruksi pada alamat 2500H jika bendera nol (zero flag) bernilai 1.

JNZ (Jump if not Zero)
 Instruksi lompatan bersyarat. Prosesor akan memeriksa (flag) Zero keluaran dari ALU sebelumnya. Jika flag Zero bernilai 0, artinya hasilnya bukan 0, maka lompatan akan dilakukan. Jika sebaliknya maka lompatan tidak dilakukan.
 Format :
JNZ alamat
Contoh :
JNZ 2500H

Instruksi ini memberitahu prosesor untuk menjalankan instruksi pada alamat 2500H jika zero flag bernilai 1.

CALL Instruksi call the subroutine (panggil subrutin).
Subrutin (subroutine) adalah suatu program yang disimpan dalam memori untuk digunakan dalam program yang lain seperti perhitungan sinus, cosinus, tangen, logaritma, akar-kuadrat, dsb.

Format :
CALL alamat
Contoh :
CALL 6000H

Misalnya, jika sebuah subrutin logaritma berawal pada alamat 6000H maka eksekusi dari instruksi CALL 6000H menghasilkan suatu lompatan ke subrutin logaritma.

2.7 Intruksi Logika [Logic Instruction]
Pada ALU (Arithmetic and logical unit), sesuai dengan namanya, terdapat dua jenis proses yang dikerjakan yaitu proses aritmetik dan proses logika. Proses logika adalah proses yang didasarkan pada peraturan aljabar logika. Beberapa instruksi logika adalah :
CMA (Complement the Accumulator)
 Eksekusi ini akan membalikkan setiap bit dalam akumulator dan menghasilkan komplement –1 dari bilangan yang bersangkutan. Format : CMA Contoh : Nilai awal akumulator A = 1001101 Setelah instruksi CMA A = 0110010 16.


ANA (AND the Accumulator)
AND-kan isi akumulator dengan isi register tertentu, hasilnya disimpan dalam akumulator. Format : ANA register Contoh : ANA B Misal A = 01100011 dan B = 10100110 Setelah ANA B, A = 00100010

ORA (OR the Accumulator)
Intruksi ini berfungsi meng-OR-kan isi akumulator dengan isi register. Register yang dapat digunakan sebagai operand adalah register B dan C.
Format intruksi
            ORA register
Contoh
            Misal nilai akumulator A= 00101100 dan B =00011001
            Setelah instruksi ORA B nilai akhirnya :
            A = 00111101
 XRA (XOR the Accumulator)
Intruksi ini berfungsi meng-XOR-kan isi akumulator dengan isi register. Register yang dapat digunakan sebagai operand adalah register B dan C.
Format intruksi
            XRA register
Contoh
            Misal nilai akumulator A= 00101100 dan B =00011001
            Setelah instruksi XRA B nilai akhirnya :
            A = 00110101

 ANI (AND Immediate the Accumulator)
Meng-AND-kan isi Akumulator dengan suatu nilai.
Format :
ANI byte
 Contoh :
ANI 01001100

Misal : A = 01101010 Setelah instruksi ANI, A = 01001000

ORI (OR Immediate the Accumulator)
Meng-0R-kan isi Akumulator dengan suatu nilai.
Format :
0RI byte
 Contoh :
Misal : A = 00101100 Setelah instruksi ANI, A = 00111110

XRI (XOR Immediate the Accumulator)
Meng-X0R-kan isi Akumulator dengan suatu nilai.
Format :
XRI byte
 Contoh :
Misal : A = 00101100 Setelah instruksi XRI, A = 00011110

2.8 Instruksi Lain – lain
.IN (Input)
Memindahkan data dari Register masukan ke Akumulator.
OUT (Output)
Memindahkan data dari Akumulator ke Register keluaran.
HLT Tanda akhir dari program





BAB III
Komputer Sederhana SAP-3
(Simple As Possible – 3)
3.1 Model Pemrograman
Komputer SAP-3 merupakan pegembangan dari SAP-2. Cara kerja sistemnya tidak jauh berbeda. Perbedaannya terletak pada jumlah register dan banyaknya instruksi. Register baru yang terdapat pada SAP-3 adalah register SP (Stack Pointer) yang lebarnya 16 bit dan register D,E,H dan L yang masing – masing lebarnya 8 bit.
Tumpukan (Stack)
Tumpukan adalah bagian dari memori yang disediakan untuk menangani penyimpanan data sementara. Data disimpan dan diambil dengan disiplin LIFO (Last In First Out).
Tumpukan ini dikeloa oleh suatu penunjuk yang nilainya disimpan dalam register SP (Stack Pointer).
SP
D
C
H
L
16 bit
8 bit
8 bit
F
E
A
B
PC
 









3.2 Instruksi Pemindah Data
Instruksi pemindahan data berguna untuk proses penyimpanan sementara suatu nilai. Register yang bisa digunakan sebagai operand adalah register A, B, C , D, E, H, atau L.
MOV(Move)
Instruksi untuk memindahka data antar- register.
Format instruksi
            MOV register, register
Contoh
            MOV A, B
Instruksi ini menyalin isi register B ke dalam register A, setelah instruksi berikut dijalankan maka isi A = B
MVI (Move Immediate)
Instruksi unti memindahkan 8 bit data ke dalam register.
Format instruksi
MVI register, byte
Contoh
            MOV A, 4E H
Setelah instruksi ini dilaksanankan maka register A = 4E H

3.3 Instruksi Aritmetika
Pada saat Aritmetik dimungkinkan terjadi carry yaitu hasil operasi ALU melebihi kapasitas penyimpanan.
Contoh:
Misal A = 10001101
Pada saat register A ditambahkan dengan isi suatu register, misal B = 110001101
Kita akan memperoleh hasil akhirnya:
A         10001101
B         11000100
A         101010001
Terdapat carry yang tidak dapat ditampung oleh register A.

3.4 STC (Set Carry) dan CMC (Complement Carry)
Carry Flag dapat diakses langsung oleh pemrogram dengan menggunakan instruksi STC dan CMC.
Format instruksi
            STC
            CMC
Keduanya instruksi tanpa operand.

ADD
Instruksi untuk menambahkan nilai suatu register dengan akumulator dan hasilna disimpan dalam akumulator.
Format intruksi
            ADD register
Contoh
            Misal nilai register A = 00001101 dan B = 10010101
            ADD B ; A = A+B + 00001101 + 10010101
                        ; Carry = 0 dan A = 10100010
Intruksi ini menjumlahkan isi B (10010101) dengan isi akumulator (00001101) dan hasilnya disimpan dalam akumulator (10100010). Hasil operasi ini tidak menghasilkan carry sehingga carry flag bernilai 0.

ADC (Add with Carry)
Instruksi ini untuk menambahkan nilai suatu register dengan akumulator termasuk carry hasil penambahan tersebut. Hasil akhirnya disimpan dalam akumulator.

Format intruksi
ADC register
Contoh
Misal nilai register A = 10001101 dan B = 10010101
            ADC B ; A = A+B + 10001101 + 10010101
                        ; Carry 1 dan A = 00100010
                        ; A = A + carry = 00100010 + 1 = 00100011
Intruksi ini menjumlahkan isi B (10010101) dengan isi akumulator (10001101) dan hasilnya disimpan dalam akumulator (00100010). Operasi ini ternyata  menghasilkan carry, maka tahap selanjutnya akumulator dijumlahkan dengan carry. Diperoleh hasil akhir akumulator bernilai 00100011.

SUB (Substract)
Instruksi ini untuk mengurangkan nilai suatu register terhadap akumulator dan hasilnya disimpan dalam akumulator. Ketika terjadi peminjaman bilangan (borrow) karena niai akumulator lebih kecil dari nilai register, maka carry flag akan di-set 1. Pengertian carry dan borrow dalam hal ini berefek sama terhadap flag.
Format intruksi
            SUB register
Contoh
SUB B
Intruksi ini akan mengurangkan nilai akumulator dengan isi register B. Jika hasilnya negatif maka carry flag akan diset 1.



SBB (Substract with Borrow)
Intruksi untuk mengurankan nilai stuatu tegister terhadap akumulator  dengan menyertakan nilai pinjaman (borrow) yang terdapat pada carry flag. Hasil akhirnya disimpang dalam akumulator.

Format intruksi
            SBB register
Contoh
SBB B
Intruksi ini akan mengurangkan nilai akumulator dengan isi register. B yang telah ditambah carry flag.
            Misal register A = 00111000 dan B =00010001 dan carry flag = 1
            Pertama kali menjumlahkan register B dengan carry flag

                 B =  00010001
1   +
00010010
Kemudian hasilnya dikurangkan terhadap register A.
A = 00111000
B = 00010010 +
A = 00100110
Hasil akhir dari operai ini adalah Carry Flag = 0 dan A = 0010010

3. 5 INSTRUKSI LOGIKA
Instruksi-instruksi logika yang dimiliki SAP-3 hampir sama dengan  yang terdapat dalam SAP-2. Sebagai contoh  tiga diantaranya adalah :
ANA reg
                                    ORA reg
                                    XRA reg
Dengan reg = A,B,C,D,E,H atau L . Instruksi-instruksi ini masing-masing menyebabkan terjadinya operasi  AND, OR dan X OR antara isi register yang ditentukan dengan isi akumulator secara bit dengan bit.
Instruksi logika yang baru hanyalah CMP, yang diberi format sebagai berikut
CMP reg
dengan  reg = A,B,C,D,E,H atau L. Instruksi CMP membandingkan  isi dari register yang ditentukan  dengan isi akumulator. Bendera nol menunjukkan hasil dari pembandingan  ini menurut ketentuan :


SAP-3 melaksanakan operasi CMP sebagai berikut. Isi akumulator disalin oleh register sementara (temporary register). Kemudian isi dari register yang ditunjuk dikurangkan dari isi register sementara karena operasi pengurangan dilaksanakan oleh ALU, maka bendera nol akan terpengaruh. Jika 2 byte yang dibandingkan itu bernilai sama bendera nol akan diset. Jika kedua byte itu berbeda, bendera nol akan tetap berada dalam keadaan reset. Karena operasi tersebut mempergunakan register sementara, isi akumulator tidak akan berubah dengan pelaksanaan instruksi CMP tersebut.
Sebagai contoh, jika
                        A = F8H
                        D = f8H
Dan                 Z = 0
Maka eksekusi CMP menghasilkan :
                        A = F8H
                        D = F8H
Dan                 Z = 0

Instruksi CMP tidak berpengaruh pada A dan D; hanya bendera nol yang akan berubah bilamana A dan B sama (jika tidak sama, Z akan sama dengan 0).
CMP adalah suatu instruksi yang besar kegunaannya karena instruksi ini memungkinkan perbandingan antara isi akumulator dengan data didalam register tertentu. Kini kita dapat mengendalikan operasi loop dengan cara yang baru; yaitu dengan memanfaatkan instruksi CMP bersama instruksi lompatan nol bersyarat. Program-program selanjutnya akan memperlihatkan pelaksanaan cara ini.








3.6 Instruksi Logika dan Aritmetika Segera [Immediate instruction].
Sebegitu jauh kita telah mengenal instruksi-instruksi aritmetik dan logika yang terdiri dari ADD, ADC, SUB, ANA, ORA, XRA dan CMP. Setiap instruksi tersebut menggunakan akumulator sebagai register yang terlihat dalam operasi, sedangkan data selalu berasal dari register lain yang ditentukan (A,B,C,D,E,H atau L.
Instruksi-instruksi bersifat segera dari SAP-2, yang berlaku pula bagi SAP-3, adalah ANI, ORI dan XRI. Masing-masing dinyatakan dengan format.
                                    ANI byte
                                    ORI byte
                                    XRI byte
Menurut Instruksi-instruksi ini byte data yang segera mengikuti Mnemonik bersangkutan itu akan di-AND-kan, di-OR-kan atau di- XOR-kan  dengan byte akumulator.
Disamping itu, SAP-3 memiliki instruksi-instruksi bersifat segera yang lain yaitu :
                                    ADI byte
                                    ACI byte
                                    SUI byte
                                    SBI byte
                                    CPI byte
Instruksi ADI menjumlahkan byte dibelakangnya  dengan byte akumulator. ACI menjumlahkan byte dibelakangnya beserta isi bendera CY dengan byte akumulator. SUI mengurangkan byte dibelakangnya dari byte akumulator. SBI mengurangkan byte dibelakangnya beserta ini Bendera CY dari byte akumulator. CPI  membandingkan byte yang tercantum dengan byte akumulator jika kedua byte yang dibandingkan sama, bendera nol akan dipasang (diset). Jika kedua byte itu tidak sama bendera nol akan tetap dalam keadaan reset.

3.7 Instruksi Lompatan [Jump Instruction]
7 Instruksi Lompatan
Instruksi-instruksi lompatan SAP-2 yang menjadi bagian dari perangkat instruksi SAP-3 ialah :
                        JMP alamat      (lompat tanpa syarat)
                        JM alamat         (lompat bila minus)
                        JZ  alamat         (lompat bila sama dengan nol)
                        JNZ alamat      (lompat bila tak sama dengan nol)
Instruksi-instruksi lompatan yang lain dari SAP-3 akan diuraikan dibawah ini.

JP

JM adalah singkatan dari Jump if minus (lompat bila minus). Apabila program menemui instruksi JM alamat maka lompatan akan terjadi menuju akamat yang ditentukan jika bendera tanda dalam keadaan set.
            Instruksi JP mempunyai efek yang berlawanan. JP adalah singkatan dari Jump if positif (lompat bila positif, termasuk nol). Ini berarti bahwa
                                    JP alamat
Menghasilkan suatu lompatan ke alamat yang ditentukan bilamana bendera tanda keadaan reset.

JC dan JNC

Instruksi JC alamat
Berarti melompat ke alamat yang ditentukan jika bendera pindahan dalam keadaan set. Sengkatnya, instruksi JC menyatakan lompat bila ada pindahan  (jump if carry). Demikian pula,
                        JNC alamat
Berarti lompat ke alamat  yang telah ditentukan jika bendera pindahan tidak dalam keadaan set; yang berarti lompat bila tak ada pindahan (jumpif no carry).
Berikut ini adalah sebuah segmen program yang memberikan instruksi tentang instruksi JC dan JNC.

Label               Instruksi                      Komentar
                        MVI A,FEH
REPEAT:        ADI 01H
                        JNC REPEAT
                        MVI A,C4H
                        JC ESCAPE

ESCAPE:        MOV L,A
Instruksi MVI mengisi akumulator dengan FEH. Instruksi ADI menambah angka 1 pada isi  akumulator sehingga isinya menjadi FFH. Karena tiddak ada pindahan yang terjadi, instruksi JNC mengarahkan program kembali ke instruksi yang berlabel REPEAT. Dengan ini ADI akan dilaksanakan untuk kedua kalinya. Kali ini, akumulator mengalami pelimpahan dari berisi 00H dengan sebuah pindahan. Karena bendera CY dalam keadaan set, program tidak mengalami lompatan dan diteruskan melalui JNC. Dalam langkah berikutnya akumulator diisi dengan CAH. Selanjutnya JC menghasilkan  suatu lompatan ke instruksi berlabel ESCAPE, dan dengan instruksi ini C4H diisikan ke dalam register L.

JPE dan JPO

Di samping bendera tanda, bendera nol, dan bendera pindaha, SAP-3 memiliki bendera paritas

S
Z
0
0
0
P
0
CY
Gambar 12-5 Register Flag

(parity flag) yang diberi simbol P. Selama eksekusi beberapa instruksi tertentu (seperti ADD, INR, dan sebagainya), hasil ALU diperiksa untuk menentukan paritasnya. Bila hasilnya mengandung  angka 1 yang berjumlah genap, bendera paritas akan diset (dipasang); jika hasil mengandung angka 1 yang berjumlah ganjik, bendera paritas akan direset

                        Instruksi  JPE alamat

Menghasilkan suatu lompatan ke alamat yang tercantum bilamana bendera paritas dipasang (paritas ganjil). Sebagai contoh, misalkan keadaan bendera-bendera adalah:
            S = 1    Z = 0   CY = 0                        P = 1
Maka program akan melompat bila menjumpai suatu instruksi JPE; akan tetapi program akan  mengalir terus (tidak melompat) bila menghadapi instruksi JPO.
            Hingga kini kita telah membahas semua bendera yang terdapat dalam komputer SAP-3.Guna menyediakan kompatibilitas ke atas dengan mikroprosesor 8085, bendera-bendera itu harus disimpan di dalam register F, seperti ditunjukkan dalam Gambar 12-5. Sebagai contoh, bila isi register F adalah:
                                    F = 0100 0101
Maka kita ketahui bahwa keadaan bendera-bendera adalah:
            S = 0    Z = 1   P = 1    CY = 1

3.8 Instruksi Register Diperluas [Extended Register Instrucion]
Beberapa instruksi SAP-3 menggunakan pasangan register CPU untuk memproses data 16-bit. Dengan kata lain, selama eksekusi instruksi-instruksi tertentu, register-register CPU disusun dalam kaskade (susunan berderet), seperti diperlihatkan dalam Gambar 12-6.Pembentukan pasangan register selalu mengikuti ketentuan sebagai berikut: B berpasangan dengan C, D dengan E, dan H dengan L. Apa yang akan diuraikan dalam pasal ini adalah  instruksi-instruksi SAP-3 yang menggunakan pasangan register (register pairs). Semua instruksi tersebut mengandung huruf X di dalamnya, yang merupakan tanda bagi “extended register” (register yang diperluas) yaitu pasangan register.



B
C
                                                                                   
D
E

H
L

Gambar 12-6. Pasanga-pasangan Register

LXI

Karena ada tiga pasangan register (BC, DE, dan HL), maka instruksi LXI (load extended immediate); artinya isi pasangan register segera)  akan mempunyai format:

                                    LXI B, dble
                                    LXI D, dble
                                    LXI H, dble
Dengan B mewakili pasangan BC
             D mewakili pasangan DE
             H mewakili pasangan HL.
             Dble menyatakan byte rangkap (double byte).
Instruksi LXI dipakai untuk mengisi pasangan register tertentu dengan byte rangkap. Misalnya dalam pelaksanaan instruksi.
                        LXI B,90FFH
Register B dan register C akan didisi dengan byte byte atas dan byte bawah sehingga terjadi
                        B = 90H
                        C = FFH
Dengan membayangkan pasangan B dan C tersusun seperti dalam Gambar 12-6, kita dapat menuliskan
                        BC = 90FFH




DAD

DAD adalah singkatan dari double-edd (penjumlahan rangkah). Instruksi ini mempunyai tiga format.
                        DAD B
                        DAD D
                        DAD H

Dengan B mewakili BC
             D mewakili DE
             H mewakili HL
Dengan B mewakili BC
             D mewakili DE
             H mewakili HL
Instruksi DAD menjumlahkan isi dari pasangan register tertentu dengan isi dari pasangan pasangan register HL. Hasil penjumlahannya disimpan dalam pasangan register HL. Misalnya
                        BC = F521H
                        HL = 0003H
Maka eksekusi instruksi DAD B menghasilkan
                        HL = f524H
Sebagaimana dapat anda diikuti; F521H dan 0003H dijumlahkan menjadi f524H. Hasil ini disimpan dalam pasangan register HL.
Instruksi DAD mempengaruhi bendera CY. Bila ada pindahan yang terdapat dalam pasangan register HL, maka bendera CY akan dipasang; bila tidakk ada pindahan, bendera CY akan tetap berada dalam keadaan reset. Sebagai contoh, misalkan

                        DE = 0001
                        HL = FFFFH
Eksekusi DAD D akan memberikan hasil:
                        HL = 0000H
                        CY = 1
Khususnya, instruksi DAD H menghasilkan penjumlahan data dalam pasangan register HL dengan dirinya sendiri. Dengan kata lain, DAD H menduakalikan nilai. Jika
                        HL = 1234H
Maka sebuah instruksi DAD H menghasilkan
                        HL = 2468H

INX dan DCX
INX berarti penambahan angka satu pada isi pasangan register (inclement the extended register). Dan DCX menyatakan  penurunan angka satu dari isi pasangan register (descrement the extended register). Instruksi penambahan yang diperluas ini terdiri dari
                        INX B
                        INX D
                        INX H
Dengan B menyatakan BC
             D menyatakan DE
             H menyatakan HL
Instruksi-instruksi DCX mempunyai  format yang sama  : DCX B, DCX D, dan DCXH.
Instruksi INX dan DCX tidak mempengaruhi bendera. Sebagai contoh misalkan :
                                    BC = FFFFH
                                    S = 1
                                    Z = 0
                                    P = 1
                                    CY = 0
Maka eksekusi INX  B  akan menghasilkan
                                    BC = 0000H
                                    S = 1
                                    Z = 0
                                    P = 1
                                    CY = 0
Perhatikan bahwa semua bendera tidak terpengaruh.
Dapat dirangkumkan bahwa instruksi-instruksi register yang diperluas meliputi :  LX1, DAD, INX dan DCX. Dari tiga pasangan register itu, pasangan register HL merupakan kombinasi yang bersifat khusus. Hal ini akan dijelaskan dalam pasal berikutnya.





3.9 Instruksi Tidak Langsung [Indirect Instuction]
Telah dibahas dalam bab 10, bahwa pencacah program berfungsi sebagai penunjuk instruksi (inctruction pointer), yang menunjukkan lokasi memori dari instruksi tersimpan yang berikutnya.
Berbeda dengan pasangan register  HL ; isinya menunjukkan lokasi-lokasi memori dari data tersimpan. Dengan kata lain SAP-3 memiliki beberapa instruksi yang menggunakan pasangan register HL sebagai penunjuk data (data pointer)

Visualisasi Penunjuk  HL

Gambar 12-7a memperlihatkan sebuah memori 64K; yang memiliki 65.536 register memori atau lokasi memori penyimpan data. Lokasi memori yang pertama adalah M0000H, berikutnya M0001H dan seterusnya. Lokasi memori dengan alamat HL adalah  MHL.

Pada beberapa instruksi SAP-3,  isi dari pasangan register HL digunakan sebagai alamat data  yang tersimpan dalam memori. Yaitu, isi pasangan register HL dikirimkan kepada MAR, dan kemudian suatu operasi membaca atau menulis memori dilaksanakan.  Jadi,  seolah-olah pasangan register HL itu merupakan penunjuk lokasi memori yang diinginkan, sebagaimana diperlihatkan dalam gambar 12-7a.
            Sebagai contoh, misalkan
                                    HL = 2050H
Bila HL berperan sebagai penunjuk, maka isinya (2050H) akan dikirimkan ke MAR selama satu keadaan T. Pada keadaan T berikutnya, lokasi memori beralamat 2050H dikenakan operasi membaca atau menulis. Seperti diperlihatkan oleh gambar 12-7b, pasangan register HL menunjuk kepada lokasi memori yang dikehendaki.



Pengalamatan Tak Langsung

Dengan pengalamatan langsung seperti LDA  5000H  dan STA 6000H, seorang pemrogram mengetahui alamat dan dari lokasi memori karena instruksi itu sendiri secara langsung mencantumkan alamat tersebut. Namun dengan instruksi yang menggunakan penunjuk HL, pemrpograman tidak mengetahui alamat yang bersangkutan; yang ia ketahui adalah bahwa alamat tersimpan dalam pasangan register HL. Bilamana suatu instruksi menggunakan penunjuk HL, maka pengalamatan seperti ini disebut pengalamatan tak  langsung (indirect addressing).

Pembacaan Tak Langsung

Salah satu dari instruksi-instruksi tak langsung adalah
                                    MOV reg, M
Dengan reg  = A,B,C,D,E,H atau L
             M = MHL
Instruksi ini mengisi register tertentu dengan data yang alamatnya ditunjukkan oleh HL. Setelah eksekusi instruksi tersebut , register itu akan berisi MHL
Sebagai contoh, misalkan
            HL = 3000H   dan M3000H = 87H
Gambar12-8. Contoh Pengalamatan tak langsung

Maka eksekusi
                        MOV C,M
Menghasilkan
                        C =  87H

Gambar 12-8a memperlihatkan cara visualisasi dari eksekusi instruksi MOV C,M. penunjuk HL menunjuk pada data 87H, yaitu data yang dibaca untuk dimasukkan kedalam register C

Penulisan Tak Langsung

Instruksi MOV tak langsung yang lain adalah
                                    MOV M, reg
Dengan M = MHL
              Reg = A, B, C, D, E, E, H, atau L
Instruksi ini akan mengisi lokasi memori yang alamatnya ditunjuk oleh HL, dengan isi dari register tertentu. Setelah eksekusi instruksi tersebut, kita akan mendapatkan
                                    MHL = reg
Sebagai contoh, misalkan
                                    HL = E300H
                                    B = F2H
Maka eksekusi dari MOV M,B menghasilkan
                                    ME3000H = F2H
Gambar 12-8c memberikan ilustrasi dari operasi yang bersangkutan

Instruksi Segera Tak Langsung

Kadang-kadang kita ingin menuliskan data segera (immediate data) ke dalam lokasi memori yang dialamatkan oleh penunjuk HL. Instruksi yang digunakan dalam hal ini ialah
                                    MVI M, byte.
Jika dimisalkan HL = 3000H, maka eksekusi dari
                                    MVI M,87H
Akan menghasilkan
                                    M3000H =87H






3.10 Instruksi Tumpukan  [Stack Instruction]
Suatu tumpukan (stack) adalah bagian dari memori yang disediakan terutama bagi penyimpanan alamat-kembali. SAP-2 memiliki sebuah tumpukan sebab alamat FFFEH dan FFFH semata-mata hanya dipakai untuk menyimpan alamat-kembali dari suatu pemanggilan subrutin. Gambar 12-9a memperlihatkan cara visualisasi tumpukan SAP-2.
Pada SAP dijumpai struktur tumpukan yang berbeda. Pemrograman dapat memutuskan dari awal, dimana menempatkan lokasi tumpukan dan berapa besar tumpukan yang akan dipakainya. Sebagai contoh, Gambar 12-9b memperlihatkan suatu tumpukan yang beralamat anatara 20E0H dan 20FFH. Tumpukan ini mengandung 32 lokasi memori guna menyimpan alamat kembali. Para pemrogram dapat menempatkan lokasi tumpukan dimana saja dalam memori, akan tetapi sekali tumpukan telah ditentukan, mereka tidak dapat lagi menggunakan bagian memori itu untuk menempatkan program dan data.  Sebaliknya, tumpukan menjadi suatu daerah khusus di dalam memori, yang digunakan sebagai tempat penyimpanan alamat kembali dari instruksi panggilan subrutin.

Penunjuk Penumpukan

Instruksi-instruksi yang melaksanakan pembacaan dan penulisan ke dalam tumpukan disebut instruksi tumpukan (stack instructions). Ini meliputi: PUSH, POP, CALL dan lain-lainnya yang akan dibicarakan. Instruksi tumpukan menggunakan pengalamatan tak langsung karena adanya register 16-bit dengan sebutan penunjuk tumpukan (stack pointer, disingkat SP), yang menahan (menyimpan sementara) alamat dari lokasi memori yang dikehendaki. Sebagaimana ditunjukkan dalam Gambar 12-9c, penunjuk tumpukan berfungsi serupa dengan penunjuk HL karena isi penunjuk tumpukan itu menunjukkan lokasi memori yang hendak diakses. Andaikan
                                    SP = 20FFFH

Gambar 12-9. (a) Tumpukan SAP 2  (b) Contoh Tumpukan  (c) Petunjuk Tumpukan (d) SP menunjuk ke 20FFH

Penunjuk tumpukan menunjuk ke lokasi memori M20FFH (lihat Gambar 12-9d). Bergantung pada instruksi tumpukan, sebuah byte akan dibaca dari, atau dituliskan ke dalam lokasi memori tersebut.
Untuk inisialisasi penunjuk tumpukan, kita dapat menggunakan instruksi “isi segera”
                                    LXI SP, dble
Misalkan, jika kita menggunakan instruksi
                                    LXI SP,20FFH
Maka penunjuk tumpukan akan diisi dengan 20FFH.

PUSH

Isi dari akumulator dan register bendera dikenal sebagai kata status program (program status word, disingkat PSW). Format untuk kata ini:
                                    PSW = AF
Dengan A = Isi akumulator
             F = isi register bendera
Isi akumulator merupakan byte tinggi, dan isi register bendera merupakan byte rendah. Dalam pemanggilan subrutin, biasanya kita harus menyimpan kata status program, sehingga program utama dapat berlanjut lagi setelah subrutin selesai dieksekusi. Kita juga diperbolehkan menyimpan isi register-register yang lain.
Instruksi PUSH (dorong) dipakai guna menyimpan data dalam suatu tumpukan. Berikut ini adalah empat instruksi PUSH yang tersedia.
                                    PUSH B
                                    PUSH D
                                    PUSH H
                                    PUSH PSW
Dengan B mewakili BC
              D mewakili DE
              H mewakili HL
            PSW mewakili kata status program.

Bila instruksi OUSH dilaksanakan, maka akan terjadi hal-hal sebagai berikut:
1.                  Penunjuk tumpukan dikurangi satu untuk memperoleh harga baru yaitu SP-1
2.                  Byte tinggi dalam pasangan register tertentu disimpan di dalam MSP-1
3.                  Penunjuk tumpukan tumpukan diturunkan lagi menjadi SP-2
4.                  Byte rendah dari pasangan register tersebut disimpan di dalam MSP-2

Sebagai contoh, misalnya
      BC = 5612H
      SP = 2100H
Bila PUSH B dilaksanakan, maka
1.                  Penunjuk tumpukan diturunkan menjadi 20FFH.
2.                  Byte tinggi 56H disimpan pada lokasi 20FFH (Gambar 12-10a)
3.                  Penunjuk tumpukan diturunkan lagi menjadi 20FEH
4.                  Byte bawah 12H disimpan pada lokasi 20FEH (Gambar 12-10b)

Sebagai contoh yang lain, umpamakan
                        SP = 2100H
                        AF = 1234H
                        DE = 5678H
                        HL = 9A25H
Maka eksekusi dari
                        PUSH PSW
                        PUSH D
                        PUSH H

Akan mengisi tumpukan sebagaimana diperlihatkan dalam GAMBAR 12-10c. PUSH pertama menyimpan 12H pada lokasi 20FFH dan 34H pada lokasi 20FEH. PUSH berikutnya menyimpan 56H pada lokasi 20FDH dan 78H pada 20FCH. PUSH terakhir menyimpan 9AH pada lokasi 20FBH dan 25H pada lokasi 20FAH. Perhatikan bagaimana tumpukan itu disusun; setiap PUSH yang baru akan mendorong data ke dalam tumpukan.

 

POP

Terdapat empat instruksi POP (sembulan)

                        POP B
                        POP D
                        POP H
                        POP PSW.

Gambar 12-10

Dengan B mewakili BC
             D mewakili DE
             H mewakili HL
             PSW mewakili kata status program

Sebagai akibat pelaksanaan instruksi POP akan berlangsung hal-hal berikut :
1.                  Byte rendah dibaca dari lokasi memori yang dialamati oleh penunjuk tumpukan. Byte ini disimpan di bagian bawah dari  pasangan register yang ditentukan
2.                  Penunjuk tumpukan ditambah dengan angka satu
3.                  Byte tinggi dibaca dan disimpan di bagian  atas  dari pasangan register  yang ditentukan itu
4.                  Penunjuk tumpukan ditambah dengan angka satu.

Urutan  operasi di atas akan  diperjelas  melalui contoh  di bawah ini. Andaikan tumpukan  terisi seperti  dalam Gambar 12-10c  dengan penunjuk tumpukan  berada pada 20F AH. Maka  eksekusi POP B  akan menyebabkan hal-hal sebagai  berikut :
1.                  Byte 25H dibaca  dari lokasi 20 F AH (Gambar 12-10c)) dan disimpan  di dalam register C
2.                  Penunjuk tumpukan ditambah dengan  satu sehingga menjadi  20FBH byte 9AH dibaca dari lokasi 20FBH (Gambar 12-10d) dan disimpan  di dalam register B. Pasangan register BC  sekarang berisi

BC = 9A25H

3.                   Penunjuk tumpukan  ditambah dengan satu  menjadi 20FCH (Gambar 12-10e)

Setiap kali kita melaksanakan sebuah instruksi POP-2 byte data akan menyembul keluar dari tumpukan, Bila instruksi POP PSW dan POP H dilaksanakan dalam Gambar 12-10e, isi register terakhir akan menjadi

                              AF = 5678H
                              HL = 1234H
Dan penunjuk tumpukan akan berisi
                              SP = 2100H




















BAB IV
PROSESOR DLX
4.1 Pengertian Processor DLX
Prosesor DLX adalah prosesor dengan tujuan umum (general purpose prosessor) yang dirancang oleh John Hennssy dan David Peterson (desainer utama dari MIPS dan RISC Berkeley, dua contoh   Benchmark   desain   RISC)   dalam   bukunya   “Computer   Architecture   A   Quantitative Approach” pada tahun 1996. Prosesor DLX pada dasarnya adalah versi sederhana dari arsitektur MIPS dan sangat mirip dengan itu, dengan 32-bit sederhana load arsitektur. Arsitektur dan instruksinya tidak terlalu rumit tapi sudah mewakili komputer modern yang lengkap. Prosesor DLX adalah prosesor yang bertipe-RISC (Reduce Instruction Set Computer) yang memiliki 32 buah register dengan masing-masing panjangnya 32 bit. Dua buah register mempunyai fungsi khusus, yaitu register 0 selalu bernilai nol. Register ini digunakan sebagai operand sumber jika memerlukan nilai nol. DLX juga memiliki program counter dengan panjang 32 bit.

4.2 Arsitektur Prosesor DLX
Prosesor DLX menggunakan arsitektur ambil-simapan (load-store) dengan lima tahap pipeline (seperti desain MIPS ) untuk meneyelesaikan suatu instruksi. Kelima tahap tersebut adalah:
Instruction Fetch (IF), Instruction Decode (ID), Execute (EX), Memory Access (MEM), dan Write Back (WB). Manfaat dari rancangan ini adalah ketika proses fetch instruksi dari memori akan lebih mudah. Pengambilannya pun dilakukan dengan membaca 4-byte data dalam memory.
Lima komponen utama prosesor DLX masing-masing memiliki fungsi yang berbeda yaitu :
1. PC (Program Counter) : register yang berfungsi menampung nilai yang digunakan untuk meniunjuk alamat instruksi yang akan dieksekusi. Register ini merupakan offset dari alamat dasar instruksi sekaligus data.
2. Memori : terdiri dari dua bagian yaitu memori untuk instruksi yang berisi kumpulan seluruhinstruksi dan memori untuk data yang berfungsi untuk menyimpan data.
3. Register : kumpulan register 32 bit tempat menyimpan nilai semsntara.
4. ALU (Arithmatic and Logical Unit) : tempat dilakukannya operasi aritmatika dan logic.
5. Unit Kendali (Control Unit) : unit kendali terdiri dari dua bagian yaitu register instruksi(instruction   register):   register   tempat   menyimpan   sementara   instruksi,   dan   pengendali(controller): bagian yang menerjemahkan instruksi dan mengeluarkan set kendali pada seluruh register untuk menjalankan suatu instruksi.
Prosesor ini merupakan prosesor dengan sistem yang berorientasi pada 32-bit word. Maksudnyaadalah CPU mengandung ALU 32-bit, 32 buah Register dengan panjang 32 bit dalam registerfile, tiga buah bus 32-bit, register khusus masing-masing 32-bit (PC, IR, MAR, MDR, IAR,TEMP) dan tiga buah register (A,B dan C)
4.3 Format Instruksi DLX
Ada tiga format instruksi di DLX : Tipe-R, Tipe-I, dan Tipe-J. Semua format instruksi dibedakan oleh kode operasi (operation code-opcode), namun informasi lain dalam instruksi bervariasi menurut format.
1.Tipe-R (register)
Instruksi menetapkan tiga register pada instruksi, dua register sumber dan satu register tujuan terdapat dalam 32-bit word.
Bagian-bagian instruksi tipe-R :
         Kode opersai : 6 bit dari bit 0 – 5
          sumber 1 (rs1) : 5 bit dari bit 6 – 10
         Register sumber 2 (rs 2) : 5 bit dari bit 11 – 15
•     Fungsi : 11 bit dari 21 – 31
2.Tipe-I (Immediate)
Instruksi membutuhkan dua register dalam sebuah intruksi yaitu  satu register sumber, satu register tujuan, dan 16-bit.
Bagian-bagian instruksi tipe-I :
         Kode operasi : 6 bit dari 0 – 5
         Register sumber (rs) : 5 bit dari bit 6 – 10
         Register tujuan (rd) : 5 bit dari bit 11 - 15
•     Nilai : 16 bit dari bit 16 – 31
3.Tipe-J (jump)
Instruksi hanya terdiri dari :
Kode operasi (opcode) : 6 bit dari 0 – 5
Alamat (operand) : 26 bit dari 6 – 31, yang digunakan untuk menghitung alamat tujuan

4.4 Hambatan Pipeline DLX
Terdapat situasi, disebut hazard (risiko), yang mencegah instruksi berikutnya dalam rangkaian instruksi pada proses eksekusi selama siklus clock yang ditandainya. Hazard mengurangi kinerja kecepatan ideal yang dicapai oleh pipelining. Terdapat tiga kelas hazard:
a. Data hazard  disebabkan oleh data yang diperlukan pada proses selanjutnya masih harus Menunggu nilai terbaru dari proses sebelumnya.
b. Structure   hazard  diakibatkan   oleh  tidak  bisanya   menulis  dan  membaca  register  secara bersamaan. Masalah ini terjadinya akibat konflik sumber daya pada saat perangkat keras tidak dapat mendukung semua kemungkinan kombinasi instruksi dalam eksekusi yang simultan.
c.  Control hazard  terjadi akibat terjadinya proses pencabangan, sehingga prosesor mengalami kesulitan untuk menentukan tahap IF berikutnya, ketika harus menunggu hasil perbandingan operand instruksi pencabangan. Masalah ini timbul dari pipelining  pencabangan dan instruksi lain yang mengubah PC.  Hazard dalam pipeline menyebabkan pipeline harus melakukan stall. Dalam mengatasi hazard sering   kali   perlu   diizinkan   untuk   memroses   beberapa   instruksi   dalam  pipeline,   sementara instruksi lain harus menunggu (delay). Pada saat sebuah instruksi di-stall, semua instruksi yang keluar sesudah instruksi tersebut di-stall juga. Instruksi yang muncul sebelum instruksi yang di- stall  harus terus mengikuti proses  pipeline. Hasilnya, tidak ada instruksi baru yang di-fetch selama stal



BAB V
VHDL-Bahasa Pemodelan Perangkat Keras


5.1 Pengertian VHDL
VHDL singkatan dari VHSIC Hardware Description Language dan merupakan sebuah bahasa pemrograman yang digunakan untuk mendefinisikan hardware elektronika digital. Pada pertengahan tahun 80’an, Departemen Pertahanan US dan IEEE mensponsori pengembangan bahasa pemrograman ini dengan tujuan untuk mengembangkan VHIC. Saat ini, VHDL telah menjadi salah satu bahasa standar industri elektronika yang digunakan untuk menggambarkan sistem digital.

Meskipun sepintas terlihat sama, ada beberapa hal yang membedakan VHDL dengan bahasa pemrograman lain pada umumnya. VHDL berhubungan dengan gerbang logika dimana setiap perintah dieksekusi secara parallel dengan segera saat adanya inputan. Sebuah program HDL meniru perilaku fisik, biasanya digital, sistem. Hal ini juga memungkinkan penggabungan spesifikasi waktu (gerbang penundaan) serta untuk menggambarkan sistem sebagai suatu interkoneksi dari berbagai komponen.

5.2 Arsitektur mode port VHDL
Ports Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode sebagai berikut: port ( …list of port declarations… ); Deklrasi port ini mendefinisikan jenis dari koneksi dan arah yang sesuai. Misalnya, deklarasi port untuk sebuah input bit adalah 1, maka digambarkan sebagai berikut : in1 : in bit; Dan jika model tersebut memiliki 2 input (in1 dan in2) dan satu output (out1), maka deklarasi ports dapat digambarkan beriku: port ( in1, in2 : in bit; out1 : out bit ); Dengan menngunakan ports maka titik koneksi diantara entities akan berlangsung dengan efektif dalam hal proses koneksi entities satu sama lain. Selain itu, dengan menggunakan ports akan menjadikan sinyal yang ada menjadi efektif serta cocok digunakan dalam model VHDL.
Mode port dalam vhdl:
.In: sinyal masuk hanya bias dibaca
.out: sinyal keluar,hanya bias ditulis
.buffer: sinyal data dibaca dan hanya memiliki 1 driver
.inout: sinyal dua arah dapat ditulis maupun dibaca
Deklarasi Komponen VHDL:
 Pada bagian ini akan dibahas fungsi komonen dalam arsitektur,pada contoh berikut entitas Full_Adder dapat dturunkan langsung dari CARRY_IN bersama dengan sinyal SUM dan CARRY yang berperan sebagai keluaran.
Full_Adder ini terdiri dari beberapa submodule yang harus didefinisikan terlebih dahulu dalam deklarasi komponen semua tipe modul yang akan digunakan harus dideklarasikan. Deklasi ini harus dilakukan sebelum kata kunci ‘begin’
Deklarasi komponen dapat dibandingkan dengan definisi soket yang dapat digunakan sekali atau beberapa kali dan disisipkan kemudian pada entitas yang sesuai. Dalam contoh dibawah ini hanya ada dua soket yang berbeda nama soket HALF_ADDER dan 0R_GATE nama lain yang dapat digunakan tetapi lebih baik menggunakan nama entitas yang akan digunakan kemudian untuk memudahkan membaca.
5.3 Konfigurasi VHDL
Konfigurasi: Tugas dan Aplikasi Keterhubungan antara entitas dan arsitektur yang digunakan pada simulasi, pada awalnya dibangun dalam konfigurasi. Konfigurasi adalah object VHDL yang disimulasikan atau disintesis. Nama komponen harus sesuai dengan nama entitasnya. Nama port, mode dan tipe data harus serupa-urutan port dalam deklarasi komponen dibaikan. Contoh berikut menunjukkan konfigurasi dasar untuk arsitektur struktural. Terdapat simulator yang mengharuskan adanya definisi konfigurasi yang eksplisit untuk jenis entitas level-atas ini. Konfigurasi mengacu pada entitas tertentu, pada contoh ini FULL_ADDER. Arsitektur STRUCT dipilih dengan statemen ‘for’ yang pertama. Ketika tidak ada perintah konfigurasi tambahan diberikan digunakan aturan asal untuk semua komponen.
Konfigurasi: Contoh Berikut ini contoh rinci kode VHDL untuk memahami konfigurasi yang lebih rinci: Pada bagian akhir, Full_adder akan disimulasikan lagi. Struktur Full_adder ini sama dengan contoh sebelumnya, yaitu menggunakan dua buah half-adder. Setiap half _adder yang dideklarasi kan memiliki dua sinyal tipe data ‘bit’ sebagai input dan output, berturut-turut. Port komponen dihuubungkan dengan sinyal arsitektur berdasarkan asosiasi posisi, yaitu sinyal pertama dihubungkan dengan port pertama. Di sini digunakan dua entitas A dan B yang juga memiliki nama arsitektur yang berbeda RTL dan GATE. Kedua entitas tersebut sesuai dengan port pada deklarasi komponen.
Konfigurasi: Contoh 2 Entitas dan arsitekture untuk komponen yang ada di bawahnya diplih dalam liupan ‘for’ pada statemen for Nama pertama setelah kata kunci ‘for’ adalah nama instantiasi komponen, diikuti oleh ’:’ (titik dua) dan nama komponennya. Kata kunci ‘all’ dapat digunakan juga jika semua instantiasi komponen akan disebutkan. Dalam liupan ‘for’, statement yang digunakan memilih entitas dengan menentukan jalur absolut ke objek. Tanpa perubahan eksplisit, semua objek VHDL dikompilasi ke dalam librari kerja. Arsitekture untuk entitas yang dipilih ditutup dengan sepasang ‘(‘dan’)’. Ketika nama port entitas B tidak sama dengan nama port dari deklarasi komponen, maka diperlukan statemen port map. Dimungkinkan juga untuk memetakan nama dangan asosiasi posisi maupun asosiasi nama. Asosiasi nama lebih disarankan untuk memudahkan pembacaan. Dalam kasus ini, parameter formal adalah nama port entitas, sementara nama port komponen digunakan sebagai parameter aktual.
Perwujudan Komponen: Asosiasi Penamaan Sinyal Selain menggunakan asosiasi posisi seperti yang telah dijelaskan sebelumnya kita mungkin juga memetakan port berdasar asosiasi nama. Pada asosiasi penamaan urutan sinyal tidak kaku, tidak harus tetap. Nama port dari deklarasi komponen atau disebut ‘formal’, diasosiasikan dengan menggunakan tanda ‘=>’ dengan sinyal entiras (‘actual’). Dalam contoh berikut , port keluaran SUM dideklarasikan pada urutan ketiga dalam deklarasi komponen. Dalam statemen port map, port ini dihubungkan dengan sinyal W_SUM pada tempat kedua.















No comments:

Post a Comment