BAB 4 PERANCANGAN ARSITEKTUR INVERSE-CABAC

dokumen-dokumen yang mirip
BAB 3 PERANCANGAN AWAL INVERSE-CABAC Proses Inisialisasi untuk Variabel Context

BAB 2 STANDARD H.264/MPEG-4 DAN ALGORITMA CABAC

BAB 4 PERANCANGAN ARSITEKTUR 2K FFT-IFFT CORE

adalah frekuensi detak masukan mula-mula, sehingga membentuk rangkaian

Bab XI, State Diagram Hal: 226

BAB VIII REGISTER DAN COUNTER

BAB III PERANCANGAN SISTEM

Antarmuka LCD pada DST-AVR

BAB III COUNTER. OBYEKTIF : - Memahami jenis-jenis counter - Mampu merancang rangkaian suatu counter

BAB 3 ANALISIS DAN PERANCANGAN

Laboratorium Sistem Komputer dan Otomasi Departemen Teknik Elektro Otomasi Fakultas Vokasi Institut Teknologi Sepuluh November

Mikroprosesor. Nuryono Satya Widodo, S.T.,M.Eng. Mikroprosesor 1

1). Synchronous Counter

BAB III PERANCANGAN ALAT

1). Synchronous Counter

8. TRANSFER DATA. I. Tujuan

PENGANTAR ORGANISASI DAN ARSITEKTUR KOMPUTER SISTEM INPUT OUTPUT

TKC305 - Sistem Digital Lanjut. Eko Didik Widianto. Sistem Komputer - Universitas Diponegoro

1 Tinjau Ulang Sistem Komputer

SISTEM MIKROPROSESOR RIZAL SURYANA JURUSAN TEKNIK ELEKTRO - UNJANI

14.1. SYNCHRONOUS B US

Hanif Fakhrurroja, MT

Tabel 1. Karakteristik IC TTL dan CMOS

Sistem Operasi. Struktur Sistem Komputer. Adhitya Nugraha. Fasilkom 10/6/2014

3. ALU. Tugas utama adalah melakukan semua perhitungan aritmatika dan melakukan keputusan dari suatu operasi logika.

LAPORAN RESMI PRAKTIKUM SISTEM DIGITAL 2013 / 2014

BAB Arsitektur Komputer. Konsep Arsitektur Komputer. Rini Agustina, S.Kom, M.Pd RINI AGUSTINA - DARI BERBAGAI SUMBER

Pertemuan ke 5 BAB IV Sintesis Rangkaian Sekuensial (2) Deskripsi Manfaat Relevansi Learning Outcome Materi I. Rangkaian Memori Terbatas RAM dinamik

Arsitektur Prosesor MIPS Multi Siklus (Pertemuan ke-27)

STRUKTUR CPU. Arsitektur Komputer

Arsitektur Komputer. Rangkaian Logika Kombinasional & Sekuensial

Mikrokontroller Berbasiskan RISC 8 bits

JENIS-JENIS REGISTER (Tugas Sistem Digital)

Strategi Perancangan Hardware menggunakan 2 Metode Bersamaan dan Pengantar Arsitektur Mikroprosesor

8086/88 Device Specifications

ANALOG TO DIGITAL CONVERTER

Hanif Fakhrurroja, MT

BAB 3 ALGORITMA DAN MODEL 2K FFT-IFFT CORE

=== PENCACAH dan REGISTER ===

Mikrokontroler 89C51 Bagian II :

Organisasi Komputer & Organisiasi Prosesor

BAB VIII REGISTER DAN COUNTER

6. Rangkaian Logika Kombinasional dan Sequensial 6.1. Rangkaian Logika Kombinasional Enkoder

PERCOBAAN 6 COUNTER ASINKRON

2009/2010 Course Plan. SK-208 Arsitektur Komputer Ir. Syahrul, MT.

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

MIKROKONTROLER Arsitektur Mikrokontroler AT89S51

1. FLIP-FLOP. 1. RS Flip-Flop. 2. CRS Flip-Flop. 3. D Flip-Flop. 4. T Flip-Flop. 5. J-K Flip-Flop. ad 1. RS Flip-Flop

