เป็นไปได้หรือไม่ที่จะใช้โมดูล DRAM หลายกิกะไบต์กับไมโครคอนโทรลเลอร์


20

ฉันมีโมดูล RAM 2GB เหลืออยู่สองตัวที่ฉันลบออกจาก MacBook Pro ของฉันเมื่อทำการอัพเกรด ฉันแค่สงสัยว่าสิ่งเหล่านี้สามารถใช้งานได้ด้วยเช่น Arduino ฉันจะเป็นผู้เริ่มต้นมากเกินไปที่จะลองทำสิ่งนี้จริง ๆ ในตอนนี้ แต่ฉันอยากรู้ว่ามันเป็นไปได้หรือไม่


1
คุณอาจจะต้องทำอะไรบางอย่าง แต่วงจรอินเทอร์เฟซน่าจะเป็นส่วนที่ซับซ้อนที่สุดของระบบผลลัพธ์และผลลัพธ์ในทางปฏิบัติจะมีน้อย
JustJeff

ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม! น่าสนใจมาก. ฉันค่อย ๆ เรียนรู้ว่าชิ้นส่วนเข้าด้วยกันอย่างไร ขอบคุณ
johndeo

แพลตฟอร์ม ARM9 และ ARM11 โฮสต์คอนโทรลเลอร์ DDR2 แต่คุณไม่ได้พูดถึงไมโครคอนโทรลเลอร์ แต่เกี่ยวกับไมโครโปรเซสเซอร์ FPGA สามารถเชื่อมต่อกับมันได้เช่นกัน งานทั้งหมดค่อนข้างซับซ้อน arduino เพียง 8 บิตดังนั้นมันจึงไม่สามารถทำงานกับที่อยู่จำนวนมากได้
ฮันส์

สิ่งที่ฮันส์พูด - ไมโครโปรเซสเซอร์ที่ทรงพลังพอที่จะใช้ประโยชน์จากแรมชนิดนั้นจะมีตัวควบคุม DDR ในตัวฉันไม่ได้มองอย่างใกล้ชิดในการทำงานด้านในของการควบคุม DDR แต่ความจริงที่คุณต้องการฮาร์ดแวร์เฉพาะเพื่อบอกคุณ บางอย่าง ... โมดูลที่เก่ากว่าสิ่งต่าง ๆ จากเครื่องพิมพ์เลเซอร์รุ่นเก่า ฯลฯ อาจใช้งานได้มากกว่า
John U

คำตอบ:


24

ฉันจะบอกว่าไม่: ความไม่ลงรอยกันขั้นพื้นฐานที่สุดคือมีวิธีพินมากเกินไปในโมดูลเหล่านั้นแม้จะสามารถเชื่อมต่อกับ Arduino ได้ เหมือนกันสำหรับไมโครคอนโทรลเลอร์ขนาดเล็กที่คล้ายกัน ARM Cortex M3 ใกล้เข้ามาแล้ว แต่มีเพียงไม่กี่คนที่มีบัสภายนอกที่จำเป็นต่อการเชื่อมต่อ RAM ในแบบนี้ (ฉันคิดว่า)

แต่ฉันจะเล่นไปด้วยกันต่อไป สมมติว่าคุณสามารถเชื่อมต่อชิปกับ Arduino อย่างอื่นปัญหาความเข้ากันได้ทางไฟฟ้าขั้นพื้นฐานคือแรงดันไฟฟ้าที่จำเป็น ฉันคิดว่าโมดูล RAM เหล่านี้ใช้อะไรแปลก ๆ เช่น 2.2V - ไม่มีอยู่ในบอร์ด Arduino ของ Vanilla หรือจริงๆแล้วไมโครคอนโทรลเลอร์พื้นฐานงานอดิเรกอื่น ๆ

สมมติว่าได้รับการดูแลแล้วชิปจะทำงานเหมือนหน่วยความจำภายนอกอื่น ๆ กับ Arduino ทำเช่นนี้ตลอดเวลา - ผู้ใช้เพิ่ม EEPROM ภายนอกเพื่อเก็บค่าคงที่สำคัญหรือการ์ด SD / MMC สำหรับการจัดเก็บบันทึกของเว็บเซิร์ฟเวอร์และอื่น ๆ แน่นอนในบริบทนี้โมดูล RAM ไม่ได้ให้ประโยชน์กับ Arduino อย่างแท้จริง คุณสมบัติหลักของมันคือความเร็วและ Arduino (และใช่ไมโครคอนโทรลเลอร์งานอดิเรกอื่น ๆ ) โดยทั่วไปแล้วจะไม่หยุดที่ 25MHz ด้วยความเร็วสัญญาณนาฬิกา พวกมันช้าเกินไปที่จะใส่ใจเรื่องความเร็ว และขนาดพื้นที่เก็บข้อมูลไม่ใช่ปัญหาใหญ่เนื่องจากการเชื่อมต่อกับการ์ด SD / MMC นั้นง่ายกว่าและให้พื้นที่ในการเล่นมากพอสมควร

