Menguasai While Loop dalam VHDL: Kontrol Iterasi Dinamis
Membangun pada eksplorasi kami sebelumnya tentang for loops, tutorial ini membahas while loop—konstruksi canggih yang memungkinkan Anda mengontrol iterasi berdasarkan kondisi dinamis daripada rentang yang ditentukan sebelumnya.
while loop mengeksekusi tubuhnya berulang kali selama kondisi yang ditentukan tetap true. Ini membuatnya ideal untuk skenario di mana jumlah iterasi bergantung pada data runtime atau logika kompleks.
Postingan ini adalah bagian dari seri Tutorial Dasar VHDL.
Sintaks
while <condition> loop -- loop body end loop;
Kondisi <condition> harus mengevaluasi ke nilai boolean. Ini dapat berupa perbandingan sederhana atau ekspresi yang lebih rumit. Kondisi diperiksa sebelum setiap putaran, memastikan loop hanya melanjutkan saat tetap true.
Contoh Kondisi
i < 10 – benar selama i kurang dari 10.
i /= 10 – benar selama i tidak sama dengan 10.
i >= 0 and i < 2**8 – benar untuk nilai dari 0 hingga 255.
Operator Relasional
=
sama dengan
/=
tidak sama dengan
<
kurang dari
<=
kurang dari atau sama dengan
>
lebih dari
>=
lebih dari atau sama dengan
Operator Logika
nota
benar jika a salah
aandb
benar jika a dan b benar
aorb
benar jika a atau b benar
anandb
benar jika a atau b salah
anorb
benar jika a dan b salah
axorb
benar jika tepat satu dari a atau b benar
axnorb
benar jika a dan b sama
Latihan
Tonton video tutorial di bawah ini untuk melihat bagaimana variabel dapat mendorong while loop dalam praktik:
Kode Contoh
entity T05_WhileLoopTb is end entity; architecture sim of T05_WhileLoopTb is begin process is variable i : integer := 0; begin while i < 10 loop report "i=" & integer'image(i); i := i + 2; end loop; wait; end process; end architecture;
Kami menginisialisasi i ke 0 dan menggunakan i < 10 sebagai penahan loop. Karena loop meningkatkan i sebesar 2 setiap siklus, nilai terakhir yang dicetak adalah 8. Pada putaran berikutnya, kondisi mengevaluasi ke salah (10 tidak kurang dari 10), dan loop keluar. Pernyataan wait; berikutnya menangguhkan proses tak terbatas, pola umum untuk testbench.
Poin Utama
Loop while berjalan selama kondisinya tetap true.
Kondisi dievaluasi sebelum setiap iterasi.
Variabel dapat dideklarasikan di dalam proses dan diperbarui di dalam loop.