Tràn số và bão hòa
Thuộc phần Thiết kế và xác minh RTL trong hành trình Verilog của Coddy. Bài học 9 trên 38.
Tràn số có dấu xảy ra khi kết quả toán học không thể vừa trong độ rộng signed đã chọn. Hiện tượng này khác với bit nhớ của số không dấu. Với phép cộng signed, các đầu vào cùng dấu gây tràn khi dấu của kết quả thay đổi. Phép bão hòa giới hạn kết quả ở một đầu mút có thể biểu diễn thay vì để giá trị quay vòng.
Đoạn trích liên quan; các khai báo và kết nối xung quanh được cung cấp trong thử thách.
assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);Đầu vào khác dấu không thể gây tràn khi cộng signed; đầu vào cùng dấu cần kiểm tra dấu của kết quả.
Kiểm tra tràn số có dấu độc lập với cờ nhớ; mở rộng kiểu dữ liệu trước khi triển khai phép bão hòa.
Thử thách
Trung bìnhCộng a và b có dấu 8 bit. Trả về kết quả có dấu y sau khi tràn và overflow=1 chỉ khi tổng toán học chính xác nằm ngoài khoảng từ -128 đến 127. Các cột đầu ra: y, overflow. Tất cả giá trị kích thích đều là giá trị nhị phân đã biết.
Hoàn thiện design.v và giữ nguyên tên module cùng các cổng của nó. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in đầu ra sau khi chúng ổn định. Nó chọn một kịch bản bằng đối số của trình mô phỏng, chẳng hạn như +CASE=1; không cần đầu vào tiêu chuẩn. Không thêm lệnh in, độ trễ hoặc lệnh kết thúc mô phỏng vào thiết kế. Đầu ra mong đợi là mỗi lần quan sát một hàng gồm các giá trị thập phân, cách nhau bằng một dấu cách và kết thúc bằng ký tự xuống dòng.
Tự làm thử
module dut (input signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
assign y = 0;
assign overflow = 0;
endmoduleBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Thiết kế và xác minh RTL
1RTL tổ hợp đáng tin cậy
Giá trị mặc định ngăn chốtBộ mã hóa ưu tiênKiểm tra one-hotGiải mã case an toànÔn tập: Bộ định tuyến yêu cầu2Độ rộng bit và số học có dấu
Bảo toàn các bit nhớPhép so sánh có dấuDịch phải số họcTràn số và bão hòaÔn tập: hiệu có dấuTự luyện tập: Trình biên dịch Verilog online