ต้นแบบ SDRAM เทียบกับความทุกข์ยากของการผลิต


11

ฉันมีการออกแบบโดยใช้LPC1788พร้อมกับโมดูล SDRAM จาก ISSI ( IS42S32800D ) นี่คือส่วนต่อประสาน 32 บิต

ฉันกำหนดเส้นทางการออกแบบนี้แล้วและมีต้นแบบที่ผลิตโดยผู้ผลิต PCB ที่ทำต้นแบบ 6 ชั้น PCB ต้นแบบทำงานได้ดี ฉันคิดว่าฉันจะได้รับ PCB ที่ผลิตในปริมาณน้อย (100) จากซัพพลายเออร์ PCB ปกติของฉัน ฉันให้ข้อมูลที่กองขึ้นมาเพื่อให้แน่ใจว่าจะไม่มีปัญหา

แต่! ฉันมีปัญหาใหญ่กับคณะกรรมการผลิต ตอนแรกฉันไม่สามารถเพิ่มการตอบสนองใด ๆ จาก SDRAM อะไรกับรหัสเดิมที่ฉันใช้ในบอร์ดต้นแบบของฉัน บอร์ดก่อนหน้านี้ทำงานที่ 120Mhz ดังนั้นฉันมั่นใจว่ามีบางอย่างผิดปกติกับบอร์ดใหม่นี้ ฉันพบโพสต์ที่มีคนแนะนำให้ใช้ Repeater Mode ในสายข้อมูล SDRAM (ฉันไม่เคยใช้มันมาก่อน) และนี่เป็นการตอบสนองจาก SDRAM ที่เพิ่มขึ้น แต่ก็ไม่เสถียร ฉันสามารถเขียนที่อยู่ 16 หรือมากกว่านั้น แต่หลังจากนั้นอ่านข้อมูลที่ส่งคืน (ทุก ๆ ที่อยู่) เป็นข้อมูลที่ฉันเขียนล่าสุด (อาจเป็นเพราะ Repeater Mode) เมื่อฉันปิดโหมด repeater ข้อมูลที่ส่งคืนคือ 0xFFFFFFF ตอนนี้ฉันกำลังพยายามเชื่อมต่อที่ 48Mhz ซึ่งเป็นโครงแบบต่ำสุดที่ฉันมีเวลา

ฉันใช้ตัวต้านทานการเลิกจ้างเดียวกัน (บนสายข้อมูล) ของ 22Ohms บนแผงทั้งสองสายข้อมูลมีความยาวเฉลี่ย 3 ซม สายนาฬิกายาว 2.4 ซม. บรรทัดที่อยู่มีความยาวเฉลี่ย 3.8 ซม

นี่มันเกินมาตรฐานหรือไม่ฉันควรเลื่อนเวลาให้นานขึ้นถ้ามันสั้นลงอย่างมากหรือไม่? ฉันติดอยู่ที่นี่จริงๆเพราะฉันไม่ได้เปลี่ยนอะไรเลยเกี่ยวกับการออกแบบที่ฉันหวังไว้สำหรับการผลิตที่ไร้รอยต่อสำหรับบอร์ดเหล่านี้

Maximum Data Line Length: 59mm (Although this includes the branch to the NAND Flash)
Minimum Data Line Length (Ctrl to Res): 18mm
Maximum Address Line Length: 44mm
Minimum Address Line Length: 24mm
CLK: 24.5mm
CKE: 25mm
CAS: 28mm
RAS: 28.7mm

นี่คือการกำหนดค่าสแต็ค PCB สำหรับต้นแบบ (ทำงาน) ต้นแบบ: ป้อนคำอธิบายรูปภาพที่นี่

นี่คือการกำหนดค่าสแต็ค PCB สำหรับ PCB (ไม่ทำงาน) ป้อนคำอธิบายรูปภาพที่นี่

นี่คือการกำหนดเส้นทางสำหรับ SDRAM: การกำหนดเส้นทาง SDRAM


3
อิมพีแดนซ์ควบคุมเหมือนกันระหว่างโปรโตและการผลิตหรือไม่?
dext0rb

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

และคุณจ่ายให้พวกเขาเพื่อตรวจสอบความต้านทาน (@dextorb ที่แนะนำให้คุณควบคุม) หรือไม่?
Brian Carlton

มันไม่ใช่ความยาวเฉลี่ยที่สำคัญ มันเป็นขั้นต่ำและสูงสุดภายในกลุ่ม
Brian Carlton

