Các cơ chế ghi đọc SDRAM: SDRAM Controller, DualPort SDRAM

Một phần của tài liệu 212861 (Trang 55 - 60)

L ời cảm ơn

3.2.3.Các cơ chế ghi đọc SDRAM: SDRAM Controller, DualPort SDRAM

3.2.3. Các cơ chế ghi đọc SDRAM: SDRAM Controller, Dual Port SDRAMSDRAM Controller SDRAM Controller

Đặc điểm: XSA Board synchronous DRAM (SDRAM) controller core chấp nhận các yêu cầu đọc và ghi đơn giản từ phía host-side và tạo ra các dạng sóng (timed waveform) cần thiết để thực hiện các hoạt động read, write với SDRAM. Với chế độ đọc, ghi kiểu pipeline thì với một hàng của SDRAM có thể không cần phải chốt sau mỗi chu kì đọc, vì thế tốc độ đọc và ghi có thể

gấp 10 lần so với cách đọc không pipeline từng pixel trong SDRAM ở các địa chỉ không liền nhau. Bộ điều khiển cũng đảm nhiệm thực hiện refresh SDRAMđể giữ cho các dữ liệu không bịsai, và sẽ đặt SDRAM vào chế độ tự làm tươi (self-refresh) nên dư liệu vẫn được giữ lại thậm chí khi bộ điều khiển không hoạt động.

Trong đồ án này, chúng em dùng read, write với chế độ pipeline.

Hình 3.5 : Pipelined Read Operation timing waveforms Pipeline Read Operation

Trên đây là dạng sóng cho hoạt động đọc kiểu pipeline. Hoạt động đọc ở

chế độ pipeline được thực hiện bằng cách giữ cho tín hiệu rd lên cao trong ghi liên tục cung cấp địa chỉ cần đọc mỗi khi mà tín hiệu earlyOpBegun hoặc

opBegun lên cao báo hiệu hoạt động đọc trước đã bắt đầu. Ví dụ trên mô tả 3 hoạt động đọc truy nhập các vùng nhớ SDRAM tại bank và hàng của

SDRAM đang được active. Nếu việc đọc thực hiện ở bank hoặc hàng khác của SDRAM thì SDRAM Controller sẽ hoàn thành quá trình đọc hiện tại và active bank và row mới trước khi tín hiệu earlyOpBegunopBegunlên cao.

Hình 3.6 : Pipelined Write Operation timing waveforms

Hoạt động ghi ở chế độ pipeline được thực hiện bằng cách giữ cho tín hiệu wrlên cao trong khi đó thì liên tục cung cấp địa chỉmới mỗi khi tín hiệu

earlyOpBegunhay opBegunlên cao báo hiệu rằng quá trình ghi trước đó đã bắt

đầu. Ví dụ trên đây thực hiện 3 hoạt động ghi vào bộ nhớ trong bank và row hiện tại của SDRAM. Nếu ghi vào địa chỉ ở bank hoặc row khác thì SDRAM Controller sẽ hoàn thành việc ghi hiện tại và sau đó kích hoạt bank và row mới trước khi tín hiệu earlyOpBegunopBegun lên cao.

Hình 3.7 : Ghép nối với SDRAM Controller Dualport Module for the SDRAM Controller

Chức năng: Dualport module đính vào phía các cổng bên host-side của bộ điều khiển XESS SDRAM Controller và chia thành hai phần host-side riêng biệt, mỗi phần có thể hoạt động như các cổng của host-side ban đầu do đó ứng dụng có thể gồm nhiều thành phần truy nhập SDRAM nhưng chỉdùng 1 bộ điều khiển SDRAM Controller. Bất kì ứng dụng nào thực hiện việc ghi đọc bộ nhớ SDRAM đều độc lập với hoạt động đó ở các post khác. Băng thông

tổng cộng của SDRAM có thể được phân phối giữa 2 port để cho khớp với data rate của các ứng dụng dùng dual port. Dualport module có thể xây dựng kiểu tầng đểxây dựng giao diện SDRAM với 3 hay nhiều cổng độc lập.

Hình 3.8 : Ghép nối dualport với SDRAM Controller

Hình 3.9 : Xây dựng 4 ports SDRAM interface

Phân phối băng thông SDRAM cho các port của một dualport được thực hiện qua tham sốPORT_TIME_SLOTS, là một vector 16 bit với mỗi bit tương

thể xảy ra. Thiết lập bit bằng 0 để cấu hình time slot cho port0, và thiết lập bằng 1 đểdành time slot cho port 1.Sau đây là một sốcách thiết lập:

PORT_TIME_SLOTS => “1111000011110000” áp dụng 8 time slot cho mỗi port, với mỗi port có 4 lần truy cập liền nhau vào SDRAM trước khi dual port chuyển điều khiển cho port kia. Vì thế, mõi port được phân phối một nửa băng thông của dual port.

Tham số PORT_TIME_SLOTS chỉ có tác động tới hoạt động của dualport module khi các ứng dụng trên cả2 port cùng cốgắng truy nhập vào SDRAM.

Ứng dụng ở một port sẽ truy nhập trực tiếp vào SDRAM nếu không có hoạt

động ghi và đọc đang tiến hành ở port kia. Vì thế PORT_TIME_SLOTS = “1111111111111111” sẽ cho phép port 0 truy nhập SDRAM chỉ khi port 1 không truy cập, nhưng không ngăn hoàn toàn port 0 trong việc truy cập SDRAM.

PORT_TIME_SLOTS = “1111111100000000” cấu hình một nửa băng thông

cho mỗi port tuy nhiên có thể block truy cập của một port lên tới 8 time slot trong khi port kia được ưu tiên hơn. Để giảm trễ chỉ cần gàn PORT_TIME_SLOTS = “0101010101010101” tuy nhiên sẽ lãng phí thời gian bởi vì SDRAM Controller phải xóa pipeline trước mỗi quá trình chuyển port. Vì thế, nhóm các bit liền nhau cùng một giá trịlà giải pháp tốt nhất.

Một phần của tài liệu 212861 (Trang 55 - 60)