• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PERANCANGAN AWAL INVERSE-CABAC Proses Inisialisasi untuk Variabel Context"

Copied!
19
0
0

Teks penuh

(1)

BAB 3

PERANCANGAN AWAL INVERSE-CABAC

Pada program JM 11.0 yang digunakan sebagai program acuan pada tugas akhir ini, algoritma binary arithmetic coding untuk modul Inverse-CABAC dimuat

dalam file biaridecod.c. Proses perancangan awal arsitektur Inverse-CABAC ini selain dilakukan berdasarkan pemahaman yang didapat dari standard, juga dilakukan dengan mengidentifikasi kode C yang mendeskripsikan kerja Inverse-CABAC pada program acuan tersebut.

3.1 Proses Inisialisasi

Pada standard dijelaskan bahwa sebelum memulai proses decoding diperlukan proses inisialisasi. Ada dua proses inisialisasi yang dijelaskan pada standard, yaitu proses inisialisasi variabel context dan proses inisialisasi untuk decoding engine.

3.1.1 Proses Inisialisasi untuk Variabel Context

Tabel 3.1 Kode C untuk Proses Inisialisasi Variabel Context

/*!

************************************************************************ * \brief

* Initializes a given context with some pre-defined probability state ************************************************************************ */

void biari_init_context (struct img_par* img, BiContextTypePtr ctx, const int* ini)

{

int pstate;

pstate = ((ini[0]* max(0,img->qp) )>>4) + ini[1]; pstate = min (max ( 1, pstate), 126);

if ( pstate >= 64 ) { ctx->state = pstate - 64; ctx->MPS = 1; } else { ctx->state = 63 - pstate; ctx->MPS = 0; } }

(2)

Standard menjelaskan bahwa nilai state (pStateIdx) dan MPS (valMPS) untuk inisialisasi ini bergantung pada parameter kuantisasi (SliceQPY). Bila nilai m dan

n diberikan dalam bentuk tabel, berikut adalah algoritma yang digunakan untuk menentukan nilai state dan MPS tersebut.

Tabel 3.2 Pseudo Code Penghitungan Nilai Context Model [5]

1. preCtxState = Clip3(1, 126, (( m ∗ Clip3( 0, 51, SliceQPY )) >> 4 ) + n )

2. if( preCtxState <= 63 ) { pStateIdx = 63 - preCtxState valMPS = 0 } else { pStateIdx = preCtxState - 64 valMPS = 1 }

Dari tabel 3.2 di atas, bagian pertama fungsi inisialisasi variabel context, nilai preCtxState, dapat dibagi menjadi beberapa tahap komputasi. Pertama, perkalian nilai parameter kuantisasi (SliceQPY) dengan nilai m. Kedua, penjumlahan hasil perkalian yang di-shift kanan dengan nilai n. Ketiga, proses clipping terhadap

hasil penjumlahan, yaitu membatasi nilai ini di antara 1 sampai 126. Bagian kedua fungsi inisialisasi adalah pembentukan nilai context model dari output clipping.

Dengan demikian komponen datapath untuk proses inisialiasasi context model dapat diidentifikasi sebagai berikut :

1. Multiplier

Multiplier yang dibutuhkan memiliki lebar data input masing-masing 8-bit, yaitu input pertama untuk nilai parameter kuantisasi, sedangkan input kedua untuk nilai m. Dengan demikian lebar data output multiplier adalah 16-bit. Karena output multiplier akan selalu di-shift right sebanyak 4-bit, maka nilai

efektif dari multiplier yang akan diambil untuk proses berikutnya adalah 12 MSB bit. Ilustrasi untuk input dan output multiplier ini dapat dilihat pada gambar 3.1.

(3)

Gambar 3.1 Komponen Multiplier untuk Proses Inisialisasi

2. Adder

Adder yang diperlukan pada proses inisialisasi context model adalah adder 12-bit, seperti yang terlihat pada gambar 3.2. Input adder adalah 12-bit data keluaran multiplier dan nilai n. Karena nilai n adalah data 8-bit, maka data ini perlu di-sign extend terlebih dahulu sebelum menjadi input multiplier.

