KONVERSI BILANGAN

Pengenalan Komputasi

Sasaran

 

Setelah anda menamatkan bab ini, diharapkan anda dapat :

– Mengkonversi nilai bilangan dari/ke basis-2, basis-10, dan basis-16.

– Menambah dan mengurangi bilangan Hex.

– Menambah bilangan biner

– Menjabarkan bilangan-bilangan biner dalam komplement ke-2.

– Menjabarkan string alphanumeric ke dalam kode ASCII.

– Menjelaskan operasi dari gerbang-gerbang AND, OR, NOT, XOR, NAND, NOR.

– Menggunakan gerbang logika untuk membuat rangkaian sederhana.

– Menjelaskan pebedaan antara Bit, Nibble, Byte dan Word.

– Memberikan definisi matematik yang akurat tentang terminologi kilobyte, megabyte, gigabyte, dan terabyte.

– Memaparkan kegunaan komponen utama dan menjelaskan kegunaan type-type bus.

– Mejelaskan aturan yang digunakan CPU dalam System komputer.

 

Untuk mengerti software dan hardware dari system yang berbasis mikrokontroller, sesorang paling pertama harus memahami konsep paling dasar yang digunakan pada desain komputer. Pada bab ini (yang pada tradisi pada bilangan system komputer selalu dimulai dari 0 dan bukanlah 1), hal mendasar adalah membahas bilangan dan system coding. Setelah mengenalkan pada gerbang logika, kita akan mengulas proses kerja di dalam komputer. Dan terkahir adalah kita akan memberikan sejarah dari arsitektur CPU. Sehingga pembaca yang budiman kemudian dapat memiliki latar belakang yang cukup sebelum beranjak pada bab selanjutnya, yakni dengan membaca bab ini dengan seksama dan menyeluruh.

 


 

 

SubBAB 0.1: Numbering anda Coding Systems

 

Di mana manusia selalu menggunakan aritmatika berbasis 10 (desimal), sementara itu sebuah komputer menggunakan state, dan berbasis 2. Dalam bab ini kita akan menjelaskan bagaimana mengubah system desimal menjadi system biner, dan juga sebaliknya. Dan padanan yang setara dari bilangan-bilangan biner, disebut dengan heksa-desimal, juga akan kita bahas. Dan terakhir adalah format biner pada kode alphanumeric, yang disebut dengan ASCII, akan kita gali kemudian.

 

 

Decimal and binary number systems

 

Konon kabarnya ada splekulasi bahwa kita manusia menggunakan bilangan berbasis 10, karena dipadankan dengan jumlah jari manusia yang berjumlah 10 itu. Namun di luar hal itu, system bilangan biner yang digunakan oleh komputer bukanlah karangan dan spekulasi. System biner dalam komputer digunakan karena 1 dan 0 adalah representasi dari status level tegangan sebagai On atau Off. Di mana basis-10 memiliki beberapa symbol, 0, 1, 2, 3, … ,9. Sedangkan dalam basis-2 hanya menggunakan simbol 1 dan 0. Hal ini juga yang mewakili pada masing-masing digit. 1 digit dalam basis-10 bisa diwakili oleh simbol 0 s/d 9. Sedang 1 digit pada bilangan biner hanya diwakili nilai 0 atau 1. Nah.. dari digit biner inilah kemudian diingatkan orang menyebutnya menjadi bit (Biner digit).

 

 

Mengubah Desimal menjadi Biner

 

Satu metode pengubahan yang digunakan pada konversi desimal ke biner adalah membagi bilangan desimal dengan 2 secara berulang-ulang. Dengan terus memantau sisa dari pengurangannya. Proses ini terus dilakukan sampai bilangan menjadi 0 atau Zero. Sedang sisanya kemudian dituliskan pada angka yang terakhir. Hal ini di-demontrasi-kan pada Contoh 0-1.

 

Contoh 0-1
 

Ubah 25 desimal (atau 2510 ) menjadi biner.

 

Jawaban:

 

Hasil     Sisa

25/2 =        12        1       LSB (Least Significant bit)

12/2 =        6         0

6/2 =        3         0

2/2 =        1         1

1/2 =        0         1       MSB (Most Significant bit)

 

Jadi, 2510 = 110012.

 

 

 

Mengubah Biner ke Desimal

 

Untuk mengubah bilangan biner ke desimal, hal terpenting adalah mengerti konsep dari besaran setiap posisi digit. Pertama dengan analoginyaa, menyimak bersaran nilai dalam basis-10, seperti yang ada pada diagram di bawah ini.

 

74068310 =

 

3 x 100 =      3

8 x 101 =     80

6 x 102 =    600

0 x 103 =   0000

4 x 104 =  40000

7 x 105 = 700000 +

740683

 

1101012 ======    Desimal     Biner

1 x 20 =  1×1  = 1               1

0 x 20 =  0x2  = 0              00

1 x 20 =  1×4  = 4             100

0 x 20 =  0x8  = 0            0000

1 x 20 =  1×16 = 16          10000

1 x 20 =  1×32 = 32 +       100000

0 53         110101

 

Mengerti besaran dari setiap bit dalam bilangan biner membuatnya menjadi mudah untuk menambahkan mereka semua untuk mendapatkan persamaannya dalam desimal, seperti yang ditunjukkan pada Contoh 0-2.

 

Contoh 0-2
 

Ubahlah bilangan biner 110012 menjadi desimal

 

Jawaban :

 

Besaran: 24 23 22 21 20

Digit:   1    1   0   0   1

Jumlah:  16 + 8 + 0 + 0 + 1 = 2510

 

 

Mengerti besaran yang sesuai untuk setiap posisi bit bilangan biner membuat sesorang mudah untuk mengkonversi bilangan desimal menjadi bilangan biner secara langsung melalui proses pembagian berulang. Hal ini dicontohkan pada Contoh 0-3

 

Contoh 0-3
 