Hal-hal yang perlu dilakukan CPU adalah : 1. Fetch Instruction = mengambil instruksi 2. Interpret Instruction = Menterjemahkan instruksi 3.

BAB II Sintesis Rangkaian Sekuensial Pulse Mode

Blok sistem mikrokontroler MCS-51 adalah sebagai berikut.

Diktat Kuliah Organisasi dan Interaksi

BAB VII DASAR FLIP-FLOP

PENGANTAR ORGANISASI DAN ARSITEKTUR KOMPUTER CENTRAL PROCESSING UNIT

ADC ( Analog To Digital Converter Converter konversi analog ke digital ADC (Analog To Digital Convertion) Analog To Digital Converter (ADC)

Latihan 19 Maret 2013

MIKROKONTROLER AT89S52

Gambar 1.1. Diagram blok mikrokontroller 8051

BAB II. Decoder H.264/AVC

Struktur Sistem Komputer

PERTEMUAN. 1. Organisasi Processor. 2. Organisasi Register

BAB III PERANCANGAN UIMEGA 8535

BAB 3 PERANCANGAN SISTEM

From M.R Zargham s book (Chapter 3.1)

Transfer Register. Andang, Elektronika Komputer Digital 1

Model Mikroprosesor Ideal Konsep Data Bus Ruang Memori Konsep Address Bus Konsep Control Bus Pemetaan Memori

Jawaban Ujian Tengah Semester EL3096 Sistem Mikroprosesor & Lab

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

ARSITEKTUR DAN ORGANISASI KOMPUTER

BAB III ANALISA DAN PERANCANGAN APLIKASI

Finite State Machine (FSM)

Gambar 3.1 Blok Diagram Port Serial RXD (P3.0) D SHIFT REGISTER. Clk. SBUF Receive Buffer Register (read only)

Pertemuan Ke-3 Struktur Interkonesi (Bus System)

DCH1B3 Konfigurasi Perangkat Keras Komputer

Struktur Sistem Komputer

Organisasi & Arsitektur Komputer

Simple As Possible (SAP) - 1. Abdul Syukur

PERCOBAAN 2. FLIP-FLOP

BAB III PERANCANGAN SISTEM

M1632 MODULE LCD 16 X 2 BARIS (M1632)

Setelah Selesai pembelajaran diharapkan mahasiswa dapat membuktikan fungsi-fungsi khusus dalam pemrograman Programmable Logic Controller (PLC)

REGISTER. uart/reg8.html

R ANGKAIAN LOGIKA KOMBINASIONAL DAN SEQUENSIAL

BAB I TUGAS MATA KULIAH SISTEM MIKROPROSESOR DOSEN PEMBERI TUGAS : FATAH YASIN, ST, MT.

BAB IV HASIL DAN UJI COBA

Sistem Mikroprosessor

Oleh : Agus Priyanto, M.Kom

$'&$QDORJWR'LJLWDO&RQYHUWLRQ

Unit Control (Hardwired and Micro-programmed)

Gambar 3. 1 Diagram blok system digital

COUNTER TIMER CIRCUIT (CTC) Z80

Struktur Sistem Komputer. Abdullah Sistem Informasi Universitas Binadarma

IMPLEMENTASI KONTROL PID UNTUK PENGENDALI MICROPUMP GUNA MENJAGA KONTINUITAS ALIRAN FLUIDA LAPORAN TUGAS AKHIR

SERPIH-SERPIH (IC) INTERFACE DASAR PADA PC

Simple As Posible - 1

Transkripsi:

BAB 4 PERANCANGAN ARSITEKTUR INVERSE-CABAC Bab ini membahas perancangan arsitektur Inverse-CABAC. Perancangan arsitektur CABAC meliputi perancangan datapath, unit kontrol, dan timing diagram. 4.1 Struktur Umum Inverse-CABAC Input untuk Inverse-CABAC adalah nilai bitstream, sedangkan outputnya adalah nilai bit yang telah di-decode. Input bitstream dimasukkan ke dalam sistem bila sinyal start_dec bernilai 1. Dengan demikian rancangan untuk modul Inverse- CABAC ini dapat direpresentasikan sebagai suatu black-box seperti terlihat pada gambar berikut. Gambar 4.1 Input dan Output Inverse-CABAC Dari hasil analisis fungsi Inverse-CABAC yang telah dilakukan pada perancangan awal, datapath Inverse-CABAC dapat dibangun dari modul init context, buffer stream, unit arithmetic decoding (Arcod dan Bypass), serta register untuk proses update nilai range dan offset. Saat input sinyal start_dec bernilai 1, maka sinyal ini akan mengaktifkan modul init context dan buffer stream untuk menulis nilai input bitstream ke RAM (initram pada buffer stream) dan memulai proses inisialisasi yang dibutuhkan sebelum proses decoding dapat dijalankan. Nilai inisialisasi yang dibutuhkan untuk memulai proses decoding kemudian akan 35

disimpan pada register range dan offset. Diagram blok untuk rancangan Inverse- CABAC ditunjukkan pada gambar 4.2. Updated context_model Updated offset and range Init Context context_model Arcod Decoded bit Offset Range Register input bitstream Buffer Stream Bypass Decoded bit bitstream Gambar 4.2 Diagram Blok Inverse CABAC 4.2 Perancangan Buffer Stream Proses pertama pada modul inverse CABAC adalah penyimpanan bitstream pada buffer. Bitstream yang disimpan akan digunakan untuk nilai awal offset dan proses update nilai offset pada proses binary decoding. Jumlah maksimum bitstream yang dibutuhkan untuk proses satu buah macroblock, pada perancangan ini, adalah 664 bit. Dari keseluruhan bitstream tersebut, 9 data pertama akan dijadikan nilai awal offset, sedangkan bitstream lainnya akan digunakan untuk proses decoding. Unit penyimpanan bitstream diimplementasikan dengan menggunakan RAM sedangkan bagian unit kontrol diimplementasikan dengan FSM. Diagram blok modul buffer stream ini dapat dilihat pada gambar 4.3. 36

Gambar 4.3 Diagram Blok Buffer Stream 4.2.1 Blok RAM Blok RAM yang digunakan untuk menyimpan nilai bitstream, pada perancangan ini berukuran 664x1 bit. Akses pada blok RAM ditentukan oleh sinyal kontrol RAM_we untuk akses penulisan, dan sinyal kontrol RAM_ce untuk akses pembacaan data. Penulisan data bitstream ke RAM dilakukan selama 664 clock cycle, secara berurutan sebagai proses inisialisasi, sedangkan pembacaan nilai bitstream dilakukan hanya saat ada request dari unit binary decoding. Data yang dibaca dari RAM digunakan untuk proses decoding pada blok arcod dan bypass. Penghitungan alamat untuk akses ke RAM dilakukan oleh address counter pada unit kontrol. Sinyal kontrol dan alamat untuk akses ke RAM ini dihasilkan oleh unit kontrol buffer stream. 4.2.2 Unit Kontrol Buffer Stream Unit kontrol buffer stream diimplementasikan dengan menggunakan FSM, dengan state seperti ditunjukkan gambar 4.4. 37

Gambar 4.4 State Transition Unit Kontrol Buffer Stream Proses pertama pada unit buffer stream adalah penulisan data bitstream dari port input ke RAM. Tahap ini disebut state WRITE_STREAM. Penulisan bitstream dimulai setelah sinyal status start_buff bernilai 1. Penulisan bitstream berlangsung selama 664 clock cycle. Dengan demikian selama state WRITE_STREAM, kontrol RAM_we bernilai 1. Tahap berikutnya, setelah proses penulisan nilai bitstream ke RAM selesai, adalah READ_INIT. Pada tahap ini, 9 data pertama bitstream, dibaca secara berturutturut dari blok RAM untuk kemudian dibentuk menjadi sebuah data parallel. Data parallel ini akan digunakan sebagai nilai awal offset. Proses pembentukan data parallel dilakukan dengan menggunakan rangkaian shift-register 9-bit seperti yang terlihat pada gambar 4.5. Dengan demikian pada state READ_INIT, nilai sinyal kontrol RAM_ce akan bernilai 1. 38

Gambar 4.5 Arsitektur Shift Register untuk Pembentukan Nilai Awal Offset Timing diagram untuk proses shifting ditunjukkan gambar berikut: Gambar 4.6 Timing Diagram Proses Pembentukan Nilai Awal Offset Tahap terakhir pada blok buffer stream adalah pembacaan data dari RAM untuk proses decoding. Data yang dibaca dari RAM ini, digunakan oleh blok arcod untuk proses renormalisasi nilai offset, dan digunakan oleh blok bypass untuk update nilai range dan offset. Dengan demikian sinyal kontrol untuk pembacaan data dari RAM, RAM_ce, ditentukan berdasarkan request dari blok arcod dan bypass, yaitu sinyal renorm dan bypass_enable. Pembentukan sinyal RAM_ce pada state READ_STREAM dapat dilihat pada gambar 4.7. 39

renorm D-FF RAM_ce bypass_enable D-FF Gambar 4.7 Pembentukan Sinyal RAM_ce Proses transisi state pada FSM ditentukan oleh sinyal status end_count, yang dihasilkan dari nilai maksimum counter. Nilai counter ini juga dijadikan sebagai alamat untuk akses ke blok RAM. Arsitektur counter untuk masing-masing state diimplementasikan oleh sebuah counter, berupa shared-hardware. Karena counter yang digunakan berupa shared-hardware untuk semua state, maka nilai awal dan nilai maksimum akan berbeda untuk masing-masing state. Nilai awal dan nilai maksimum counter untuk masing-masing state ditunjukkan tabel berikut : Tabel 4.1 Parameter Counter pada Unit Kontrol Buffer Stream State Nilai Awal Nilai Maksimum WRITE_STREAM 0 663 READ_INIT 0 8 READ_STREAM 9 663 4.3 Perancangan Init Context Bersamaan dengan proses penyimpanan bitstream, dilakukan juga proses penghitungan nilai state dan MPS awal untuk setiap context index. Proses penghitungan nilai awal state dan MPS ini dilakukan oleh blok Init Context. Blok Init Context, secara umum terdiri atas: unit ROM, yang digunakan untuk menyimpan context index; unit RAM context, untuk menyimpan nilai context 40

model, dan unit kontrol untuk pengaturan keseluruhan proses. Secara umum struktur bagian init context digambarkan dalam diagram blok unit seperti ditunjukkan gambar berikut : Gambar 4.8 Blok Diagram Init Context Proses pada blok Init Context dikontrol dengan menggunakan FSM, seperti ditunjukkan pada gambar 4.9. Gambar 4.9 State Unit Kontrol Blok Init Context 41

Proses pada blok Init Context diawali saat sinyal start_context = 1. Proses pertama pada blok Init Context, yaitu state WRITE_INIT, adalah proses penulisan nilai awal context model ke memory RAM Context. Nilai context model ini didapat dari perhitungan yang dilakukan oleh blok Init Context Core. Arsitektur blok Init Context Core tersebut dapat dilihat pada gambar berikut: qrom ROM_cntx_data FF mq4 mq4_reg MAX MIN Logic data_rom_en FF mqn MPS calculated ste_mps ROM_indx_data FF add_in_en FF ste FF ste_mps data_rom_en FF add_out_en ste_mps_en qp_indx_data add_in_en n12 Gambar 4.10 Arsitektur Blok Init Context Core Input untuk proses perhitungan nilai context model ini adalah nilai parameter kuantisasi dari ROM index, dan nilai m dan n dari ROM context. Nilai context model yang dihitung pada perancangan ini sebanyak 844 buah. Dengan memperhatikan kompleksitas blok Init Context Core, maka penghitungan setiap nilai context model dirancang dalam 5-stage pipeline. Dengan demikian diharapkan combinational delay dapat dikurangi, sehingga desain yang dihasilkan dapat bekerja pada frekuensi yang lebih tinggi. Tahapan pipeline pada blok Init Context Core adalah sebagai berikut: Tahap 1 Pada tahap ini, dilakukan pembacaan data dari ROM index dan ROM context. Keluaran dari ROM index dan ROM context digunakan sebagai input multiplier pada penghitungan context model tahap 2. Pembacaan data ROM index hanya dilakukan pada alamat pertama saja. Pembacaan data ROM context dilakukan secara berturut-turut sebanyak 844 kali untuk setiap penghitungan nilai context model. 42

Tahap 2 Pada tahap kedua dilakukan proses perkalian antara data ROM context dan data ROM index. Data ROM index yang digunakan untuk proses perkalian berukuran 8-bit, yang diambil dari ROM_index_data [15:8], sedangkan data ROM context yang digunakan diambil dari ROM_context_data [7:0]. Tahap 3 Pada tahap ketiga dilakukan penjumlahan antara hasil perkalian pada tahap 2 dengan nilai ROM_index_data [7:0]. Tahap 4 Pada tahap ini dilakukan operasi pembentukan nilai awal state dan MPS. Tahap 5 Pada tahap ini data context model sudah valid dan dapat ditulis ke RAM context. Proses penulisan dilakukan sebanyak data context model yang dihitung, yaitu 844 buah. Dengan demikian penulisan data ke RAM dilakukan setiap 5 clock cycle. Sehingga total proses untuk penghitungan inisialisasi context model adalah 4220 clock cycle. Setelah proses perhitungan nilai awal context model selesai, yang ditandai dengan aktifnya sinyal end_init, maka proses berikutnya adalah pembacaan memory RAM Context untuk proses arithmetic decoding. Tahap ini dinamakan state READ_MEM. Pembacaan memory RAM Context ini dilakukan berdasarkan alamat yang didapat dari nilai 9 bit terakhir dari keluaran ROM index. Setelah data dari RAM Context dibaca, maka proses decoding dapat dilakukan. Proses decoding dilakukan berdasarkan mode yang didapat dari 2 bit pertama keluaran ROM index, yaitu normal, bypass, dan terminate seperti terlihat pada tabel 4.2. Proses ini selesai setelah sinyal arcod_done atau bypass_done aktif. 43

Tabel 4.2 Mode Decoding ROM_index [9:8] Mode Decoding 00 Normal 01 Bypass 10 Terminate 11 Initial Jika yang aktif adalah sinyal arcod_done maka tahap berikutnya adalah penulisan nilai update context model ke RAM Context (state WRITE_MEM). Dengan demikian, pembacaan RAM Context berikutnya dapat dilakukan. Jika yang aktif adalah sinyal bypass_done maka nilai update context model tidak perlu ditulis dan pembacaan RAM Context berikutnya dapat dilakukan (state READ_MEM). Gambar 4.11 mengilustrasikan sinyal-sinyal yang mempengaruhi perpindahan state pada blok Init Context. reset clock start_cntx end_init arcod_done bypass_done arcode_psate IDLE WRITE_INIT READ_MEM DECODE WRITE_MEM READ_MEM DECODE READ_MEM DECODE RAM_ce RAM_we addr_count 0 843 1 2 3 Gambar 4.11 Timing Diagram Proses Init Context 44

4.4 Perancangan Blok Arithmetic Decoding Proses binary decoding dikelompokkan menjadi mode Normal, Bypass, dan Terminate. Berdasarkan kesamaan pada pemrosesan data, perancangan unit binary decoding dipisahkan menjadi dua bagian, yaitu blok arcod dan bypass. Blok arcod digunakan untuk melakukan proses decoding untuk mode Normal dan Terminate, sedangkan blok bypass digunakan untuk melakukan proses decoding pada mode Bypass. 4.4.1 Arcod Proses binary decoding di blok arcod mencakup proses peng-update-an nilai range dan offset serta proses renormalisasi nilai range bila diperlukan. Proses decoding dilakukan selama sinyal arcod_enable aktif, yang dihasilkan dari blok init context. Blok diagram unit arcod ditunjukkan gambar 4.12. arcod bitstream ste_mps_in range_in offset_in Arcod Core decout_bit ste_mps_new range_out offset_out arcod_enable normal_mode terminate_mode Arcod Control renorm arcod_done Gambar 4.12 Blok Diagram Arcod 45

4.4.1.1 Unit Update Nilai Range dan Offset Tahap pertama dari proses decoding adalah pembacaan nilai rlps dan nilai state berdasarkan masukan nilai range dan offset. Nilai range dan offset merupakan data 16-bit yang dibaca dari register offset range. Nilai masukan range dan state digunakan sebagai alamat untuk ROM_rLPS dan ROM_state. Alamat untuk ROM_rLPS dibentuk dari nilai range_in[7:6] dan nilai ste_mps_in[6:1], sedangkan alamat untuk ROM_state dibentuk langsung dari nilai ste_mps_in[6:1]. Gambar 4.13 mengilustrasikan pembentukan alamat untuk pembacaan ROM_rLPS dan ROM_state. Gambar 4.13 Struktur ROM rlps dan ROM state Data dari ROM rlps digunakan untuk update nilai range dan offset. Nilai update range diambil dari selisih nilai masukan range_in dan data rlps atau langsung berupa data rlps. Jika nilai sel_rng bernilai 1, nilai update range yang dipilih adalah data rlps. Sebaliknya, jika bernilai sel_rng 0 maka dipilih selisih nilai range_in dan data rlps. Pada proses decoding mode Terminate, nilai rlps selalu bernilai 2, sedangkan untuk mode normal nilai rlps merupakan keluaran ROM rlps. Arsitektur bagian proses update nilai range ditunjukkan oleh gambar 4.14. 46

Gambar 4.14 Arsitektur Proses Update Nilai Range Untuk proses update nilai offset, nilai yang diambil dapat berupa selisih nilai masukan offset_in dan output substractor nilai masukan range_in dan data rlps, atau nilai masukan offset_in langsung. Nilai offset_in dipilih sebagai nilai update offset jika sel_offs bernilai 1. Sebaliknya, jika sel_offs bernilai 0 maka dipilih selisih nilai masukan offset_in dan output substractor nilai masukan range_in dan data rlps. Arsitektur untuk proses update nilai offset ditunjukkan oleh gambar 4.15. Gambar 4.15 Arsitektur Proses Update Nilai Offset Proses update nilai offset dan range dilakukan bersama-sama, oleh karena itu, proses pengurangan nilai range_in dan data rlps dapat dilakukan oleh satu buah unit substractor. Dengan demikian arsitektur akhir untuk proses update range dan offset dapat dilihat pada gambar 4.16. 47

offset_in[15:0] range_in[15:0] 0 1 offs_o[15:0] 16'd2 {8'd0, rlps_data[7:0]} 1 0 sel_offs sel_rlps 0 1 rng_o[15:0] sel_rng Gambar 4.16 Arsitektur Proses Update Nilai Offset dan Range 4.4.1.2 Renormalisasi Nilai Range dan Offset Nilai update range sebelum ditulis ke register akan dicek dulu untuk menentukan apakah perlu dilakukan renormalisasi atau tidak. Secara struktural, arsitektur rangkaian untuk proses renormalisasi nilai range dan offset dapat dilihat pada gambar 4.17 dan gambar 4.18. Gambar 4.17 Arsitektur Shift Register untuk Renormalisasi Nilai Range Gambar 4.18 Arsitektur Shift Register untuk Renormalisasi Nilai Offset 48