Gambar 3.2 Komponen Adder untuk Proses Inisialisasi

3. Clipper

Fungsi clipper adalah membatasi nilai keluaran proses penjumlahan pada

tahap kedua proses inisialisasi agar berada pada range yang ditentukan, yaitu antara 1 sampai 126.

1 Smi 126≤ ≤

Secara fungsional, proses clipping dapat diimplementasikan dengan

menggunakan dua buah komparator dan dua buah multiplexer. Akan tetapi, untuk mendapatkan rancangan hardware yang optimum dalam hal area

maupun combination delay, maka bagian komparator digantikan dengan

(4)

Berdasarkan range yang telah ditentukan, maka keluaran clipper cukup untuk

direpresentasikan dalam data 8-bit. Dengan demikian untuk proses komparasi akan dilakukan berdasarkan nilai bit ke-0 sampai ke-7 dari data tersebut.

a. Komparator pertama

Pseudo-code untuk proses komparasi bagian pertama adalah sebagai

berikut :

If (mQn > 1) Sma = mQn Else

Sma = 1

Dengan demikian, secara hardware, proses komparasi dapat dilakukan

dengan melakukan operasi OR setiap bit mQn seperti yang terlihat pada gambar 3.3. Hasil proses OR ini digunakan sebagai sinyal kontrol untuk memilih data input atau “1”.

Gambar 3.3 Operasi OR sebagai Pengganti Komparator

b. Komparator kedua

Pseudo-code untuk proses komparasi bagian pertama adalah sebagai

berikut :

If (Sma > 126) Smi = 126 Else

(5)

Dengan demikian, secara hardware, proses komparasi di atas dapat

dilakukan dengan melakukan operasi OR bit ke-7 Smi dengan hasil operasi AND bit ke-0 sampai bit ke-6 Smi seperti yang terlihat pada gambar 3.4. Hasil operasi logika ini digunakan sebagai sinyal kontrol untuk memilih data input atau “126”.

Gambar 3.4 Konfigurasi OR dan AND sebagai Pengganti Komparator

4. Logic Unit untuk pembentukan context model

Bagian ini merupakan tahap terakhir proses inisialisasi untuk variabel context. Dari tabel 3.2 dapat dilihat variabel context terdiri dari dua data, yaitu nilai state, berupa data 6-bit dan nilai MPS, data 1-bit. Dengan demikian, untuk proses pembentukan state dan MPS hanya akan memperhitungkan 7-bit terakhir Smi (Smi[6:0]).

Proses pembentukan nilai state dan MPS dilakukan berdasarkan range nilai Smi. Pertama, nilai Smi yang lebih besar dari 63, dan kedua, nilai Smi lebih kecil atau sama dengan 63. Dengan demikian, batas pembagian range nilai Smi, yang juga menunjukkan nilai MPS, dapat diidentifikasi dari nilai Smi[6].

(6)

Gambar 3.5 Proses Mappping untuk Pembentukan Nilai State

Setelah nilai MPS diperoleh, tahap selanjutnya, yaitu pembentukan nilai state, dapat dilakukan. Pembentukan nilai state dapat digambarkan dalam data mapping

seperti gambar 3.5. Bagian kiri, merupakan mapping untuk nilai MPS sama

dengan “0”, sedangkan bagian kanan adalah mapping untuk nilai MPS sama

dengan “1”.

Proses mapping ini, secara fungsional, seperti ditunjukkan dalam pseudo code,

dapat dilakukan dengan menggunakan substractor dan multiplexer. Akan tetapi, dengan mempertimbangkan area yang digunakan, maka proses pembentukan nilai state dilakukan dengan menggunakan rangkaian dalam bentuk gate level. Dari

proses mapping terlihat bahwa, untuk nilai MPS “0” data akan di-mapping

menjadi nilai 1’s complement atau hasil bit-wise NOT dari data masukan. Sedangkan untuk nilai MPS “1” data akan di-bypass. Dengan demikian,