Ubahlah bilangan desimal 3910 menjadi biner

 

Jawaban :

 

Jumlah:  32 + 0 + 0 + 4 + 2 + 1 = 39

Besaran: 24 24 23 22 21 20

Digit:   1    0   0   1   1   1

 

hasilnya adalah 1001112

 

 

 

 

System Heksadesimal

 

System heksadesimal ini dalam literatur komputer juga disebut dengan Basis-16, digunakan untuk merepresentasikan bilangan biner dengan baik ke dalam bilangan manusia yang mudah diingat dan lebih ringkas. Misalnya manusia akan lebih untuk mengingat dan memahami bilangan 896h dibanding dengan bilangan yang sama, yakni biner 100010010110. System biner memliki simbol 0 dan 1 untuk merepresntasikan keadaannya. Sementara itu dalam bilangan basis-10, terdapat 10 buah simbol mulai dari 0 s/d 9. Sedang pada heksadesimal (basis-16) memiliki 16 simbol. Yang simbol pertamanya adalah seperti basis-10 yakni 0 s/d 9 sementara itu 6 symbol berikutnya adalah A, B, C, D, E, dan F. Table 0-1 menunjukkan persamaan dari bilangan biner, desimal, dan heksadesimal untuk merepresentasikan nilai 0 s/d 15.

 

Tabel 0-1: System bilangan Basis-16

Desimal   Biner    Hex

0         0000     0

1         0001     1

2         0010     2

3         0011     3

4         0100     4

5         0101     5

6         0110     6

7         0111     7

8         1000     8

9         1001     9

10        1010     A

11        1011     B

12        1100     C

13        1101     D

14        1110     E

15        1111     F

 

 

Mengubah antara Biner dan Hex

 

Untuk mengubah kembali bilangan biner sebagaimana ekuivalensinya sebagai bilangan haksadesimal, dimulai dari kanan, dan mengelompokkan setiap 4 digit, dan menggantikan 4-bit biner tersebut dengan persamaannya sebagai bilangan Hex sepeti yang ditunjukkan pada tabel 0-1. Utuk mengubah dari hex ke biner setiap digit hex harus diganti dengan persamaannya sebagai 4 bit biner seperti pada table 0-1.

Lihat contoh 0-4 dan 0-5

 

Contoh 0-4
 

Ubah biner 100111110101 dalam Hex.

 

Jawaban:

 

Pertama nilai di kelompokkan dalam rangkaian 4-bit menjadi:

1001 1111 0101

 

Kemudian setiap kelompok diganti dengan padanannya dalam hex, menjadi:

1001 1111 0101

9    F    5

 

Sehingga, 100111110101 biner  = 9F5 heksadesimal

 

 

 

Contoh 0-5
 

Ubah bilangan Hex 29B menjadi biner.

 

Jawaban:

 

2    9    B

=   0010 1001 1011

 

kemudian mengabaikan digit-digit 0 di depan, maka menjadi

29Bh = 1010011011b

 

 

 

Mengubah bilengan desimal ke hex

 

Untuk mengubah nilai bilangan hex dapat dilakukan dengan dua cara.

1. Ubahlah desimal menjadi biner. Dan kemudian menjadi Hex. Seperti yang ditunjukkan pada Contoh 0-6.

2. Mengubah langsung dari desimal menjadi hex dengan melakukan pembagian terus, dengan memantau isi sisa. Percobaan ini saya serahkan pada para pembaca yang budiman.

 

Contoh 0-6
 

(a) Ubah 4510 menjadi Hex.

 

Seperti pada contih 0-1 maka diketemukan

 

32 16 8 4 2 1 mengubah menjadi biner

1     0     1    1    0    1    32 + 8 + 4 + 1 = 45

 

4510 = 001011012 = 2D hex

 

(b) Ubah 62910 menjadi Hex.

 

Seperti pada contih 0-1 maka diketemukan

 

512 256 128 64 32 16 8 4 2 1 menjadi biner

1       0      0      1     1     1    0    1    0    1

 

62910 = (512 + 64 + 32 + 16 + 4 + 1) =0010 0111 01012 = 275 hex

 

(a) Ubah 171410 menjadi Hex.

 

Seperti pada contih 0-1 maka diketemukan

 

1024 512 256 128 64 32 16 8 4 2 1

1      1       0      1      0     1     1    0    0    1    0

 

171410 = (1024 + 512 + 128 + 32 + 16 + 2) =0110 1011 00102 = 6B2 hex

 

 

 

 

Mengubah bilengan hex ke desimal

 

Untuk mengubah nilai bilangan hex dapat dilakukan dengan dua cara.

1. Ubahlah hex menjadi biner. Dan kemudian menjadi desimal. Seperti yang ditunjukkan pada Contoh 0-7.

2. Mengubah langsung dari hex menjadi desimal dengan melakukan panambahan besaran dari masing-masing digit.

 

Contoh 0-7
 

Ubahlah bilangan heksadesimal berikut ini menjadi desimal

 

(a) 6B216 = 0110 1011 00102.

 

1024 512 256 128 64 32 16 8 4 2 1

1      1       0      1      0     1     1    0    0    1    0

 

1024 + 512 + 128 + 32 + 16 + 2 = 171410

 

(b) 9F2D16 = 1001 1111 0010 11012.

 

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1

1     0     0    1    1    1    1   1   0   0  1  0  1  1  0  1

 

32768 + 4096 + 2048 + 1024 + 512 + 256 + 32 + 8 + 4 + 1 = 40.74910

 

 

 

Mencacah dalam basis-10, 2 dan 16

 

