Tugas Pembahasan Verilog
- Encoder (Encoder Using if-else statment)
Membuat modul dengan nama encoder_using_if dengan variable binary_out, encoder_in, dan enable.
Pada binary_out merupakan variable
untuk output dengan 4 bit binary output,
enable dan encoder_in merupakan variable input dimana enable merupakan
variable input dimana ia sebagai pengaktif encoder dan encoder_in memiliki inputan 16
bit. Lalu pada variable binary_out dia juga sebagai tempat penahan output value.
“always @ (enable or encoder_in)” dimana variable enable dan encoder_in diberi clock always
dimana clocknya terjadi secara terus menerus. Dengan kondisi awal pada variable
binary_out adalah 0 dan jika kondisi
awal aktif/enable maka ia akan
menlanjutkan ke kondisi selanjutnya, “if
(encoder_in == 16'h0002) begin binary_out = 1;” ini berarti jika hasil dari
encoder_in sama dengan 2 (dalam
bentuk hexa 16bit) maka akan membuat output 1 binary 4bit, dan jika tidak sama maka ia akan melanjutkannya ke
kondisi lainnya hingga kondisi terpenuhi. Lalu program berarkhir dengan endmodule.
- Mux (Mux Using if statment)
Membuat modul dengan nama Mux_using_if dengan variable din_0, din_1, sel, mux_out. Pada din_0, din_1, dan sel merupakan variable inputan dimana din_0 merupakan inputan mux pertama dan
din_1 merupakan inputan mux kedua
dan sel adalah select input, lalu mux_out
merupkan variable untuk output dan sebagai penahan pada output value.
“always @ (sel or din_0 or din_1)” dengan variable yang tertera kita
memasukan clocknya yaitu secara terus menerus. Pada kondisi berikutnya jika variable inputan sel sama dengan 0 (1’b0) maka nilai din_0 sama dengan nilai keluaran yaitu 0 jika tidak maka end else yaitu haasil jika kondisi
pertama tidak terpenuhi/maksutnya disini adalah menentukkan clocknya itu 0 atau
1.
- Flip flop (Asynchronous reset D- FF)
Membuat modul dengan nama dff_async_reset dengan variable data, clk, reset, dan q. Pada data, clk, reset, merupakan variable untuk input
dimana data merupakan data input, clk merupakan clock input,
dan reset merupakan reset input. Lalu q merupakan variable output dan juga sebagai penahan pada output value.
“always @ ( posedge clk or negedge reset)”, posedge merupakan clock yang aktif pada sisi naik-positif sedangkan
negedge merupakan clock yang aktif
pada sisi turun-negatif, jadi berarti clock secara terus menerus (always)
dimana variable clk merupakan inputan dengan clock aktif pada sisi naik dan
reset pada clock aktif di sisi turun. “if
(~reset) begin” jika kondisi diatas negasi
dari variable reset maka program berlanjut,
Pada kondisi awal q lebih kecil sama
dengan 1’b0 dan jika tidak lanjut ke kondisi else dimana q lebih kecil sama dengan variable data, ini berarti data akan
memberikan output 0.
- Counter (8-Bit Simple Up Counter)
Membuat modul dengan nama up_counter dengan variable out, enable, clk, dan reset. Dimana out merupakan variable output dan penahan pada output value dengan keluaran 8bit ( 7 downto 0), lalu enable, clk, reset merupakan
variable input.
“always @(posedge clk)” berarti clock secara terus menerus (always)
dimana clk merupakan inputan dengan
clock aktif pada sisi-naik, lalu jika kondisi merupakan reset maka program berlanjut. Pada kondisi ini variable out lebih kecil sama dengan 8'b0
program akan reset dan dia akan enable jika variable out kurang dari sama dengan output + 1.
- Memory (ROM/EPROM - Loading from File)
Membuat modul dengan nama rom_using_file dengan variable address, data, read_en, dan ce. Dimana variable address, read_en, ce merupakan
variable input. address merupakan inputan 8bit, dan data merupakan variable output 8bit. “reg [7:0] mem [0:255] ; “ menunjukkan dimana 8bit merupakan penekan
output value dan “mem[0:255]” merupakan alamat memory
dari yang terkecil hingga terbesar.
“assign data = (ce && read_en) ? mem[address] : 8'b0;” data
output merupakan dimana variable ce
di beri logika and dengan variable read_en
lalu berkondisi alamat memory dari bit binary 0. “initial begin $readmemb("memory.list", mem);” berarti
memulai suatu initial lalu membaca sebuah list yang terdapat pada memory
tersebut.
- Parity (And the Practical One/Using Bitwise)
Membuat modul dengan nama parity_using_bitwise dengan variable data_in dan parity_out. Dimana data_in
merupakan variable input 8bit dan parity_out
merupakan variable output 1bit.
“assign parity_out = ^data_in;” merupakan data pada variable output parity_out merupakan ekslusif or(^) dari variable data_in. Dimana ^ merupakan gerbang logika XOR
untuk nentukan variable tersebut ganjil atau genap
Sumber code
Comments
Post a Comment