30 / 63 · Khái niệm
Trạng thái kế tiếp và ưu tiên reset của bộ đếm
Gộp tăng, giữ, reset và quay vòng vào một đặc tả rồi tính từng cạnh.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Định nghĩa chức năng bằng trạng thái kế tiếp trước
Thêm reset đồng bộ và enable cho bộ đếm tăng tự do bit được:
ResetReset Điều khiển đưa trạng thái về giá trị đầu đã định. Phải quy định đồng bộ hay bất đồng bộ và ưu tiên so với các điều khiển khác. ưu tiên cao nhất, enable=0 thì giữ. Trong hình minh họa bên dưới, bạn có thể thay đổi enable để so sánh hoạt động tăng và giữ nguyên.
Từ q ban đầu=11, chọn reset=1 thì chỉ trạng thái kế tiếp đổi thành 00. Nhấn clock tiếp theo để xem lúc giá trị lưu thật đổi. Nhả reset, đi qua 00→01→10→11→00; khi enable=0, kiểm tra chỉ số cạnh tăng nhưng q giữ.
Reset đồng bộ ưu tiên hơn enable. Khi enable=0, giữ giá trị đang lưu. q=11; q_next = (q + 1) mod 4
Lập bảng dự đoán từng cạnh
Bộ đếm hai bit bắt đầu ở 3, reset=1 tại cạnh đầu rồi trở về 0, sẽ có giá trị sau cạnh 0, 1, 2, 3, 0. Dù reset được nâng giữa các clock, thanh ghiThanh ghi Mạch lưu trạng thái nhiều bit. Thanh ghi đồng bộ trong khóa học lưu đầu vào đã quy định tại cạnh clock. Tìm hiểu thêm đồng bộ không về 0 ngay trước cạnh lênCạnh lên Khoảnh khắc clock chuyển 0 sang 1, khác với mức cao chỉ cả khoảng CLK=1. Tìm hiểu thêm.
| Cạnh | reset trước cạnh | C cũ | C cập nhật |
|---|---|---|---|
| 1 | 1 | 3 | 0 |
| 2 | 0 | 0 | 1 |
| 3 | 0 | 1 | 2 |
| 4 | 0 | 2 | 3 |
| 5 | 0 | 3 | 0 |
Mỗi cột ghi lại quan sát tại một cạnh lên. Đầu vào là giá trị ngay trước cạnh, còn trạng thái có tên chứa after là giá trị ngay sau cập nhật. Cách căn cột thể hiện thứ tự lấy mẫu, không mô tả độ trễ lan truyềnĐộ trễ lan truyền Thời gian từ khi đầu vào đổi đến khi đầu ra ổn định ở giá trị đúng. Tương đương logic và đặc tính thời gian là hai vấn đề riêng. Tìm hiểu thêm vật lý. Bắt đầu ở 3, reset ở cạnh đầu được ưu tiên hơn tăng. Cạnh cuối quay 3 về 0.
Xem dữ liệu dạng sóng
| Tín hiệu | Dạng sóng | Giá trị bus |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| count before | 23452 | 11 → 00 → 01 → 10 → 11 |
| count after | 23452 | 00 → 01 → 10 → 11 → 00 |
Không trộn ý nghĩa reset
if(rst) trong always_ff @(posedge clk) là reset đồng bộ, không giống reset bất đồng bộ thêm cạnh reset vào danh sách sự kiện. Nhả reset bất đồng bộ có điều kiện recovery/removal riêng; không đổi loại reset chỉ vì nó đưa trạng thái về 0 nhanh hơn.
Nếu bộ đếm tạo xung định kỳ, phải quy định trạng thái phát xung. Xuất 1 trong suốt trạng thái cực đại hay xuất một chu kỳ sau cạnh quay về 0 sẽ cho biểu thức và điểm quan sát khác nhau.
Tự thử
Bộ đếm ba bit đang là 7. Cạnh đầu rst=0, en=0; cạnh sau rst=0, en=1. Các trạng thái là gì?
Đọc giải thích
Cạnh đầu giữ 7, cạnh sau quay phạm vi ba bit về 0. Muốn giữ được 8 cần rộng hơn hoặc chính sách bão hòa/báo lỗi riêng.