Pipeline dữ liệu và valid
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 18 trên 38.
Các đường ống phân chia công việc giữa các thanh ghi. Cờ hợp lệ đi kèm từng mục dữ liệu để giai đoạn phía sau có thể phân biệt một mẫu với một bong bóng. Với phép gán không chặn, ở cùng một cạnh xung, giai đoạn sau đọc giá trị trước đó của giai đoạn trước. Tín hiệu đặt lại cần vô hiệu hóa công việc đang được xử lý.
Đ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.
always @(posedge clk) begin
stage <= data;
stage_valid <= in_valid;
result <= stage;
out_valid <= stage_valid;
endDữ liệu và tín hiệu xác nhận tính hợp lệ của dữ liệu đi qua cùng số thanh ghi.
Căn chỉnh dữ liệu và tín hiệu hợp lệ xuyên suốt mọi giai đoạn của pipeline, đồng thời xóa trạng thái hợp lệ khi đặt lại.
Thử thách
Trung bìnhTriển khai một đường ống gồm hai tầng thanh ghi. Ở mỗi cạnh không có reset, tầng một chốt a và in_valid. Tầng hai sử dụng các giá trị trước đó của tầng một: out_valid nhận giá trị hợp lệ cũ, còn y nhận dữ liệu cũ cộng một theo modulo 256 nếu dữ liệu hợp lệ, nếu không thì nhận giá trị không. Tín hiệu rst đồng bộ xóa cả hai tầng và các đầu ra. Các cột đầu ra: y, out_valid. Tất cả tín hiệu điều khiển và dữ liệu đều ổn định trước mỗi cạnh lên của xung nhịp; kết quả được quan sát sau đó.
Hoàn thành design.v và giữ nguyên tên mô-đun cùng các cổng. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in ra các đầu ra sau khi chúng ổn định. Tệp này chọn một kịch bản bằng đối số cho 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 clk, input rst, input in_valid, input [7:0] a, output reg [7:0] y, output reg out_valid);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
initial y = 0;
initial out_valid = 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ầu4RTL tuần tự có điều khiển
Ưu tiên reset và enableBộ đếm bão hòaPipeline dữ liệu và validPhát hiện cạnh tín hiệu đã lấy mẫuÔn tập: bộ đếm sự kiệnTự luyện tập: Trình biên dịch Verilog online