1
ความสมบูรณ์ของสัญญาณในการติดตามนาฬิกาดูที่หมุด SDRAM อย่างไร
Brian Carlton

คำตอบ:


10

นั่นคือกองซ้อนหมัด แกนของคุณควรอยู่ที่ 0.2 มม. และความหนาของความหนาของคุณควรอยู่ที่ส่วนพรีเพกระหว่างชั้น 3 และ 4 (ด้านใน 1 และด้านใน 2)

เหตุผลสำหรับสิ่งนี้คือว่าสำหรับสัญญาณใด ๆ บนร่องรอยจำเป็นต้องมีเส้นทางกลับในปัจจุบันบนระนาบที่อยู่ด้านล่าง กระแสย้อนกลับในระนาบจะพยายามลดการเหนี่ยวนำ (เช่นพื้นที่วนรอบ) ซึ่งหมายความว่ามันจะพยายามติดตามภายใต้การติดตามของสัญญาณ หากร่องรอยของสัญญาณอยู่ห่างจากระนาบมันจะมองไปที่ร่องรอยอื่น ๆ เพื่อค้นหาเส้นทางกลับ นี่คือแม่เหล็กไฟฟ้าที่คุณกำลังต่อสู้

นอกจากนี้เมื่อมีเลเยอร์ชั้นในที่ระยะทางแตกต่างจากระนาบอ้างอิง (จำไว้ว่ารางจ่ายไฟทุกอันมีลักษณะที่ AC!) เมื่อเทียบกับระยะชั้นนอกสุดคุณสร้างการเปลี่ยนแปลงอิมพีแดนซ์ทุกครั้งที่คุณสลับเลเยอร์ การเปลี่ยนแปลงความกว้างของการติดตามแม้ว่าฉันจะพบว่ามันคุ้มค่ากับปัญหาเพียงครั้งเดียว) และคุณก็เพิ่มโอกาสในการ crosstalk และการรบกวนอื่น ๆ

สิ่งที่คุณต้องตรวจสอบอีกอย่างคือวัสดุที่ใช้: มีวัสดุมากกว่า 20 ชนิดที่เรียกตัวเองว่า "FR-4" สิ่งที่ฉันมักจะใช้เรียกว่า 370-HR มันทำงานได้ค่อนข้างดีด้วยสัญญาณ 100-500 MHz ความเร็วสูง

เกี่ยวกับสายนาฬิกา IIRC ในการออกแบบ SDRAM ครั้งล่าสุดของฉันฉันได้ตั้งค่านาฬิกาเพื่อให้ขอบเกิดขึ้นครั้งสุดท้าย (ร่องรอยของมันยาวที่สุด 1 ซม.) หลังจากที่อยู่และสายข้อมูลทั้งหมดเสถียร ดังนั้นการชะลอนาฬิกาก็คุ้มค่าที่จะลอง ฉันไม่ต้องการการควบคุมอิมพิแดนซ์ในบรรทัด SDRAM

ตัวต้านทานการเลิกจ้างของคุณควรอยู่ใกล้กับไดรเวอร์บรรทัดมากที่สุด หากพวกเขาไม่ได้อยู่ในระยะประมาณ 0.5 ซม. พวกเขาสามารถทำให้เกิดการสะท้อนตัวเองส่งผลให้เกินขนาดและส่งเสียง IMHO ความยาวการติดตาม 3 ซม. นั้นสั้นมาก ๆ ที่ต้องการตัวต้านทานการเลิกจ้าง (ฉันใช้พวกมันตั้งแต่ 6-10 ซม.) คุณได้ลองนำพวกมันออกไปไหม?

สิ่งที่ต้องตรวจสอบอีกอย่างคือเครื่องบินของคุณ: คุณมีร่องรอยของสัญญาณที่ตัดข้ามระนาบหรือไม่? นี่เป็นข้อห้ามไม่มากเพราะมันบังคับให้กระแสย้อนกลับไหลผ่านเส้นทางที่มีความยาว

