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

Membuat Proses Terpicu Jam dalam VHDL: Panduan Praktis

Mayoritas desain VHDL menggunakan logika terpicu jam—biasa disebut logika sinkron atau sekuensial. Proses terpicu aktif secara eksklusif pada tepi jam master, terlepas dari perubahan pada sinyal input lainnya.

Elemen dasar dari logika terpicu jam adalah flip-flop. Dalam tutorial ini kita fokus pada flip-flop yang terpicu tepi naik dengan reset negatif. Lihat skematika di bawah ini:

Membuat Proses Terpicu Jam dalam VHDL: Panduan Praktis

Sebagai perangkat contoh-dan-tahan, flip-flop menangkap nilai input pada tepi jam naik dan mempertahankan nilai tersebut hingga tepi jam naik berikutnya atau hingga sinyal reset diaktifkan.

Catatan: Pos ini adalah bagian dari seri Tutorial VHDL Dasar.

Semua proses terpicu aktif secara bersamaan dan mencoba input mereka pada saat yang sama. Jam menetapkan langkah waktu diskrit, memungkinkan desainer mempartisi logika kompleks menjadi peristiwa siklus demi siklus yang jelas.

Flip-flop, atau rangkaiannya, juga disebut register.

Daftar sensitivitas dari proses terpicu biasanya hanya berisi sinyal jam, karena proses bangun secara eksklusif pada tepi jam. Input tambahan diabaikan untuk tujuan pemicu.

Di bawah ini adalah template yang dapat digunakan kembali untuk proses terpicu jam dengan reset sinkron:

process(Clk) is begin if rising_edge(Clk) then if nRst = '0' then <reset all output signals here> else <main logic here> end if; end if; end process; 

Latihan

Dalam tutorial video yang menyertai kita melalui pembuatan proses terpicu jam dalam VHDL.

Kode Testbench

Testbench akhir untuk flip-flop:

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T17_ClockedProcessTb is end entity; architecture sim of T17_ClockedProcessTb is constant ClockFrequency : integer := 100e6; -- 100 MHz constant ClockPeriod : time := 1000 ms / ClockFrequency; signal Clk : std_logic := '1'; signal nRst : std_logic := '0'; signal Input : std_logic := '0'; signal Output : std_logic; begin -- The Device Under Test (DUT) i_FlipFlop : entity work.T17_FlipFlop(rtl) port map( Clk => Clk, nRst => nRst, Input => Input, Output => Output); -- Clock generation Clk <= not Clk after ClockPeriod / 2; -- Testbench sequence process is begin -- Release the DUT from reset nRst <= '1'; wait for 20 ns; Input <= '1'; wait for 22 ns; Input <= '0'; wait for 6 ns; Input <= '1'; wait for 20 ns; -- Apply reset nRst <= '0'; wait; end process; end architecture; 

Modul Flip-Flop

Implementasi flip-flop tepi naik dengan reset negatif:

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T17_FlipFlop is port( Clk : in std_logic; nRst : in std_logic; -- Negative reset Input : in std_logic; Output : out std_logic); end entity; architecture rtl of T17_FlipFlop is begin -- Flip‑flop with synchronized reset process(Clk) is begin if rising_edge(Clk) then if nRst = '0' then Output <= '0'; else Output <= Input; end if; end if; end process; end architecture; 

Pengamatan Gelombang

Setelah menjalankan simulasi di ModelSim dan memperbesar timeline, gelombang dengan jelas menunjukkan output hanya diperbarui pada tepi jam naik:

Membuat Proses Terpicu Jam dalam VHDL: Panduan Praktis

Analisis

Output hanya berubah pada tepi jam naik. Transisi input apa pun yang terjadi di antara dua tepi jam naik—seperti cengkerang negatif yang dimulai sekitar 45 ns—tidak tertangkap, karena flip-flop hanya mencoba pada tepi.

Di bawah ini adalah animasi yang memvisualisasikan hubungan antara input, jam, dan output:

Membuat Proses Terpicu Jam dalam VHDL: Panduan Praktis

Pengamatan utama:

Dalam praktiknya, flip-flop memerlukan input stabil untuk waktu singkat sebelum dan setelah tepi jam—disebut setup dan hold times. Batasan ini ditangani secara otomatis oleh alat sintesis saat mengonversi VHDL ke netlist.

Untuk mencoba lebih dalam tentang langkah waktu simulasi, lihat Delta cycles explained.

Kesimpulan

Siap untuk menguji pengetahuan Anda? Ikuti Kuis VHDL Dasar – bagian 3 atau lanjutkan ke tutorial berikutnya.

VHDL

  1. Membuat Daftar String dalam VHDL: Praktik Terbaik & Contoh
  2. Membuat Testbench yang Diakibatkan Tcl untuk Modul Kode-Kunci VHDL
  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. Merancang Ring Buffer FIFO VHDL yang Kuat di Block RAM
  7. Cara Membuat Testbench Self-Checking di VHDL – Panduan Praktis
  8. Implementasi Linked List Dinamis di VHDL dengan Tipe Terlindung dan Pointer Akses
  9. Memanfaatkan Prosedur Dalam Proses untuk Desain FSM VHDL yang Lebih Bersih
  10. Menguasai Fungsi VHDL: Panduan Praktis untuk Desain Efisien