Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> VHDL

Menguasai Logika Kondisional dalam VHDL: If-Then-Elsif-Else Dijelaskan

Dalam tutorial sebelumnya kami menggunakan ekspresi kondisional dengan pernyataan Wait Until untuk memicu proses hanya ketika dua sinyal counter cocok. Bagaimana jika kita perlu program untuk mengambil tindakan yang berbeda berdasarkan input yang bervariasi?

Konstruksi If-Then-Elsif-Else memungkinkan kami untuk mencabang logika. Bergantung pada nilai variabel atau hasil ekspresi, program dapat mengikuti jalur yang berbeda.

Artikel ini merupakan bagian dari seri Tutorial Dasar VHDL.

Sintaks Dasar

Bentuk kanonik adalah:

if <condition> then elsif <condition> then else end if;

Klausa elsif dan else bersifat opsional, dan elsif dapat muncul berkali-kali. Sebuah <condition> dapat berupa literal boolean atau ekspresi yang mengevaluasi ke true atau false.

Contoh: MyCounter < 10 benar ketika MyCounter kurang dari sepuluh.

Operator Relasional

=sama dengan
/=tidak sama dengan
<kurang dari
<=kurang dari atau sama dengan
>lebih dari
>=lebih dari atau sama dengan

Operator Logika

not abenar jika a salah
a and bbenar jika a dan b benar
a or bbenar jika a atau b benar
a nand bbenar jika a atau b salah
a nor bbenar jika a dan b salah
a xor bbenar jika tepat satu dari a atau b benar
a xnor bbenar jika a dan b sama

Latihan

Berikut adalah contoh lengkap VHDL yang mendemonstrasikan konstruksi If-Then-Elsif-Else dalam tindakan.

Kode akhir:

entity T08_IfTb is end entity; architecture sim of T08_IfTb 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 if CountUp > CountDown then report "CountUp is larger"; elsif CountUp < CountDown then report "CountDown is larger"; else report "They are equal"; end if; wait on CountUp, CountDown; end process; end architecture; 

Keluaran konsol simulator saat menjalankan model di ModelSim:

VSIM 2> run # ** Note: CountDown is larger # Time: 0 ns Iteration: 0 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 0 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 10 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 20 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 30 ns Iteration: 1 Instance: /t08_iftb # ** Note: They are equal # Time: 40 ns Iteration: 1 Instance: /t08_iftb # ** Note: Countup is larger # Time: 50 ns Iteration: 1 Instance: /t08_iftb # ** Note: Countup is larger # Time: 60 ns Iteration: 1 Instance: /t08_iftb ...

Analisis

Kami menginisialisasi CountDown ke 10 dan CountUp ke 0. Kedua counter diperbarui secara bersamaan setiap 10 ns dalam proses pertama. Proses kedua menunggu sinyal-sinyal ini, sehingga memicu setiap kali mereka berubah. Blok If-Then-Elsif-Else kemudian memilih salah satu dari tiga cabang: CountUp > CountDown, CountUp < CountDown, atau CountUp = CountDown. Meskipun else eksplisit tidak wajib, menyertakannya adalah praktik terbaik, yang memastikan semua kasus tepi ditangani.

Lacak konsol memastikan bahwa proses kedua mengevaluasi kondisi setelah setiap pembaruan, mencetak pesan yang sesuai.

Menguasai Logika Kondisional dalam VHDL: If-Then-Elsif-Else Dijelaskan

Kesimpulan

Lanjutkan ke tutorial berikutnya »

VHDL

  1. Bagaimana Molibdenum Mengubah Industri Modern: Penggunaan, Manfaat, dan Dinamika Pasokan
  2. Membuat Daftar String dalam VHDL: Praktik Terbaik & Contoh
  3. Mengakhiri Simulasi Testbench VHDL dengan Elegan
  4. Implementasi Pengontrol PWM dalam VHDL: Desain, Simulasi, dan Demo FPGA
  5. Menghasilkan Angka Acak dalam VHDL: Dari Uniform hingga OSVVM
  6. Memanfaatkan Prosedur Dalam Proses untuk Desain FSM VHDL yang Lebih Bersih
  7. Menggunakan Fungsi Tidak Murni di VHDL: Meningkatkan Keterbacaan dan Pemeliharaan FSM
  8. Menguasai Fungsi VHDL: Panduan Praktis untuk Desain Efisien
  9. Mendesain Mesin Status Terbatas dalam VHDL: Contoh Praktis Pengatur Lampu Lalu Lintas
  10. Menguasai Teknik Mesin Gerinda Cutter: Panduan Praktis