ในที่สุดอัตราขอบเป็นปัญหาใหญ่ในการออกแบบเหล่านี้ ชิปจำนวนมากมีเวลาเพิ่มขึ้นและลดลงในเวลาสั้น ๆ โดยไม่จำเป็นและการลดความถี่สัญญาณนาฬิกาจะไม่มีผลกับสิ่งนี้ ขอบอย่างรวดเร็วเหล่านี้ยอดเยี่ยมสำหรับการสร้างภาพสะท้อน นี่คือสิ่งที่ตัวต้านทานเทอร์มินัล 22 โอห์มของคุณกำลังพยายามแก้ไข: มันช้าลงที่ขอบ แม้ว่าหากคุณกำลังผลักดันมันจริงๆเครื่องมืออย่าง HyperLynx ของ Mentor Graphics สามารถใช้เพื่อค้นหาการออกแบบการเลิกจ้างที่เหมาะสมที่สุด

หนังสือบางเล่มที่ฉันสามารถแนะนำให้คุณที่ครอบคลุมทั้งหมดนี้และอีกมากมายและเราสาบานโดยที่พวกเขาในที่ทำงาน:

หนังสือเหล่านี้ครอบคลุมการลดอีเอ็มไอการออกแบบระบบป้องกันการซ้อนทับ PCB การควบคุมอิมพิแดนซ์การแยกแหล่งจ่ายไฟและอีกมากมาย นอกจากนี้ Mr. Ott สอนการสัมมนาในหัวข้อนี้ (มาพร้อมกับสำเนาหนังสือของเขาฟรี)


หนังสือของ Henry Ott เป็นพระคัมภีร์สำหรับฉันในปี 1980 แต่ก่อนที่ฉันจะอ่านฉันมีทักษะในการเห็นการรั่วไหลของ RF ในการออกแบบเครื่องกล / ไฟฟ้าก่อนที่การทดสอบ EMC จะเริ่มขึ้น ช่องและตัวระบายความร้อนและเสาอากาศอิเล็กทริกและสายเคเบิลบัส I / O เป็นเสาอากาศที่ดีที่สุดสำหรับการเข้าและออก
Tony Stewart Sunnyskyguy EE75

ข้อมูลที่ดีที่นี่ตามการจำลอง Hyperlynx จากข้อมูลการจำลองอินพุตของฉันจำเป็นต้องมีตัวต้านทาน 22 โอห์มเป็นอย่างอื่นรูปคลื่นของดาต้าไลน์
James

นอกจากนี้คำแนะนำสแต็กอัพก็ดีเช่นกัน มีความแตกต่างเล็กน้อยใน stackup ระหว่างต้นแบบและผู้ผลิต ฉันเพิ่มไดอะแกรมในคำถามเพื่อให้คุณดู นอกจากนี้ - ฉันได้รับการอ่านสัญญาณความสมบูรณ์แบบง่ายโดย Eric Bogatin ข้อมูลดีที่นี่ แต่จะใช้เวลาสักครู่ย่อยและจมพอที่จะเริ่มเค้าโครงกระดานใหม่ด้วยคำแนะนำของเขา
James

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

1
ดังนั้น ณ จุดนี้ฉันกังวลมากที่สุดเกี่ยวกับตัวต้านทาน พวกเขาดูเหมือนจะอยู่ตรงกลางของร่องรอยแทนที่จะเป็นไดรเวอร์ที่พวกเขาอยู่ ในแอปพลิเคชันเหล่านี้จะเป็นการดีที่สุดที่จะไม่ใช้ชุดตัวต้านทาน แต่ให้ใช้ตัวต้านทานขนาดเล็กแทน ถ้าคุณต้องใช้แพ็คต้านทานคุณควรใช้เวลาในการทำมากงานที่ดีกว่าการแลกเปลี่ยนตัวต้านทานที่จะทำให้รูปแบบน้อยผ่านทางบ้า นั่นคือทั้งหมดที่ฉันสามารถบอกได้จากเลย์เอาท์ของคุณซึ่งไม่มีโครงร่างของแพ็คเกจและทำให้เลเยอร์ครึ่งยากที่จะมองเห็น
Mike DeSimone

4

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

การทำสิ่งเหล่านี้โดยไม่มีขอบเขตเพียงพอจะเต็มไปด้วยอันตรายที่อาจเกิดขึ้น - คุณจะรู้ได้อย่างไรว่าคุณมีระยะขอบเท่าไหร่? แม้ว่ามันจะทำงานได้อย่างไรคุณจะรู้ได้อย่างไรว่าคุณอยู่บนขอบและมีความเสี่ยงต่อความล้มเหลวของสนาม / การผลิตเนื่องจากความอดทนอุณหภูมิหรือเฟสของดวงจันทร์?


