Senin, 30 Oktober 2017
Penjelasan Program Verilog
Encoder
// Design Name : encoder_using_if
// File Name : encoder_using_if.v
// Function : Encoder using If
// Coder : Deepak Kumar Tala
=> Dia berfungsi sebagai menjadi hanya sebuah kolom komentar pada program encoder_using_if.
module encoder_using_if(
binary_out , // 4 bit binary output
encoder_in , // 16-bit input
enable // Enable for the encoder
);
=> membuat module dengan nama encoder_using_if, dan didalamnya terdapat variable binary_out 4 bit sebagai output, encoder_in 16 bit sebagai input, dan enable sebagai input.
//-----------Output Ports---------------
output [3:0] binary_out ;
=> Mendeklarasikan sebuah port output dari binary_out yang keluaranya menjadi 4bit.
//-----------Input Ports---------------
input enable ;
input [15:0] encoder_in ;
=> Mendeklarasikan sebuah variable masukkan yaitu enable dan encoder_in dengan encoder_in menjadi 16bit masukkan.
//------------Internal Variables--------
reg [3:0] binary_out ;
=> Mendeklarasikann sebuah register yang terdapat pada binary_out dengan alamat 4 bit.
//-------------Code Start-----------------
always @ (enable or encoder_in)
=> Berfungsi sebagai program yang dimana memerlukan clock terus untuk mengantarkan nilai masukkan. Kemudian variable enable digabungkan dengan variable encoder_in.
begin
binary_out = 0;
if (enable) begin
if (encoder_in == 16'h0002) begin
binary_out = 1;
end if (encoder_in == 16'h0004) begin
binary_out = 2;
end if (encoder_in == 16'h0008) begin
binary_out = 3;
end if (encoder_in == 16'h0010) begin
binary_out = 4;
end if (encoder_in == 16'h0020) begin
binary_out = 5;
end if (encoder_in == 16'h0040) begin
binary_out = 6;
end if (encoder_in == 16'h0080) begin
binary_out = 7;
end if (encoder_in == 16'h0100) begin
binary_out = 8;
end if (encoder_in == 16'h0200) begin
binary_out = 9;
end if (encoder_in == 16'h0400) begin
binary_out = 10;
end if (encoder_in == 16'h0800) begin
binary_out = 11;
end if (encoder_in == 16'h1000) begin
binary_out = 12;
end if (encoder_in == 16'h2000) begin
binary_out = 13;
end if (encoder_in == 16'h4000) begin
binary_out = 14;
end if (encoder_in == 16'h8000) begin
binary_out = 15;
==> Fungsi script diatas adalah terdapat kondisi awal dimana binary_out=0, lalu jika enable maka dia akan lenjut ke state berikutnya yaitu encoder_in==16'h0002) dimana nilai bianry_out yang keluar adalah 1, lalu jika encoder_in==16'h0004) maka nilai binary_out yang keluar adalah, begitu pun seterusnya hinga semua kondisi terpenuhi hingga nilai binary_out menghasilkan angka 15. ini sama saja seperti kita memainkan sebuah switch secara berurut hingga menghasilkan sebuah nyala led berurut sesuai yang kita masukan kode binnernya dalam bentuk hexa.
end
end
end
endmodule
=> Berfungsi untuk mengakhiri sebuah statement yang dibuat dan endmodule adalah untuk mengakhiri sebuah program pada module yang telah dibuat tadi.
MUX(Multiplekser)
//Design Name : mux_using_if
//File Name : mov_using_if.v
//Function : 2:1 mux using if
//Coder : Deepak Kumar Tala
=> Berfungsi sebagai komentar dalam membuat program mux_using_if.
module mux_using_if(
din_0 , // mux first input
din_1 , // mux second input
sel , // select input
mux_out // mux output
);
=>Berfungsi untuk membuat sebuah module dengan nama file mux_using_if dan didalamnya terdapat 4 variable yaitu di_0, din_1, dan select sebagai input dan mux_out sebagai outputnya.
//---------- input ports ---------
input din_0, din_1, sel;
=> Mendeklarasikan sebuah port input yaitu din_0, din_1, sel pada program.
//---------- output ports ---------
Output mux_out ;
=> Mendeklarasikan sebuah port output yaitu mux_out.
//---------- internal variables ---------
reg mux_out ;
=> Mendeklarasikan sebuah register dengan variable mux_out.
//---------- Code Start Here ---------
Always @ ( sel or din_0 or din_1)
=> Harus memerlukan clock secara terus-menerus karena clock berfungsi untuk menghantarkan nilai masukkan pin-pin keluaran. Kemudian variable sel digabungkan dengan variable masukkan lainnya yaitu din_0 dan din_1.
Begin : mux
=> Berfungsi untuk memulai subprogram mux.
If (sel == 1’b0) begin
Mux_out = din_0);
End else begin
Mux_out = din_1);
=> Berfungsi jika variable sel == 1 maka hasil keluaranya adalah mux_out yaitu din_0 jika tidak maka dia akan ke end else yaitu keluaran din_!.
End
End
Endmodule //End Of Module mux
=> Berfungsi sebagai akhir dari isi statment dan juga akhir dari sebuah program module yang telah dibuat tadi.
Flip-Flop And Latches
//Design Name : dff_async_reset
//File Name : dff_async_reset.v
//Function : D Flip Flop async reset
//Coder : Deepak Kumar Tala
=> Berfungsi hanya sebagai komentar saja dalam membuat program async reset D-FF.
module dff_async_reset(
data , // data input
clk , // clock input
reset , // reset input
q // q output
);
=> Berfungsi untuk membuat sebuah module dengan nama file dff_async_reset dan didalamnya terdapat 4 variable yaitu data,clk,dan reset sebagai input dan q sebagai outputnya.
//---------- input ports ---------
input data, clk, reset;
=> Mendeklarasikan sebuah port input yaitu data, clock, dan reset pada program.
//---------- output ports ---------
Output q ;
=> Mendeklarasikan sebuah port output yaitu q.
//---------- internal variables ---------
reg q ;
=> Mendeklarasikan sebuah register pada variable q.
//---------- Code Start Here ---------
Always @ (posedge clk or negedge reset)
=> Berfungsi sebagai dff ini yang sangat memerlukan clock secara terus-menerus untuk menghantarkan nilai masukkan pin-pin keluaran. posedge clk or nededge reset yang merupakan gabungan clock yang aktif pada sisi naik positif sedangkan nededge adalah sisi clock yang aktif dari sisi turun-negatif dan menghasilkan sebuah kondisi reset yang ada pada dff itu sendiri.
If (~reset) begin
Q <= 1’b0;
End else begin
Q <= data;
=> Berfungsi jika ada negasi dari variable reset maka mulai ke program selnajutnya yaitu 1<=1'bo jika tidak atau terpenuhi maka program lanjut ke q<=data.
End
=> Berfungsi untuk mengakhiri sebuah statment.
Endmodule //End Of Module dff_aync_reset
=> Berfungai untuk mengakhiri sebuah program module.
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar