30 / 63 · Konsep
Keadaan berikutnya pencacah dan prioritas reset
Satukan kenaikan, penahanan, reset, dan perputaran, lalu hitung hasil tiap tepi.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Definisikan fungsi melalui keadaan berikutnya dahulu
Pencacah bebas bit dengan reset sinkron dan enable adalah:
ResetReset Kontrol yang mengembalikan keadaan ke nilai awal tertentu. Sifat sinkron/asinkron dan prioritas terhadap kontrol lain harus ditetapkan. paling diprioritaskan; enable=0 mempertahankan keadaan. Pada visualisasi di bawah, ubah enable untuk membandingkan kenaikan dan penahanan nilai.
Dari q awal=11, memilih reset=1 hanya mengubah keadaan berikutnya menjadi 00. Majukan clock untuk melihat kapan nilai tersimpan berubah. Lepas reset dan ikuti 00→01→10→11→00; saat enable=0, pastikan tepi clock terus terjadi tetapi q bertahan.
Reset sinkron lebih diprioritaskan daripada enable. Jika enable=0, pertahankan nilai tersimpan. q=11; q_next = (q + 1) mod 4
Prediksi setiap tepi
Dengan keadaan awal 3, reset=1 pada tepi pertama lalu 0, hasil setelah tepi adalah 0,1,2,3,0. Walaupun reset diaktifkan di antara tepi, registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya sinkron tidak langsung menjadi 0 sebelum tepi naikTepi naik Saat clock berubah 0 ke 1, berbeda dari tingkat yang mencakup seluruh interval CLK=1. Selengkapnya.
| Tepi | reset sebelum tepi | C lama | C baru |
|---|---|---|---|
| 1 | 1 | 3 | 0 |
| 2 | 0 | 0 | 1 |
| 3 | 0 | 1 | 2 |
| 4 | 0 | 2 | 3 |
| 5 | 0 | 3 | 0 |
Setiap kolom gelombang mengamati satu tepi. Masukan menunjukkan nilai sebelum tepi; keadaan dengan akhiran after menunjukkan nilai sesudah pembaruan. Penjajaran menunjukkan urutan sampel, bukan tundaan propagasiTundaan propagasi Waktu sejak masukan berubah hingga keluaran stabil pada nilai benar. Kesetaraan logika berbeda dari karakteristik waktu. Selengkapnya fisik. Dari 3, reset pertama mengalahkan kenaikan; tepi terakhir berputar dari 3 ke 0.
Lihat data gelombang
| Sinyal | Gelombang | Nilai bus |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| count sebelum | 23452 | 11 → 00 → 01 → 10 → 11 |
| count sesudah | 23452 | 00 → 01 → 10 → 11 → 00 |
Jangan mencampur jenis reset
if(rst) dalam always_ff @(posedge clk) adalah reset sinkron, berbeda dari reset yang tepinya ditambahkan pada daftar kejadian. Pelepasan reset asinkron memiliki syarat recovery/removal; jangan menggantinya hanya agar lebih cepat menjadi 0.
Untuk pulsa berkala, tetapkan keadaan pemicunya: apakah tinggi selama count maksimum, atau satu siklus setelah tepi kembali ke 0? Persamaan dan waktu pengamatannya berbeda.
Coba sendiri
Pencacah tiga bit bernilai 7. Tepi pertama rst=0,en=0, berikutnya rst=0,en=1. Berapa masing-masing keadaannya?
Baca penjelasan
Tepi pertama mempertahankan 7; tepi kedua berputar dalam tiga bit menjadi 0. Menyimpan nilai 8 membutuhkan lebar lebih besar atau kebijakan saturasi/kesalahan tersendiri.