Senin, 30 Oktober 2017

Pembahasan Sebuah Program dalam VERILOG


 Encoder
// Design Name : encoder_using_if
// File Name   : encoder_using_if.v
// Function    : Encoder using If
// Coder       : Deepak Kumar Tala
===== fungsinya sbagai sebuah kolom komentar saja 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  ;
===== pendeklarasian sebuah port output dari binary_out yang keluaranya 4bit.
//-----------Input Ports---------------
input  enable ;
input [15:0] encoder_in ;
===== pendeklarasian sebuah variable masukkan yaitu enable dan encoder_in dengan encoder_in 16bit masukkan.
//------------Internal Variables--------
reg [3:0] binary_out ; 
===== pendeklarasian sebuah register yang terdapat pada binary_out dengan alamat 4 bit. 
//-------------Code Start-----------------
always @ (enable or encoder_in)
===== fungsinya adalah dimana sebuah program ini memerlukan clock secara terus-menerus untuk menghantarkan nilai masukkan pin-pin keluaran.lalu 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;
===== pada 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
===== fungsinya adlah untuk mengahiri sebuah statement yang dibuat dan endmodule adalah untuk mengakhiri sebuah program module yang dibuat.

MUX(Multiplekser)


//Design Name : mux_using_if
//File Name : mov_using_if.v
//Function :  2:1 mux using if
//Coder : Deepak Kumar Tala
==== Fungsi nya adalah hanya sebagai komentar saja 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
);
==== fungsinya adalah 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;
===== sebagai pendeklarasian sebuah port input yaitu  din_0, din_1,  sel  pada program.
//---------- output ports ---------
Output  mux_out ;
===== sebagai pendeklarasian sebuah port output yaitu mux_out.
//---------- internal variables ---------
reg  mux_out ;
===== sebagai pendeklarasian sebuah register dengan variable mux_out.
//---------- Code Start Here ---------
Always  @  ( sel or din_0 or din_1)
===== dimana memerlukan clock secara terus-menerus untuk menghantarkan nilai masukkan pin-pin keluaran. lalu setelah itu variable sel digabungkan dengan variable masukkan lainnya yaitu din_0 dan din_1.
Begin : mux
===== untuk memlai subprogram mux.
If (sel == 1’b0) begin
          Mux_out  =  din_0);
End else begin
          Mux_out  = din_1);
===== dimana fungsinya adalah jia variable sel == 1 maka hasil keluaranua adalah mux_out yaitu din_0 jika tidak maka dia akan ke end else yaitu keluaran din_!.
End
End
Endmodule  //End Of Module mux
====== sebagai akhir dari isi statment dan juga akhir dari sebuah program module yang dibuat.
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
==== Fungsi nya adalah 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
);
==== fungsinya adalah 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;
===== sebagai pendeklarasian sebuah port input yaitu  data, clock, dan reset pada program.
//---------- output ports ---------
Output  q ;
===== sebagai pendeklarasian sebuah port output yaitu q.
//---------- internal variables ---------
reg  q ;
===== pendeklarasian sebuah register pada variable q.
//---------- Code Start Here ---------
Always  @  (posedge clk or negedge reset)
===== fungsinya adalah dff ini memerlukan clock secara terus-menerus untuk menghantarkan nilai masukkan pin-pin keluaran. posedge clk or nededge reset 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;
==== fungsinya adalah jika negasi dari variable reset maka mulai ke program selnajutnya yaitu 1<=1'bo jika tidak atau terpenuhi maka program lanjut ke q<=data.
End
===== untuk mengakhiri sebuah statment.
Endmodule  //End Of Module dff_aync_reset
==== untuk mengakhiri sebuah program module. 

COUNTER