2

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

  1. กำหนดค่า IO ให้ฆ่าอย่างรวดเร็วและปิดการใช้งานตัวกรองอินพุต
  2. เปิดใช้งานโหมดอินพุตบนนาฬิกา
  3. ตั้งค่า slew บิต (9?) เพื่อเพิ่มอัตราการฆ่าสำหรับหมุดอินเตอร์เฟส SDRAM
  4. เปิดใช้งานโหมด repeater เนื่องจากเป็นแบบสองทิศทางและต้องไม่ถูกปล่อยลอยบนอินพุต cmos
  5. เปลี่ยนแรงดันไฟฟ้าเพื่อกำหนดความไวต่อข้อผิดพลาด
  6. โหมดรีเซ็ตค่าเริ่มต้นสำหรับพินบัสข้อมูลคือ FUNC = 0X00, MODE = 0X02, HYSTERESIS = เปิดใช้งาน, INVERT = ปิดการใช้งานและ SLEW = มาตรฐาน
  7. คุณโทรไปที่ PINSEL_ConfigPin () ด้วยค่าฟังก์ชันใหม่แล้วรีเซ็ตโหมดเป็นไม่ใช้งาน (ไม่มีตัวต้านทานแบบดึงลง / ดึงขึ้น) และปิด HYSTERESIS หรือไม่
  8. คุณใช้สำหรับ / ถัดไปลูปหรือรหัสไม่ต่อเนื่องเช่น;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 เป็นต้น
  9. คุณยืนยันที่จะเปิดใช้งาน WE pin อีกครั้งทุกครั้งที่จำเป็นหรือไม่?
  10. คุณใช้ไหม * pPIN & = ~ (0x00000007); // ล้างบิตฟังก์ชัน "

ฉันจำได้ว่าการดีบักการออกแบบ CMOS ครั้งที่ 1 ของฉันจากโพสต์ฟิสิกส์ของนักเรียนระดับปริญญาตรีสำหรับการบันทึกแบบพกพา Seismic บอร์ดตรรกะตัวจับเวลาแบบสลับได้ ไม่มีเฟิร์มแวร์หรือยูเอส แต่เขาไม่เคยทำการวิเคราะห์กรณีที่เลวร้ายที่สุดและฮาร์ดแวร์มีสภาพการแข่งขันอยู่ทั่วสถานที่เมื่อมีบอร์ดมากกว่าหนึ่งโหลที่ถูกสร้างและ debugged ด้วยตัวเอง ศาสตราจารย์ Seismic ได้นำหัวหน้าแผนกฟิสิกส์มาถามว่าทำไมฉันถึงไม่สามารถแก้ปัญหาบอร์ดได้ฉันจึงต้องแจ้งให้เขาทราบถึงความแปรปรวนขององค์ประกอบที่มีข้อบกพร่องมากมายในการออกแบบที่เรียกว่าเงื่อนไขการแข่งขันเวลาเนื่องจากสภาพ metastable และขอบนาฬิกา เขายังคงไม่เข้าใจจากนั้นฉันขอให้เขาบอกฉันว่าฉันใช้นิ้วกี่นิ้วในขณะที่ฉันยกมือก่อนถึงระดับเอวจากต่ำไปสูง จากนั้นเขาก็พูดว่าคุณทำอย่างนั้นไม่ได้และคาดหวังคำตอบที่ถูกต้อง ฉันพูดอย่างแม่นยำ นั่นคือสภาพการแข่งขันดั้งเดิม พวกเขามีความชัดเจนน้อยลงพร้อมระดับความซับซ้อนที่มากขึ้น คุณ Manitoba ปี 1973

อันดับที่ 1: รูปแบบการเลิกจ้างรถบัสที่คุณใช้อยู่ รถบัส วิธีการ (1) เป็นที่ต้องการ, 1.25Vdc สะอาดหรือไม่?


  1. ไม่จ่ายสำหรับ ICT บนกระดานเหล่านี้หรือไม่ ต้องมีการทดสอบบอร์ดเปลือย
  2. คุณระบุความต้านทานในคำแนะนำการจัดหน้าแบบ gerber ของคุณหรือไม่
  3. คุณรันการจำลองบนเลย์เอาต์ของคุณด้วยความคลาดเคลื่อนหรือไม่?
  4. ค่าคงที่ไดอิเล็กทริกบนบอร์ดและ # ของชั้นของ pre-preg จะควบคุมความต้านทานของสตริปลินและไมโครสตริปพร้อมกับความกว้างของรอยและช่องว่าง

    มีเครื่องคิดเลข Z ออนไลน์มากมายสำหรับ stripline

    คุณสามารถลองวัดความจุบนแทร็กขนาดใหญ่หรือระนาบกราวด์และเปรียบเทียบทั้งบอร์ดเปล่า

    ดูสัญญาณที่มีขอบเขตความเร็วสูงและสังเกตรูปแบบการมองตาที่เกินขนาดและนาฬิกา <>

