29 / 63 · Khái niệm
Số trạng thái, độ rộng bộ đếm và mã không dùng
Tính số bit lưu từ phạm vi đếm và định nghĩa phục hồi trạng thái sai.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Mạch đếm cũng là máy trạng thái
Bộ đếm lặp 0~9 cần mười trạng thái. Độ rộng lưu tối thiểu là bit. Nhưng 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 bốn bit có 16 mẫu, nên chỉ chọn đúng độ rộng chưa hoàn thành chức năng modulo-10.
M là số trạng thái, không phải giá trị lớn nhất. Đếm 0 đến M-1 khác 0 đến M. Nếu hỗ trợ M=1, giới hạn độ rộng ít nhất một bit và xử lý để luôn giữ 0.
Bộ lưu bốn bit có 16 mã, nhưng modulo-10 chỉ dùng mười mã bình thường. Sau khi chọn độ rộng, phải thêm phép so sánh và chính sách phục hồi.
- Mười trạng thái: count bình thường là 0~9
- Lưu bằng bốn bit: 16 mã; 10~15 là mã dư
- Trạng thái kế tiếp: Về 0 nếu en=1 và count≥9
Trạng thái ngoài phạm vi cũng thuộc thiết kế
Nếu bộ đếm modulo-10 bốn bit vì lý do nào đó thành 12, bước sau phải làm gì? Có thể chứng minh điều kiện khởi tạo/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. Tìm hiểu thêm bảo đảm “không xảy ra”, hoặc đặt chính sách về 0 khi từ 9 trở lên. Phục hồi này không bảo đảm chống mọi hỏng hóc phần cứng.
always_ff @(posedge clk) begin
if (rst) count <= 4'd0;
else if (en) begin
if (count >= 4'd9) count <= 4'd0;
else count <= count + 4'd1;
end
endVí dụ phục hồi cả giá trị sai 10~15 tại cạnh en=1. enable=0 thì vẫn giữ giá trị sai; nếu đặc tả yêu cầu phục hồi ngay, phải đổi ưu tiên điều kiện.
Rà soát độ rộng khác rà soát chức năng
Mười bit đủ cho 0~999 nhưng tăng tự do sẽ tới 1023. Cần mạch so sánh và chọn để quay về 0 tại trạng thái lớn nhất theo đặc tả. Khác biệt này có thể gây truy cập sai hoặc sai độ dài trong bộ đếm địa chỉ, số lần lặp và độ dài gói.
Tự thử
Tính độ rộng tối thiểu và số mã không dùng của bộ đếm lặp 0~99. Nếu chỉ +1 với độ rộng đó, hành vi khác thế nào?
Đọc giải thích
Có 100 trạng thái nên cần bảy bit; số mã không dùng là . Chỉ tăng không quay ở 99 mà tới 127, nên thành modulo-128 thay vì modulo-100.