rancangan rangkaian pembentuk nilai state dan MPS dapat digambarkan seperti gambar 3.6.

(7)

Gambar 3.6 Arsitektur Pembentuk Nilai State dan MPS

Untuk proses inisialisasi context model, nilai m dan n yang diberikan dalam bentuk tabel, dapat diimplementasikan menjadi ROM, seperti yang terlihat pada gambar 3.7.

ROMContext 844 x 16 bit

address data

10 16

Gambar 3.7 ROM Context

Ada 844 nilai m dan n yang akan digunakan untuk menghitung state dan MPS yang akan membentuk context model. Dengan demikian, untuk mengakses ROM ini diperlukan input adress sepanjang 10 bit. Nilai m dan n ini sendiri panjang masing-masingnya adalah 8 bit, sehingga bila data output dari ROM ini, berupa nilai m dan n yang penulisannya disatukan, maka panjang data output ROM ini menjadi 16 bit, seperti yang diilustrasikan pada gambar berikut.

(8)

Nilai state dan MPS (context model) yang dihasilkan dari algoritma di atas kemudian akan disimpan ke dalam suatu memory. Nilai state maksimum pada context model ini adalah 63, yang kemudian direpresentasikan ke dalam 6 bit bilangan biner, sedangkan nilai MPS hanya 1 bit sehingga bila nilai state dan mps disatukan terlebih dahulu sebelum ditulis ke memory maka data input untuk memory ini adalah sebanyak 7 bit. Karena jumlah context model yang dihitung adalah sejumlah nilai m dan n yang disimpan di dalam ROM Context, maka dengan demikian ukuran memory yang diperlukan untuk menampung nilai state dan MPS awal adalah 7 bit x 844. Gambar 3.9 adalah diagram blok memory yang digunakan untuk menyimpan context model.

RAMContext 844 x 7 bit address data_out 10 16 data_in 7 write_enable read_enable Gambar 3.9 RAM_Context

3.1.2 Proses Inisialisasi untuk Decoding Engine

Proses ini berlangsung sebelum men-decode macroblock pertama pada suatu slice

atau setelah men-decode pcm_alignment_zero_bit, pcm_sample_luma, dan

pcm_sample_chroma dari suatu macroblock tipe I_PCM.

Output proses ini, yaitu:

• codIRange diset sama dengan 0x01FE

• codIOffset diset sama dengan nilai 9 bit pertama dari bitstream

Standar mendefinisikan penggunaan register 16-bit untuk kedua variabel di atas, tetapi kebutuhan minimum untuk kedua variabel tersebut adalah 9 bit. Pada perancangan inverse CABAC ini, output proses ini akan disimpan pada register 16-bit.

(9)

Gambar 3.10 Register Range dan Offset

Selain digunakan untuk menyimpan nilai inisialisasi yang dibutuhkan oleh decoding engine, register range dan offset ini juga digunakan untuk menyimpan nilai update range dan offset setelah proses pada decoding engine. Nilai update range dan offset ini akan digunakan untuk proses berikutnya pada decoding engine. Gambar 3.10 menunjukkan diagram blok register yang digunakan untuk menyimpan nilai range dan offset.

3.2 Tahapan pada Decoding Engine

Setelah proses inisialisasi selesai, maka proses arithmetic decoding dapat dilakukan. Ada tiga mode untuk proses arithmetic decoding ini, yaitu mode normal (DecodeDecision), mode bypass (DecodeBypass), dan mode terminate (DecodeTerminate). Standard menjelaskan input dan langkah-langkah yang dibutuhkan untuk menjalankan proses arithmetic decoding sesuai masing-masing mode, beserta diagram alir yang dapat membantu pemahaman tentang proses yang terjadi pada decoding engine tersebut.

3.2.1 Proses Arithmetic Decoding untuk Mode Normal

Input untuk proses ini adalah nilai range, offset, serta nilai state dan MPS (context model), sedangkan output proses ini adalah nilai decoded bit, dan update nilai range dan offset, serta update nilai context model. Gambar 3.11 menunjukkan diagram alir proses decoding untuk mode normal.

