Panduan ini berisi uraian tentang aspek-aspek yang terkait dengan perancangan sistem
digital menggunakan FPGA yang disertai dengan beberapa modul rancangan sistem
sampai implementasi sistem tersebut pada FPGA.
Perancangan top-down
Perancangan bottom-up
Semakin tinggi kompleksitas rangkaian yang harus dirancang, menuntut kita memakai
alat perancangan berbantuan komputer (Computer Aided Design Tools). Apalagi jika
waktu yang tersedia untuk melakukan perancangan sangat sedikit. Penggunaan CAD
Tools memungkinkan perancangan untuk berkonsentrasi pada rangkaian global.
Deskripsi rancangan yang dapat diproses oleh CAD Tools dapat berupa deskripsi
skematik, tekstual atau Finite State Machine.
Berikut ini merupakan alur perancangan yang akan dilakukan dalam setiap modul:
Untuk membuka editor teks yang akan kita gunakan untuk membuat rancangan
VHDL/AHDL pilih menu MAX+ plus II-> Text Editor.
Selanjutnya akan tersedia sebuah window tempat kita membuat deskripsi rancangan
VHDL/AHDL.
Simpan rancangan ini dengan memilih menu File-> Save dengan nama file yang
sesuai dengan rancangan yang dibuat sehingga mudah diingat dan diakhiri dengan
ekstension vhd (VHDL) atau tdf (AHDL) .
Untuk membuka editor grafik pilih menu MAX+ plus II-> Graphic Editor>Enter
Symbol, pilih C:\altera\maxplus2\max2lib\prim untuk menampilkan primitive yang
disediakan yaitu gerbang-gerbang, pin input dan pin output.
Jika dipilih gerbang and2, maka setelah muncul gambarnya masih diperlukan pin
input dan output dengan cara yang sama. Jika sudah di temukan dan ditampilkan,
cocokkan pin input dengan bagian input gerbang and2 dan pin output dengan
bagian output gerbang and2.
Berikan nama untuk masing-masing input dan output dengan mengklik bagian
nama input dan output pada gambar rangkaian yang disiapkan.
Simpan dengan memilih menu File>Save as, berikan nama file dengan ekstensi
.gdf. (misal and.gdf).
Langkah selanjutnya adalah membuat rancangan VHDL/AHDL dan Grafik tersebut
sebagai sebuah project(File-> Project-> Name ). Nama sebuah project harus sama
dengan nama file top-level rancangan.
Untuk melakukan uji sintaks VHDL/AHDL dan Grafik perlu dipilih menu File->
Project-> Save&Check.
Bila rancangan sudah terbebas dari syntax error, akan muncul window seperti berikut :
Bila sudah terbebas dari syntax error, langkah selanjutnya adalah melakukan uji
fungsional rancangan. Sebelumnya kita harus melakukan kompilasi dahulu dengan
memilih menu File->Project->Save&Compile. Dalam proses kompilasi ini
sebenarnya sudah dilakukan proses sintesis deskripsi vhdl ke dalam deskripsi
rancangan yang sudah berisi data konfigurasi device.
entity andgate_v is
port (ai,bi :in bit;
co : out bit);
end andgate_v;
architecture ar of andgate_v is
begin
co <= ai and bi ;
end ar; entity andgate_v is
port (ai,bi :in bit;
co : out bit);
end andgate_v;
architecture ar of andgate_v is
begin
co <= ai and bi ;
end ar;
2. Tulislah program AHDL berikut dalam teks editor dan simpan dengan nama
andgate_a.tdf
subdesign andgate_a
(ai,bi : input;
co : output
)
begin
co = ai & bi ;
end ;
3. Gambarkan gerbang And 2 input ( Ai dan Bi), dengan output Co pada Graphic
Editor, simpan dengan nama andgate_g.gdf.
Bagian ENTITY
Bagian ARCHICTURE
II.3Package
Dalam VHDL juga dikenal istilah PACKAGE yang merupakan deklarasi fungsional
yang berisi beberapa subprogram (prosedur atau fungsi) yang dapat dipanggil dan
dipakai oleh deskripsi fungsional lainnya atau oleh PACKAGE yang lain.
C <= a AND b;
D <= a OR b;
Multiplekser 4-1:
Program 2.3 .
Program 2.4.
Atau
Program 2.5
Out_mux <=A when ( selector = “00” ) else
B when ( selector = “01” ) else
C when ( selector = “10” ) else
D;
Atau
Program 2.6
Mux4_1:
Process (a, b, c, d, selector )
Begin
If selector = “00” then
Out_mux <= a;
Elsif selector = “01” then
Out_mux <= b;
Elsif selector = “10”then
Out_mux <= c;
Else
Out_mux <= d;
End if;
End process mux4_1;
Atau
Program 2.7.
Process (a, b, c, d, selektor)
Begin
Case selektor is
When “00” => out_mux <= a;
When “01” => out_mux <= b;
When “10” => out_mux <= c;
When “00” => out_mux <= d;
end case ;
end process mux4_1;
2.3 Langkah Kerja
1.Tuliskan program 2.1 s.d 2.7 pada Text Editor Altera Max+Plus II, simpan
dengan
nama yang sesuai dengan nama Entity berikut ekstensi .vhd lalu jadikan nama
Project.
Program 3.1.
Process (clk)
Begin
If (clk’ event and clk =’1’) then
Out_ff <= data;
End if;
End process;
Atau
Program 3.2
Process (clk)
Begin
If (clk’ event and clk =’1’) ) then
Out_ff <= data;
Else
Out_ff <= out_ff;
End process;
Penjelasan:
Program 3.3
Diagram FSM dapat dideskripsikan dalam VHDL menggunakan case-when dan if-
then-else. Statement case-when digunakan untuk mewakili setiap state, sementara
statemen if-then-else digunakan untuk mewakili transisi antar state. Nama setiap state
didefinisikan menggunakan reserved word ‘type’ .
Contoh:
Deklarasi sinyal present state dan next state yang bertipe tipe_state.
s0 ‘1’ s1
Program 3.4
Entity state_machine is
Port (clk, reset,input: in bit;
Output : out bit);
End state_machine;
4.1 Tujuan :
Berikut ini adalah contoh penggunaan bilangan dan konstanta dalam mengaktualisasi
decoder alamat yang dibangkitkan sebuah chip enable active high ketika alamat
HFF30 atau HFF50 diberikan pada input.
Program 4.1
Subdesign decode
(
address[15..0] : input;
chip_enable1,chip_enable2 :output;
)
Begin
chip_enable1 = address[15..0] == H”FF30”);
chip_enable2 = address[15..0] == H”FF50”);
End;
Konstanta dapat digunakan sebagai pengganti bilangan. Nama ini digunakan dalam
file. Jika Program 3.1 menggunakan konstanta, maka diperoleh program berikut ini:
Program 4.2
CONSTANT io_address1 = H”FF30”);
CONSTANT io_address1 = H”FF50”);
Subdesign decode1
(
address[15..0] : input;
chip_enable1,chip_enable2 :output;
)
Begin
chip_enable1 = address[15..0] == io_address1);
chip_enable2 = address[15..0] == io_address2);
End;
Program 4.3
Subdesign bool1
(
a0,a1,b0,b1 : input;
s0,s1 :output;
)
begin
s0 =a0 & a1 & !b1 % operasi logika s0 =a0 AND a1 AND NOTb1%
s1 = s0 # b0 % s1 = s0 OR b0 %
end;
Program 4.4
Subdesign priority
(
prior4, prior3, prior2, prior1 : input;
prior_code [2..0] :output;
)
begin
if prior4 then
prior_code [ ]= 4 ;
elsif prior3 then
prior_code [ ]= 3 ;
elsif prior2 then
prior_code [ ]= 2 ;
elsif prior1 then
prior_code [ ]= 1 ;
else
prior_code [ ]= 0 ;
endif;
end;
Program 4.5
Subdesign mux41_a
(
selek[1..0] : input;
A,B,C,D : input;
out_mux[3..0] : output;
)
begin
Case selek[ ] is
When 0 => out_mux[ ] = A;
When 1 => out_mux[ ] = B;
When 2 => out_mux[ ] = C;
When 3 => out_mux[ ] = D;
end;
Program 4.6
Subdesign fa
(
A,B,Cin : input;
CoutTT, SumTT:output;
)
begin
TABLE
A,B,Cin => CoutTT,SumTT;
0,0,0 =>0,0;
0,0,1 =>0,1;
0,1,0 =>0,1;
0,1,1 =>1,0;
1,0,0 =>0,1;
1,0,1 =>1,0;
1,1,0 =>1,0;
1,1,1 =>1,1;
END TABLE;
END;
5.1 Tujuan :
Mengenal dan mempelajari representasi funsional rangkaian sekuensial
menggunakan program AHDL
Register digunakan untuk menyimpan nilai data, menahan nilai pencacahan, dan data
yang disingkronkan dengan sinyal clock. Register dapat dideklarasikan dengan sebuah
deklarasi register dalam Bagian Variable. Sebuah port dari suatu kejadian digunakan
untuk menghubungkan suatu kejadian dari primitive, macrofunction, atau state machine
pada komponen logika lain dalam file TDF.
Sebuah port dari suatu kejadian dapat digunakan dengan format:
Nama port adalah input atau outputdari primitive, macrofunction, atau state machine.
Program 5.1 berisi sebuah byte register yang menyimpan nilai-nilai input d menjadi
output q pada saat clock rising edge saat input load ‘1’.
Program 5.1
subdesign register
( clk, load ,d[7..0] : input;
q[7..0] : output;
)
variable
ff[7..0] :DFFE;
begin
ff[ ].clk =clk;
ff[ ].ena =load;
ff[ ].d =d[7..0];
q[ ] =ff[ ].q;
end;
hasil:
5.2.3 Output yang teregister dari subdesign dapat dideklarasikan sebagai D flip-flop
Program 5.2
Subdesign reg_out
( clk, load ,d[7..0] : input;
q[7..0] : output;
)
variable
q[7..0] :DFFE
begin
q[ ].clk =clk;
q[ ].ena =load;
q[ ] =ff[ ].q;
end;
5.2.4 State Machine dengan output singkron
State machine memiliki present state yang hanya tergantung pada input dan state
terakhir, dan output hanya tergantung pada present state disebut state machine Moore.
Program 5.3
subdesign moore
( clk,reset,y : input;
z : output;
)
variable
ss: machine with states (s0 =0, s1 = 1, s2 =1, s3 = 0);
begin
ss.clk =clk;
ss.reset =reset;
Table
ss, y => ss;
end case;
end;
State machine dapat dibuat dengan menggunakan fungsi sebuah flip flop sebagaimana
ditunjukkan dalam Program 5.4.
Program 5.4.
subdesign sm_a
( clk,reset,d : input;
q : output;
)
variable
ss: machine with states (s0,s1);
begin
ss.clk =clk;
ss.reset =reset;
case ss is
when s0 =>
q = GND;
if d then
ss = s1;
end if;
end case;
end;
Jika dipilih gerbang and2, maka setelah muncul gambarnya masih diperlukan pin
input dan output dengan cara yang sama. Jika sudah di temukan dan ditampilkan,
cocokkan pin input dengan bagian input gerbang and2 dan pin output dengan
bagian output gerbang and2.
Berikan nama untuk masing-masing input dan output dengan mengklik bagian
nama input dan output pada gambar rangkaian yang disiapkan.
Simpan dengan memilih menu File>Save as, berikan nama file dengan ekstensi
.gdf. (misal and.gdf).
Langkah selanjutnya adalah membuat rancangan Grafik tersebut sebagai sebuah
project(File-> Project-> Name ). Nama sebuah project harus sama dengan nama file
top-level rancangan.
Untuk melakukan uji sintaks Grafik perlu dipilih menu File-> Project->
Save&Check.
Bila rancangan sudah terbebas dari syntax error, akan muncul window seperti berikut :
Bila sudah terbebas dari syntax error, langkah selanjutnya adalah melakukan uji
fungsional rancangan. Sebelumnya kita harus melakukan kompilasi dahulu dengan
memilih menu File->Project->Save&Compile.
4.2.2 Uji Fungsional Simulasi
Untuk melakukan simulasi lakukan urutan langkah File>Waveform Editor >
Nodes>Enter Nodes to SNF>List > tanda “ =>”>OK . Tampilan yang akan muncul
adalah sbb:
Pilih Tombol ketiga dari kiri bawah dan atur nilai untuk multiplied untuk input
bervariasi dengan nilai I,2,4,dst. Misal untuk input Ai, Multiplied by 1, untuk input Bi
dengan Multiplied by 2. Sedangkan untuk output Co, berikan nilai Multiplied by 1,
sehingga diperoleh tampilan di atas.
Tugas:
1. Pilih satu sistem kombinasional untuk dirancang.
2.Gunakan langkah-langkah perancangan system digital
3.Buat simulasi menggunakan AHDL(nama_alat_a.tdf), VHDL(nama_alat_v.vhd)
MODUL 8
PERANCANGAN SISTEM DIGITAL SEKUENSIAL
Tugas:
1.Pilih satu sistem sekuensial untuk dirancang.
2.Gunakan langkah-langkah perancangan sistem digital
3. Buat simulasi menggunakan AHDL(nama_alat_a.tdf), VHDL(nama_alat_v.vhd),
dan Grafik (nama_alat_g.gdf).
MODUL PRAKTIKUM
OLEH