4.4.1.3 Unit Update Nilai State dan MPS Selain proses update nilai range dan offset, pada blok arcod juga dilakukan proses update ste_mps. Nilai update ste_mps terdiri dari dua bagian, yaitu nilai update state dan nilai update MPS. Nilai update state diambil dari keluaran ROM_state. Jika nilai sel_ste bernilai 1 nilai update state adalah ROM_state_data[5:0], sedangkan jika nilai sel_ste bernilai 1 nilai update state adalah ROM_state_data[11:6]. Nilai update MPS diperoleh dari nilai berdasarkan nilai masukan MPS atau inversi masukan MPS. Jika nilai sel_mps bernilai 1 nilai update MPS adalah inversi nilai masukan MPS, sedangkan jika nilai sel_mps bernilai 0 nilai update MPS sama dengan nilai masukan MPS. Arsitektur untuk proses update state dan MPS ditunjukkan gambar berikut: Gambar 4.19 Arsitektur Proses Update Nilai State dan MPS 49

4.4.1.4 Unit Decoding Bit Proses decoding pada blok arcod, ditentukan oleh nilai sel_decout_bit. Nilai output bit yang di-decode ditunjukkan dalam tabel berikut: Tabel 4.3 Pemilihan Hasil Decoding untuk Blok Arcod sel_decout_bit decout_bit 00 ste_mps_in [0] 01!ste_mps_in [0] 10 1 b0 11 1 b1 4.4.1.5 Unit Kontrol Arcod Bagian unit kontrol untuk blok arcod diimplementasikan dengan menggunakan FSM, seperti ditunjukkan gambar berikut. Gambar 4.20 State Transition Unit Kontrol Blok Arcod 50

