18 / 63 · Khái niệm
Bộ so sánh và đặc tả giá trị biên
Phân biệt so sánh unsigned, signed của cùng chuỗi bit và kiểm tra biên.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Bit khác nhau cao nhất quyết định lớn nhỏ
So sánh hai vector unsignedunsigned Quy tắc diễn giải chuỗi bit là số nguyên không âm. Phạm vi n bit là 0 đến 2^n−1 và có thể khác diễn giải signed của cùng chuỗi bit. Tìm hiểu thêm từ MSBMSB Bit có trọng số lớn nhất. Số chỉ mục tùy hướng khai báo vector, nên không luôn là số chỉ mục lớn nhất. Tìm hiểu thêm để tìm bit khác đầu tiên; bên có 1 tại đó lớn hơn. Đặt , điều kiện lớn hơn bốn bit là:
bên trái là giá trị Boolean của phép so sánh. Chỉ khi các bit cao đều bằng nhau thì bit thấp mới ảnh hưởng kết quả. So sánh bằng là AND mọi .
So sánh signed diễn giải dấu trước
4'b1111 và 4'b0001 là 15 và 1 theo unsigned, nhưng -1 và 1 theo signed. Khác dấu thì số âm nhỏ hơn. Khác biệt giữa logic [3:0] và logic signed [3:0] nằm ở cách diễn giải khi tính, không ở dung lượng lưu.
logic [3:0] a, b;
logic unsigned_lt, signed_lt;
assign unsigned_lt = a < b;
assign signed_lt = $signed(a) < $signed(b);Đoạn mã này dùng hai toán hạng cùng độ rộng. Nếu khác độ rộng, phải quyết định mở rộng tới đâu trước khi chỉ ép kiểu đơn giản.
Cùng hai chuỗi bit nhưng quy ước dấu khác có thể đảo thứ tự lớn nhỏ. Không áp dụng nguyên quy tắc unsigned từ bit cao cho giá trị signed.
- 1111 vs 0001: Cùng đầu vào bốn bit
- Unsigned: 15 lớn hơn 1
- Signed: −1 nhỏ hơn 1
Cố định điều kiện biên bằng lời rõ ràng
Bộ đệm chứa 16 mục thì count==16 là full, count<16 còn chỗ. Nếu count chỉ bốn bit, không biểu diễn được 16 và điều kiện full tự nó thất bại. Vì thế cần rà soát cả chức năng so sánh lẫn phạm vi biểu diễn đối tượng.
Với ngưỡng , ưu tiên kiểm tra , nhưng xử lý riêng giá trị ngoài phạm vi. Cố ý tạo kiểm tra phân biệt < và <=. Chỉ so sánh giá trị sau unsigned wraparound không thể phục hồi carry đã mất.
Tự thử
Count FIFO biểu diễn mức chiếm 0~16 cần bao nhiêu bit? Chỉ biểu thức so sánh có quyết định được cho phép pop và push đồng thời khi full không?
Đọc giải thích
Cần biểu diễn 17 giá trị nên cần năm bit. Khi đồng thời pop, có cho push vào chỗ vừa trống không là chính sách giao diện. Chỉ dùng count < 16 có thể chặn trao đổi đồng thời lúc full; muốn cho phép phải xét điều kiện pop thực sự được chấp nhận.