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

Cara menggunakan jenis VHDL yang paling umum:std_logic

Jenis yang paling umum digunakan dalam VHDL adalah std_logic . Pikirkan jenis ini sebagai bit tunggal, informasi digital yang dibawa oleh kabel fisik tunggal. std_logic memberi kami kontrol yang lebih halus atas sumber daya dalam desain kami daripada integer jenis, yang telah kita gunakan di tutorial sebelumnya.

Biasanya, kami ingin kabel dalam antarmuka digital memiliki nilai '1' atau '0' . Kedua nilai ini adalah satu-satunya nilai yang dapat dimiliki oleh bit, digit biner. Namun pada kenyataannya, sinyal digital fisik dapat berada dalam beberapa status, yaitu std_logic type melakukan pekerjaan yang baik meniru. Oleh karena itu, ini adalah jenis yang paling sering digunakan dalam VHDL.

Pos blog ini adalah bagian dari seri Tutorial VHDL Dasar.

std_logic type dapat memiliki nilai berikut:

‘1’ Logika 1
‘0’ Logika 0
‘Z’ Impedansi tinggi
'A' Sinyal lemah, tidak tahu apakah 0 atau 1
'L' Lemah 0, pull-down
‘H’ Lemah 1, pullup
‘-‘ Tidak peduli
'U' Tidak diinisialisasi
'X' Tidak diketahui, banyak driver

Ini mungkin tampak seperti banyak status berbeda untuk tipe yang seharusnya memodelkan nilai biner tunggal. Jangan khawatir, kami tidak akan menggunakan semua jenis ini dalam seri tutorial ini. Kami akan menggunakan '1' dan '0' tentu saja. Dan kita juga akan melihat 'U' dan 'X' , yang akan membantu kami menemukan kesalahan dalam desain kami. Nilai lainnya adalah fitur VHDL lanjutan yang dapat digunakan untuk hal-hal seperti pemodelan komunikasi dengan misalnya I 2 perangkat C, atau untuk membuat bus tiga negara bagian.

Jika beberapa proses mencoba untuk menulis nilai yang berbeda ke sebuah sinyal, kita katakan bahwa ia memiliki banyak driver . Jika std_logic sinyal memiliki beberapa driver, itu tidak akan menjadi kesalahan kompilasi atau run-time, setidaknya tidak di simulator. Itu karena std_logic adalah tipe terselesaikan , artinya nilainya akan ditentukan oleh fungsi resolusi.

Nilai dari std_logic sinyal dengan dua driver akan ditentukan berdasarkan tabel resolusi ini:

U X 0 1 Z B L H
U X X 1 1 1 1 1 X 1
U X 0 X 0 0 0 0 X 0
U U U U U U U U U U
U X X X X X X X X X
U X 0 1 Z W L H X Z
U X 0 1 W W W W X B
U X 0 1 L W L W X L
U X 0 1 H W W H X H
U X X X X X X X X

Olahraga

Dalam video tutorial ini kita akan belajar bagaimana menggunakan mendeklarasikan dan menampilkan std_logic sinyal dalam bentuk gelombang:

Kode terakhir yang kita buat dalam tutorial ini:

library ieee;
use ieee.std_logic_1164.all;

entity T10_StdLogicTb is
end entity;

architecture sim of T10_StdLogicTb is

    signal Signal1 : std_logic := '0';
    signal Signal2 : std_logic;
    signal Signal3 : std_logic;

begin

    process is
    begin

        wait for 10 ns;
        Signal1 <= not Signal1;

    end process;

    -- Driver A
    process is
    begin

        Signal2 <= 'Z';
        Signal3 <= '0';
        wait;

    end process;

    -- Driver B
    process(Signal1) is
    begin

        if Signal1 = '0' then
            Signal2 <= 'Z';
            Signal3 <= 'Z';
        else
            Signal2 <= '1';
            Signal3 <= '1';
        end if;

    end process;


end architecture;

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

Bentuk gelombang dengan kursor ditempatkan di bagian lain dari siklus sinyal berulang:

Analisis

Latihan menunjukkan bagaimana fungsi resolusi VHDL bekerja dengan std_logic Tipe. Saat bekerja dengan logika digital, seringkali lebih praktis untuk mempelajari garis waktu dalam bentuk gelombang daripada menggunakan cetakan. Oleh karena itu kami menggunakan bentuk gelombang ModelSim untuk memeriksa nilai sinyal dalam latihan ini.

Proses pertama dan Signal1 hanya digunakan untuk mengubah nilai yang dijalankan oleh proses ketiga pada Signal2 dan Signal3 .

Proses kedua, Driver A, akan mencoba menjalankan 'Z' ke Signal2 , dan '0' ke Signal3 terus-menerus.

Proses ketiga, Driver B, akan bergantian antara mengemudi '1' dan 'Z' ke kedua Signal2 dan Signal3 .

Kami melihat di tangkapan layar bentuk gelombang bahwa Signal1 berubah antara '0' dan '1' , karena hanya ada satu proses yang mencoba menggerakkan sinyal ini. Kita juga dapat melihat bahwa beberapa sinyal driver diselesaikan sesuai dengan tabel resolusi yang diposting di komentar kode VHDL:

Sinyal Pengemudi A Pengemudi B Hasil
Sinyal2 'Z' 'Z' 'Z'
Sinyal2 'Z' ‘1’ ‘1’
Sinyal3 '0' 'Z' '0'
Sinyal3 '0' ‘1’ 'X'

Bawa Pulang

Pergi ke tutorial berikutnya »


VHDL

  1. Kemacetan Alur Kerja Pencetakan 3D Paling Umum – Dan Cara Memperbaikinya
  2. Masalah Sistem Pendingin Mobil Yang Paling Umum
  3. Cara memaksimalkan data Anda
  4. Cara membuat Daftar Tertaut di VHDL
  5. Cara menggunakan Prosedur dalam Proses di VHDL
  6. Cara menggunakan Fungsi Tidak Murni di VHDL
  7. Cara menggunakan Fungsi di VHDL
  8. Cara Menggunakan Hoist Engine dengan Aman di Tempat Kerja
  9. Penyebab Paling Umum Kecelakaan Crane (Dan Cara Menghindarinya)
  10. Aplikasi Paling Umum dari a286