จะต้องมีคำอธิบายง่ายๆสำหรับข้อผิดพลาด แต่มันไม่ง่ายที่จะหา แต่เมื่อคุณพบต้นเหตุ ... คุณจะไม่ทำผิดอีกครั้ง

เพิ่ม: ความผิดพลาดอื่นที่ฉันพบคือแผนภาพความสูงของสแต็กของคุณไม่ได้ระบุความหนาของชั้น Cu และมีไม่เพียงพอที่จะใส่ใน 6 ชั้นยกเว้นว่ามันผิดหรือความหนาของ Cu คือ 0.039 มม. (ไม่;)


แค่ความคิดเห็นสำหรับ OP - ฉันเห็น OP กำลังใช้ Altium Designer และมีเครื่องคิดเลขอิมพีแดนซ์ติดตั้งอยู่ในซอฟต์แวร์ ฉันไม่ได้ใช้มันมากนัก แต่ฉันรู้ว่ามันอยู่ที่ไหนซักแห่ง!
dext0rb

2
ขณะเดินสายติดตาม (กด W ในมุมมอง PCB) ให้กดปุ่ม Tab และคุณจะเห็นความต้านทานโดยประมาณ
ajs410

โดยทั่วไปสำหรับความซับซ้อนต่ำจำนวน 100 PWB ของฉันจะไม่จ่ายสำหรับ ICT (ทดสอบ) แต่สิ่งเหล่านี้มีแทร็กที่ตาบอดดังนั้นฉันจะ ... สิ่งที่ต้องพิจารณา ... และวัดความจุบนกระดานเปล่า V + <> GND
Tony Stewart Sunnyskyguy EE75

ฉันไม่ได้จ่ายเงินเพื่อควบคุมอิมพีแดนซ์ในบอร์ดเหล่านี้ เส้นที่จำลองขึ้นใน Hyperlynx (MentorGraphics) แสดงรูปคลื่นที่สมบูรณ์แบบ (หรือภายในสเปค) ที่ค่อนข้างสมบูรณ์ ในการสร้างแบบจำลองนี้ฉันได้สร้างสายส่งใหม่ขึ้นและผ่านพร้อมกับรุ่น IBIS ฉันไม่มีขอบเขตของแบนด์วิดท์เพียงพอที่จะตรวจสอบสัญญาณจริงอย่างถูกต้อง = (
James

1
สวัสดี @ TonyStewart ขอขอบคุณสำหรับการสนับสนุนของคุณ 1) บอร์ดต้นแบบไม่ต้องการการฆ่าอย่างรวดเร็ว เปิดใช้งานโดยไม่มีการเปลี่ยนแปลงที่มีผล 2) ไม่แน่ใจว่ามันหมายถึงอะไร - นาฬิกาเป็นสัญญาณออก 3) Hysteresis เปิดใช้งานอยู่ ปิดการใช้งานโดยไม่มีการเปลี่ยนแปลงผลกระทบ 4) เพิ่มการสังหารไม่ได้เปิดใช้งานบนโปรโต เปิดใช้งานโดยไม่มีการเปลี่ยนแปลงที่มีผล 5) ไม่ผ่านการทดสอบ 7) ฟังก์ชั่นการตั้งค่าพินไม่เปลี่ยนบิตอื่น ๆ 8) รหัสแบบไม่ต่อเนื่องสำหรับพินควบคุมสำหรับลูปสำหรับข้อมูล / ที่อยู่ 9) ฉันต้องเปิดใช้งาน WE เมื่อใด ตัวควบคุม EMC ควรทำสิ่งนี้ให้ฉันได้ไหม 10) ไม่ได้ระบุบิตก่อนที่จะถูกตั้งค่า ฉันมีต้นแบบอื่นตามคำสั่งอยู่ที่นี่ในสัปดาห์หน้า
James
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.