(10)

3.2.1.1Proses Pengaksesan Tabel

Dari diagram alir tersebut terlihat bahwa proses pertama yang dilakukan pada proses arithmetic decoding ini adalah menentukan nilai qCodIRangeIdx yang akan digunakan untuk mengakses tabel rangeTabLPS, seperti dispesifikasikan dalam tabel 9-35 pada dokumen standard H.264 dari ITU-T [5]. Beberapa nilai rangeRLPS pada tabel rangeTabLPS tersebut dapat dilihat pada tabel 3.3.

Gambar 3.11 Diagram Alir Proses Decoding untuk Mode Normal [5]

Tabel 3.3 Nilai rangeTabLPS

pStateIdx qCodRangeIdx 0 1 2 3 0 128 176 208 240 1 128 167 197 227 2 128 158 187 216 ... ... ... ... ... 63 2 2 2 2

(11)

Untuk proses decoding, nilai rangeTabLPS seperti ditunjukkan tabel 3.3 diimplementasikan dengan ROM. Alamat ROM rLPS dibentuk dari nilai qCodRangeIdx dan pStateIdx. Berdasarkan kemungkinan nilai qCodRangeIdx dan pStateIdx, maka alamat ROM dapat direpresentasikan dalam 8-bit. Proses pembentukan ROM rLPS dan alamat ROM rLPS diilustrasikan dalam mapping,

seperti terlihat pada gambar 3.12.

7 6 5 0 qCodeIrangeIdx[1:0] pStateIdx[5:0] ROM_rLPS Address 0 1 2 3 255 ROM_rLPS qCodIrangeIdx 0 1 2 3 pStateIdx 0 1 2 3 4 . . . 63 127

Gambar 3.12 Mapping Data dan Alamat untuk ROM rLPS

Selain menggunakan tabel rangeTabLPS untuk menentukan nilai codIRangeLPS, diagram alir proses arithmetic decoding untuk mode normal menunjukkan bahwa nilai state juga akan di-update dengan mengakses tabel. Tabel yang digunakan

untuk update nilai state pada proses decoding ini dispesifikasikan dalam tabel 9-36 pada dokumen standard H.264 dari ITU-T [5]. Beberapa nilai update state untuk setiap index, ditunjukkkan pada tabel 3.4.

(12)

Dari tabel 3.4 dapat dilihat untuk setiap nilai index, nilai state terdiri dari dua buah data, yaitu nilai state LPS dan state MPS. Nilai-nilai state tersebut, untuk realisasi rancangan Inverse CABAC diimplemetasikan dalam ROM, dimana nilai state LPS dan MPS digabung menjadi satu data. Dengan penggabungan data dalam satu alamat, maka proses decoding alamat ROM hanya diperlukan sekali saja. Dengan demikian, hasil rancangan akan memiliki area yang lebih kecil.

Tabel 3.4 Nilai Update untuk State

pStateIdx transIdxLPS transIdxMPS State

0 0 1 1 0 2 2 1 3 3 2 4 ... ... ... 63 63 63

Gambar 3.13 menunjukkan pembentukan ROM state dari tabel nilai state.

State LPS State MPS

7 0

0 7

ROM State Data

Gambar 3.13 Format Data ROM state

Walaupun diagram alir menunjukkan bahwa tabel rangeTabLPS dan tabel state diakses pada urutan yang berbeda, akan tetapi secara hardware proses ini dapat dilakukan dalam clock cycle yang sama. Arsitektur pembacaan ROM rLPS dan ROM State dapat dilihat pada gambar 3.14.

(13)

Gambar 3.14 Akses ROM rLPS dan ROM State

3.2.1.2Proses Update Nilai Range dan Offset

Pada proses decoding, nilai range dan offset akan di-update. Dari diagram alir terlihat bahwa output proses update ini akan dipilih berdasarkan hasil perbandingan nilai offset dan range (codIOffset >= codIRange), seperti yang terlihat pada tabel 3.5. Selain mempengaruhi update nilai range dan offset, hasil perbandingan nilai offset dan range juga akan mempengaruhi output bit yang di-decode.

