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

Cara membuat Pernyataan Bersamaan di VHDL

Pernyataan bersamaan dalam VHDL adalah penugasan sinyal dalam arsitektur, tetapi di luar konstruksi proses normal. Pernyataan konkuren juga disebut sebagai penugasan konkuren atau proses konkuren.

Saat Anda membuat pernyataan bersamaan, Anda sebenarnya sedang membuat proses dengan karakteristik tertentu yang terdefinisi dengan jelas. Pernyataan serentak selalu ekuivalen dengan proses yang menggunakan daftar sensitivitas, di mana semua sinyal di sebelah kanan operator penetapan sinyal berada di daftar sensitivitas.

Proses notasi singkatan ini berguna ketika Anda ingin membuat logika sederhana yang menghasilkan penetapan satu sinyal. Alih-alih mengetikkan konstruksi proses lengkap dengan daftar sensitivitas dan semua itu, Anda cukup menetapkan ke sinyal target secara langsung di arsitektur.

Pos blog ini adalah bagian dari seri Tutorial VHDL Dasar.

Ketika digunakan dengan benar, maksud dari kode akan tetap cukup jelas. Tidak perlu membuat proses untuk setiap bit yang ingin Anda flip.

Olahraga

Dalam video ini kita belajar cara membuat pernyataan bersamaan:

Kode terakhir yang kita buat dalam tutorial ini:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity T13_ConcurrentProcsTb is
end entity;

architecture sim of T13_ConcurrentProcsTb is

    signal Uns :  unsigned(5 downto 0) := (others => '0');
    signal Mul1 : unsigned(7 downto 0);
    signal Mul2 : unsigned(7 downto 0);
    signal Mul3 : unsigned(7 downto 0);

begin

    process is
    begin

        Uns <= Uns + 1;

        wait for 10 ns;
    end process;

    -- Process multiplying Uns by 4
    process is
    begin

        Mul1 <= Uns & "00";

        wait on Uns;

    end process;

    -- Equivalent process using sensitivity list
    process(Uns) is
    begin

        Mul2 <= Uns & "00";

    end process;

    -- Equivalent process using a concurrent statement
    Mul3 <= Uns & "00";

end architecture;

Jendela bentuk gelombang di ModelSim setelah kami menekan run, dan memperbesar timeline:

Analisis

Kita dapat melihat dari bentuk gelombang bahwa Mul1 , Mul2 , dan Mul3 berperilaku sama persis. Ini karena pernyataan bersamaan dan dua proses yang kita buat adalah setara.

Pernyataan bersamaan bekerja seperti sebuah proses. Semua sinyal di sebelah kanan <= otomatis ditambahkan ke daftar sensitivitas. Artinya sinyal di sebelah kiri <= akan diperbarui setiap kali salah satu sinyal yang dievaluasi berubah.

Ada banyak cara untuk mengalikan angka dalam VHDL. Dalam latihan ini kita mengalikan Uns sinyal dengan 4, menggunakan bit shifting. Semua sinyal kami adalah unsigned jenis, yang berarti bahwa mereka ditafsirkan dengan angka. Menambahkan 0 di sebelah kanan bilangan biner sama dengan mengalikannya dengan 2.

Ini adalah ilustrasi dari apa yang terjadi pada kursor dalam bentuk gelombang:

Bawa Pulang

Pergi ke tutorial berikutnya »


VHDL

  1. Pernyataan Prosedur - Contoh VHDL
  2. Cara membuat daftar string di VHDL
  3. Cara membuat testbench berbasis Tcl untuk modul kunci kode VHDL
  4. Bagaimana menghentikan simulasi di testbench VHDL
  5. Cara membuat pengontrol PWM di VHDL
  6. Cara membuat penyangga cincin FIFO di VHDL
  7. Cara membuat testbench pemeriksaan mandiri
  8. Cara membuat Daftar Tertaut di VHDL
  9. Cara menggunakan Prosedur dalam Proses di VHDL
  10. Cara menggunakan Fungsi di VHDL