Monday, October 29, 2012

Biarkan Masa Depan Datang Sendiri

"Telah pasti datangnya ketetapan Allah, maka janganlah kamu meminta agar disegerakan (datangnya)-nya"
{Q.S An-Nahl : 1}

Jangan pernah mendahului sesuatu yang belum terjadi! Apakah kita ingin mengeluarkan kandungan sebelum waktunya dilahirkan, atau memetik buah-buahan sebelum masak? Hari esok adalah sesuatu yang belum nyata dan dapat diraba, belum berwujud, dan tidak memiliki rasa dan warna. Jika demikian, mengapa kita harus menyibukkan diri dengan hari esok, mencemaskan kesialan-kesialan yang mungkin terjadi padanya, memikirkan kejadian-kejadian yang akan menimpanya, dan meramalkan bencana-bencana yang bakal terjadi di dalamnya? Bukankah kita juga tidak tahu apakah kita akan bertemu dengannya atau tidak, dan apakah hari esok kita itu akan berwujud kesenangan atau kesedihan ?

Yang jelas, hari esok masih ada dalam alam gaib dan belum turun ke bumi. Maka, tidak sepantasnya kita menyeberangi sebuah jembatan sebelum sampai di atasnya. Sebab, siapa yang tahu bahwa kita akan sampai atau tidak pada jembatan itu. Bisa jadi jalan kita akan terhenti sebelum sampai pada jembatan itu, atau mungkin pula jembatan itu hanyut terbawa arus terlebih dahulu sebelum kita sampai di atasnya. Dan bisa jadi pula, kita akan sampai pada jembatan itu dan kemudian menyeberanginya.

Dalam syariat, memberi kesempatan kepada pikiran untuk memikirkan masa depan dan membuka-buka alam ghaib, dan kemudian terhanyut dalam kecemasan-kecemasan yang baru diduga darinya, adalah sesuatu yang tidak dibenarkan. Pasalnya, hal itu termasuk thulul amal (angan-angan yang terlalu jauh). Secara nalar, tindakan itupun tidak masuk akal, karena sama halnya dengan berusaha perang melawan bayang-bayang. Namun ironis, kebanyakan manusia di dunia ini justru banyak yang termakan oleh ramalan-ramalan tentang kelaparan, kemiskinan, wabah penyakit dan krisis ekonomi yang kabarnya akan menimpa. Padahal, semua itu hanyalah bagian dari kurikulum yang diajarkan di sekolah-sekolah setan.
"Setang menjanjikan (menakut-nakuti) kamu dengan kemiskinan dan menyuruh kamu berbuat kejahatan (kikir), sedang Allah menjanjikan untukmu ampunan daripada-Nya dan karunia" {Q.S Al-Baqarah : 268}

Mereka yang menangis sedih menatap masa depan adalah yang menyangka diri mereka akan hidup kelaparan, menderita sakit selama setahun, dan memperkirakan umur dunia ini tinggal seratus tahun lagi. Padahal, orang yang sadar bahwa usia hidupnya berada di 'genggaman lain' tentu tidak akan menggadaikannya untuk sesuatu yang tidak ada. Dan orang yang tidak tahu kapan akan mati, tentu salah besar bila justru menyibukkan diri dengan sesuatu yang belum ada dan tak berwujud.

Biarkan hari esok itu datang dengan sendirinya. Jangan pernah menanyakan kabar beritanya, dan jangan pula pernah menanti serangan petakanya. Sebab, hari ini kita sudah sangat sibuk.

Jika kita heran, maka lebih mengherankan lagi orang-orang yang berani menebus kesedihan suatu masa yang belum tentu matahari terbit di dalamnya dengan bersedih pada hari ini. Oleh karena itu, hindarilah angan-angan yang berlebihan.

--La Tahzan--

Friday, October 26, 2012

Yang Lalu Biarlah Berlalu

Mengingat dan mengenang masa lalu, kemudian bersedih atas nestapa dan kegagalan di dalamnya merupakan tindakan bodoh dan gila. Itu sama artinya dengan membunuh semangat, memupuskan tekad dan mengubur masa depan yang belum terjadi.
Bagi orang yang berpikir, berkas-berkas masa lalu akan dilipat dan tak akan pernah dilihat kembali. Cukup ditutup rapat-rapat, lalu disimpan dalam ruang penglupaan, dikat dengan tali yang kuat dalam penjara pengacuhan selamanya. Atau, diletakkan di dalam ruang gelap yang tak tertembus cahaya. Yang demikian, karena masa lalu telah berlalu dan habis. Kesedihan tak akan mampu mengembalikannya lagi, keresahan tak akan sanggup memperbaikinya lagi, dan kegundahan tidak akan mampu berubahnya menjadi terang, dan kegalauan tidak akan dapat menghidupkannya kembali, karena ia memang sudah tidak ada.

