14 / 37 · Konsep
Flip-flop, enable, dan prioritas kontrol
Definisikan penahanan, pemuatan, dan reset melalui keadaan berikutnya serta hindari clock gating tidak disengaja.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Register menyimpan fungsi keadaan berikutnya
Nyatakan nilai sebelum tepi sebagai , masukan yang diterima pada tepi sebagai , dan nilai setelah pembaruan sebagai . RegisterRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya dengan reset lebih utama daripada enable adalah:
Saat enable=0, nilai tersimpan bertahan walaupun D berubah. Menghilangkan jalur penahanan ini dalam RTL sekuensial berbeda dari melupakan penugasan pada logika kombinasional: penahanan merupakan bagian kontrak register.
module enabled_register (
input logic clk, rst, en,
input logic [7:0] d,
output logic [7:0] q
);
always_ff @(posedge clk) begin
if (rst) q <= 8'b0;
else if (en) q <= d;
end
endmoduleReset ini sinkron dan active-high. Jika reset=enable=1 pada tepi, 0 disimpan. Membalik urutannya mengubah fungsi, sehingga prioritas harus tercantum dalam kode dan pengujian, bukan hanya komentar.
Setiap kolom mencatat satu tepi naikTepi naik Saat clock berubah 0 ke 1, berbeda dari tingkat yang mencakup seluruh interval CLK=1. Selengkapnya. Masukan adalah nilai tepat sebelum tepi; keadaan bersufiks after adalah nilai setelah pembaruan. Penjajaran kolom 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. Q awal 0xA5: kolom pertama menahan, kedua menulis, ketiga mempertemukan reset dan enable.
Lihat data gelombang
| Sinyal | Gelombang | Nilai bus |
|---|---|---|
| edge | 2345 | E0 → E1 → E2 → E3 |
| reset | 0.10 | |
| enable | 01.0 | |
| D | 2.34 | 3C → 99 → 77 |
| Q sesudah | 234. | A5 → 3C → 00 |
Enable bukan pemotong clock langsung
Memakai gated_clk = clk & en sembarangan sebagai clock memungkinkan perubahan en menciptakan pulsa pendek atau tepi tak terduga. Pemetaan RTL clock enable ke sel merupakan tanggung jawab alur sintesis dan implementasi. Clock gating untuk menghemat daya memerlukan desain tersendiri dengan sel tepat dan verifikasi timing.
Prioritas tampak ketika reset, load, dan enable bertumpuk. Mengaktifkan masing-masing sendirian tidak cukup. Dengan q=A5, en=0, dan d=3C, q harus bertahan; pada tepi berikutnya dengan en=1, q harus menyimpan 3C.
Coba sendiri
Dari q=0xA5, berikan satu tepi dengan rst=1, en=1, d=0x3C, lalu satu tepi dengan rst=0, en=0. Berapa q setelah masing-masing tepi?
Baca penjelasan
Pada tepi pertama, reset berprioritas menghasilkan 0. Pada tepi berikutnya, enable=0 mempertahankan 0. Jika reset diletakkan di dalam kondisi en, reset saat en=0 dapat terlewat; uji kombinasi ini juga.