Untuk menunjukkan hubungan antara masing-masing basis ini. Dalam table 0-2 kita ditunjukkan urutan nilai 0 s/d 31 dalam desimal dan persamaannya dalam biner dan heksadesmal. Perhatikan dalam masing-masing basis yang jika sebuah bilangan ditambah kemudian menjadi digit yang lebih tinggi, maka digit sebelumnya itu akan menjadi 0 dan akan memberikan kelebihan Carry 1 pada digit dengan posisi yang lebih tinggi. Misalnya desimal 9 + 1 = 0 dengan membawa kelebihan Carry 1 pada posisi yang lebih tinggi sehingga menjadi 10. Misal dalam biner 1 + 1 = 0 dengan kelebihan Carry 1. Juga dengan Hex jika F + 1 = 0 dengan Carry.

 

Tabel 0-2: Cacahan (Counting) dalam beberapa basis

Desimal   Biner    Hex

0         10000     0

1         10001     1

2         10010     2

3         10011     3

4         10100     4

5         10101     5

6         10110     6

7         10111     7

8         11000     8

9         11001     9

10        11010     A

11        11011     B

12        11100     C

13        11101     D

14        11110     E

15        11111     F

16        10000    10

17        10001    11

18        10010    12

19        10011    13

20        10100    14

21        10101    15

22        10110    16

23        10111    17

24        11000    18

25        11001    19

26        11010    1A

27        11011    1B

28        11100    1C

29        11101    1D

30        11110    1E

31        11111    1F

 

 

Penambahan bilangan biner dan Hex

 

Dalam hal penambahan bilangan biner adalah merupakan proses yang langsung. Table 0-3 menunjukkan penambahan 2 bit. Bahasan tentang pengurangan pada bilangan biner akan kita lewati, karena semua komputer menggunakan proses penambahan untuk juga digunakan pada proses pengurangan. Jadi maksudnya komputer-komputer itu menggunakan satu rangkaian elektronika untuk digunakan dalamproses penambahan dan sekaligus juga untuk proses pengurangan. Yaknid dengan denambahkan rangkaain kompolement ke-2 (2nd Complement) untuk setiap melakukan Pengurangan. Dalmakata lain, untuk melakuakn “x-y“,komputer akan membuat komplement ke-2 untuk y dan kemudian menambahkannya pada x. Konsep kemplemen ke-2 ini akan kita bahas nanti. Contoh 0-8 menunjukkan proses penambahan pada bilangan biner.

 

Tabel 0-3: Penambahan Biner

A + B     Carry     Sum

0 + 0       0        0

0 + 1       0        1

1 + 0       0        1

1 + 1       1        0

 

Contoh 0-8
 

Tambahkan bilangan biner berikut ini. Periksa dengan padanannya dalam desimal.

 

Jawaban :

 

Biner      Desimal

1101        13

1001 9 +

10110        22

 

 

 

Contoh 0-9
 

Lakukan penjumlahan 2 buah bilangan heksadesimal 23D9 + 94BE ?

 

Jawaban :

 

23D9

94BE +

B897

 

penjelasannya :

1. LSD: 9 + 14(E) = 23   ==> 23 – 16 = 7 dgn Carry

2. 1 + 13(D) + 11(B)= 25   ==> 25 – 16 = 9 dgn Carry

3. 1 + 3 + 4 = 8

4. 2 + 9 = 11(B)

 

jadi hasilnya adalah B897h

 

 

 

Contoh 0-10
 

Lakukan mengurangan 2 buah bilangan heksadesimal 59F – 2B8 ?

 

Jawaban :

 

59F

2B8

2E7

 

penjelasannya :

1. LSD: 15(F) + 8 = 7

2. 9 + 16(pinjam/borrow) – 11(B) = 14(E)

3. 5 – 1 – 1 = 2

 

jadi hasilnya adalah 2E7h

 

 

 

 

Pola biner untuk nilai 0 s/s 9, semua menggunakan alphabet Inggris, huruf Kapital, huruf kecil, dan beberapa kode kontrol dan tanda punctuation. Kelebihan dari system ini adalah dapat digunakan oleh semua komputer. Sehingga informasi ini dapat saling tukar antar komputer. System ASCII menggunakan total 7-bit untuk merepresentasiakan setiap kode-nya. Misalnya 100 0001 adalah dimiliki oleh huruf “A” dan 110 0001 adalah dimiliki oleh huruf kecil “a”. Kemudian, 0 di-imbuh-kan pada Most Significant Bit (MSB) atau bit paling kiri, sehingga total akan membentuk sebuah kode 8-bit. Gambar 0-1 menunjukkan kode ASCII yang dipilih. Daftar lengkap dari kode ASCII dapat dilihat pada Appendix F. Penggunaan ASCII tidak hanya sebagai standar pada penggunaan keyboard di United States dan beberapa negara lainnya, namun juga sebagai standar pada penggunaan pencetakan karakter pada Printer dan penampilan karakter pada Display Monitor.

 

Hex     Symbol      Hex     Symbol

41        A         61      a

42        B         62      b

43        C         62      c

44        D         63      d

..       ..         ..     ..

59        Y         79      y

5A        Z         7A      z

 

Gambar 0-1: Sebahagian kode ASCII

 

Perhatikan bahwa pola kode ASCII dirancang demi kemudahan manipulasi data ASCII. Untuk contohnya, digit 0 sampai 9 direpresentasikan sebagai ASCII 30 s/d 39. Hal ini menjadi sangat mudah untuk mengkonversi ASCII ini menjadi bilangan desimal atau biner dengan membuang angka 3 didepannya. Atau dengan hanya mengambil 4-bit LSB saja pada model biner-nya. Juga perhatikan hubungan antara huruf besar dan huruf kecil. Yakni dengan yang di-representasi-kan huruf “A” s/d “Z” pada 41 s/d 5A dan dengan huruf kecilnya, yakni 61 s/s 7A. Menyimak kode binernya, yang membedakan antara huruf “A” dan “a” adalah bit ke-5. Sehingga dengan demikian menjadi semakin mudahnya kita untuk mengubah Uppercase ataupun Lowercase dari huruf-huruf tersebut.

 

Contoh 0-11
 