Jangan pernah hidup dalam mimpi buruk masa lalu, atau di bawah payung gelap masa silam. Selamatkan diri Anda dari bayangan masa lalu! Apakah kita ingin mengembalikan air sungai ke hulu, matahari ke tempatnya terbit, seorok bayi ke perut ibunya, air susu ke payudara sang ibu, dan air mata ke dalam kelopak mata ? Ingatlah, keterikatan kita dengan masa lalu, keresahan kita atas apa yang telah terjadi padanya, keterbakaran emosi jiwa oleh api panasnya, dan kedekatan jiwa kita pada pintunya, adalah kondisi yang sangat naif, ironis, memprihatinkan, dan sekaligus menakutkan.

Membaca kembali masa lalu hanya akan memupuskan masa depan, mengendurkan semangat, dan menyia-nyiakan waktu yang sangat berharga. Dalam al-Qur'an, setiap kali usai menerangkan kondisi suatu kaum dan apa saja yang telah mereka lakukan, Allah selalu mengatakan, "Itu adalah ummat yang lalu." Begitulah, ketka suatu perkara telah habis, maka selesai pula urusannya. Dan tak ada gunanya mengurai kembali bangkai zaman dan memutar kembali roda sejarah.

Orang yang berusaha kembali ke masa lalu, adalah tak ubahnya orang yang menumbuk tepung, atau orang yang menggergaji serbuk kayu.

Syahdan, nenek moyang kita dahulu selalu mengingatkan orang yang meratapi masa lalunya demikian: "Janganlah engkau mengeluarkan mayat-mayat itu dari kuburnya." Dan konon, kata orang yang mengerti bahasa binatang, sekawan binatang sering bertanya kepada seekor keledai begini, "Mengapa engkau tidak menarik gerobak?"
"Aku benci hayalan," jawab keledai.
Adalah bencana besar, manakala kita rela mengabaikan masa depan dan justru hanya disibukkan oleh masa lalu. Itu, sama halnya dengan kita mengabaikan istana-istana yang indah dengan sibuk meratapi puing-puing yang telah lapuk. Padahal, betapapun seluruh manusia dan jin bersatu untuk mengembalikan semua hal telah berlalu, niscaya mereka tidak akan pernah mampu. Sebab, yang demikian itu sudah mustahil pada asalnya.

Orang berpikiran jernih tidak akan pernah melihat sedikitpun menoleh ke belakang. Pasalnya, angin akan selalu berhembus ke depan, air akan selalu mengalir ke depan, setiap kafilah akan berjalan ke depan, dan segala sesuatu akan bergerak maju ke depan. Maka itu, jangalah pernah melawan sunah kehidupan!

Kutipan dari : La Tahzan, Hal 4 - 5

Wednesday, October 24, 2012

Resource Allocation Type

Type resource allocation mendefinisikan cara bagaimana scheduler mengalokasikan resource block untuk setiap transmisi. Dalam istilah 'flexibility', cara untuk memberikan resource block dengan flexibilitas yang maksimum akan menggunakan deretan bit map (bit stream), setiap bit tersebut akan merepresentasikan setiap resource block group. Dengan cara tersebut akan dapat dicapai flexibilitas yang maksimum tetapi akan menghasilkan banyak proses kompilasi dari resource allocation atau terlalu banyak data (bit map yang terlalu panjang) untuk mengalokasikan resourcenya.
Oleh karena itu LTE memperkenalkan beberapa type dari resource allocation dan tiap tipe tersebut menggunakan prosedur yang telah terdefinisi sebelumnya. Ada tiga tipe resource allocation dalam LTE, yaitu resource allocation type 0, 1, dan 2. Penggunaan tiap tipe ini ke dalam tiap DCI seperti terlihat pada tabel di bawah :


Perlu diketahui bahwa sampai saat release 10, DCI format sudah mencapai DCI format 4, namun pada tabel di atas hanya ditampilkan sampai DCI format 2 saja, untuk format di lain belum dapat ditampilkan.

Resource Allocation Type 0
Resource allocation tipe 0 adalah cara yang paling sederhana dalam mengalokasikan resource allocation. Pertama resource blok dibagi menjadi group. Group ini sering disebut sebagai Resource Block Group (RBG). Jumlah resource block dalam tiap group tergantung pada sistem bandiwidth yang digunakan. Artinya ukuran RBG berbeda-beda tergantung pada system bandwidthnya. Hubungan antara ukuran RBG (jumlah resource block dalam RBG) dengan sistem bandwidth seperti terlihat pada tabel di bawah :
Sebagaimana diketahui bahwa resource allocation tipe 0 mengalokasikan resource dengan menggunakan bit map dan tiap bit tersebut mewakili satu buah resource block group. Susunan pada RA 0 ini adalah "RB --> RBG" dan resource allocation dilakukan pada level RBG. Contoh di bawah mungkin dapat memperjelas ilustrai RA 0 ini. Ilustrasi ini menggunakan sistem bandwidth 10 Mhz. Satu hal yang harus selalu diingat bahwa setiap bit map merepresentasikan satu RBG, bukan satu RB.
Field pertama yang perlu diperhatikan yaitu "RB-Assign". RB-assign berjumlah 17 bit yang diperoleh dari perhitungan berikut. Pertama sistem bandwidth adalah 10 Mhz berarti jumlah maksimum resource blocknya adalah 50. Nah jumlah maksimum tersebut jika kita cocokkan dengan tabel 7.1.6.1-1 pada ilustrasi di atas akan diperoleh bahwa RBG size adalah 3. Sow 1 bit map yang merepresentasikan 1 RBG akan memiliki 3 buah resource block atau PRB. Jika indeks PRB dimulai dari 0 - 49 (total 50), maka RBG atau bit map yang dibutuhkan adalah 49/3 = 17. Nah ketemu deh jumlah bit mapnya 17 biji ;) * moga jelas wkwkwk