Tabel 3.5 Proses Update Range dan Offset Mode Normal

codIOffset >= codIRange codIOffset < codIRange update Range = codIRangeLPS = codIRange - codIRangeLPS update Offset = codIOffset – (codIRange –

codIRangeLPS)

= codIOffset

decoded bit = !valMPS = valMPS

Dari tabel di atas terlihat bahwa dibutuhkan 2 komponen substractor dan 2 multiplexer untuk membentuk datapath yang digunakan untuk proses update range dan offset. Arsitektur untuk proses update range dan offset ini dapat dilihat pada gambar 3.15.

(14)

Gambar 3.15 Arsitektur Update Range dan Offset Mode Normal

3.2.1.3Proses Renormalisasi

Gambar 3.16 Diagram Alir untuk Proses Renormalisasi [5]

Proses berikutnya yang dilakukan pada tahap decoding adalah renormalisasi. Proses renormalisasi ditunjukkan dalam diagram alir pada gambar 3.16.

Dari diagram alir dapat dilihat bahwa renormalisasi dilakukan jika nilai range lebih kecil dari 0x100. Dengan demikian tahap pertama dari renormalisasi adalah pengecekan nilai range. Proses pengecekan nilai range dilakukan dengan mengggunakan operasi bit-wise nilai range. Hasil operasi logika ini digunakan

sebagai salah satu sinyal kontrol yang menentukan terjadinya proses renormalisasi. Arsitektur rangkaian untuk pengecekan nilai range dapat digambarkan seperti

(15)

Range[15:0]

range[15] range[14] range[8]

low_range_valid

Gambar 3.17 Gate untuk Pengecekan Nilai Range

Nilai renormalisasi range diperoleh dari nilai update range yang dikalikan dua, sedangkan nilai renormalisasi offset diperoleh dengan mengalikan nilai update offset dan ditambah dengan nilai bitstream.

Proses renormalisasi ini diimplementasikan dengan menggunakan proses shifting,

seperti diilustrasikan gambar 3.18 dan gambar 3.19.

Gambar 3.18 Ilustrasi Renormalisai Nilai Range

offset_out[14:0] offset_out[15:0]

offset_out[14:0]

bitstream

(16)

3.2.2 Proses Arithmetic Decoding untuk Mode Bypass

Input untuk proses ini adalah nilai range, offset, dan bitstream. Diagram alir proses decoding untuk mode bypass ini dapat dilihat pada gambar 3.20.

Gambar 3.20 Diagram Alir Proses Decoding untuk Mode Bypass [5]

Dari diagram alir dapat dilihat bahwa proses decoding pada mode bypass dimulai dengan menggeser nilai codIOffset ke kiri satu bit, kemudian ditambahkan dengan dengan nilai bitstream. Proses ini dapat dilihat pada gambar 3.21

.

Gambar 3.21 Proses Shifting codIOffset pada Mode Bypass

Pada proses arithmetic decoding untuk mode bypass, hanya nilai offset yang akan di-update sedangkan nilai range update-nya akan selalu sama dengan nilai range

inputnya. Proses update range dan offset ini dirangkum pada tabel 3.6, sedangkan arsitektur untuk proses update range dapat dilihat pada gambar 3.22.

(17)

Tabel 3.6 Proses Update Range dan Offset Mode Bypass

codIOffset >= codIRange codIOffset < codIRange update Range = codIRange = codIRange

update Offset = codIOffset – codIRange = codIOffset

decoded bit = 1 = 0

Gambar 3.22 Arsitektur untuk Proses Update Offset pada Mode Bypass

3.2.3 Proses Arithmetic Decoding untuk Mode Terminate

Diagram alir untuk proses decoding dengan mode terminate ini dapat dilihat pada gambar 3.23. codIOffset >= codIRange binVal = 1 binVal = 0 Yes No Done DecodeTerminate RenormD codIRange = codIRange-2

(18)

Dari diagram alir terlihat bahwa tahap pertama pada proses arithmetic decoding untuk mode terminate adalah meng-update nilai range input. Proses update nilai

