Có thể sử dụng các mô-đun DRAM nhiều gigabyte với một vi điều khiển không?


20

Tôi có hai mô-đun RAM 2GB còn sót lại mà tôi đã xóa khỏi MacBook Pro khi thực hiện nâng cấp. Tôi chỉ tự hỏi nếu những thứ này có thể sử dụng được, ví dụ, một Arduino. Tôi có quá nhiều người mới bắt đầu thực sự cố gắng làm điều này ngay bây giờ, nhưng tôi tò mò liệu điều đó có khả thi không, hoặc nếu đó chỉ là quá nhiều bộ nhớ để vi điều khiển xử lý.


1
bạn có thể có thể làm một cái gì đó để làm điều đó, nhưng mạch giao diện có thể là phần phức tạp nhất của hệ thống kết quả, và có rất ít giá trị thực tế trong kết quả.
JustJeff

Cảm ơn câu trả lời tuyệt vời! Rất thú vị. Tôi đang dần tìm hiểu về cách các mảnh khớp với nhau. Cảm ơn.
johndeo

Nền tảng ARM9 và ARM11 lưu trữ bộ điều khiển DDR2, nhưng sau đó bạn không nói về vi điều khiển mà là về vi điều khiển. FPGA có thể giao tiếp với nó là tốt. Toàn bộ nhiệm vụ khá phức tạp. Một arduino chỉ có 8 bit, vì vậy nó không thể thực hiện được công việc xử lý địa chỉ lớn trong tay.
Hans

Những gì Hans nói - bất kỳ vi mô nào đủ mạnh để sử dụng loại RAM đó sẽ có bộ điều khiển DDR tích hợp. Tôi đã không nhìn kỹ vào hoạt động bên trong của điều khiển DDR, nhưng thực tế bạn cần phần cứng chuyên dụng để làm điều đó cho bạn biết một cái gì đó ... mô-đun cũ, công cụ từ máy in laser cũ, vv có thể được sử dụng nhiều hơn.
John U

Câu trả lời:


24

Tôi sẽ nói không: sự không tương thích cơ bản nhất là có quá nhiều chân trên các mô-đun đó thậm chí có thể giao tiếp vật lý với Arduino. Ditto cho các vi điều khiển nhỏ tương tự. ARM Cortex M3 đang tiến gần hơn, nhưng một vài trong số chúng thực sự có bus ngoài cần thiết để giao diện RAM theo cách như vậy (tôi nghĩ).

Nhưng tôi sẽ chơi cùng đi xa hơn. Giả sử bạn có thể giao tiếp chip với Arduino bằng cách nào đó, một vấn đề tương thích điện cơ bản khác là điện áp cần thiết. Tôi nghĩ các mô-đun RAM này sử dụng một cái gì đó kỳ lạ như 2.2V - không có trên bo mạch Arduino vanilla hoặc thực sự, bất kỳ vi điều khiển sở thích cơ bản nào khác.

Giả sử đã được chăm sóc thì con chip sẽ hoạt động khá giống với bất kỳ bộ nhớ ngoài nào khác đối với Arduino. Điều này thực sự được thực hiện mọi lúc - mọi người thêm EEPROM bên ngoài để lưu trữ các hằng số quan trọng hoặc thẻ SD / MMC để lưu trữ nhật ký máy chủ web và như vậy. Tất nhiên, trong bối cảnh này, các mô-đun RAM không mang lại lợi ích thực sự cho Arduino. Tính năng chính của nó là tốc độ và Arduino (và vâng, các bộ vi điều khiển sở thích khác) thường không phá vỡ 25 MHz về tốc độ xung nhịp. Họ quá chậm để quan tâm đến tốc độ. Và kích thước lưu trữ không phải là vấn đề lớn vì việc giao tiếp với thẻ SD / MMC dễ dàng hơn rất nhiều và cung cấp nhiều không gian để chơi.