Lakukan Pengurangan Hex 59F – 2B8.

 

Jawaban :

 

59F     -=- 15 – 8 = 7

2B8 -=- 25(9+16) – 11 = 14(Eh)

2E7     -=- 4(5-1) – 2 = 2

 

 


 

 

SubBAB 0-2 : Dasar-dasar Digital

 

Dalam bagian ini kita akan membahas tentang logika digital dan desainnya. Pertama adalah kita membahas operasi logika biner, kemudian kita ditunjukkan bagaimana gerbang-gerbang melakukan hal itu. Kemudian beberapa gerbang logika digunakan untuk membetuk rangkaian digital sederhana. Dan terakhir kita mengupas beberapa peralatan logika yang ternyata digunakan untuk interfacing pada mikrokontroller.

 

 

Binary Logic

 

Seperti yang sudah diterangkan sebelumnya, komputer menggunakan system bilangan biner karena 2 buah level tegangannya dapat direpresentasikan dengan digit 0 dan 1. Sinyal dalam elektronika digital memilki 2 keadaan level tegangan. Misalnya seperti system yang umum, tegangan 0 Volt diartikan sebagai logika 0, dan tegangan 5 Volt dianggap sebagai logika 1. Gambar 0-2 menunjukkan system ini yang digunakan untuk menunjukkan representasi tegangan terhadaap status logika dan berikut kemungkian toleransinya.

 

 

Gambar 0-2 : Sinyal Biner

 

 

Gerbang logika

 

Gerbang logika biner adalah rengkaian sederhana yang memiliki 1 atau beberapa input digital, dan mengirimkan hasilnya sebagai 1 output. Beberapa gerbang yang umum diterangkan sebagaimana berikut ini.

 

gerbang AND

 

Gerbang  AND membutuhkan 2 atau lebih input untuk melaksanakan logika AND tersebut. Lihat tabel kebenaran, yakni jika kedua input adalah 1 maka output akan menjadi 1. Dicontohkan dengan 2 input, x dan y. Jadi jika semua input adalah berlogika 1 maka output akan menjadi 1. Sedang jika ada salah satu input yang ternyata 0, maka input akan menjadi 0.

 

fungsi logika AND

X    Y       X AND Y

0    0          0

0    1          0

1    0          0

1    1          1

 

 

 

 

gerbang OR

 

fungsi logika OR adalah jika salah satu atau beberapa, atau semua inputnya berlogika 1, maka output menjadi berlogika 1. Dan sebaliknya output akan menjadi 0 hanya jika kesemua input adalah 0. OR ini memiliki input lebih dari 1.

 

fungsi logika OR

X    Y       X OR Y

0    0          0

0    1          1

1    0          1

1    1          1

 

 

 

 

Tri-State buffer

 

Buffer digunakan dan tidak akan mengubah level logika input-inputnya. peralatan ini biasanya digunakan untuk menyambungkan sinyal dari 2 buah peralatan dan juga digunakan untuk menguatkan sinyal-sinyal. Bufer ini memiliki input tunggal ditambah kontrol E.

 

 

 

Inverter

 

Inverter juga disebut dengan NOT, outputnya adalah selalu bernilai bertolak belakang dengan inputnya. Misalnya jika inputnya 0 maka outputnya menjadi 1 dan demikain sebaliknya. Inverter ini memiliki input tunggal.

 

fungsi logika INVerter

Input       Output

0             1

1             0

 

 

 

 

Gerbangan XOR

 

gerbang XOR melakukan operasi Exclusive-OR pada input-inputnya. XOR akan meghasilnya 1 jika salah 1 (namun bukan keduanya) inputnya adalah 1. Dan jika kedua input adalah 1, maka output XOR justru akan menjadi 0. Lihat XOR dalam tabel kebenaran. Fungsi ini dapat digunakan untuk membandingkan untuk melihat apakah 2 buah data adalah sama atau tidak. XOR ini memiliki input lebih dari 1.

 

fungsi logika XOR

X    Y       X XOR Y

0    0          0

0    1          1

1    0          1

1    1          0

 

 

 

 

gerbang NAND dan NOR

 

fungsi dari gerbang NAND adalah seperti dengan gerbang AND yang mana pabrik hanya menambahkan sebuah inverter pada outputnya. Sehingga outputnya akan menjadi 0 jika semua inputnya adalah 1. Dan output akan menjadi 1 jika ada salah satu input atau semuanya berlogika 0. NAND dan NOR ini digunakan secara massive oleh desain komputer karena proses pembuatan dalam pabrik adalah sangat murah. Semua gerbang logika yang lain dapat diselenggarakan oleh kombinasi beberapa NAND dan NOR ini. Misalnya untuk membuat AND, OR, XOR, dan INV. Contoh sederhananya dari penggunaannya dapat dilihat pada gambar dibawah ini. NAND dan NOR ini memiliki input lebih dari 1. Sekali lagi unuk NAND jika semua inputnya adalah 1 maka outputnya akan menjadi 0. Dan untuk NOR, jika semua inputnya adalah 0, maka outputnya adalah 1. NAND dan NOR ini maisng-masing memiliki input lebih dari 1.

 

fungsi logika NAND

X    Y       X NAND Y

0    0          1

0    1          1

1    0          1

1    1          0

 

 

 

 

fungsi logika NOR

X    Y       X NOR Y

0    0          1

0    1          0

1    0          0

1    1          0

 

 

 

 

 

Rancangan logika dengan menggunakan gerbang-gerbang

 

Kemudian kita akan ditunjukkan desain logika sederhana untuk melakukan penambahan (ADD-ition) dari 2 buah bilangan biner. Jika kita hendak menambahkan 2 buah bilangan biner, maka akan muncul 4 kejadian yang bisa terjadi.

 

A + B     Carry     Sum

0 + 0       0        0

0 + 1       0        1

1 + 0       0        1

1 + 1       1        0

 

