Direktif Timescale
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 70 dari 90.
Direktif timescale menetapkan satuan waktu dan presisi waktu untuk simulasi. Direktif ini memberi tahu simulator cara menafsirkan nilai penundaan seperti #10.
Pada pelajaran sebelumnya, kita menggunakan jeda seperti #10 tanpa menyebutkan arti "10". Apakah itu 10 nanodetik? 10 pikodetik? Direktif timescale menjawab pertanyaan ini.
Sintaks:
`timescale time_unit / time_precision| Bagian | Makna | Contoh |
|---|---|---|
time_unit | Satuan dasar untuk penundaan | 1ns |
time_precision | Tingkat ketelitian simulasi | 1ps |
Backtick ` sebelum timescale berarti itu adalah direktif compiler.
Contoh
`timescale 1ns / 1pstime_unit = 1ns→#10berarti 10 nanodetiktime_precision = 1ps→ Simulasi dibulatkan ke pikodetik terdekat
Nilai Skala Waktu Umum
| Satuan Waktu | Presisi | Kegunaan |
|---|---|---|
1ns / 1ns | Nanodetik | Simulasi sederhana |
1ns / 1ps | Pikodetik | Lebih presisi |
1ps / 1ps | Pikodetik | Desain berkecepatan tinggi |
1us / 1ns | Mikrodetik | Simulasi lambat |
Pengaruhnya terhadap Penundaan
`timescale 1ns / 1ps
initial begin
#10 a = 1; // Menunggu 10 nanodetik
endTanpa timescale, beberapa simulator mengasumsikan nilai bawaan (sering kali 1ns). Sebaiknya selalu tentukan nilainya.
Aturan Penting
| Aturan | Penjelasan |
|---|---|
| Harus berada di luar module | Diletakkan sebelum definisi module apa pun |
| Simbol backtick | `timescale, bukan 'timescale |
| Satuan waktu ≥ presisi waktu | 1ns / 1ps boleh, 1ps / 1ns tidak boleh |
| Memengaruhi semua delay dalam file | Delay umum, delay gerbang, delay assignment |
Tantangan
Yang harus dilakukan:
Tambahkan direktif timescale yang hilang agar jedanya merepresentasikan 10ns, 20ns, dan 30ns.
Coba sendiri
// TODO: Tambahkan direktif timescale (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$finish;
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 ALU13Timing dan Penundaan
Apa Itu PenundaanPenundaan GerbangPenundaan PenugasanDirektif TimescalePembangkitan ClockRangkuman: Kontrol Timing5Operator 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