ดังนั้นแม้ว่าจะเป็นไปได้ แต่ก็ไม่แนะนำให้เลือก


ต้องสารภาพฉันคิดว่าการเชื่อมต่อกรมทรัพย์สินทางปัญญาเก่าบางอย่างกับ arduino ของฉันเพียงแค่ larfs (แต่นั่นน่าจะทำได้บนเขียงหั่นขนมแม้แต่ขยะยุคที่มี 4164) อื่น ๆ ฉันเห็นด้วยทั้งหมด
JustJeff

1
นั่นเป็นคำตอบที่มีคุณภาพโดยใช้สมมติฐานทีละขั้นตอนและมาถึงที่สิ้นสุดเงื่อนไข งานที่ดี!
LeanerRocky

2
อย่ามองข้ามปัญหาการรีเฟรช อีกเหตุผลหนึ่งที่ "คำสั่งพื้นฐาน" แฟลชน่าจะเป็นสิ่งที่ดีกว่าเมื่อเมาส์ของคอนโทรลเลอร์พยายามขับรถบรรทุกแม็คของหน่วยความจำ
Chris Stratton

ฉันใส่ความคิดเห็นข้างต้นด้วยคำถาม แต่ฉันคิดว่าฉันควรใส่ไว้ที่นี่จริงๆ ขอบคุณมากสำหรับคำตอบ การแลกเปลี่ยนสแต็คเป็นทรัพยากรที่ยิ่งใหญ่และเป็นเพราะคนส่วนใหญ่ใช้เวลาในการให้คำตอบที่มีคุณภาพ
johndeo

8

ฉันจะบอกว่าไม่ไม่ได้โดยไม่ต้องติด fpga ขนาดที่ดี (นับ pin) ในระหว่างที่ fpga พูดคุยกับหน่วยความจำและไมโครคอนโทรลเลอร์พูดกับ fpga โดยใช้รูปแบบเพจ


ความคิดของฉันเช่นกัน และให้ FPGA เป็นตัวควบคุมการรีเฟรชที่โปร่งใส แต่จริงๆแล้ว ... จะไม่ง่ายกว่าและถูกกว่าที่จะเลียนแบบ arduino ในซอฟต์แวร์บนระบบ ARM ขนาดเล็กหรือไม่?
Chris Stratton

1
อย่างไรก็ตามความสนุกหรือการศึกษามันอาจเป็น DDR ไม่ใช่เรื่องง่าย ค้นหาแล็ปท็อปหรือมาเธอร์บอร์ดตัวอื่นเพื่อใส่หน่วยความจำนี้และเรียนรู้เกี่ยวกับ DDR โดยใช้บอร์ด fpga eval ที่ด้านข้างเล็กน้อยหรืออาจเป็นบีเกิลบอร์ดหรืออะไรทำนองนั้น ปัญหาแรกคือการนับพินที่สองคือสัญญาณเวลา ฯลฯ มันยากที่จะทำให้มันทำงานได้เมื่อคุณสร้างบอร์ด PC ของคุณเอง มันไม่เหมือนหน้าจอ LCD หรืออะไรแบบนั้นที่คุณสามารถใช้เขียงหั่นขนมให้ไมโครคอนโทรลเลอร์ได้
old_timer

7

คุณอาจใช้ระบบแลตช์เพื่อให้บางอย่างเช่นอาร์ดิโนสร้างที่อยู่ 32 บิตและคุณอาจกำหนดรูปแบบบางอย่างเพื่อสร้างวงจรการรีเฟรช แต่ไม่มีประเด็นใดที่จะทำเช่นนั้นยกเว้นเป็นเทคนิค การออกกำลังกาย

วงจรอินเทอร์เฟซน่าจะเป็นส่วนที่ซับซ้อนที่สุดของระบบผลลัพธ์และจะมีค่าในทางปฏิบัติเล็กน้อยในผลลัพธ์ arduino จะไม่สามารถเรียกใช้รหัสจาก RAM ที่จัดเก็บจะระเหยและอาจใช้พลังงานมากกว่า arduino เช่นกัน หากคุณต้องการจัดเก็บข้อมูล SPI EEPROM น่าจะเป็นทางออกที่ดีกว่ามาก


1
AVR สามารถเรียกใช้โค้ดจาก RAM ในทุกสถานการณ์ได้หรือไม่?
Nick T

@Nick T - ฉันไม่ได้บอกทางอ้อมว่ามีสถานการณ์ใดที่จะทำได้ ฉันกำลังพูดโดยตรงว่าในกรณีที่มีคนคิดว่าการเชื่อมต่อกับ RAM ประเภทนี้มันจะผิดพลาดที่จะคิดว่าพวกเขาสามารถใช้มันได้
JustJeff

