Menguasai For-Loop dalam VHDL: Panduan Praktis
Dalam tutorial sebelumnya kami mengeksplorasi cara membuat loop tak terbatas menggunakan pernyataan loop dan keluar darinya dengan exit. Bagaimana jika kita perlu loop untuk berjalan sejumlah kali tertentu? For-Loop adalah solusi paling sederhana.
For-Loop mengulang melalui rentang integer atau item terhitung yang tetap. Nilai iterasi saat ini otomatis tersedia di dalam loop melalui konstanta yang dideklarasikan implisit.
Artikel ini adalah bagian dari seri Tutorial Dasar VHDL.
Sintaks
for <constant> in <range> loop -- loop body end loop;
Di sini, <constant> adalah nama yang ditentukan pengguna untuk penghitung loop, dan <range> dapat berupa rentang integer (menaik atau menurun) atau sekumpulan nilai terhitung.
Rentang Integer
- Rentang menaik:
0 to 9 – mengulang 0,1,2,…,9. - Rentang menurun:
9 downto 0 – mengulang 9,8,7,…,0. - Nilai tunggal:
0 to 0 – hanya mengulang 0. - Rentang kosong:
0 to -1 – tubuh loop tidak pernah dieksekusi.
Kode Contoh
entity T04_ForLoopTb is end entity; architecture sim of T04_ForLoopTb is begin process is begin for i in 1 to 10 loop report "i=" & integer'image(i); end loop; wait; end process; end architecture;
Keluaran Simulasi (ModelSim)
VSIM 2> run # ** Note: i=1 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=2 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=3 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=4 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=5 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=6 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=7 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=8 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=9 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=10 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
Analisis
For-Loop dieksekusi tepat sepuluh iterasi, mencetak nilai penghitung pada waktu simulasi 0. Karena tidak ada wait di dalam loop, seluruh loop selesai seketika. Pernyataan wait; akhir menempatkan proses dalam penundaan tak terbatas, yang umum dalam testbench.
Kami juga mendemonstrasikan dua operasi string penting:
integer'image(i) – mengonversi integer menjadi string. & – menggabungkan dua string.
Poin Utama
- For-Loop dapat mengulang melalui rentang menaik (
to) dan menurun (downto). - Nilai integer dikonversi ke string dengan
integer'image(). - Penggabungan string menggunakan operator
&.
Lanjutkan ke tutorial berikutnya untuk konsep VHDL yang lebih dalam.