Program Verilog FPGA
Assalamualaikum Warohmatullah Wabarokatuh.
Dibawah ini contoh dari program Verilog FPGA beserta pengertianya:
Encoder - Using if-else Statement
//----------------------------------------------------- // Design Name : encoder_using_if // File Name : encoder_using_if.v // Function : Encoder using If // Coder : Deepak Kumar Tala //----------------------------------------------------- module encoder_using_if( binary_out , // 4 bit binary output encoder_in , // 16-bit input enable // Enable for the encoder ); //-----------Output Ports--------------- output [3:0] binary_out ; //-----------Input Ports--------------- input enable ; input [15:0] encoder_in ; //------------Internal Variables-------- reg [3:0] binary_out ; //-------------Code Start----------------- always @ (enable or 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; end end end endmodule
Logika Program
membuat program Encoder menggunakan if dan else pada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), lalu modul yang digunakan binary_out dan encoder_in, selanjutnya perintah "output_[3:0] binary out" adalah output sebanyak 4 bit sedangkan "input [15:0] adalah input sebanyak 16 bit dan "reg [3:0] binary_out adalah penyimpanan sementara di register.
Dan kodingan isi (if dan Else) dimulai saat perintah "begin" yaitu 16 bit sebagai wakil dari input h0002 mempunyai output 1 bilangan biner dan kodingan h0002 berkelipatan sampai h8000 dan akan mengasilkan ouput 15 sebagai bilangan biner dan di akhiri "Endmodule"
Decoder - Using case Statement
Decoder - Using case Statement
//----------------------------------------------------- // Design Name : decoder_using_case // File Name : decoder_using_case.v // Function : decoder using case // Coder : Deepak Kumar Tala //----------------------------------------------------- module decoder_using_case ( binary_in , // 4 bit binary input decoder_out , // 16-bit out enable // Enable for the decoder ); input [3:0] binary_in ; input enable ; output [15:0] decoder_out ; reg [15:0] decoder_out ; always @ (enable or binary_in) begin decoder_out = 0; if (enable) begin case (binary_in) 4'h0 : decoder_out = 16'h0001; 4'h1 : decoder_out = 16'h0002; 4'h2 : decoder_out = 16'h0004; 4'h3 : decoder_out = 16'h0008; 4'h4 : decoder_out = 16'h0010; 4'h5 : decoder_out = 16'h0020; 4'h6 : decoder_out = 16'h0040; 4'h7 : decoder_out = 16'h0080; 4'h8 : decoder_out = 16'h0100; 4'h9 : decoder_out = 16'h0200; 4'hA : decoder_out = 16'h0400; 4'hB : decoder_out = 16'h0800; 4'hC : decoder_out = 16'h1000; 4'hD : decoder_out = 16'h2000; 4'hE : decoder_out = 16'h4000; 4'hF : decoder_out = 16'h8000; endcase end end endmodule
Logika Program
membuat program Decoder menggunakan "case" pada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), lalu modul yang digunakan binary_in dan decoder_out, selanjutnya perintah "input_[3:0] binary_in" adalah output sebanyak 4 bit sedangkan "output [15:0] adalah input sebanyak 16 bit dan "reg [15:0] binary_in adalah penyimpanan sementara di register. setelah itu ada perintah always @ (enable or binary_in) sebagai pengantar nilai masukan ke pin-pin keluaran.
Dan memulai kodingan isi dengan "begin" perintah selanjutnya menhitung bilangan hexa sebesar 4 bit dan mempunyai keluaran desimal sampai pemberhentian case " andcase dan modul "endmodul".
Dan memulai kodingan isi dengan "begin" perintah selanjutnya jika select input sebesar 1'bo maka keluaran mux sama dengan mux masukan pertma dan jika select sebesar selanjutnya atau (1'b1) maka keluaran mux sama dengan masukan mux kedua, ditutup dengan endmodule.
Synchronous reset D- FF
Dan memulai kodingan isi dengan "begin" perintah selanjutnya menhitung bilangan hexa sebesar 4 bit dan mempunyai keluaran desimal sampai pemberhentian case " andcase dan modul "endmodul".
Mux : Using if Statement
//----------------------------------------------------- // Design Name : mux_using_if // File Name : mux_using_if.v // Function : 2:1 Mux using If // Coder : Deepak Kumar Tala //----------------------------------------------------- module mux_using_if( din_0 , // Mux first input din_1 , // Mux Second input sel , // Select input mux_out // Mux output ); //-----------Input Ports--------------- input din_0, din_1, sel ; //-----------Output Ports--------------- output mux_out; //------------Internal Variables-------- reg mux_out; //-------------Code Starts Here--------- always @ (sel or din_0 or din_1) begin : MUX if (sel == 1'b0) begin mux_out = din_0; end else begin mux_out = din_1 ; end end endmodule //End Of Module mux
Logika Program
membuat program Mux menggunakan if pada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), lalu modul yang digunakan "din_0" sebagai inputan pertama dan "din_1" sebagai inputan kedua,setelah itu ada "sel" sebagai select input dan "Mux_out" sebagai keluaran mux, selanjutnya petintah "always @ enable or binary_in" sebagai pengantar nilai masukan ke pin-pin keluaran.Dan memulai kodingan isi dengan "begin" perintah selanjutnya jika select input sebesar 1'bo maka keluaran mux sama dengan mux masukan pertma dan jika select sebesar selanjutnya atau (1'b1) maka keluaran mux sama dengan masukan mux kedua, ditutup dengan endmodule.
Synchronous reset D- FF
//----------------------------------------------------- // Design Name : dff_sync_reset // File Name : dff_sync_reset.v // Function : D flip-flop sync reset // Coder : Deepak Kumar Tala //----------------------------------------------------- module dff_sync_reset ( data , // Data Input clk , // Clock Input reset , // Reset input q // Q output ); //-----------Input Ports--------------- input data, clk, reset ; //-----------Output Ports--------------- output q; //------------Internal Variables-------- reg q; //-------------Code Starts Here--------- always @ ( posedge clk) if (~reset) begin q <= 1'b0; end else begin q <= data; end endmodule //End Of Module dff_sync_reset
Logika Program
membuat program synchronous reset D- FF pada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//),
modul yang digunakan data, clock, reset sebagai input dan Q sebagai output lalu di simpan kedalam Register Q, lalu perintah isi tidak mereset, maka keluaran q kurang dari sama dengan 1'b0. dan jika masukan melebihi q sama dengan kurang dari sama dengan data. Endmodule mengakiri program.
8-Bit Simple Up Counter
//----------------------------------------------------- // Design Name : up_counter // File Name : up_counter.v // Function : Up counter // Coder� : Deepak //----------------------------------------------------- module up_counter ( out , // Output of the counter enable , // enable for counter clk , // clock Input reset // reset Input ); //----------Output Ports-------------- output [7:0] out; //------------Input Ports-------------- input enable, clk, reset; //------------Internal Variables-------- reg [7:0] out; //-------------Code Starts Here------- always @(posedge clk) if (reset) begin out <= 8'b0 ; end else if (enable) begin out <= out + 1; end
Logika Program
membuat program 8 bit simple up Counter pada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), menggunakan modul out sebagai ouput counter dan enable untuk counter lalu clock dan reset sebagai input, selanjutnya perintah output [7:0] out berarti counter mempunyai keluaran sebanyak 8 buah,
dan reg [7:0] out sebagai registernya, lalu always @ (posedge clk) adalah clock diatur secara terus menerus dan medefiniskan clock yang aktif pada sisi naik untuk pengantar nilai masukan ke pin-pin keluaran. perintah isi pada program ini diartikan jika kondisi masukannya reset maka keluaran berupa 0 sebanyak 8 bit, jika enable keluaran adalah output sebelumnya ditambah 1. dan program ditutup dengan endmodule.
ROM/EPROM - Loading from File
ROM/EPROM - Loading from File
//----------------------------------------------------- // Design Name : rom_using_file // File Name : rom_using_file.v // Function : ROM using readmemh // Coder : Deepak Kumar Tala //----------------------------------------------------- module rom_using_file ( address , // Address input data , // Data output read_en , // Read Enable ce // Chip Enable ); input [7:0] address; output [7:0] data; input read_en; input ce; reg [7:0] mem [0:255] ; assign data = (ce && read_en) ? mem[address] : 8'b0; initial begin $readmemb("memory.list", mem); // memory_list is memory file end endmodule
Logika Program
membuat program ROM/EPROM - Loading from Filepada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), program ini menggunakan modul address sebagai input, data sebagai output dan read_en dan ce atau chip keadaan enable, selanjutnya input [7:0] address adalah masukan alamat sebanyak 8 bit dan output [7:0] data adalah data keluaran sebanyak 8 bit, lalu perintah reg [7:0] mem [0:255] disimpan di register hexal dan biner, perintah selanjutnya di artikan
menetapkan masukan sebagai variabel read_en dan ce lalu juga menetapkan address 8'b0 sebagai masukan memori data
Dan baris kodingan selanjutnya memori yang diprogram bisa membaca dan menhapus serta menulis kembali, memori juga mempunyai sifat non-volatile.
Using Assign (Parity)
//----------------------------------------------------- // Design Name : parity_using_assign // File Name : parity_using_assign.v // Function : Parity using assign // Coder : Deepak Kumar Tala //----------------------------------------------------- module parity_using_assign ( data_in , // 8 bit data in parity_out // 1 bit parity out ); output parity_out ; input [7:0] data_in ; wire parity_out ; assign parity_out = (data_in[0] ^ data_in[1]) ^ (data_in[2] ^ data_in[3]) ^ (data_in[4] ^ data_in[5]) ^ (data_in[6] ^ data_in[7]); endmodule
Logika Program
membuat program ROM/EPROM - Loading from Filepada program FPGA verilog seperti text diatas, untuk membuat komentar diawali dengan perintah (//), modul yang di gunakan pada program data_in sebagai inputan data sebanyak 8 bit dan parity_out adalah 1 bit parity keluaran,
selanjutnya perintah input [7:0] data_in sebagai inputan data sebanyak 8 bit,
perintah " wire parity_out" sebagai penyambung pin ke keluaran parity,
dan perintah isi bermaksud menetapkan keluaran variabel parity out dengan masukan data sebanyak 0 sampai dengan 7 membentuk sebuah parity sesuai dengan masukannya serta membandingkan, apa bila hasil ganjil maka lampu led menyala.
Sumber: http://asic-world.com/examples/verilog/index.html
Sumber: http://asic-world.com/examples/verilog/index.html
Komentar
Posting Komentar