Vì vậy, ngay cả khi có thể, nó sẽ không thực sự được khuyến khích.


phải thú nhận rằng tôi đã nghĩ về việc kết nối một số DRAM cũ với arduino của tôi, chỉ là các bến tàu. (nhưng, điều đó có thể thực hiện được, ngay cả trên bảng xếp hạng, thậm chí là rác thời đại 4164). Mặt khác, tôi hoàn toàn đồng ý.
JustJeff

1
Đó là một câu trả lời chất lượng, sử dụng các giả định từng bước và đi đến điều kiện cuối cùng. Công việc tốt!
LeanerRocky

2
Đừng bỏ qua các vấn đề làm mới. Một lý do khác khiến đèn flash "dựa trên lệnh" có thể phù hợp hơn khi một con chuột của bộ điều khiển đang cố lái một chiếc xe tải nhỏ của bộ nhớ.
Chris Stratton

Tôi đặt một bình luận ở trên, với câu hỏi, nhưng tôi đoán tôi thực sự nên đặt nó ở đây. Cảm ơn bạn rất nhiều vì câu trả lời. Trao đổi ngăn xếp là một siêu tài nguyên, và tất cả là do mọi người dành thời gian để cung cấp câu trả lời chất lượng.
johndeo

8

Tôi sẽ nói không, không phải không dán một fpga có kích thước tốt (số pin) ở giữa, fpga nói chuyện với bộ nhớ và vi điều khiển nói chuyện với fpga bằng cách sử dụng sơ đồ phân trang.


Tôi cũng nghĩ như vậy. Và có FPGA là một bộ điều khiển làm mới trong suốt. Nhưng thực sự ... sẽ không đơn giản và rẻ hơn khi mô phỏng một arduino trong phần mềm trên một hệ thống ARM nhỏ?
Chris Stratton

1
Tuy nhiên, thú vị hoặc mang tính giáo dục, đó có thể là DDR không đơn giản và không phải là thứ mới bắt đầu. Tìm một máy tính xách tay hoặc bo mạch chủ khác để đặt bộ nhớ này vào và tìm hiểu về DDR bằng cách sử dụng bảng mạch fpga có một chút ở bên cạnh hoặc có thể là bảng hiệu hoặc một cái gì đó tương tự. Vấn đề đầu tiên là số pin, thứ hai là tín hiệu, thời gian, v.v ... Thật khó để làm cho nó hoạt động khi bạn tạo pcboard của riêng bạn. Nó không giống như một giao diện LCD hoặc một cái gì đó tương tự mà bạn có thể đặt lên một bộ vi điều khiển.
old_timer

7

Bạn có thể hình dung sử dụng một hệ thống chốt để cho phép thứ gì đó giống như arduino tạo ra 32 bit địa chỉ và bạn có thể nghĩ ra một số sơ đồ để tạo chu kỳ làm mới, nhưng hầu như không có lý do gì để làm như vậy, ngoại trừ như một kỹ thuật tập thể dục.

Mạch giao diện có lẽ sẽ là phần phức tạp nhất của hệ thống kết quả và có rất ít giá trị thực tế trong kết quả; arduino sẽ không thể thực thi mã ra khỏi RAM, bộ lưu trữ sẽ không ổn định và có thể sẽ tiêu thụ nhiều năng lượng hơn cả arduino. Nếu bạn muốn lưu trữ dữ liệu, SPI EEPROM có lẽ là một giải pháp tốt hơn nhiều.


1
Một AVR có thể thực thi mã từ RAM trong mọi trường hợp không?
Nick T

@Nick T - Tôi không gián tiếp đề xuất rằng có bất kỳ kịch bản nào như vậy mà nó có thể; Tôi đã trực tiếp nói rằng trong trường hợp ai đó nghĩ đến việc can thiệp vào loại RAM này, sẽ là sai lầm khi nghĩ rằng họ có thể sử dụng nó như vậy.
JustJeff