range ini membutuhkan komponen substractor seperti yang terlihat pada gambar berikut:

Gambar 3.24 Komponen Substractor untuk Update Nilai Range

Berbeda dengan proses arithmetic decoding untuk mode normal dan bypass, update nilai range dan offset tidak akan bergantung pada hasil perbandingan nilai offset dan range (codIOffset >= codIRange). Hasil perbandingan nilai offset dan range tersebut hanya akan mempengaruhi nilai bit yang di-decode. Pengaruh hasil

perbandingan nilai offset dan range ini dapat dilihat pada tabel berikut.

Tabel 3.7 Proses Update Range dan Offset Mode Terminate

codIOffset >= codIRange codIOffset < codIRange update Range = codIRange - 2 = codIRange - 2

update Offset = codIOffset = codIOffset

decoded bit = 1 = 0

Proses decoding pada mode Terminate juga membutuhkan proses renormalisasi. Tahapan proses renormalisasi pada mode Terminate sama dengan proses renormalisasi pada mode Normal, yang membedakan hanya syarat yang diperlukan untuk memulai proses renormalisasi tersebut.

(19)

Dari perancangan awal Inverse-CABAC, didapatkan komponen-komponen datapath dan format data yang diperlukan untuk proses perancangan lebih lanjut. Dari tahap ini juga dapat diidentifikasi bahwa proses Inverse-CABAC dapat dilakukan dalam beberapa blok, yaitu:

1. Blok Init Context, untuk proses inisialisasi variabel context,

2. Register Range dan Offset, untuk proses inisialisasi decoding engine dan menyimpan nilai update range dan offset,

3. Blok Arithmetic Coding, untuk proses decoding engine. Berdasarkan proses update nilai range, offset dan renormalisasi, maka proses decoding engine dilakukan oleh blok arcod dan blok bypass. Blok arcod digunakan

untuk proses decoding pada mode normal dan terminate, sedangkan blok bypass digunakan untuk proses decoding pada mode bypass.

Gambar

Tabel 3.1 Kode C untuk Proses Inisialisasi Variabel Context
Tabel 3.2 Pseudo Code Penghitungan Nilai Context Model [5]
Gambar 3.1 Komponen Multiplier untuk Proses Inisialisasi
Gambar 3.3 Operasi OR sebagai Pengganti Komparator
+7

Referensi

Dokumen terkait

Kualitas Pelayanan Kesehatan dalam Operasionalisasi Program Mobil Sehat di UPT Puskesmas Kedungpring. Kesadaran Tenaga Kesehatan Mobil Sehat Dalam Memberikan

Oleh karena itu megalitik yang merupakan suatu kumpulan dalam suatu ruang atau disebut dengan situs, lebih difokuskan pada keletakan lokasi terhadap bentang lahan di

Pengertian mutu pelayanan kesehatan secara umum adalah derajat kesempurnaan  pelayanan kesehatan yang sesuai dengan standar profesi dan standar pelayanan dengan

0,000. Hasil uji mean, maka diketahui bahwa mean untuk kecerdasan emosi perawat laki-laki yaitu 149.06 lebih besar dari mean kecerdasan emosi perempuan yaitu 135.63. Dengan

Analisis ketersediaan air h1uan adalah air hujan yang turon di· daerah Kecamatan Kraton Yogyakarta dimanfaatkan untuk dapat digunakan sebagai kebutuhan air rumah

Pada sumur ke-5 dan 6 yang merupakan sampel sirip ekor ikan nila 1 dan nila 2, diperoleh pita DNA dengan nyala yang jelas dan terang (tidak ada pita RNA), sehingga isolat DNA genom

Berdasarkan hasil penelitian digambarkan bahwa pengembangan model kebijakan Budaya K3 dalam rangka peningkatan keamanan dan kesehatan lingkungan kerja berdasar

Adapun data-data meliputi nilai COP (Coefficient of Performance), laju perpindahan panas secara konduksi pada sisi panas modu l TEC (Qh) dan hubungannya terhadap arus pada TEC