Kemudian jika melihat deretan bit RB-assign = 00110100000000000. Kita liat ada 3 biji bit 1, berarti jumlah RBG-nya adalah 3 buah. Karena 1 RBG = 3 RB, maka total RB adalah 9 RB. Telah diketahui bahwa 1 RB itu sama dengan 12 RE (resource element atau sering juga disebut subcarrier dalam domain frekuensi) maka total RE adalah 12 x 9 = 108. Nah sampai di sini telah diketahui bahwa terdapat 108 RE. Setelah itu mari kita lihat field "MCS" yang bernilai '0'. Jika MCS ini kita cocokkan dengan tabel 7.1.7.1-1 "Modulation and TBS index table for PDSCH" yang terdapat pada TS 36213 7.1.7.1, seperti terlihat di bawah : (tabelnya sebagian aja, soalnya agak panjang)

Pada tabel terlihat bahwa untuk indeks MCS = 0, maka modulation ordernya ada 2. Hal ini berarti 1 RE = 3 bit. Sooowww..... 108 RE = 108 x 2 bit = 216 bit. Nah dari sini telah diketahui bahwa MAC layer dapat melakukan uplink sebanyak 216 bit pada transmisi berikutnya.

Resource Allocation Type 1
Resource tipe 1 ini juga menggunakan bitmap untuk mengalokasikan resource block, namun pada RA 1 ini ditambahkan beberapa susunan atau layer. Layer baru ini disebut sebagai subset RBG. Sehingga total hierarki RA tipe 1 adalah "RB-->RBG-->RBG subset" dan resource allocation dikerjakan pada revel RBG subset. Satu RBG subset dibentuk dari beberapa buah RBG. Namun jumlah RBG dalam tiap RBG subset juga tergantung dari sistem bandwidth yang digunakan. Hal yang perlu diperhatikan dalam RA tipe 2 ini yaitu:

  • Setiap bit dalam bitmap sudah langsung merepresentasikan 1 buah RB
  • Setiap RBG dialokasikan secara berurutan "across" beberapa RBG subset, seperti terlihat pada contoh di bawah 
  • Jumlah subset sama dengan jumlah RB dalam RBG
  • Tidak semua RB dapat dialokasikan karena jumlah subset tidak cukup untuk menkover semua RB
Contoh di bawah moga memberikan penjelasan yang lebih pas, pada contoh ini digunakan sistem bandwidth 10 Mhz.
Nah mari perhatikan field "RAType1", jumlah bit dalam field ini juga adalah 17 buah. Untuk memperoleh jumlah bit tersebut caranya sama dengan resource allocation tipe 0 sebelumnya. Namun pada RAType ini, 2 bit pertama menandakan subset, 1 bit berikutnya adalah shift, dan sisanya baru menunjukkan RB-Assign sebanyak 14 bit. Telah disebutkan di atas bahwa jumlah bit dalam bitmap atau RB-Assign sudah langsung menunjukkan jumlah resource block. Nah jika melihat RB-Assign tersebut hanya terdapat 3 buah bit 1, berarti jumlah resource blocknya ada 3 biji. Jika jumlah resource block ada 3 maka Resource Element (RE) = 3 x 12 = 36 RE. Sow.. klu udah dapat jumlah RE, langkah berikutnya adalah melihat field "MCS". MCS juga menunjukkan nilai 0, berati 1 RE = 2 bit. Sehingga jumlah bit total adalah 36 x 2 = 72 bit, selesai dah...!


Resource Allocation Type 2

Dalam RA type 2 ini, eNB mengalokasikan RB yang bersifat "contiguous", contiguous artinya berdekatan kali yah... ? :p. Contiguous RB tersebut adalah konsep "virtual" bukan konsep secara "physical". Ini berarti bahwa sekalipun MAC layer mengalokasikan beberapa contiguous RB, RB tersebut mungkin dapat secara tidak berurutan akan ditransmisikan pada PHY layer. Jadi harus ada aturan atau algoritma yang mengubah logical (virtual) RB allocation ini ke dalam bentuk physical RB allocation.
Ada dua tipe dari aturan konversi ini, yaitu localized dan distributed. Ketika digunakan localized maka baik virtual allocation ataupun physical allocation mengalokasikan RB dalam bentuk contiguous. Kemudian ketika digunakan distributed, virtual RB allocation bersifat contiguous namun physical allocation tidak bersifat contiguous, physical mendistribusikan RB pada range frekuensi secara keseluruhan. Di bawah ini adalah contoh ilustrasi untuk RA tipe 2 ini. Saya pikir ilustrasi ini sudah begitu jelas, jadi tidak usah ada penjelasan lagi dibawahnya. Pada contoh ini digunakan sistem bandwidth 10 Mhz juga.



