để xây dựng testbench, ta sử dụng file mt48lc16m16a2.v, là file mô tả hành vi của một chip sdram dung lượng 16MB, data bus rộng 16 bit. File này ựược cung cấp miễn phắ trên trang web của hãng micron (www.micron.com).
Clock ựưa ựến controller sẽ ngược pha với clock ựưa vào SDRAM. Cách làm này lam tăng tốc ựộ hệ thống. Giả sử tại cạnh lên của 1 chu kì clock, controller ựưa ra lệnh cho SDRAM thì SDRAM sẽ nhận ựược lệnh ngay trong chu kì clock ựó.
Trong file testbench, chúng ta sẽ test các chức năng ghi ựọc, hoạt ựộng của controller khi ựưa liên tiếp các lệnh vào (pipeline).
Sau ựây là các dạng sóng tắn hiệu mô phỏng, sử dụng phần mềm Model Sim
II.1 SDRAM controller thực thi các lệnh ghi liên tiếp:
Trong hình trên là mô phỏng của 11 chu kì lệnh WRITE liên tiếp vào các ựịa chỉ từ 0 ựến 11.
Sau khi lệnh ựầu tiên ựược ghi vào FIFO, controller sẽ xuất lệnh ACTIVE cho SDRAM, sau ựó sẽ chờ 3 chu kì clock ựể hết thời gian tRCD. Trong thời gian ựó, FIFO vẫn nhận các lệnh gởi vào, nhưng vì chưa ựược lấy ra xử lý nên ựến lệnh thứ 5 thì FIFO ựầy, tắn hiệu sys_wait_request tắch cực.
Khi hết thời gian tRCD, mỗi chu kì clock sẽ có một lệnh ghi vào FIFO và một lệnh ựược xử lý. Trên hình vẽ là 9 chu kì ghi vào SDRAM liên tiếp nhau, mỗi clock là một lệnh.
II.2 SDRAM controller thực thi các lệnh ựọc liên tiếp:
Hình 37: SDRAM controller 16 bit thực thi các lệnh ựọc liên tiếp Trong hình trên là mô phỏng của 11 chu kì lệnh READ liên tiếp vào các ựịa chỉ từ 0 ựến 11. Các ựịa chỉ này ựã ựược ghi dữ liệu vào như mô phỏng ở hình 34.
Sau khi lệnh ựầu tiên ựược ghi vào FIFO, controller sẽ xuất lệnh ACTIVE cho SDRAM, sau ựó sẽ chờ 3 chu kì clock ựể hết thời gian tRCD. Trong thời gian ựó, FIFO vẫn nhận các lệnh gởi vào, nhưng vì chưa ựược lấy ra xử lý nên ựến lệnh thứ 5 thì FIFO ựầy, tắn hiệu sys_wait_request tắch cực.
Khi hết thời gian tRCD, mỗi chu kì clock sẽ có một lệnh ựược xử lý. Sau lệnh READ ựầu tiên 3 chu kì (CAS latency bằng 3), dữ liệu sẽ lần lượt ựược xuất ra sys_data_out.