//Design Name : up_counter
//File Name : up_counter.v
//Function : up_counter
//Coder : Deepak
==== Fungsi nya adalah hanya sebagai komentar saja dalam membuat program up_counter.
module up_counter(
out               ,         //  output of the counter
enable          ,          // enable for counter
clk               ,         // clock input
reset                      // reset input
);
==== membuat module dengan nama up_counter lalu ada 4 variale didalamnya yatu out adalah sebuah output // output of the counter adalah sebuah komentar dari output itu sendiri enable, clock dan reset adalah sebuah input dan // clock input , // reset adalah sebuah kompnetar dari clk dan reset itu sendiri.
//---------- output ports ---------
output  [7:0]  out;
===== fungsinya dalah pada bagian //--- output ports --- itu sebagai komentar pada ouput dibawahnya yaitu output [7:0] out dimana output yang keluar adalah data 8bit.
//---------- input ports ---------
input  enable, clk,  reset;
===== sebagai pendeklarasian sebuah input yaitu enable, clock, dan reset.
//---------- internal varibales ---------
reg [7:0]  out;
===== sebagai pendeklarasian sebuah register dalam variable output dengan alamat 8bit.
//---------- code starts here ---------
Always @ (posedge clk)
===== jadi disini sebuah counter juga memerlukan clock secara terus-menerus untuk menghantarkan nilai masukkan pin-pin keluaran. posedge clk adalah clock yang aktif pada sisi naik positif.
If (reset) begin
          Out <= 8’b0;
End else if (enable) begin
          Out <= out + 1;
===== jika hasil output dari  reset adalah kurang dari sama dengan 8 bit maka dia enable , lalu jika outputnya kurang dari sama dengna out maka nilai otput seblumnya ditambah 1.
End
endmodule
====== untuk mengakhiri statmentdan mengakhiri sebuah program module yang dibuat.

MEMORY


//Design Name : rom_using_file
//File Name : rom_using_file.v
//Function : rom_using_readmemh
//Coder : Deepak Kumar Tala
===== dimana design name  adalah nama rom_using_file, serta nama filenya lalu functionya serta codernya adalah komentar.
module rom_using_file(
address , // Address input
data , // data output
read_en  // read Enable
ce          // Chip Enable
);
===== fungsinya adalah membuat module dengan nama rom_using_file, lalu didalam module tersebut terdapat 4 variable yaitu address sebagai input, data sebagai output, read_En, ce sebagai input. lalu // Address input,// data output,// read Enable,// Chip Enable sebagai komentar dari masing-masing variable yang ada atau telah dibuat.
input [7:0] addresss;
output [7:0] data;
input read_en;
input ce;
===== sebagai pendeklarisan sebuah variable dimana address sebagai input dengan alamat 8 bit, data sebagai output read_en, dan ce sebagai input(masukkan). 
reg [7:0] mem [0:255] ;
===== register 
assign data = (ce&&read_en) ? mem[address] : 8'b0;
===== fungsinya untuk menggabungkan tide data dari ce danread_en, mem[address] :8'b0; merupakan alamat memori 8bit yaitu b0.
initial begin
    $readmemb("memory.list".mem); //memory_list is memory file
end
===== initial begin untuk memual sebuah initial , lalu setelah itu $readmemb("memory.list".mem) adalah untuk membaca sebuah list yang terdapat pada memory tersebut. end untuk mengakhiri sebuat sub program.
endmodule
===== sebagai akhir module yang dibuat.

PARITY AND CRC


//Design Name       : parity_using_bitwise
//File Name           : parity_using_biwise.v
//Function             : parity_using_bitwise xor
//Coder                  : Deepak Kumar Tala
==== Fungsi dari script diatas adalah dia hanya sebagai komentar saja.
module parity_using_bitwise(
data_in        ,         // 8 bit data in
parity_out             // 1 bit parity out
);
==== fungsi dari script diatas adalah dimana membuat module atau file dengan nama parity_using_bitwise, lalu data_in dan parity_out adalah variable masukkan dan keluaran, lalu  ada // 8 bit data in dan // 1 bit parity out i itu sebagai komentar dari variabel masukkan dan keluaran.
output parity_out ;
==== fungsi dari script diatas adalah sebagai keluaran dari variable parity_out .
input [7:0] data_in ;
==== fungsi dari script diatas adalah  sebagai masukkan dari variable data_in dengan 8 bit data.
assign parity_out = ^data_in;
==== fungsinya untuk menetapkan  atau menggabungkan sebuah varible keluaran parity_out dengan masukkan data_in mungkin bisa dibilang hasil dari parity out = data_in.
endmodule
==== fungsinya untuk mengakhiri sebuah module yang telah dibuat.

Tidak ada komentar:

Posting Komentar

cv