From : sharetechnote
Reference:
TS-36.213 7.1.6 Resource Allocation

Tuesday, October 23, 2012

Iseng- "Memory Allocations"

Dalam dunia pemrograman, kita diizinkan untuk mengalokasikan ruang memory secara dinamis pada saat program berjalan sesuai dengan kita butuhkan, proses seperti ini dinamakan dengan alokasi memory dinamis (dynamic memory allocation). Sedangkan pada saat kita mendekalarikan variabel global maupun lokal di dalam kode program yang kita tulis, kompilaor secara otomatis akan memesan sejumlah ruang memory untuk menampung variabel tersebut, proses seperti ini disebut dengan alokasi memory statis (static memory allocation).

Untuk melakukan alokasi memory secara dinamis dibutuhkan pointer untuk mencata alamat-alamat baru yang dipesan. Bahasa C telah menyediakan fungsi-fungsi yang digunakan untuk proses pemesanan memory secara dinamis tersebut, yaitu fungsi malloc(), calloc(), dan realloc(). 


Fungsi malloc()
Fungsi ini mempunyai bentuk prototype seperti terlihat di bawah :

void * malloc(size_t n)

Fungsi malloc() akan mengembalikan pointer ke sejumlah n byte ruang memory yang belum diinisialisasi. Apabila tidak terpenuhi, maka fungsi ini akan mengembalikan nilai NULL. Hal yang perlu diperhatikan dalam  menggunakan fungsi ini adalah kita harus melakukan typecasting terhadap pointer yang akan dipesan sesuai dengan tipe data yang diinginkan. Perhatikan contoh penggunaan fungsi malloc di bawah ini :

int array[10];
int *p;
p = (int *) malloc(10 * sizeof(int));

Sintak ini artinya melakukan pemesanan atau mengalokasikan ruang memory sebanyak 40 byte (berasal dari 10x4) untuk menyimpan data yang bertipe int dan mencatat ruang memory tersebut ke dalam pointer p. Adapun nilai 4 di sini berasal dari ukuran tipe data int yaitu 4 byte. Jadi apabila kita ingin mengalokasikan ruanng memory untuk tipe data double, sedangkan kita telah mengetahui bahwa tipe data double berukuran 8 byte, maka kita dapat menuliskannya sebagai berikut :

double *p;
p =  (double*) malloc(8); 
/* atau dapat juga dituliskan p = (double*) malloc(sizeof(double)); */

Meskipun cara di atas dizinkan oleh kompilator serta program juga dapat berjalan dengan benar, namun kebanyakan dari programmer C pada umumnya lebih memilih untuk menggunakan operator sizeof untuk mendapatkan ukuran dari tipe data tertentu.

Fungsi calloc()
Fungsi ini mempunyai bentuk prototype sebagai berikut :

void *calloc(size_t n, size_t size);

Fungsi calloc() akan mengembalikan pointer ke sebuah array yang terdiri dari n elemen data dengan size yagn ditentukan. Apabila tidak terpenuhi, maka fungsi ini akan mengembalikan nilai NULL. Berbeda dengan fungsi malloc() yang tidak melakukan inisialisasi, pada fungsi calloc() ini ruang yang dialokasikan akan diinisialisasi dengan nilai nol. Untuk dapat lebih memahaminya, perhatikan contoh potongan kode program di bawah untuk penggunaan fungsi calloc().

int *p;
p = (int*) calloc(20, sizeof(int));

Sintak tersebut mengalokasikan 80 byte ruang memory (yang berasal dari 20x4). Dengan kata lain, terdapat 20 element array yang masing-masing elemennya berukuran 4 byte. Sama seperti sebelumnya, nilai 4 byte disini adalah ukuran dari tipe data int.


Fungsi realloc()
Fungsi terakhir yang dapat digunakan untuk mengalokasikan memory dalam bahasa C adalah realloc(). Prototype fungsi ini seperti terlihat di bawah :

void *realloc(void *p, size_t size)

Perlu ditekankan bahwa fungsi realloc() ini sebenarnya digunakan untuk melakukan perubahan terhadap alokasi memory yang sebelumnya telah dilakukan dengan menggunakan fungsi malloc() atau calloc(). Dengan kata lain, fungsi ini hanya digunakan untuk alokasi ulang apabila ternyata ruang yang dialokasikan oleh fungsi malloc() atau calloc() kurang besar. Fungsi realloc() ini akan mengembalikan pointer ke ruang baru yang ditambahkan, atau mengembalikan nilai NULL apabila permintaan ruang tersebut tidak terpenuhi. Berikut ini contoh penggunaan fungsi realloc() untuk menambahkan ruang memori yang telah dialokasikan.

