3 / 37 · Khái niệm
Mô-đun, cổng và thể hiện: kết nối như hợp đồng
Ghép mô-đun tổ hợp bằng kết nối theo tên, kiểm tra nguồn điều khiển duy nhất và phân cấp.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Ranh giới mô-đun không phải ranh giới clock
Mô-đun nhóm cổng và logic. Tạo thể hiện không tự thêm thanh ghi hay chu kỳ. Các mô-đun tổ hợp nối tiếp vẫn là đường tổ hợp, cộng dồn độ trễ vật lý. Thanh ghi rõ ràng tạo ranh giới lưu trữ. Ghi hướng, độ rộng, dấu, nguồn điều khiển và thời điểm hợp lệ; tên giúp không lệ thuộc thứ tự cổng.
module select_word #(parameter integer W = 8) (
input logic [W-1:0] a, b,
input logic select_b,
output logic [W-1:0] y
);
assign y = select_b ? b : a;
endmodule
module choose_and_increment (
input logic [7:0] a, b,
input logic select_b,
output logic [8:0] result
);
logic [7:0] chosen;
select_word #(.W(8)) select_u (
.a(a), .b(b), .select_b(select_b), .y(chosen)
);
assign result = {1'b0, chosen} + 9'd1;
endmoduleselect_word là kiểu mô-đun, select_u là tên thể hiện. .a(a) nối cổng a của con với tín hiệu a của cha. .W(8) là cấu hình elaboration, không phải đầu vào động.
Kiểm tra hai đầu
chosen chỉ do y của con điều khiển và được cha đọc. Không gán nó từ tiến trình khác; logic không cho phép xung đột nguồn điều khiển. result có chín bit để lưu 255+1=256 và mở rộng chosen trước cộng. a=255, b=9, select_b=0 cho 256; select_b=1 cho 10. Tám bit sẽ mất carry trong trường hợp đầu.
Phân cấp, tệp và top
Định nghĩa có thể cùng hoặc khác tệp, nhưng bộ biên dịch cần cả hai. Top là choose_and_increment; chọn select_word sẽ đổi ranh giới kiểm tra. Thiếu tệp con là vấn đề danh sách mã nguồn, không chứng minh logic sai. Kết nối theo vị trí có thể đổi khi sửa cổng. Đầu vào chưa nối không phải hằng zero có chủ đích: nối hằng hoặc ghi rõ đầu ra không dùng và xem chẩn đoán. Theo dõi phụ thuộc để tránh phản hồi tổ hợp không có lưu trữ; mô-đun không ngắt vòng đó.
Thực hành: kiểm tra phép ghép độc lập
Với (a, b, select_b)=(0,255,0),(0,255,1),(255,0,0),(255,0,1), kỳ vọng 1,256,256,1. Duyệt 256 giá trị được chọn với cả hai select và để đầu vào kia khác để phát hiện chọn đảo. Tham chiếu chọn toàn bộ a hoặc b rồi cộng 1; so sau ổn định. Đọc chosen nội bộ có thể chia sẻ lỗi chọn. Sau đó thêm thanh ghi đầu ra và quy định reset, tính hợp lệ, cạnh đầu vào tương ứng: hợp đồng thời gian đổi dù số học giống nhau.