1 / 37 · Khái niệm
RTL: mô tả các mạch hoạt động đồng thời
Tách thứ tự phần mềm khỏi cấu trúc phần cứng song song và xác định trạng thái, trạng thái tiếp theo, thời điểm quan sát.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Mạch tiếp tục hoạt động
RTL mô tả giá trị đi giữa các thanh ghi qua logic tổ hợp. Mô-đun là ranh giới phần cứng; hai thể hiện tạo hai cấu trúc tương tác, không phải hai lời gọi tuần tự. Mạch luôn hoạt động khi đầu vào thay đổi. Chuyển cổng, lưu trữ và máy trạng thái của Mạch logic số thành giao diện SystemVerilog rõ ràng và kiểm tra lặp lại được. Giải thích độ rộng, nguồn điều khiển, tính hợp lệ và reset của từng tín hiệu trước khi triển khai.
Tách trạng thái hiện tại và tiếp theo
Mô-đun hoàn chỉnh tích lũy sample bốn bit không dấu vào thanh ghi tám bit. Reset đồng bộ tích cực mức cao có ưu tiên hơn enable. Cạnh cho phép cộng sample; cạnh khác giữ sum. Phép tính quay vòng modulo 256.
module accumulator (
input logic clk, rst, enable,
input logic [3:0] sample,
output logic [7:0] sum
);
logic [7:0] next_sum;
assign next_sum = sum + {4'b0000, sample};
always_ff @(posedge clk) begin
if (rst) sum <= 8'b0;
else if (enable) sum <= next_sum;
end
endmodulenext_sum là kết quả tổ hợp, có thể đổi theo sum hoặc sample dù không có cạnh clock. sum lưu trạng thái và đổi tại cạnh lên. Cùng khai báo logic không làm chúng có cùng vai trò phần cứng. Không có else cuối trong khối theo clock nghĩa là giữ thanh ghi; thiếu phép gán tổ hợp có thể cần latch. Trước hết xác định loại khối.
Tính bảng cạnh trước mô phỏng
Mỗi hàng dùng trạng thái và đầu vào ngay trước cạnh; quan sát sau cập nhật không chặn.
| Cạnh | rst | enable | sample | sum trước | sum sau |
|---|---|---|---|---|---|
| E0 | 1 | 1 | 9 | Chưa biết | 0 |
| E1 | 0 | 1 | 3 | 0 | 3 |
| E2 | 0 | 0 | 7 | 3 | 3 |
| E3 | 0 | 1 | 5 | 3 | 8 |
| E4 | 1 | 1 | 15 | 8 | 0 |
Ở E4, reset thắng và không cộng. sum cũ=250, sample nhận=10 cho kết quả tám bit là 4. Giữ bit thứ chín sẽ đổi giao diện và hợp đồng số học.
Thứ tự cục bộ và đồng thời về cấu trúc
Phép gán chặn = trong thủ tục tổ hợp theo thứ tự thủ tục. Thủ tục riêng và phép gán liên tục là tiến trình đồng thời. Phép gán không chặn <= tính vế phải theo giá trị có khi thực thi, rồi lên lịch cập nhật. Thứ tự mã không thay thế đặc tả độ trễ. Không dùng #10 trong bộ tích lũy để đợi một clock: delay và bộ tạo clock thuộc testbench mô phỏng tổng quát. Chuyển trạng thái tổng hợp được dùng cạnh và trạng thái, không dùng sleep.
Thực hành: đổi một yêu cầu
Thay quay vòng bằng bão hòa tại 255. Mở rộng toán hạng rõ ràng và cộng trong chín bit. Nếu bit 8 là 1, lưu 255; nếu không, lưu 7:0. Giữ ưu tiên reset/enable. Kiểm tra 0+0,250+5,250+6, cạnh bị tắt và reset/enable đồng thời: kỳ vọng 0,255,255, giữ trạng thái,0. Chỉ 250+5 không phát hiện mất carry; phải có 250+6. Lưu mã, bảng cạnh và kỳ vọng. Đánh dấu bài học xong ghi nhận việc học, không phải chạy mô phỏng.