int *p;
p = (int*) calloc(10, sizeof(int)); //memesan ruant 40 byte
realloc((int*) p, 80);//memesan ruang sebanyak 40 byte lagi, sehingga sekarang menjadi 80 byte



Nah... ! Untuk menghidari adanya pemborosan memory ataupun terjadinya memory leak (kebocoran memory), maka sebaiknya kita melakukan dealokasi terhadap ruang-ruang memory yang telah sebelumnya dialokasikan melalui fungsi malloc(), calloc(), ataupun realloc(). Dalam bahasa C, proses ini akan dilakukan dengan menggunakan fungsi free() yang memiliki parameter bertipe pointer. Prototype fungsi free() ini seperti terlihat di bawah :

void *free(void *p)

p didalam parameter fungsi free tersebut haruslah bertipe pointer. Contoh penggunaannya seperti terlihat di bawah :

int *p;
p = (int*) malloc(sizeof(int));
.....
.....
....
free(p);





Resource Element Groups

Informasi control untuk downlink pada physical channel dimasukkan ke dalam suatu resource unit yang lebih kecil dari pada resource block. Alasan melakukan hal ini adalah melakukan distribusi transmisi melalui banwdith yang lebih besar untuk memperoleh frequency-diversity. Sebagaimana telah diketahui bahwa control information secara umum lebih kecil daripada data dan jika resource block digunakan untuk transmisi control information, transmission akan menjadi bersifat lokal dalam domain frekuensi, hal ini tentu tidak diharapkan dari sudut pandang control-channel-perfomance. Unit resource yang digunakan untuk transmisi control information sering disebut sebagai resource element group (REG), yang terdiri dari 4 buah subcarriers (resource elements) dalam resource block pada OFDM symbol. Sebuah resource block berisi dua atau tiga  REG tergantung dari resource block dalam OFDM symbol apakah membawa reference signal atau tidak, seperti pada gambar di bawah :

Ketika terdapat reference signal dalam resource block, 4 dari 12 subcarrier digunakan untuk transmisi reference signal tersebut. 8 subcarriers yang tersisa kemudian akan digunakan untuk membentuk dua buah REG. Harus diketahui bahwa posisi subcarrier reference signal dalam resource block tidak tetap dan tergantung pada pergeseran frekuensi yang digunakan dalam tiap Cell atau eNB.

Resource element group direpsentasikan dengan pasangan index (k',l') dari resource element dengan k adalah index terendah dalam group dengan semua resource element dalam group yang mempunyai nilai yang sama dengan l. Jumlah maksimum REG yaitu 4 buah OFDM simbol dalam sebuah subframe. Hal ini karena PDCCH hanya dapat mencapai maksimum 4 OFDM simbol dalam bandwidth yang kecil. Simbol OFDM yang pertama selalu mempunyai satu atau dua reference signal. Kemudian simbol OFDM kedua berisi dua reference signal untuk antena ports 2 dan 3 dalam kasus 4 cell-specific reference signal. Dalam kasus simbol OFDM pertama dan keduaketika jumlah port antenna dikonfigurasi jadi empat, maka terdapat 2 resource-element group dalam physical resource block n_prb yang terdiri dari resource element (k,l) dengan :


ko menunjukkan resource element pertama dalam resource block dan dirumuskan sebagai :
Harus dicatat bahwa sekalipun single cell-specific reference signal dikonfigurasi pada port antenna 0, resource element yang dicadangkan untuk reference signal port antenna 1 tetap tidak digunakan. Kita mengetahui bahwa setiap REG didefinisikan pada 6 resource element karena dua resource element digunakan untuk reference signal.
Di symbol OFDM kedua dalam kasus hanya satu atau dua cell-specific reference signal yang dikonfigurasi, symbol ketiga dan keempat, tiga resource element group pada physical resource block n_prb terdiri dari resource element(k,l) dengan :

Mapping dari symbol-quadruplet z(i+2),
z(i+3)> ke resource element group disimbolkan dengan resource element (k',l') didefinisikan sehingga element z(i) dimasukkan ke resource element (k,l) dari resource element group tidak digunakan untuk cell-specific reference signal dalam urutan naik dari i dan k. Alasan mendefinisikan istilah symbol-quadraplets dan kemudian menggunakan empat resource elements untuk REG adalah untuk mengontrol channel dapat menggunakan sampai empat layer SFBC-FSTD skema transmit diversity.

Friday, October 19, 2012

Channel Coding Processing for DL-SCH,PCH,MCH

Hal pertama yang harus dilakukan untuk memahami chanel coding processing di physical ini adalah familiar dengan bagan di bawah :

