Kết nối bộ nhớ biến đổi DDR với FPGA mà không có kinh nghiệm trước có thể ban đầu có vẻ khá đáng sợ. Mặc dù FPGA có tính linh hoạt vốn có, nơi chúng ta có thể giả định rằng chúng ta có thể kết nối I/O của bộ nhớ DDR bên ngoài dường như ở bất cứ đâu với bất kỳ chân nào còn trống, chúng ta vẫn cần phải xem xét nhiều ràng buộc.
Ví dụ, nơi để đặt các nhóm chân bộ nhớ DDR nhất định, điện áp nào để chạy các ngân hàng, những đồng hồ nào chúng ta cần và nơi chúng ta gắn chúng, làm thế nào để tránh vi phạm thời gian, và như thế.
Ngoài việc kết nối ở cấp độ 'sơ đồ', chúng ta cũng cần quan tâm đến giao diện 'thế giới thực' trên bảng mạch in, như nguồn cung cấp và phân phối, bộ lọc, kết thúc, trở kháng và chiều dài đường dẫn, khớp thời gian trễ, và nhiều hơn nữa.
Bài viết này sẽ xem xét việc kết nối bộ nhớ DDR với FPGA từ quan điểm cấp độ hệ thống và sơ đồ. Là một ví dụ thực tế, chúng ta sẽ xem xét thiết kế DSP âm thanh dựa trên AMD/Xilinx Spartan-7 (được gọi là ‘Xerxes’), kết nối với một số bộ nhớ DDR2.
Phần cứng DSP âm thanh Xerxes (FPGA AMD/Xilinx Spartan-7 với bộ nhớ DDR2)
Loại bộ nhớ chúng ta sử dụng phụ thuộc vào thiết kế. Nó phụ thuộc vào yêu cầu về dung lượng bộ nhớ và băng thông bộ nhớ, cũng như khả năng của FPGA mà chúng ta chọn.
Nói chung, hầu hết FPGA hiện đại có thể kết nối với bộ nhớ DDR2 và DDR3 (và các biến thể điện áp thấp, công suất thấp của chúng). Tất nhiên, bộ nhớ DDR4 nhanh hơn và cao hơn cũng có thể, nhưng thường chỉ dành cho FPGA tiên tiến hơn.
Không chỉ tốc độ dữ liệu tối đa là quan trọng, mà còn cả yêu cầu về điện áp và công suất, loại gói, chi phí và khả năng có sẵn cũng quan trọng. Tất cả điều này cần được xem xét ngay từ giai đoạn thiết kế đầu tiên.
So sánh Bộ Nhớ DDR (Nguồn: synopsys.com)
Khi chọn loại bộ nhớ của chúng ta, chúng ta cũng cần chú ý đến cấp độ tốc độ của thiết bị bộ nhớ và xếp hạng tốc độ của bộ điều khiển bộ nhớ trong FPGA. Chúng ta có thể chọn ‘giảm tốc’ bộ nhớ hoặc bộ điều khiển của mình, do đó không chạy ở băng thông đầy đủ, điều này đổi lại cho chúng ta nhiều thời gian rảnh hơn.
Bảng Giảm Tốc Bộ Nhớ Tiêu Biểu (Nguồn: AMD/Xilinx UG933)
Cụ thể cho FPGA AMD/Xilinx, tôi đề xuất tải xuống IDE Vivado của họ và thử nghiệm với IP Memory Interface Generator (MIG) miễn phí.
Điều này sẽ nhanh chóng cho bạn biết những loại bộ nhớ, cấp độ tốc độ, và các bộ phận tương thích mà bạn có thể sử dụng.
Ví dụ về Bộ Phận Bộ Nhớ Tương Thích Vivado MIG
Bạn có thể hỏi, tại sao tôi lại chọn bộ nhớ DDR2 cho bảng Xerxes?
Mặc dù đây là một tiêu chuẩn khá cũ, việc sử dụng bộ nhớ DDR2 có nghĩa là tôi có thể sử dụng bộ điều chỉnh 1.8V đã có sẵn trên bảng (điều này cung cấp năng lượng cho các bộ phận khác của FPGA) và không cần phải thêm vào một bộ điều chỉnh riêng biệt nữa.
Ngoài ra, thiết kế Xerxes không có yêu cầu băng thông bộ nhớ đặc biệt cao, và do đó một giao diện DDR2 là đủ.
Hơn nữa, việc có một giao diện băng thông thấp hơn giúp giảm bớt các ràng buộc về PCB, kết thúc, và thời gian.
Sau khi đã chọn một thiết bị bộ nhớ phù hợp, đã đến lúc kết nối điều này với FPGA trong sơ đồ của bạn.
Đầu tiên, chúng ta cần chọn một ngân hàng phù hợp. Nếu bạn đang sử dụng một giao diện dữ liệu rộng 16 bit (hoặc thấp hơn), đối với hầu hết FPGA, điều này thường có thể vừa vặn trong một ngân hàng. Nếu không, chúng ta cần phải chia giao diện bộ nhớ qua nhiều ngân hàng.
Để đơn giản, chúng ta sẽ chọn một giao diện bộ nhớ rộng 16 bit, như trường hợp của bảng Xerxes. Chọn một ngân hàng trống có thể hoạt động với cùng một điện áp như chính bộ nhớ DDR (trong trường hợp Xerxes, đây là ngân hàng 34 với 1.8V do sử dụng bộ nhớ DDR2).
Ngân Hàng FPGA 34 Với Sự Cách Ly Thích Hợp Chạy Từ Nguồn 1.8V
Đối với FPGA của AMD/Xilinx, sử dụng các công cụ Vivado và MIG, việc lấy bố cục chân cho bộ nhớ DDR của chúng ta rất đơn giản. Công cụ hoặc đề xuất một bố cục chân phù hợp cho ngân hàng đó, hoặc chúng ta có thể gán chân một cách thủ công và xác minh bố cục chân.
Công Cụ Bố Cục Chân Vivado MIG
Nếu bạn cấu hình bố cục chân một cách thủ công, hãy đảm bảo rằng các làn byte DDR riêng lẻ có cùng số byte ngân hàng và các strobe khác biệt nằm trên các chân DQS có khả năng FPGA khác biệt.
Hãy nhớ rằng bố cục chân có thể sẽ được điều chỉnh trong giai đoạn thiết kế và định tuyến PCB. Nhờ vào sự linh hoạt của FPGA, việc đổi chân trong quá trình thiết kế PCB có thể đơn giản hóa việc định tuyến và giảm thiểu các chuyển đổi lớp.
Trong ví dụ này, vì chúng ta đang chạy từ một ngân hàng duy nhất, chúng ta phải sử dụng VREF nội bộ, giới hạn băng thông bộ nhớ tối đa.
Ngoài ra, chúng ta cần chú ý đến việc đồng hồ. Lý tưởng nhất, nguồn đồng hồ nên ở trong cùng một ngân hàng gắn với một chân có khả năng đồng hồ (hoặc các chân nếu sử dụng nguồn đồng hồ khác biệt).
Cuối cùng, hãy chắc chắn sử dụng các công cụ của nhà cung cấp để xác minh thiết kế và thời gian. Sau đó, với bố trí chân ban đầu được đặt vào, trong sơ đồ của bạn, hãy định nghĩa các lớp mạng, cặp vi sai, và quy tắc, và sử dụng mã màu để làm cho cuộc sống thiết kế PCB của bạn dễ dàng hơn.
Kết nối và Nguồn Clock của FPGA Bank 34 DDR2
Đối với một thiết bị đơn lẻ, chúng ta chỉ cần thực hiện kết nối điểm-điểm trên thành phần bộ nhớ DDR.
Termination nên được áp dụng trên các tín hiệu địa chỉ/lệnh/kiểm soát (ACC); tuy nhiên, đối với tốc độ dữ liệu thấp hơn, chúng ta thường có thể bỏ qua điều này. Tôi luôn thêm termination trên cặp clock vi sai. Các làn byte dữ liệu được terminated nội bộ ở cả hai đầu.
Khuyến nghị đặt các điện trở kéo xuống 4.7k trên các dây CKE, ODT, và tùy chọn trên dây CS#.
Kết nối Tín hiệu và Nguồn của Mô-đun Bộ Nhớ DDR2
Cuối cùng, mô-đun bộ nhớ cần được cấp nguồn, tất nhiên. Trong trường hợp của bảng Xerxes, mô-đun DDR2 được kết nối với cùng một bộ điều chỉnh 1.8V như ngân hàng FPGA 34 của chúng tôi. Cần có sự tách rời thích hợp - như một quy tắc chung, nếu không được chỉ định khác trong datasheets hoặc ghi chú ứng dụng, hãy nhắm đến sử dụng một tụ điện nhỏ (~100nF) cho mỗi hai chân VDD và một tụ điện lớn hơn cho mỗi mười chân VDD.
Điện áp chân VREF có thể được tạo ra thông qua một bộ chia tiềm năng đơn giản với một tụ điện lọc, như được hiển thị trong hình trên.
Trong bài viết này, chúng tôi đã trình bày các chiến lược cơ bản để tích hợp bộ nhớ DDR không biến mất bên ngoài vào thiết kế dựa trên FPGA của chúng tôi từ quan điểm cấp hệ thống và cấp sơ đồ.
Hãy nhớ rằng đây là những kiến thức cơ bản nhất, và tùy thuộc vào yêu cầu hệ thống của bạn, thiết kế sẽ phức tạp hơn nhiều. Đặc biệt, nếu bạn dự định sử dụng các bộ phận bộ nhớ và giao diện nhanh hơn, và nhiều mô-đun hơn.
Khi thiết kế các hệ thống dựa trên FPGA và DDR tiên tiến, hãy chắc chắn bạn đang sử dụng các công cụ và tính năng có trong các công cụ ECAD hàng đầu như Altium Designer. Hãy chắc chắn để đảm bảo phiên bản dùng thử miễn phí của Altium Designer và Altium 365 tại đây.