1
Flash nối tiếp hoặc SRAM thường nhanh hơn EEPROM. Nếu bạn cần nhiều dữ liệu không biến đổi (trường hợp sử dụng mã từ xa), Flash có lẽ là lựa chọn tốt hơn. Đối với bộ đệm lớn, sử dụng SRAM; nó nhanh hơn EEPROM rất nhiều. Nếu bạn có một vài bit cấu hình cần được chuyển đổi độc lập, đó thực sự là ngách duy nhất còn lại cho EEPROM.
Kevin Vermeer

@reemrevnivek - điểm tốt, tôi +1 bình luận của bạn. Nếu bạn đang giữ một vài chục cài đặt cấu hình xung quanh, EEPROM. Nếu bạn muốn giữ khung hình của video, SRAM.
JustJeff

7

Nếu bạn từng xem các bảng dữ liệu chip DRAM thì tốc độ xung nhịp tối thiểu là 50 MHz + cho DDR2. Vì vậy, không, bạn sẽ không thể giao tiếp với chúng bằng vi điều khiển (trừ khi nó có hỗ trợ phần cứng tích hợp).


Chưa kể rằng bạn cần phải làm mới bộ nhớ khá thường xuyên! Arduino sẽ bận rộn dành tất cả thời gian để điều khiển các dòng điều khiển bộ nhớ!
Toybuilder

6

Câu trả lời ngắn gọn là không.

Arduino không thể lái giao diện bộ nhớ DDR hoặc DDR2. Bạn có thể tạo bộ điều khiển DDR / DDR2 với giao diện SPI với một FPGA, nhưng đó là một công việc quan trọng.


6

Bạn sẽ cần một trình điều khiển điện áp thấp (SSTL) và một số cách để kiểm soát khoảng 100 kênh (mỗi vi sai, khoảng 200 chân. Hãy nghĩ đến BGA.)

Hầu hết DRAM phải được làm mới ít nhất 1kHz và có thể nhiều hơn để có tỷ lệ lỗi bit thấp. Điều này sau đó sẽ hình thành một nhiệm vụ nền tảng chính và sử dụng hầu hết sức mạnh vượt trội của Arduino, nếu thậm chí có thể làm mới bộ nhớ với tốc độ như vậy.

Những gì bạn có thể nhìn vào là với một số bộ vi điều khiển, ví dụ PIC24F / H / dsPIC33F, chúng hỗ trợ giao diện bus chính song song, cho phép một số loại SRAM song song được truy cập. Thậm chí còn có hỗ trợ với C, vì bộ nhớ ngoài này có thể được ánh xạ vào một số biến mã và thậm chí các khối kết hợp cả bộ nhớ trong và bộ nhớ ngoài. Bộ nhớ ngoài yêu cầu bạn viết một số mã PMB. Bạn chỉ có thể giải quyết tối đa khoảng 1 MB với điều này.


AFAIK DDR sử dụng SSTL chứ không phải LVDS
mazurnization

@mazurnification, Yeah, bạn đã đúng (lỗi của tôi.) Tuy nhiên, một cơn ác mộng khi điều khiển từ Arduino.
Thomas O

Sau đó sửa câu trả lời của bạn!
Kevin Vermeer

@reemrevnivek, được thôi. Đã sửa. Tuy nhiên, tôi chỉ đơn thuần chỉ ra rằng nó không thực tế. Không có vấn đề định dạng tín hiệu được sử dụng.
Thomas O

2

Không, không phải không có giao diện phân trang nào đó giữa bộ nhớ và MCU. Trên thực tế, một số MCU của AVR có giao diện bộ nhớ ngoài tích hợp - Atmega2560, ví dụ (xem phần 8 của bảng dữ liệu ATmega640 / 1280/1281/2560/2561). Nhưng không gian địa chỉ được đo bằng Kilobytes, không phải Gigabyte.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.