hal yang sangat penting untuk diketahui dari bagan di atas adalah inputnya berupa transport block dari MAC layer, dan outputnya adalah IQ data yagn akan ditrasmit oleh physical layer. Jadi dari bagan tersebut proses secara keseluruhan adalah mengubah transport block dari mac layer menjadi bit stream data yang siap dikirimkan oleh physical layer.
Nah sekarang mari melangkah ke bagan pertama yaitu, CRC Attachment. Proses ini cukup sederhana yaitu hanya menambahkan 24 bit CRC pada akhir setiap data pada transport block. Ilustrasi seperti terlihat di bawah :


Kemudian step berikutnya adalah Segmentasi code block CRC. Prinsip kerjanya yaitu memotong transport block dari step pertama menjadi block-block yang lebih kecil kemudian menambahkan CRC lagi pada setiap block2 kecil tersebut. Step dua ini terdengar sederhana, namun pertanyaannya mengapa block2 tadi harus dipecah lagi menjadi block2 kecil ? apakah setiap output dari step pertama harus selalu dipecah menjadi block2 kecil ? Nah perlu diketahui bahwa block2 yang dipecah distep ke 2 ini hanyalah block yang ukuran datanya yang besar saja. Jadi tidak semua output dari step satu akan displit lagi menjadi block2 yang lebih kecil. Jika block tersebut di pecah, maka ukuran maksimumnya adalah 6144 bit, hal ini sebagaimana yang dispesifikasikan di 36.212 bab 5.1.2-Code block segmentation and code block CRC attachment-. Ilustrasi untuk step 2 ini seperti terlihat di bawah :

Step ketiga adalah chanel coding. Chanel coding ini menggunakan turbo coding processing. Jika kita mengacu ke 36.212 mengenai turbo coding, secara sederhana input satu bit maka outputnya menjadi tiga bit setelah melewati turbo coding processor (ini berarti coding rate 1/3). Nah pada step ketiga ini, berarti 1 blok data menjadi 3 blok data seperti terlihat di bawah :



Step berikutnya adalah Rate Matching. Ide utamanya yaitu menggabungkan kembali 3 blok data dari turbo coding menjadi 1 blok data. Heum, mungkin orang2 yang bidangnya di physical mempunyai penjelasan yang cukup baik bagaimana proses mengubah satu blok menjadi 3 block di turbo coding atau mengubah kembali 3 block data menjadi 1 block di rate matching. Namun karena sy diamanahkan di MAC layer, jadi penjelasannya 3 block data menjadi 1 block TITIK wkwkwk..... =))
ilustrasinya seperti terlihat di bawah :



Sebagai tambahan untuk rate matching ini seperti terlihat :


Blok diagram ini diambil dari 36.212. Seperti terlihat bahwa 3 blok dari turbo coding digabung menjadi satu pada blok rate matching sehingga menghasilkan satu keluaran bit stream data. Tujuan kita pada step ini adalah berusaha mempelajari secara mandiri proses dari  "interleaving", "Bitcollection", dan "Bit selection and pruning."

Step terakhir adalah code block concatenation. Seperti namanya, pada bagian ini digabungkan beberapa blok data menjadi satu blok bit stream yang panjang.



Nah setelah melewati step terakhir tersebut, skr muncul pertanyaan, Apakah bit stream yang dihasilkan dari step terakhir ini sudah final dan akan langsung ditransmit melalui antena ? Jawabnya adalah BLM.... justru output dari step terakhir ini adalah input untuk proses berikutnya di physical layer. Jadi sebenarnya masih banyak yang harus dipelajari lagi untuk memahami blok2 diagram di physical layer yang dapat membuat rambut kita menjadi rontok.... tapi untung di Indonesia banyak yang jualan shampoo, sekalipun shampo palsu :D

Untuk overview pada physical layer untuk step berikutnya bisa dilihat pada diagram di bawah :



Thursday, October 18, 2012

HARQ Process in LTE

Sebenarnya HARQ (Hybrid ARQ) adalah suatu proses yang agak kompleks dan susah untuk dipahami secara mendetail apalagi dalam posting seperti ini. Namun ada baiknya jika dapat diperoleh gambaran secara umum tentang HARQ process tersebut.

HARQ adalah gabungan dari kata "Hybrid" dan "ARQ". Hybrid berarti adalah kombinasi dari sesuatu sedangkan ARQ adalah Automatic Repeat request. Jadi secara sederhana HARQ itu adalah ARQ yang dikombinasikan dengan sesuatu, nah sesuatu tersebut adalah FEC, Forward Error Correction... :D

Terdapat perbedaan pada HARQ process jika menggunakan sistem FDD atau TDD untuk uplink dan downlink. Namun pada postingan ini yang dibahas hanyalah yang FDD saja.

Di dalam sistem FDD, terdapat 8 HARQ process yang dapat berjalan secara paralel untuk uplink dan downlink.
1) Downlink
   - Pada downlink dapat digunakan 8 HARQ process secara paralell (asynchronous process)
   - UE tidak tahu sama sekali tentang informasi HARQ process sebelum menerima informasi tersebut melalui   DCI berupa Process ID, RV, NDI, dsb..
