Chuyển tiếp dữ liệu khi đọc và ghi
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 24 trên 38.
Giao diện bộ nhớ phải xác định hành vi đọc/ghi tại cùng một địa chỉ. Cơ chế chuyển tiếp chọn rõ ràng dữ liệu ghi đầu vào khi xảy ra xung đột, tạo ra hành vi dùng dữ liệu mới. Nếu không có cơ chế bỏ qua này, mẫu đọc không chặn trước đó sẽ lưu lại dữ liệu cũ. Các chế độ bộ nhớ thiết bị khác nhau, vì vậy ngữ nghĩa mô phỏng tự nó không đảm bảo ánh xạ đến một phần tử nguyên thủy cụ thể.
Đ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.
if(re) begin
if(we && waddr==raddr) q <= data;
else q <= mem[raddr];
endMạch chuyển tiếp chỉ chọn từ đầu vào khi địa chỉ thực sự bị trùng.
Xác định rõ hành vi va chạm và kiểm tra hành vi đó với chế độ bộ nhớ phần cứng đã chọn.
Thử thách
Trung bìnhTriển khai bộ nhớ bốn từ với thao tác đọc đồng bộ và chuyển tiếp dữ liệu mới. Các quy tắc ghi, đặt lại và bật đọc giống bài học trước. Khi thao tác đọc được bật đồng thời với thao tác ghi được bật vào cùng địa chỉ, q nhận dữ liệu đầu vào thay vì từ cũ. Với các thao tác đọc khác, q nhận mem[raddr]. Cột đầu ra: q. 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; các 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 đầu ra sau khi chúng ổn định. Tệp này chọn một tình huống 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 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ột hàng giá trị thập phân cho mỗi lần quan sát, các giá trị 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 we, input re, input [1:0] waddr, input [1:0] raddr, input [7:0] data, output reg [7:0] q);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
initial q = 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ấu5Bộ nhớ và bảng tra cứu
Bảng ROM tổ hợpLưu trữ bằng mảng thanh ghiCổng đọc có thanh ghiChuyển tiếp dữ liệu khi đọc và ghiÔn tập: Ngân hàng có hai cổng đọcTự luyện tập: Trình biên dịch Verilog online