Perhatian saat kita menambahkan 1 + 1 termasuk dengan carry, pada digit bilangan yang lebih tinggi. Kita akan membutuhkan jumlah dan Carry (kelebihan) dan desain ini. Perhatikan bahwa kolom SUM (penjumlahan) di atas dihasilkan dari output fungsi XOR dan kemudian kolom Carry (Kelebihan) dihasilkan dari fungsi AND. Gambar 0-3 (a) menunjukkan implementasi dari adder sederhana. Gambar 0-3 (b) menunjukkan implementasi rangkaian logika yang sama dengan menggunakan gerbang AND dan OR.

 

 

Gambar 0-3 Implementasi dari Half-Adder

 

Gambar 0-4 menujukkan diagram blok dari half-adder. Dua buah half-adder dapat dikompbinaskan dengan memnjadikkannya memiliki 3 buah input digital. Ini kemudian disebut dengan full-adder. Gambar 0-5 menunjukkan bagaiaamna dari diagram dari full-adder tersebut. Perhatikan pula bahwa blok diagram yang menyembunyikan detil dari rangkaian. Gambar 0-6 menunjukkan adder 3-bit dengan menggunakan 3 buah full-adder.

 

 

Gambar 0-4 Blok diagram dari Half-Adder

 

 

Gambar 0-5 Full-adder yang dibangun dengan menggunakan Half-Adder

 

 

Gambar 0-6 Adder 3-bit dengan menggunakan 3 buah Full-adder

 

 

Decoders

 

Contoh yang lain dari aplikasi gerbang logika adalah sebuah docoder. Decoder adalah digunakan secara luas sebagai pen-dekode-an alamat dari sebuah system komputer. Gambar 0-7 menunjukkan dekoder untuk 9 (biner 1001), dan 5 (biner 0101) dengan menggunakan gerbang INV dan AND.

 

 

Gambar 0-7. Decoder alamat

 

 

Flip-Flop

 

Komponen system komputer yang juga digunakan secara luas adalah flip-flop. Paling banyak flip-flop ini digunakan sebagai memory untuk menyimpan data. Gambar 0-8 menunjukkan bagaimana diagram logika, diagram blok, tabel kebenaran untuk sebuah flip-flop.

 

Flip-flop type D, digunakan secara luas untuk mengunci data. Perhatikan tabel kebenaran, D-FF mengambil data dari input seiring dengan diaktifkannya Clock. Kemudian D-FF menahan statusnya (datanya) selama mungkin selama adanya listrik pada-nya.

 

Flip-flop type D inilah yang menjadi komponen utama dari RAM statis berkecepatan tinggi. Dan digunakan sampai sekarang.

 

 

Gambar 0-8. Flip-flop type D

 

 

 


 

 

SubBAB 0-3: Bagian dalam komputer

 

Pada bagian ini kita akan mengenalkan organisasi dari kerja internal dari sebuah komputer. Model yang digunakan adalah secara umum, namun konsep yang dibahas dapat diaplikasi pada semua komputer, termasuk IBM PC, PS/2, dan yang kompatible lainnya. Sebelum itu, akan sangat membantu jika kita me-review definisi dari beberapa terminologi yang digunakan secara luas dalam literatur komputer seperti K, mega, giga, byte, ROM, RAM, dan seterusnya.

 

 

Beberapa terminologi yang penting

 

Salah satu dari sekian banyak kelebihan terpenting dari komputer adalah berapa banyak jumlah memory yang dimilikinya. Kemudian kita dapat merujuk jumlah memory yang digunakan pada IBM PC atau yang kompatible. Mengingat apa yang sudah didiskusikan sebelumnya bahwa bit adalah binary digit yang hanya mungkin bernilai 0 dan 1. Sementara byte adalah sebutan untuk 8-bit.  Sementara Nibble adalah setengah dari byte, yakni 4-bit. Word adalah 2 byte, atau 16-bit. Berikut ini adalah ilustrasi yang menampilkan ukuran relatif dari unit-unit tersebut. Tentu saja bahwa semua itu bisa dibangun dari logika 0 dan 1.

 

bit                       0

nibble                 0000

byte              0000 0000

word    0000 0000 0000 0000

 

 

Kilobyte adalah 210 bytes, yng mana adalah 1024 bytes. Singkatan “K” kemudian digunakan sebagai kilobytes ini, misalnya “sebuah floppy disk memiliki kapasitas 356K bytes”. Megabytes (M) adalah 220 bytes, yang mana berarti 1.048.576 bytes (lebih dari 1 juta). Kemudian Gigabytes (G) adalah 230 bytes (lebihdari 1 milyar), dan Terabyte (T) adalah 240 bytes (lebih dari 1 triliun). Contoh tentnag bagaimana orang menerapkan aturan ini, seperti pada sebuah komputer yang memiliki 16 Mbyte memory. Yang berarti 16 x 220 atau 24 x 220 atau 224. Sehingga 16 Mbytes berarti adalah 224 bytes.

 

Dua tipe memory yang paling terkenal adalah RAM (Random Access Memory) dan ROM (Read only Memory). RAM digunakan menyimpan data sementara saat program berjalan. Data di dalamnya akan hilang saat komputer dimatikan. Karena inilah RAM juga disebut dengan volatile memory. ROM berisikan program dan informasi paling mendasar untuk operasi dari komputer. Informasi dari ROM ini adalah bersifat permanen, dan tidak bisa diubah oleh user, dan tidak hilang jika komputer dimatikan. Sehingga juga disebut dengan non volatile memory.

 

 

Organisasai Internal dalam komputer

 