Di sini akan diberikan ilustrasi mengenai, HARQ process untuk downlink :
i) Network Layer atas (RRC atau TE) --> Layer bawah : mengirim data ke layer bawah
ii) Netwok --> UE : mengirim data melalui PDSCH
iii) UE menerima PDSCH data
iv) UE mengecek CRC data tersebut, error atau tidak
v) Pada step ini kita mempunyai dua buah kasus :
    1) Jika UE mempunyai data yang akan dikiirim ke eNB, maka UE akan mengirim ACK/NACK ke eNB melalui PSUCH
    2) Jika UE tidak mempunyai data untuk dikirim ke eNB, maka UE akan mengirim ACK/NACK tersebut melalui PUCCH
vi) eNB menerima laporan CRC dari UE, dan  melakukan salah satu langkah di bawah :
     1) Jika menerima ACK, eNB mengirim data baru berikutnya
     2) Jika menerima NACK, HARQ process pada eNB melakukan retransmisi data dengan redudancy version yang berbeda dengan sebelumnya.
Untuk lebih jelasnya bisa dilihat pada flow di bawah :



2) Uplink

  1.  HARQ process harus menggunakan proses tertentu yang dikirim pada subframe tertentu juga (proses synchronous). UE harus menggunakan nomer HARQ process yang sama pada setiap 8 subframes
  2. Karena UE harus menggunakan HARQ process ID pada subframe tertentu, maka eNB mengetahui secara pasti kapan dan HARQ process ID seperti apa yang akan dikirim oleh UE. eNB juga tahu secara pasti tentang RV dan MCS yang digunakan oleh UE.
  3. Ada dua mode operasi pada uplink ini, yaitu Adaptive dan Non-Adaptive HARQ
Flow di bawah adalah contoh HARQ process untuk Adapative UL transmission. Intinya adalah pada setiap transmisi, UE menggunakan RV dan MCS yang berbeda yang diperoleh dari DCI 0 yang dikirimkan oleh eNB.





Kemudian flow di bawah adalah contoh buat Non adaptive HARQ process. Intinya adalah UE menggunakan RV secara berurutan sesuai standard 36.321. Dan menggunakan konfigurasi uplink seperti konfigurasi sebelumnya sampai diterima konfigurasi yang baru DCI 0.


Nah sekarang, bagaimana UE mengetahui untuk menggunakan adaptive atau non-adaptive pada transmisi uplinknya ?

  • UE menggunakan "adaptive retransmission" jika memperoleh DCI 0 dan NDI-nya blm ditoggled. Pada kasus ini, UE tidak pedul nilai dari HARQ feedback (PHICH), UE akan melakukan retransmisi jika memperoleh informasi dari DCI 0
  • UE akan mengetahui akan menggunakan "Non Adapative retransmission" jika memperoleh HARQ feedback (PHICH = NACK) tetapi tidak memperoleh informasi konfigurasi dari DCI 0 yang baru

Mengasah Otak Kanan

Mudah dipahami bahwa otak kanan adalah mata air yang mengalirkan anak-anak sungai yang bernama kreativitas, intuisi, dan imajinasi. Tidak dapat dielakkan bahwa untuk menjadi lebih kreatif, intuitif, dan imajinatif maka kita harus membersihkan mata airnya. Dengan kata lain kita harus mengasah otak kanan kita sendiri.

Sebagaimana telah diketahui bersama bahwa otak kiri cenderung memikirkan sedangkan otak kanan cenderung membayangkan. Nah ketika kita membayangkan sesuatu berulang-ulang, maka hal yang dibayangkan tersebut akan masuk ke otak bawah sadar kita. Maka dapat dikatakan bahwa otak kanan itu pintu gerbang otak bawah sadar. Tentu kita sadar betul bahwa otak bawah sadar itu jauh lebih menentukan daripada otak sadar. Dengan demikian, otak kanan itu memang minta ampun pentingnya.

Jika kita berhasil menjadi Golongan Kanan yang tulen, niscaya kita akan menjadi sebutir batu permata di tengah gundukan batu kerikil. Seterusnya, tidak perlulah kita repot-repot mengirikan diri. Apa yang perlu kita lakukan hanyalah mencari golongan kiri--dan golongan kiri itu tidak susah--untuk melengkapi diri kita. Namun begitu, Golongan Kanan juga menyandang kelemahan-kelemahan, misalnya tidak tepat waktu, mudah bosan, menggampangkan segala urusan, kurang mampu menyusun prioritas, dan kurang berhati-hati.

Jika Golongan Kiri dan Golongan Kanan bertemu lalu dibiarkan berdebat, pastilah keduanya akan bersitegang, karena pola pikir mereka yang saling bertolak-belakang. Namun uniknya, Golongan Kiri itu selalu jatuh hati dengan Golongan Kanan, begitu pula sebaliknya. Pada akhirnya, jadilah mereka satu pasangan, baik dalam kehidupan, ibadah, karier, maupun bisnis.

