Verilog
Perilaku perangkat keras tidak dapat diimplementasikan tanpa pernyataan bersyarat dan cara lain untuk mengontrol aliran logika. Verilog memiliki serangkaian blok aliran kontrol dan mekanisme untuk mencapai hal yang sama.
pernyataan bersyarat . ini digunakan untuk membuat keputusan tentang apakah pernyataan tertentu harus dieksekusi atau tidak. Ini sangat mirip dengan if-else-if
pernyataan dalam C. Jika ekspresi bernilai benar, maka pernyataan pertama akan dieksekusi. Jika ekspresi bernilai false dan jika else
bagian ada, else
bagian yang akan dieksekusi.
// if statement without else part
if (expression)
[statement]
// if statment with an else part
if (expression)
[statement]
else
[statement]
// if else for multiple statements should be
// enclosed within "begin" and "end"
if (expression) begin
[multiple statements]
end else begin
[multiple statements]
end
// if-else-if statement
if (expression)
[statement]
else if (expression)
[statement]
else
[statement]
else
bagian dari if-else adalah opsional dan dapat menyebabkan kebingungan jika else
dihilangkan dalam urutan if bersarang. Untuk menghindari kebingungan ini, lebih mudah untuk selalu mengaitkan yang lain dengan yang sebelumnya jika itu tidak memiliki yang lain. Cara lain adalah dengan menyertakan pernyataan dalam begin-end
memblokir. else
terakhir part menangani kasus yang tidak ada di atas atau default di mana tidak ada kondisi lain yang terpenuhi.
Klik di sini untuk membaca lebih lanjut tentang if-else-if
Loop menyediakan cara untuk mengeksekusi satu atau beberapa pernyataan dalam satu blok beberapa kali atau lebih. Ada empat jenis pernyataan perulangan di Verilog.
Ini akan terus mengeksekusi pernyataan di dalam blok.
forever
[statement]
forever begin
[multiple statements]
end
module my_design;
initial begin
forever begin
$display ("This will be printed forever, simulation can hang ...");
end
end
endmodule
Log Simulasi ncsim> run This will be printed forever, simulation can hang ... This will be printed forever, simulation can hang ... ... ... This will be printed forever, simulation can hang ... This will be printed forever, simulation can hang ... This will be printed forever, simulation can hang ... This will be printed forever, simulation can hang ... Result reached the maximum of 5000 lines. Killing process.
Ini akan mengeksekusi pernyataan beberapa kali. Jika ekspresi bernilai X atau Z, maka ekspresi tersebut akan diperlakukan sebagai nol dan tidak akan dieksekusi sama sekali.
repeat ([num_of_times]) begin
[statements]
end
repeat ([num_of_times]) @ ([some_event]) begin
[statements]
end
module my_design;
initial begin
repeat(4) begin
$display("This is a new iteration ...");
end
end
endmodule
Log Simulasi ncsim> run This is a new iteration ... This is a new iteration ... This is a new iteration ... This is a new iteration ... ncsim: *W,RNQUIE: Simulation is complete.
Ini akan mengeksekusi pernyataan selama ekspresi benar dan akan keluar setelah kondisi menjadi salah. Jika kondisi salah dari awal, pernyataan tidak akan dieksekusi sama sekali.
while (expression) begin
[statements]
end
module my_design;
integer i = 5;
initial begin
while (i > 0) begin
$display ("Iteration#%0d", i);
i = i - 1;
end
end
endmodule
Log Simulasi ncsim> run Iteration#5 Iteration#4 Iteration#3 Iteration#2 Iteration#1 ncsim: *W,RNQUIE: Simulation is complete.
for ( initial_assignment; condition; increment_variable) begin
[statements]
end
Ini akan mengontrol pernyataan menggunakan proses tiga langkah:
module my_design;
integer i = 5;
initial begin
for (i = 0; i < 5; i = i + 1) begin
$display ("Loop #%0d", i);
end
end
endmodule
Log Simulasi ncsim> run Loop #0 Loop #1 Loop #2 Loop #3 Loop #4 ncsim: *W,RNQUIE: Simulation is complete.
Klik di sini untuk membaca lebih lanjut tentang for loop.
Verilog
Sebuah for loop adalah loop yang paling banyak digunakan dalam perangkat lunak, tetapi terutama digunakan untuk mereplikasi logika perangkat keras di Verilog. Ide di balik for loop adalah untuk mengulangi satu set pernyataan yang diberikan dalam loop selama kondisi yang diberikan benar. Ini sangat m
case pernyataan memeriksa apakah ekspresi yang diberikan cocok dengan salah satu ekspresi lain dalam daftar dan bercabang sesuai. Biasanya digunakan untuk mengimplementasikan multiplexer. Konstruksi if-else mungkin tidak cocok jika ada banyak kondisi yang harus diperiksa dan akan disintesis menjadi
Parameter adalah konstruksi Verilog yang memungkinkan modul untuk digunakan kembali dengan spesifikasi yang berbeda. Misalnya, penambah 4-bit dapat diparameterisasi untuk menerima nilai jumlah bit dan nilai parameter baru dapat diteruskan selama pembuatan modul. Jadi, penambah N-bit bisa menjadi pen
Verilog adalah bahasa deskripsi perangkat keras dan tidak ada persyaratan bagi desainer untuk mensimulasikan desain RTL mereka agar dapat mengubahnya menjadi gerbang logika. Jadi apa yang perlu disimulasikan? Simulasi adalah teknik menerapkan stimulus input yang berbeda ke desain pada waktu yang