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

Cara membuat proses dengan Daftar Sensitivitas di VHDL

Anda harus selalu menggunakan daftar sensitivitas untuk memicu proses dalam modul produksi. Daftar sensitivitas adalah parameter untuk proses yang mencantumkan semua sinyal yang sensitif terhadap proses tersebut. Jika ada sinyal yang berubah, proses akan aktif, dan kode di dalamnya akan dieksekusi.

Kita telah belajar menggunakan wait on dan wait until pernyataan untuk membangunkan proses ketika sinyal berubah. Namun, sejujurnya, ini bukan cara saya menulis sebagian besar proses saya.

Pos blog ini adalah bagian dari seri Tutorial VHDL Dasar.

Saat menulis kode VHDL, gaya penulisan tergantung pada apakah kode tersebut dimaksudkan untuk dijalankan hanya dalam simulator atau tidak. Jika saya sedang menulis kode simulasi, seperti yang telah kita lakukan dalam seri tutorial ini, saya selalu gunakan wait pernyataan untuk mengontrol proses. Jika saya menulis kode yang ingin saya buat implementasi fisiknya, saya tidak pernah gunakan wait pernyataan.

Sintaks untuk proses dengan daftar sensitivitas adalah:
process(<signal1>, <signal2>, ..) is
begin
    <main logic here>
end process;

Kekhasan penting dengan daftar sensitivitas adalah bahwa semua sinyal yang terbaca dalam proses harus berada pada daftar sensitivitas. Namun, simulator tidak akan memberi tahu Anda jika Anda gagal menambahkan sinyal ke daftar sensitivitas, karena itu legal dalam bahasa VHDL. Masalahnya adalah jika Anda gagal melakukan ini, kode akan berperilaku berbeda saat disintesis dan digunakan dalam implementasi fisik.

Dalam VHDL-2008, kata kunci all diizinkan untuk digunakan alih-alih mencantumkan setiap sinyal. Sayangnya, sebagian besar perangkat lunak sintesis tidak mendukung revisi bahasa VHDL yang lebih baru ini.

Olahraga

Dalam tutorial video ini kita akan belajar cara membuat proses menggunakan daftar sensitivitas di VHDL:

Kode terakhir yang kita buat dalam tutorial ini:

entity T09_SensitivityListTb is
end entity;

architecture sim of T09_SensitivityListTb 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 triggered using Wait On
    process is
    begin

        if CountUp = CountDown then
            report "Process A: Jackpot!";
        end if;

        wait on CountUp, CountDown;

    end process;

    -- Equivalent process using a sensitivity list
    process(CountUp, CountDown) is
    begin

        if CountUp = CountDown then
            report "Process B: Jackpot!";
        end if;

    end process;

end architecture;

Output ke konsol simulator saat kita menekan tombol run di ModelSim:

VSIM 2> run
# ** Note: Process A: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb
# ** Note: Process B: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb

Analisis

Kita dapat melihat dari cetakan bahwa kedua proses berperilaku sama. Itu karena proses dengan daftar sensitivitas secara definisi setara dengan proses dengan wait on di akhir proses.

Proses dengan daftar sensitivitas biasanya digunakan dalam kode yang dimaksudkan untuk disintesis. Kode tersebut biasa disebut sebagai kode register-transfer level (RTL). Ini adalah konvensi, tetapi ada alasan bagus untuk itu. Meskipun beberapa wait on dan wait until pernyataan dapat disintesis, sulit untuk mengetahui jenis perangkat keras apa yang akan dibuat.

Bawa Pulang

Pergi ke tutorial berikutnya »


VHDL

  1. Cara membuat daftar string di VHDL
  2. Cara membuat testbench berbasis Tcl untuk modul kunci kode VHDL
  3. Cara membuat pengontrol PWM di VHDL
  4. Cara membuat penyangga cincin FIFO di VHDL
  5. Cara membuat testbench pemeriksaan mandiri
  6. Cara membuat Daftar Tertaut di VHDL
  7. Cara menggunakan Prosedur dalam Proses di VHDL
  8. Cara menggunakan Fungsi Tidak Murni di VHDL
  9. Cara menggunakan Fungsi di VHDL
  10. Cara membuat Mesin Finite-State di VHDL