Bagian unit kontrol serta untuk proses sinkronisasi pipeline blok arcod core dan menghasilkan sinyal-sinyal kontrol yang dibutuhkan untuk multiplexer pada bagian arcod core. Proses pipeline dilakukan untuk proses update nilai range dan nilai offset. ARCOD_STAGE1, merupakan tahap pembacaan data dari ROM_rLPS dan ROM_state. Pada state ARCOD_STAGE2 sampai ARCOD_STAGE4 dilakukan proses update nilai range dan offset. Dengan demikian setiap proses update nilai range dan offset dilakukan dalam 3 clock cycle. Dari proses update, dihasilkan nilai-nilai status untuk proses decoding. Sinyal status yang dihasilkan adalah : offs_high_valid Sinyal status offs_high_valid merupakan sinyal status yang menunjukkan nilai offset input lebih besar dari selisih nilai output substractor nilai masukan range_in dan data rlps. Dengan kata lain nilai status offs_high_valid dapat diperoleh dari inversi nilai MSB bit output pengurangan tahap kedua pada proses update nilai offset. range_low_valid Sinyal status range_low_valid merupakan sinyal status yang menunjukkan bahwa nilai range dari proses update masih lebih kecil dari 0x0100. Nilai ini akan digunakan untuk menentukan apakah proses renormalisasi diperlukan atau tidak. state_zero Sinyal status state_zero dihasilkan untuk meunjukkan bahwa data yang terbaca dari ROM state bernilai nol. Status state_zero diperlukan untuk pemilihan nilai update MPS. Sinyal-sinyal status yang dihasilkan oleh blok arcod core selama proses update ini, digunakan oleh unit kontrol arcod, untuk menghasilkan sinyal kontrol multiplexer 51