Bagian internal pada setiap komputer dapat dipisahkan menjadi 3 bagian: CPU (Central Processing Unit), memory, dan peralatan I/O (Input/Output). Fungsi dari CPU adalah untuk menjalankan informasi yang tersimpan pada memory. Sedang fungsi dari peralatan I/O seperti Keyboard, monitor Video digunakan oleh user manusia untuk berkomunikasi dengan CPU. CPU terhubung dengan memory dan I/O dengan menggunakan jalinan kabel yang disebut dengan bus (berumbung yang berisi banyak). Bus di dalam komputer membaca informasi dari satu tempat ke tempat lain, mirip dengan bus di jalan raya, yang datang mengangkut orang-orang dari tempat yang satu ke tempat yang lain. Pada setiap komputer ada 3 tipe dari bus ini, yakni bus alamat, bus data dan bus kontrol.

 

Agar peralatan lain (memory dan I/O) dimengerti oleh CPU, mereka harus menduduki alamatnya sendiri. Alamat yang diberikan harus unik, dan tidak boleh ada 2 peralatan yang menduduki alamat yang sama. CPU mengambil alamat (tentu saja dalam biner) pada bus alamat, dan unit rangkaian decoder yang kemudian menemukan atau menetukan alamat sebenarnya dari peralatan tersebut. Kemudian CPU menggunakan bus data untuk mengambil data dari peralatan itu, atau untuk megirimkan data pada peralatan tersebut. Bus kontrol digunakan untuk menyelenggarakan proses read/write tersebut dengan mengirimkan sinyal-sinyal yang mem-beri-tahu-kan bahwa CPU membutuhdan data atau hendak mengirimkan data. Dari 3 bus ini, bus alamat dan bus data yang menjelaskan kemampuan dari CPU.

 

 

Gambar 0-9 bagian dalam CPU

 

 

Penjelasan lebih jauh tentang bus data

 

Mengingat bus-bus data digunakan untuk membaca informasi dari dan ke CPU, semakin banyak bus yang tersedia, maka semakin bagus sebuah CPU itu. Jika sesorang berfikir bahwa bus-bus data adalah jalan tol, maka semakin lengang jalan tersebut maka semakin baik hubungan antara CPU dan peralatan eksternal lainnya (misalnya Printer, RAM, ROM, seperti pada gambar 0-10). Dengan cara yang sama, bahwa meningkatkan jumlah bus akan membuat meningkatnya jumlah biaya dari pembuatan system tersebut. Bus data yang lebih banyak akan membuat harga CPU atau computer menjadi lebih mahal. Ukuran yang umum dari bus-bus data ini adalah di antara 8 s/d 64 bit. Komputer kuno seperti “Apple2” menggunakan bus data 8-bit, sementara super-computer seperti “Cray” menggunakan data bus 64-bit. Data bus adalah bersifat 2 arah, mengingat CPU akan menggunakan mereka untuk mengiriman dan menerima data sekaligus. Kekuatan pemrosesan pada komputer berkaitan erat dengan ukuran dari bus, mengingat bus 8-bit hanya dapat mengirimkan data 1 byte dalam sekali kirim, sedang bus 16-bit dapat mengirimkan data 2 byte dalam sekali kirim.

 

 

Lebih jauh tentang bus alamat

 

Karena bus alamat digunakan untuk menentukan identitas dari masing-masing peralatan atau memory yang terhubung pada CPU, maka semakin besar bus yang ada, semakin besar pula jumlah paralatan yang mungkin dapat dihubungkan kepadanya. Degan kata lain, jumlah dari bus alamat CPU menjelaskan jumlah lokasi yang mana dia mampu berkomunikasi. Jumlah lokasi tersebut selalu equal dengan 2x, dimana x berarti jumlah dari jalur bus alamat, seperti yang ada pada bus data. Misalnya CPU memiliki jalur alamat 16, yang dapat mengalamati 65.536 (116 atau 64K byte) dari alamat-alamat memory. Setiap lokasi dapat diartikan untuk mengalamati 1 byte data. This is due to the fact that all general-purposes microprocessor CPUs are what called byte addressable. Misalnya juga, sebuah PC IBM 80186 yang memiliki jalur alamat 24 buah dan jalur data 16 buah. Dalam hal ini total memory yang bisa dialamati adalah 16 megabytes (224 = 16 MB). Dalam contoh ini maksudnya adalah terdapat 224 lokasi memory, karena setiap lokasi adalah 1 byte, sehingga total adalah 16 megabyte memory yang bisa dialamati oleh komputer tersebut. Bus address (alamat) ini adalah tergolong sebagai unidiretional bus, yang mana berarti bahwa CPU menggunakan bus alamat ini hanya untuk mengirim keluar alamat-alamat. Singkatnya : Total jumlah dari lokasi memory yang bisa dialamati yang diberikan CPU selalu equal dengan 2x, di mana x adalah jumlah bit alamat, seperti yang terjadi pula pada bus data.

 

 

Gambar 0-10 : Organisasi Internal, dalam Komputer

 

 

CPU dan hubugannya dengan RAM dan ROM

 

Agar CPU dapat memproses informasi, data harus disimpan pada dalam RAM atau ROM. Fungsi dari ROM dalam komputer adalah untuk memberikan informasi yang mana informasi tersebut bersifat tetap dan permanen. Informasi ini bisa seperti table dari pola karakter yang mungkin digunakan untuk menampilkan hasil perhitungan pada display monitor, atau program yang esensial (mendasar) agar komputer dapat bekerja, misalnya program untuk menguji atau menghitung jumlah RAM yang terpasanag dalam system, dan menampilkan hasilnya pada layar monitor. Hal ini berbeda dengan RAM yang digunakan untuk menyimpan informasi yang tidak bisa permanen. Dan dapat diubah-ubah setiap saat. Misalnya untuk komputer IBM PC, RAM diubah oleh beberapa operating system berbeda atau aplikasi lain, misalnya Word Proccessing atau Penghitung Pajak dll. Aplikasi ini di-load ke dalam RAM, kemudian CPU menjalankan program yang telah di-load tersebut. CPU mungkin tidak dapat menjalankan program langsung dari disk, karena disk memiliki kecepatan yang sangat rendah. Atau denga kata lain, CPU hendak mengambil informasi untuk diproses, pertama dilihat dari RAM atau ROM. Jika ternyata tidak ada maka CPU akan mencarinya di dalam Disk, kemudian menyalin isinya pada RAM. Untuk alasan ini RAM dan ROM disebut dengan primary memory dan disk disebut sebagai secondary memory. Gambar 0-11 menunjukkan diagram blok dari organisassi internal dari sebuah PC.

 

