Dalam tutorial sebelumnya kita mempelajari perbedaan utama antara sinyal dan variabel. Kami belajar bahwa sinyal memiliki cakupan yang lebih luas daripada variabel, yang hanya dapat diakses dalam satu proses. Jadi bagaimana kita bisa menggunakan sinyal untuk komunikasi antara beberapa proses?
Kami telah belajar menggunakan wait; menunggu tanpa batas, dan wait for untuk menunggu waktu tertentu. Ada dua jenis pernyataan tunggu lagi di VHDL.
Pos blog ini adalah bagian dari seri Tutorial VHDL Dasar.
Pernyataan Wait On akan menghentikan proses hingga salah satu sinyal yang ditentukan berubah: wait on <signal_name1>, <signal_name2> ...;
Pernyataan Tunggu Sampai akan berhenti sampai suatu peristiwa menyebabkan kondisi menjadi benar: wait until <condition>;
Ternyata Wait On, Wait Hingga dan Wait For bisa digabung: wait on <signal_name1> until <condition> for <time_value>;
Contoh ini akan berhenti selama 10 nanodetik, atau hingga signal1 perubahan dan signal2 sama dengan signal3 : wait on signal1 until signal2 = signal3 for 10 ns;
Olahraga
Dalam video tutorial ini kita akan belajar bagaimana menggunakan pernyataan Wait On dan Wait Hingga untuk komunikasi antar-proses di VHDL:
Kode terakhir yang kita buat dalam tutorial ini:
entity T07_WaitOnUntilTb is
end entity;
architecture sim of T07_WaitOnUntilTb is
signal CountUp : integer := 0;
signal CountDown : integer := 10;
begin
process is
begin
CountUp <= CountUp + 1;
CountDown <= CountDown - 1;
wait for 10 ns;
end process;
process is
begin
wait on CountUp, CountDown;
report "CountUp=" & integer'image(CountUp) &
" CountDown=" & integer'image(CountDown);
end process;
process is
begin
wait until CountUp = CountDown;
report "Jackpot!";
end process;
end architecture;
Output ke konsol simulator saat kita menekan tombol run di ModelSim:
Proses pertama menambah CountUp counter dan mengurangi CountDown menangkal. Mereka diperbarui secara bersamaan. Meskipun penetapan sinyal dari dua sinyal berada pada jalur yang berbeda dalam proses, nilai sinyal yang ditetapkan hanya menjadi efektif ketika program mencapai pernyataan Tunggu. Proses melakukan operasi ini pada awal simulasi, dan kemudian setiap 10 nanodetik.
Baris pertama proses kedua adalah wait on CountUp, CountDown; . Program akan menunggu pada baris ini sampai salah satu atau kedua sinyal berubah. Seperti yang dapat kita lihat dari hasil cetakan, ini terjadi pada waktu simulasi 0 ns ketika penghitung diubah untuk pertama kalinya, dan setiap kali penghitung berubah setelah itu.
Baris pertama proses ketiga adalah wait until CountUp = CountDown; . Program akan bangun setiap kali salah satu dari dua sinyal berubah, seperti yang dilakukan proses pertama. Tapi itu hanya akan berlanjut jika ekspresi bernilai true , jika tidak maka akan kembali tidur. Seperti yang bisa kita lihat dari cetakan, “Jackpot!” hanya dicetak sekali, pada 40 ns ketika kedua penghitung memiliki nilai yang sama.
Bawa Pulang
Wait On akan menunggu sampai salah satu sinyal berubah
Tunggu Sampai akan bangun jika salah satu sinyal berubah, tetapi hanya akan berlanjut jika ekspresinya true