Tuesday, August 3, 2010

Implementasi ROM/RAM pada FPGA dengan Altera Quartus dan MIF File

FPGA merupakan salah satu cara untuk implementasi desain RTL, disamping ASIC. Implementasi FPGA ini sangat dependen terhadap platform dipakai, sehingga vendor mana yang akan dipakai, cara implementasinya akan 'sedikit' berbeda. Yang jelas software shyntesizer-nya pasti berbeda, sehingga scriptnya pun berbeda (=p). Altera dan Xilinx adalah dua vendor FPGA yang paling banyak dipakai saat ini. Untuk kali ini, kita hanya akan bahas implementasi di Altera.

Dalam implementasi di Altera, terkadang perlu menge-map desain memory (ROM/RAM) kedalam library Altera, atau LPM MegaCore. Kelebihan memakai LPM ini adalah kita bisa membuat initialization file sebagai nilai default ROM/RAM tersebut, sehingga, untuk RAM, tidak perlu ditulis terlebih dahulu sudah langsung bisa dibaca isinya. Untuk ROM, initialization file ini merupakan suatu keharusan karena ROM tidak bisa ditulis, hanya bisa dibaca.

Untuk membuat RAM Altera, pakai Quartus MegaWizard. Caranya install dulu program Quartus (Quartus 9.0 student edition bisa didownload dari website Altera, tutorial instralasi quartus ada di halaman download di blog ini), lalu buka Quartus > Tools > MegaWizard. Atau bisa juga dipanggil dari console dengan cara berikut (jangan lupa set path Quartus pada Environment Setting):

% qmegawiz &

Setalah itu muncul MegaWizard GUI yang dengan mudah dapat dipakai untuk generate Altera Memory, baik RAM maupun ROM (tutorial selengkapnya mengenai Altera MegaWizard dapat didownload di halaman Download di blog ini). Ketika generate Altera Memory, baik RAM maupun ROM, kita akan ditanya lokasi initialization file. 


Pada Altera, initialization file ini bisa dibuat degan format Intel Hex atau juga dengan format Altera MIF file. Untuk Altera MIF file, berikut contoh formatnya:

WIDTH = 8;  %isi dengan lebar bit data
DEPTH = 8;  %isi dengan jumlah data yang ada

ADDRESS_RADIX = HEX;  %isi dengan format format address 
DATA_RADIX = HEX;     %isi dengan format data 
                      %pilihan format adalah: BIN,DEC,HEX,OCT
                      
CONTENT BEGIN
        0       :       07;  % isi dengan 
        1       :       06;  % ADDRESS :  VALUE 
        2       :       05;
        3       :       04;
        4       :       03;
        5       :       02;
        6       :       01;
        7       :       00;
END;

Mudah bukan? Kita bisa isi MIF file ini baik dengan format biner, hexa, desimal, maupun oktal. Tinggal sesuaikan setting radixnya. Selamat mencoba! (yayan)

No comments:

Post a Comment