Dalam mikrokontroller, yang umumnya hanya memiliki hanya 1 buah program yang disimpan dalam ROM. Dan CPU dapat menggunakan RAM untuk menyimpan variable-variable tertentu yang digunakan untuk keperluan dalam program tersebut. Misalnya untuk menyimpan data yang dibaca dari port. Atau menyimpan kerakter yang nanti hendak ditampilkan pada Monitor.

 

 

Bagian dalam CPU

 

Program disimpan dalam memory untuk memberikan instruksi pada CPU agar dia dapat berjalan. Kerja dari CPU ini secara sederhaa adalah untuk menambha data seperti meis kasir atau mengontrol mesin seperti robot. Hal ini adalah fungsi dari CPU untuk mnerima inforamsi dari memory (fetch) dan kemudian menjalankannaya (execute). Untuk menyelenggarakan fetch and execute terssebut CPU harus dilengkapi dengan sumber daya semacam berikut:

1. Salah satu hal yang penting dari CPU adalah adanya beberap abuah regsiter. CPU mengunakan register untuk menyimpan informasi secara sementara. Informasi mungkin 2 jenis, yakni sebauh nilai yang bisa langsung diproses, atau sebuah nilai dari sebuah alamat dari sebuah nilai lain yang harus diambil untuk bisa diproses. register dalam CPU bisa 8-bit, 16-bit, 32-bit atau 64-bit, tergantung dari seberap aperkasanya CPU. Sehingga CPU yang baik harusnya memiliki register yang banyak dan besar. Tentu saja dengan demikian tingkat kesulitan pembuatannya juga semakin tinggi, sehingga semakin mahal harganya.

2. CPU harus juga memiliki ALU (Aritmatic/Logic Unit). Bagian ALU dalam CPU adalah yang paling bertanggung jawab ataas proses perhitungan matematika seperti add, subtract, multiply, divide, dan dungsi logika seperti AND, OR, XOR dan NOT.

3. Setiap CPU harus memiliki apa yang disebut dengan Program Counter. Fungsi dari Program Cotner ini adalah untuk menunjuk alamat dari instruksi yang hendak dilaksanakan.. Setaip satu instruksi dilaksanakan, maka isi program counter ini akan di-INC-rement ke alamata selanjutnya untuk dilaksanakan kemudian. Dalam mikro kontroller program Counter ini disingkat sebagai “PC”, sedang pada komputer IBM -PC disebut dengan IP atau Instruction Pointer.

4. Fungsi dari “instruction decoder” adalah mengartikan instruksi yang diterima oleh CPU. Orang bia berfikir bahwa instruction decoder ini adalah sbeuah kamus, yang menyimpan arti dari setiap instrukis dan apa yang harus dikerjakan oleh CPU setelah menerima instruksi tersebut. Persis seperti kamus, semakin banyak instrkki yang hendak diartikan, maka semakin banyak instruksi yang bis diterjemahkan oleh CPU, dan juga semakin banyak jumlah transistor yang harus ditanam ke dalam CPU.

 

 

Proses kerja dalam komputer

 

Untuk mendemonstrasikan beberapa konsep yang dibahas sebelumnya, analisys langkah demi langkah dari proses CPU

akan menuntun kita, yakni dengan cara menambhakan 3 nilai berbeda yang akan ditemui nanti. Menganggap bahwa seolah CPU memiliki register-regsiter sebutlah A, B, C, dan D. Dia juga memiliki 8-bit bus data dan bus alamat 16-bit. Sehingga CPU dana mengakses emory dari alamat 0000h s/d FFFFh (untuk jumlah total 10000h). Tindakan yang harus dilakukan adalah CPU harus mengambil nilai heksadesimal 21 dan menyimpannya pada register A, dan kemudian menambahkannya dengan nilai 42h dan 12h. Anggaplah bahwa kode untuk CPU tersebut untuk memindahkan nilai pada register A adalah 1011 0000 (B0h) dan kode untuk menambahkan nilai pada register A adalah 0000 0100 (04h). Langkah yang penting dan kode untuk melaksanakannya adalah seperti berikut ini.

 

Tindakan                               Kode        Data

Salin nilai 21h pada register A        80h        21h

Tambahkan nilai 42h pada register A    04h        42h

Tambahkan nilai 12h pada register A    04h        12h

 

Jika program untuk melakukan tindakan seperti di atas adalah tersimpan pada memory pada lokasi dimulai dari 1400h, berikut ini adalah isi memory selengkapnya sesuai dengan kode di atas.

 

Alamat memory         Isi dari alamat memory

1400                  (B0) kode untuk memindahkan nilai ke register A

1401                  (21) nilai yang hendak dipindah

1402                  (04) kode untuk menambahkan nilai ke register A

1403                  (42) nilai yang hendak dipindah

1404                  (04) kode untuk menambahkan nilai ke register A

1405                  (12) nilai yang hendak dipindah

1406                  (F4) kode untuk HALT

 

Tindakan yang diambil oleh CPU untuk menjalankan program di atas adalah seperti berikut ini:

1. Program-Counter (CP) dapat bernilai di antara 0000 s/d FFFFh. Program-Counter harus diatur pada 1400h (lokasi instruksi pertama dari program di atas). Setelah program-counter siap, yakni dengan menunjuk alamat instruksi pertama yang akan segera dilaksanakan