pada arcod core. Sinyal-sinyal kontrol multiplxer yang diperlukan oleh blok arcod core, sebagaimana telah disebutkan pada bagian sebelumnya, adalah sebagai berikut : sel_rlps sinyal kontrol sel_rlps merupakan sinyal kontrol yang digunakan untuk memilih data keluaran dari ROM rlps. Nilai sinyal sel_rlps ditentukan oleh mode decoding, yaitu bernilai 1 saat mode Terminate. Untuk sinkronisasi pipeline sinyal sel_rlps akan dihasilkan saat state FSM berada pada ARCOD_STAGE2. sel_offs Sinyal kontrol sel_offs digunakan untuk pemilihan nilai update offset. Nilai sel_offs akan bernilai 1 jika nilai offs_high_valid bernilai 1 dan mode decoding normal. sel_rng Sinyal kontrol sel_rng digunakan untuk pemilihan nilai update range. Nilai sel_offs akan bernilai 1 jika nilai offs_high_valid bernilai 1 dan mode decoding normal. sel_ste Sinyal kontrol sel_ste digunakan untuk pemilihan nilai update state. Nilai sel_ste akan bernilai 1 jika nilai offs_high_valid bernilai 1. sel_mps Sinyal kontrol sel_mps digunakan untuk pemilihan nilai update state. Nilai sel_ste akan bernilai 1 jika nilai offs_high_valid bernilai 1 dan nilai state_zero bernilai 1. sel_decout_bit Sinyal kontrol sel_decout_bit digunakan untuk menuntukan bit yang didecode, sebagai keluaran blok arcod. Nilai sel_decout_bit, merupakan sinyal kontrol 2-bit didapat dari gabungan nilai mode decoding dan nilai offset_high_valid. 52