1
Serial Flash หรือ SRAM มักจะเร็วกว่า EEPROM มาก หากคุณต้องการข้อมูลที่ไม่ลบเลือนจำนวนมาก (กรณีใช้รหัสระยะไกล) แฟลชน่าจะเป็นตัวเลือกที่ดีกว่า สำหรับบัฟเฟอร์ขนาดใหญ่ใช้ SRAM มันเร็วกว่า EEPROM มาก หากคุณมีบิตการกำหนดค่าบางอย่างที่ต้องเปิดใช้งานอย่างอิสระนั่นเป็นช่องทางเดียวที่เหลือสำหรับ EEPROM
Kevin Vermeer

@reemrevnivek - จุดดีฉัน +1 ความคิดเห็นของคุณ หากคุณยังคงตั้งค่าการตั้งค่าไว้ไม่กี่โหล EEPROM หากคุณต้องการเก็บเฟรมของวิดีโอไว้ SRAM
JustJeff

7

หากคุณเคยดูเอกสารข้อมูลชิปชิป DRAM จะมีความเร็วสัญญาณนาฬิกาขั้นต่ำเช่น 50MHz + สำหรับ DDR2 ดังนั้นไม่คุณจะไม่สามารถติดต่อกับพวกเขาด้วยไมโครคอนโทรลเลอร์ (เว้นแต่จะมีการสนับสนุนฮาร์ดแวร์ในตัว)


ไม่ต้องพูดถึงว่าคุณต้องรีเฟรชหน่วยความจำค่อนข้างบ่อยเช่นกัน! Arduino กำลังยุ่งอยู่ตลอดเวลาที่ต้องขับรถบนสายควบคุมหน่วยความจำ!
Toybuilder

6

คำตอบสั้น ๆ คือไม่

Arduino ไม่สามารถขับเคลื่อนอินเตอร์เฟสหน่วยความจำ DDR หรือ DDR2 คุณสามารถสร้างคอนโทรลเลอร์ DDR / DDR2 ด้วยอินเตอร์เฟส SPI พร้อม FPGA ได้ แต่นั่นเป็นภารกิจที่สำคัญ


6

คุณต้องการไดร์เวอร์แรงดันไฟฟ้าต่ำ (SSTL) และวิธีการควบคุมประมาณ 100 แชนเนล (แต่ละค่าดังนั้นประมาณ 200 พินคิดว่า BGA)

DRAM ส่วนใหญ่จะต้องมีการรีเฟรชอย่างน้อย 1kHz และอาจจะมีอัตราข้อผิดพลาดน้อยกว่า สิ่งนี้จะสร้างงานพื้นหลังที่สำคัญและใช้กำลังงาน prcoessing ส่วนใหญ่ของ Arduino หากเป็นไปได้ที่จะรีเฟรชหน่วยความจำในอัตราดังกล่าว

สิ่งที่คุณสามารถดูได้คือกับไมโครคอนโทรลเลอร์บางตัวเช่น PIC24F / H / dsPIC33F พวกเขาสนับสนุนอินเตอร์เฟสบัสต้นแบบแบบขนานซึ่งทำให้สามารถเข้าถึง SRAM แบบขนานบางประเภทได้ แม้จะมีการสนับสนุนด้วย C เนื่องจากหน่วยความจำภายนอกนี้สามารถแมปเข้ากับตัวแปรรหัสได้หลายแบบและแม้กระทั่งบล็อกที่รวมความทรงจำทั้งภายในและภายนอกเข้าด้วยกัน หน่วยความจำภายนอกคุณต้องเขียนรหัส PMB บางส่วน คุณจะสามารถจัดการกับสิ่งนี้ได้มากถึงประมาณ 1 MB


AFAIK DDR ใช้ SSTL ไม่ใช่ LVDS
mazurnification

@mazurnification ใช่คุณถูกต้อง (ข้อผิดพลาดของฉัน) ยังคงเป็นฝันร้ายที่ควบคุมจาก Arduino
โทมัสโอ

จากนั้นแก้ไขคำตอบของคุณ!
Kevin Vermeer

@reemrevnivek โอเค การแก้ไข อย่างไรก็ตามฉันแค่ชี้ให้เห็นว่ามันเป็นไปไม่ได้ ไม่ว่าจะใช้รูปแบบการส่งสัญญาณใด
โทมัส O

2

ไม่ไม่มีอินเทอร์เฟซการเพจชนิดใดระหว่างหน่วยความจำและ MCU ในความเป็นจริงแล้ว AVR MCU บางตัวมีอินเทอร์เฟซหน่วยความจำภายนอกในตัวเช่น Atmega2560 (ดูส่วนที่ 8 ของแผ่นข้อมูล ATmega640 / 1280/1281/2560/2561/2560) แต่พื้นที่ที่อยู่ถูกวัดเป็นกิโลไบต์ไม่ใช่กิกะไบต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.