Daftar Sensitivitas
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 48 dari 90.
Daftar sensitivitas memberi tahu blok always kapan harus dijalankan. Daftar ini ditulis di dalam tanda kurung setelah simbol @.
Daftar sensitivitas adalah kumpulan sinyal atau peristiwa yang memicu blok always. Saat sinyal apa pun dalam daftar berubah, blok tersebut dijalankan.
Sintaks:
always @(sensitivity_list) begin
// Kode dijalankan saat sinyal dalam list berubah
endJenis Daftar Sensitivitas
| Jenis | Sintaks | Kapan Blok Dijalankan |
|---|---|---|
| Semua sinyal (kombinasional) | always @(*) | Saat ada sinyal di dalamnya yang berubah |
| Sinyal tertentu | always @(a or b) | Saat a atau b berubah |
| Pemicu tepi (sekuensial) | always @(posedge clk) | Pada tepi naik clock |
| Beberapa tepi | always @(posedge clk or posedge reset) | Pada tepi clock atau tepi reset |
Opsi 1: Semua Sinyal (*)
Paling aman dan paling umum untuk logika kombinasi.
always @(*) begin
out = a & b; // Dijalankan saat a atau b berubah
end* secara otomatis menyertakan semua sinyal yang dibaca di dalam blok.
Opsi 2: Sinyal Spesifik
always @(a or b) begin
out = a & b; // Dijalankan saat a atau b berubah
endJika kamu lupa menambahkan sinyal, output tidak diperbarui dalam simulasi saat sinyal tersebut berubah, sehingga simulasi tidak lagi sesuai dengan perangkat keras hasil sintesis.
Opsi 3: Pemicu Tepi (posedge)
always @(posedge clk) begin
q <= d; // Berjalan saat tepi naik clock
endGunakan posedge untuk tepi naik, negedge untuk tepi turun.
Opsi 4: Beberapa Tepi
always @(posedge clk or posedge reset) begin
if (reset)
q <= 0;
else
q <= d;
endBerjalan pada tepi clock atau tepi reset.
Kesalahan Umum
| Kesalahan | Mengapa Salah |
|---|---|
always @(a or b or c) tetapi menggunakan d | d tidak dicantumkan → output menjadi usang dalam simulasi (ketidakcocokan sim/synth) |
always @(posedge clk or reset) | posedge untuk reset tidak dicantumkan |
always @(clk) | Seharusnya menggunakan posedge clk untuk flip-flop |
Tantangan
Yang harus dilakukan:
- Tambahkan daftar sensitivitas yang benar agar flip-flop ini berfungsi. Blok ini harus dijalankan pada tepi naik
clk.
Coba sendiri
module flipflop (
input clk,
input d,
output reg q
);
always @(______) begin
q <= d;
end
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online