Ternyata, hal ini pula yang disarankan oleh para pakar. Dimana mitra yang "terbalik" akan menjadi mitra yang terbaik. Saling melengkapi, dan inilah yang distempel menjadi pasangan sejati. Fakta ini bisa dilihat pada orangtua dan om-tante yang telah berumahtangga selama puluhan tahun. Jamak terjadi, yang satu agak kiri, yang satunya lagi agak kanan karena mereka berdua saling melengkapi.

Agar mudah diingat, otak kiri itu dapat disimbolkan dengan baris-berbaris. Yah serba membosankan. Kebalikannya, otak kanan itu dapat disimbolkan dengan bercinta. Serba menyenangkan. Melibatkan emosi, kreativitas, spontanitas, dan imajinasi. Tidak harus urut dan tidak harus lazim-laziman.


--bersambung---


Hal-Hal Dasar Yang Penting Diketahui Sebagai Seorang Engineer LTE


Hal dasar yang perlu diketahui sebagai seorang engineer di LTE adalah familiar dengan gambar di atas.. :D

Kita dapat merepresentasikan komponen sinyal di LTE dalam dua dimensi. Seperti yang ditunjukkan gambar di atas, bagian horizontal adalah domain waktu sedangkan bagian vertikal adalah domain frekuensi. Unit terkecil dalam sumbu vertikal adalah sub-carrier sedangkan unit terkecil dalam sumbu horizontal adalah simbol. Jika unit terkecil dalam domain waktu dan frekuensi digabungkan, atau dkombinasikan, maka akan dihasilkan unit/satuan baru yang lebih besar seperti yang akan diceritakan di bawah.

Nah pertama-tama, mari kita lihat komponen vertikal dulu yaitu domain frekuensi. Band LTE (baik itu OFDM/OFDMA) dibuat dari beberapa frekuensi "saluran kecil" yang sering disebut sebagai subcarrier. Spasi antara subcarrier yang satu dengan subcarrier berikutnya selalu sama tanpa memperhatikan sistem bandwidth yang digunakan dalam band LTE. Oleh karena itu, jika system bandwidth LTE berubah, maka jumlah subcarrier juga akan berubah tetapi spasi subcarrier tetap yaitu 15khz. Jadi jika kita menggunakan sistem bandwidth 20 Mhz maka jumlah subcarrier adalah 1200. Jika menggunakan sistem bandwidth 10 Mhz maka jumlah total subcarrier adalah 600 buah, begitu seterusnya... :D

Beralih ke komponen horizontal yaitu domain waktu. Telah disebutkan di atas bahwa satuan terkecil dalam domain waktu disebut sebagai simbol, yang panjangnya sekitar 66,7 mikro second. Panjang simbol ini juga tidak memperhatikan sistem bandwidth yang digunakan, artinya seperti apapun sistem bandwidtnya panjang simbol tetap 66,7 mikro second. Seperti terlihat pada grafik di atas, di domain waktu, unit terbesar disebut "frame" yang panjangnya 10 ms. Setiap frame ini terdiri dari 10 buah subframe, sehingga 1 buah subframe panjangnya adalah 1 ms. Kemudian setiap subframe tersebut terdiri dari 2 buah slot dengan panjang 0,5 ms. Dan didalam tiap slot tersebut terdiri dari 7 buah simbol (dalam keadaan normal) dengan panjang masing-masing 66,7 us. Sow, didalam 1 buah frame itu ada 20 buah slot. Di dalam 1 buah subframe ada 14 simbol.

Nah jika unit terkecil dari domain waktu dan frekuensi digabungkan maka akan terbentuk unit terkecil yang disebut sebagai "resource element". Resource element tersebut dibentuk dari satu buah simbol dalam domain waktu dan satu buah subcarrier dalam domain frekuensi. Unit lain yang bisa dibuat dari kombinasi waktu dan frekuensi adalah "resource block (RB)". Resource block ini dibentuk dari 1 slot dalam domain waktu dan 12 buah sub-carrier dalam domain frekuensi. Perlu diketahui bahwa resource block ini adalah komponen yang sangat penting dalam menetapkan size data yang dapat dikirimkan ke dalam jaringan baik dari sisi protokol ataupun pengukuran RF. Sow,, dapat disimpulkan bahwa dalam resource block itu terdapat 7 buah simbol dan 12 buah subcarrier. Kemudian dalam resource block tersebut terdapat 84 resource element.

Hal laen penting untuk kita ketahui yaitu :
1. Dalam sistem bandwidth 20 Mhz terdapat 100 buah resource block
2. Dalam sistem bandwidth 10 Mhz terdapat 50 buah resource block, dst.......

untuk keterangan dasar yang lain mengenai MAC atau PHY, bisa di lihat di posting lainnya... :D