16 / 63 · Khái niệm
Bộ cộng và cấu trúc truyền carry
Suy ra biểu thức bộ cộng đầy đủ; phân tích chức năng, độ rộng và độ trễ ripple carry cùng nhau.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Biểu diễn tổng một hàng bằng hai bit
Tổng nằm trong 0~3, nên cần bit tổng và carry sang hàng sau . Số lẻ đầu vào bằng 1 làm bit tổng bằng 1; ít nhất hai đầu vào bằng 1 làm carry bằng 1.
Định nghĩa generate và propagate , ta có ; ở đây là OR. Bộ bán cộng là trường hợp không có đầu vào carry, với tổng là XOR và carry là AND.
Đổi ba đầu vào, kiểm tra a+b+cin = sum+2×cout luôn đúng. carry trở thành đầu vào hàng tiếp theo, không có cùng trọng số với sum.
a + b + cin = sum + 2 × cout
Carry đi qua bao xa
Xét phép cộng bốn bit 1111 + 0001. Carry được tạo ở bit 0 và truyền qua ba hàng còn lại. Tổng lưu là 0000, carry cao nhất là 1. Trong ripple-carry, carry hàng thấp có thể làm tính toán hàng cao phải chờ.
Khai triển như vậy cho thấy khả năng tính carry song song. Bộ cộng nhanh thực kết hợp propagate/generate theo nhóm, nhưng phải đánh đổi diện tích và độ trễ gồm fan-in, dây nối và thư viện cell. Dấu + trong RTL không bắt buộc được cài bằng một mạch ripple-carry cụ thể.
Giữ lại độ rộng tổng trong thiết kế
logic [3:0] a, b, sum;
logic cin, cout;
logic [4:0] wide_sum;
assign wide_sum = {1'b0, a} + {1'b0, b} + {4'b0000, cin};
assign sum = wide_sum[3:0];
assign cout = wide_sum[4];Giá trị lớn nhất là , nên năm bit đủ. Xác định trước chỉ cần tổng thấp, cần truyền carry sang tầng sau hay cần bão hòa. Công cụ thực hành dưới đây kiểm tra bảng chân trịBảng chân trị Bảng liệt kê đủ mọi tổ hợp đầu vào và đầu ra tương ứng. Sự thay đổi theo thời gian được kiểm tra riêng bằng dạng sóng. Tìm hiểu thêm một hàng bộ cộng đầy đủ, không đo độ trễ kết quả tổng hợp thực.
Thay đổi đầu vào
Tự thử
Với unsigned bốn bit, , , , tìm tổng đầy đủ, tổng bốn bit và carry. Nếu diễn giải cùng mạch là cộng signed, có thể chỉ dùng carry để quyết định overflow không?
Đọc giải thích
Tổng đầy đủ là 16, chuỗi 10000, nên sum=0000, carry=1. Diễn giải signed thì 1001 là -7, do đó nằm trong phạm vi. Carry và overflow có dấu là hai điều kiện khác nhau.