2. CPU mengaplikasikan 1400h pada bus alamat dan mengirimkannya keluar. Rangkaian memory Menentukan lokasi yang diminta oleh CPU, dan kemudian CPU menerbitkan perintah sinyal READ, yang mengindikasikan kepada memory, bahwa CPU membutuhkan data byte pada lokasi 1400 tersebut. Hal ini membuat isi dalam lokasi 1400h, yakni B0h, kemudian dikirimkan oleh memory pada CPU melalui bus data.

3. CPU kemudian menterjemahkan instruksi B0 tersebut dengan menggunakan bantuan “kamus” milik Instruction Decoder. Saat mencari definisi dari instruksi tersebut, kemudian diketahui bahwa instruksi tersebut ternyata berarti CPU harus membaca data yang letaknya berada pada lokasi memory selanjut (1401h), yang harus dikirimkan kepada register A. Saat data 21h dikirimkan oleh CPU dari memory lokasi 1401h ke dalam register A tersebut, CPU harus memastikan bahwa pintu-pintu pada register yang lain harus tertutup, kecuali untuk register A. Sehingga nilai 21h tersebut dapat dikirimkan langsung pada register A. Seteleh menyelesaikan instruksi ini, maka Program-Counter akan menunjukkan instruksi selanjutnya. Yakni dalam hal ini adalah menunjuk lokasi memory 1402h. Alamat 1402 dikirim kemudian oeh CPU, sebelum CPU membaca instruksi berikutnya.

4. Dari lokasi memory 1402h dikirim kode 04h. Setelah diterjemahkan ternyata berarti, ada sesuatu yang harus ditambahkan pada register A. Yakni byte yang lokasinya setelah instruksi, yakni lokasi 1403h. Setelah membawa data tersebut ke dalam CPU (yakni 42h), maka oleh peralatan ALU ke dua bilangan tersebut ditambahkan. Setelah proses penambahan terjadi maka hasil dari ALU tersebut dikembalikan pada register A lagi. Sementara itu Program-Counter sekarang telah menunjuk alamat 1404h, sebagai alamat dari instruksi selanjutnya.

5. Alamat 1404h diberikan pada bus alamat, dan datanya diberikan pada CPU, diterjemahkan, dan dijalankan. Kode ini ternyata juga melakukan penambahan terhadap register A. Kemudian Program-Counter menjadi 1406h.

6. Terakhir, isi dari alamat 1406 ini diambil dan dijalankan. Ternyata adalah perintah HALT. Yang memerintahkan CPU untuk berhenti bekerja dan tidak menambahkan isi PC (Program-Couter) lagi untuk menanyakan instruksi berikutnya. Setelah CPU dipaksa keluar dari kondisi HALT, maka komputer kembali menambahkan PC dan menjalankan instruksi berikutnya.

 

Sekarang bagaimana jika alamat 1403 isinya kita ubah dari 42 menjadi 04. Bagaimana komputer dapat membedakan kemudian dengan kode 04 atau data 04 yang akan ditambahkan? Ingat bahwa kode 04 untuk CPU ini adalah berarti memindahkan nilai berikutnya kepada register A. Sehingga komputer tidak perlu untuk men-dekode-kan lagi data byte berikunya. Dia akan segera untuk memindahkan isi dari memory tersebut pada register A.

 

 

Gambar 0-11 Blok diagram internal dari CPU

 

 


 

 

RINGKASAN

 

System bilangan biner merepresentasikan semua bilangan dengan kombinasi dari digit-digit biner, yakni 0 dan 1. Penggunaan system biner dibutuhkan komputer digital karena hanya 2 hal itu yang direpresntaskan komputer, yakni On dan Off. Segala jenis bilangan biner dapat diubah dan dikonversi menjadi padanannya dengan heksadesimal, dan begitu pula sebaliknya. Bilangan kode ASCII adalah bilangan biner yang merepresentasikan data alphanumerik dalam proses internal CPU.

 

Gerbang logika AND, OR dan Inverter adalah dasar dari membangun rangkaian blok sederhana. Gerbang NAND, NOR, dan XOR juga digunakan untuk mengimplementasikan desain rangkaian. Diagram half-adder dan full-adder diberikan berikut contohnya dalam penggunaan gerbang logika untuk desain rangkaian. Decoder digunakan untuk mendeteksi alamat-alamat. Flip-flop digunakan untuk mengunci data sampai rangkaian lain mengubahnya.

 

Komponen utama dari berbagai system komputer adalah CPU, memory dan paralatan I/O. Memory terbagi menjadi 2 jenis, yakni sifatnya yang “sementara” dan/atau “permanen” dalam menyimpan data. Dalam beberapa komputer, memory diakses dalam byte atau word. Istilah Kilobytes, megabytes, Gigabytes, dan Terabytes digunakan untuk menyingkat jumlah byte yang sangat banyak. Ada 2 jenis utama dari sebuah memory, yakni RAM dan ROM. RAM (Random Access Memory) digunakan untum menyimpan data/kode secara sementara. Sementara ROM (Read Only Memory) digunakan untuk menyimpan data/kode secara permanen, yang biasanya ini digunakan oleh CPU untuk menyimpan instruksi-istruksi yang akan dijalankan agar CPU dapat bekerja. Semua komponen dari system komputer dapat dikontrol oleh CPU. Peralatan pelengkap semacam I/O (input/output) memberian kesempatan pada CPU untuk berkomunikasi dengan manusia atau juga system komputer yang lain.

Ada 3 tipe bus untuk sebuah komputer: bus alamat, bus data, dan bus kontrol. Yang bus-bus ini digunakan CPU untuk menghubungi peralaan lainnya. Bus data digunakan untuk mengirimkan inforamasi di antara CPU dan peralatan lainnya.

 

Terakhir bab ini memberikan ulasan singkat dalam hal logika digital.

 

REFERENSI :

 

http://dhuzell.site90.com/mcs51/referensi/bukumaz/bab00.html