Friday, March 11, 2011

Fixed-Point Modeling Menggunakan SystemC

Bernostalgia dengan LSI Design Contest in Okinawa 2007, saya kepikiran untuk mencoba membuat model FFT64-point yang ada dalam spec contest tersebut kedalam fixed-point di C/C++. Hal ini juga termotivasi dengan adanyya kebutuhan untuk memulai migrasi model fixed-point dari Octave/Matlab ke C/C++.

Tipe data fixed-point diperlukan dalam memodelkan hardware (chip) karena dalam harware representasi angka dibuat dalam satuan bit, misalnya angka 5 direpresentasikan dalam bit 101. Oleh karena jumlah bit terbatas, maka representasi angka terpaksa dibatasi juga, kalau hanya ada representasi angka dalam 2 bit, maka nilai 5 tidak ada, karena angka 5 membutuhkan representasi paling sedikit dalam 3 bit. Demikian halnya representasi angka rational dalam hardware, juga dibatasi oleh jumlah bit. Representasi angka rational dalam hardware biasanya dibuat dalam representasi fixed-point. Dengan representasi fixed-point ini, kita bisa memodelkan berbagai algoritma yang membutuhkan operasi rational seperti dalam algoritma FFT.

FFT (Fast Fourier Transform) adalah algoritma yang banyak digunakan dalam DSP (Digital Signal Processing), baik dalam image processing, audio/video, dan communication. Algoritma ini membutuhkan representasi nilai rational karena menggunakan operasi trigonometri seperti sinus dan cosinus. Dalam FFT, tidak hanya dibutuhkan fixed-point, tapi juga bilangan kompleks. Dalam C/C++, ada standard library complex tapi belum ada standard library fixed-point. Ada beberapa solusi dalam representasi fixed-point, beberapa diantaranya adalah library GNU MPFR dan SystemC. SystemC dipilih karena bahasa modeling ini sangat dekat dengan bahasa hardware (Verilog/VHDL) dan bahkan bisa di-mix dalam satu tool untuk mensimulasikannya.


Hasil percobaan menunjukkan bahwa model fixed-point FFT-64 di SystemC valid dan menunjukkan perilaku yang sama dengan model FFT64 dari library Matlab, pada konfigurasi fixed-point<10, 3>, tapi menunjukkan hasil yang berbeda ketika menggunakan konfigurasi fixed-point<10, 5> karena terjadi overflow (clipping). Gambar pertama adalah menggunakan Matlab library, gambar kedua adalah menggunakan fixed-point<10, 3>, gambar terkahir adalah menggunakan fixed-point<10, 5>.

Artikel selengkapnya bisa didownload pada halaman Download dengan judul FFT-64 Fixed-Point Modeling Using SystemC and User Defined Complex Datatypes. Selamat mencoba! ^^ (Ya2n)

No comments:

Post a Comment