Proses blok arcod secara timing dapat digambarkan sebagai berikut : Gambar 4.21 Timing Diagram Blok Arcod 4.4.2 Bypass Pada proses decoding mode bypass hanya dilakukan proses update nilai offset. Proses update pada nilai range, state dan MPS tidak dilakukan. Diagram blok proses decoding pada mode bypass digambarkan sebagai berikut. Gambar 4.22 Blok Diagram Unit Bypass Proses update nilai offset pada mode bypass membutuhkan bitstream. Nilai update offset diambil dari selisih nilai masukan offset yang dikali dengan dua dan ditambah bitstream dengan nilai masukan range atau langsung dari nilai masukan offset yang dikali dengan dua dan ditambah bitstream. Proses update nilai range dan offset pada unit bypass dilakukan dengan arsitektur seperti yang diperlihatkan pada gambar 4.23. 53

bitstream offset_in range_in offs_high_valid 0 1 offset_new range_new 1'b0 1'b1 0 1 decout_bit Gambar 4.23 Arsitektur Proses Update Nilai Offset Dari keluaran substractor dapat ditentukan nilai offs_high_valid untuk menentukan nilai update offset dan nilai output bit yang di-decode. Cara penentuan nilai offs_high_valid ini sama dengan cara penentuan nilai offs_high_valid pada blok arcod. Jika nilai offs_high_valid bernilai 1 maka nilai update offset, offset_new, adalah output substractor, dan bit yang di-decode bernilai 1. Sebaliknya, jika offs_high_valid bernilai 0 maka nilai update offset, offset_new, adalah nilai offset yang dikalikan dua dan ditambah bitstream, dan bit yang di-decode bernilai 0. Blok substractor juga akan mengeluarkan sinyal status bypass_done, untuk menunjukkan bahwa proses decoding selesai dilakukan. Nilai bypass_done ini digunakan untuk sinkronisasi dengan blok-blok lainnya seperti Init Context dan Offset Range Register. Sinyal-sinyal kontrol dari blok bypass dihasilkan berdasarkan kondisi state dari FSM, yaitu pada state BYPASS_OUTPUT. Bagian unit kontrol untuk blok bypass diimplementasikan dengan menggunakan FSM, seperti ditunjukkan pada gambar 4.24. 54

Gambar 4.24 State Transiton Decoding Mode Bypass 4.5 Perancangan Offset dan Range Register Blok register ini digunakan untuk menyimpan nilai akhir offset dan range dari setiap proses decoding. Nilai offset dan range yang tersimpan di register ini akan digunakan sebagai nilai awal offset dan range proses decoding berikutnya. Gambar 4.25 Arsitektur Register Offset dan Range 55

Karena nilai offset dan range yang ditulis pada register ini dapat berasal dari blok arcod atau blok bypass, maka diperlukan multiplexer untuk pemilihan nilai offset dan range yang akan ditulis. Arsitektur untuk register offset dan range ini dapat dilihat pada gambar 4.25. Pemilihan input multiplexer ditentukan oleh sinyal arcod_done. Jika nilai arcod_done 1, maka data offset dan range dari proses arcod yang akan dipilih. Penulisan nilai offset dan range dikontrol oleh sinyal kontrol offs_range_we, yang merupakan hasil operasi OR antara sinyal arcod_done dan bypass_done. 56