SDRAM Prototipe vs Kesengsaraan Produksi

11

Saya memiliki desain menggunakan LPC1788 bersama dengan modul SDRAM dari ISSI ( IS42S32800D ). Ini adalah antarmuka 32bit.

Saya telah mengeluarkan desain ini dan membuat prototipe yang dibuat dengan pabrikan PCB yang melakukan 6 lapisan prototipe. Prototipe PCB berfungsi dengan baik. Saya kemudian berpikir saya akan mendapatkan PCB yang diproduksi dalam jumlah kecil (100) dari pemasok PCB saya yang biasa. Saya memberi mereka informasi tumpukan yang digunakan prototipe saya untuk memastikan tidak akan ada masalah.

Namun! Saya memiliki masalah besar dengan dewan produksi. Pada awalnya saya tidak dapat meningkatkan respons dari SDRAM apa-begitu dengan kode yang sama yang saya gunakan di papan prototipe saya. Papan sebelumnya bekerja pada 120Mhz jadi saya yakin ada yang salah dengan papan baru ini. Saya kemudian menemukan posting di mana orang menyarankan menggunakan Mode Repeater pada jalur data SDRAM (saya belum pernah menggunakan ini sebelumnya) dan ini menimbulkan respons dari SDRAM, namun tidak stabil. Saya dapat menulis ke 16 atau lebih alamat, tetapi kemudian dengan membaca selanjutnya data yang dikembalikan (di setiap alamat) adalah data yang saya tulis terakhir (mungkin karena Mode Repeater). Ketika saya menonaktifkan mode repeater, data yang dikembalikan adalah 0xFFFFFFF. Saya sekarang mencoba untuk terhubung pada 48Mhz, konfigurasi terendah saya punya waktu untuk.

Saya menggunakan resistor terminasi yang sama (pada jalur Data) dari 22Ohms di kedua papan, garis data rata-rata panjangnya 3cm. Garis jam adalah 2,4 cm. Garis alamat rata-rata sepanjang 3,8 cm.

Apakah ini terlalu tidak spesifik, haruskah saya menunda jam lebih lama jika secara substansial lebih pendek? Saya benar-benar terjebak di sini, karena saya tidak mengubah apa pun tentang desain yang saya harapkan untuk proses pembuatan yang mulus untuk papan ini.

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

Berikut adalah konfigurasi tumpukan PCB untuk prototipe asli (yang berfungsi): masukkan deskripsi gambar di sini

Berikut adalah konfigurasi tumpukan PCB untuk PCB produksi (tidak berfungsi) masukkan deskripsi gambar di sini

Berikut adalah perutean untuk SDRAM: Routing SDRAM

James
sumber
3
Apakah kontrol impedansi sama antara proto dan produksi berjalan?
dext0rb
Saya tidak yakin. Saya tidak cukup tahu tentang integritas sinyal untuk mendefinisikan dengan benar parameter ini untuk rumah papan. Saya merasa bahwa jika saya menentukan parameter tidak tahu apa yang saya lakukan, saya akan membuat masalah daripada memperbaiki masalah.
James
Dan apakah Anda membayar mereka untuk memverifikasi impedansi (yang @dextorb menyarankan Anda mengontrol)?
Brian Carlton
Bukan panjang rata-rata yang penting. Ini adalah minimum dan maksimum di dalam grup.
Brian Carlton
1
Bagaimana integritas sinyal pada penelusuran jam melihat pin SDRAM?
Brian Carlton

Jawaban:

10

Itu adalah tumpukan yang buruk. Inti Anda harus 0,2 mm dan keseimbangan ketebalan Anda harus di prepreg antara lapisan 3 dan 4 (Bagian 1 dan Bagian 2).

Alasan untuk ini adalah bahwa, untuk setiap sinyal pada jejak, perlu ada jalur arus balik di pesawat tepat di bawahnya. Arus balik di pesawat akan mencoba meminimalkan induktansi (yaitu loop area), yang berarti akan mencoba mengikuti jejak sinyal. Jika jejak sinyal jauh dari pesawat, itu akan mencari jejak lain untuk menemukan jalur balik. Ini adalah elektromagnetik yang Anda lawan.

Lebih jauh, dengan memiliki lapisan dalam pada jarak yang berbeda dari bidang referensi mereka (ingat, semua rel pasokan terlihat seperti tanah di AC!) Dibandingkan dengan jarak lapisan luar, Anda membuat perubahan impedansi setiap kali Anda menukar lapisan (meskipun ini dapat dilawan dengan jejak perubahan lebar, meskipun saya merasa sepadan dengan kesulitan hanya sekali), dan Anda secara signifikan meningkatkan potensi crosstalk dan gangguan lainnya.

Hal lain yang perlu Anda periksa adalah bahan yang digunakan: ada lebih dari 20 bahan berbeda yang menyebut diri mereka "FR-4", misalnya. Barang-barang yang biasa saya gunakan disebut 370-HR. Berperilaku cukup baik dengan sinyal 100-500 MHz berkecepatan tinggi.

Mengenai garis jam, IIRC pada desain SDRAM terakhir saya, saya telah mengatur jam sehingga ujungnya terjadi terakhir (jejaknya terpanjang 1 cm), setelah semua alamat dan jalur data stabil. Jadi, ya, memperlambat jam layak dicoba. Saya tidak memerlukan kontrol impedansi pada jalur SDRAM.

Resistor terminasi Anda harus ditempatkan sedekat mungkin dengan driver garis. Jika mereka tidak berada dalam jarak sekitar 0,5 cm, mereka dapat menyebabkan pantulan sendiri, menghasilkan overshoot dan dering. IMHO, panjang jejak 3 cm sangat pendek untuk membutuhkan resistor terminasi (saya menggunakannya mulai sekitar 6-10 cm); Sudahkah Anda mencoba mengeluarkannya?

Hal lain yang perlu diperiksa adalah pesawat Anda: Apakah Anda memiliki jejak sinyal yang melintasi pemotongan pesawat? Ini sangat tidak boleh, karena memaksa arus balik untuk mengambil rute panjang di sekitar cut.

Akhirnya, tingkat tepi adalah masalah besar dalam desain ini. Banyak chip memiliki waktu naik dan turun yang tidak perlu, dan mengurangi frekuensi clock tidak berpengaruh pada hal ini. Tepi cepat ini bagus untuk membuat refleksi. Ini adalah apa yang coba Anda perbaiki resistor terminator 22 ohm Anda: mereka memperlambat tepinya. Padahal, jika Anda benar-benar mendorongnya, alat seperti HyperLynx Mentor Graphics dapat digunakan untuk menemukan desain terminasi yang optimal.

Beberapa buku yang bisa saya rekomendasikan untuk Anda yang membahas semua ini dan lebih banyak lagi, dan kami bersumpah demi mereka di tempat kerja:

Buku-buku ini mencakup pengurangan EMI, desain pelindung, susun PCB, kontrol impedansi, decoupling catu daya, dan banyak lagi. Selanjutnya, Pak Ott mengajarkan seminar tentang topik ini (dilengkapi dengan salinan bukunya gratis).

Mike DeSimone
sumber
Buku Henry Ott adalah Alkitab bagi saya pada tahun 1980. Namun sebelum saya membacanya, saya sudah terampil melihat kebocoran RF dalam desain mekanik / listrik, bahkan sebelum pengujian EMC dimulai. Slot, dan radiator, serta antena dielektrik, dan kabel bus I / O adalah antena terbaik untuk masuk dan keluar.
Tony Stewart Sunnyskyguy EE75
Info bagus di sini, menurut simulasi Hyperlynx berdasarkan pada data simulasi yang saya masukkan, resistor 22 Ohm diperlukan karena jika tidak bentuk gelombang pada dataline (didorong pada kenaikan 1ns waktu) dari SDRAM sangat buruk dan beberapa pantulan melewati tegangan referensi.
James
Juga, rekomendasi stackup baik. Ada perbedaan kecil dalam stackup antara prototyper dan produsen. Saya menambahkan diagram ke Pertanyaan untuk Anda lihat. Juga - Saya telah membaca Integritas Sinyal yang Disederhanakan oleh Eric Bogatin. Info bagus di sini tetapi akan membutuhkan waktu untuk dicerna dan tenggelam dalam cukup untuk memulai tata letak papan baru dengan rekomendasinya.
James
Untuk apa nilainya, OP awalnya memiliki apa yang tampak seperti foto Altium. Altium memiliki seperangkat alat integritas sinyal yang dapat menggunakan file IBIS. Itu juga bisa memeriksa crosstalk. Tetapi perlu info stackup yang tepat untuk melakukan ini.
ajs410
1
Jadi pada titik ini, saya paling khawatir tentang resistor. Mereka tampaknya berada di tengah-tengah jejak bukannya di driver tempat mereka berada. Dalam aplikasi ini, yang terbaik adalah tidak menggunakan paket resistor, tetapi gunakan resistor individu kecil. Jika Anda harus menggunakan paket resistor, Anda harus meluangkan waktu untuk melakukan banyak pekerjaan yang lebih baik menukar resistor untuk membuat tata letak yang kurang melalui-gila. Hanya itu yang bisa saya katakan dari tata letak Anda, yang tidak memiliki paket menguraikan dan membuat setengah lapisan sulit untuk dilihat.
Mike DeSimone
4

Pada frekuensi semacam ini saya pikir masalah tipe lintasan tidak mungkin menjadi masalah utama, tentu untuk masalah keterlambatan. Ketika masalah dimulai dengan PCB baru, hal pertama yang harus dilakukan adalah menguji semua lini untuk kontinuitas (terhadap datasheet, bukan skematis Anda, jika skematis Anda memiliki kesalahan), dan lingkup setiap pin untuk memeriksa bahwa gelombang berada pada paling tidak masuk akal - bahkan jika ruang lingkup Anda tidak sampai untuk memeriksa rincian waktu itu harus cukup jelas jika ada pin yang terbuka atau pendek.

Melakukan hal-hal semacam ini tanpa ruang lingkup yang memadai dipenuhi dengan potensi bahaya - bagaimana Anda tahu berapa banyak margin yang Anda miliki? Bahkan jika itu berhasil, bagaimana Anda tahu apakah Anda benar atau tidak, dan rentan terhadap kegagalan bidang / produksi karena toleransi, suhu atau Fase Bulan?

mikeselectricstuff
sumber
2

2nd add Kami menganggap desain Anda telah diuji marjin dan kode tersebut sempurna dalam pertanyaan Anda. (tidak) Saya sarankan Anda memverifikasi yang berikut;

  1. Konfigurasikan IO agar memiliki luncuran cepat dan nonaktifkan filter input
  2. Aktifkan mode input pada jam
  3. Atur bit perubahan (9?) Untuk meningkatkan laju perubahan tegangan untuk pin antarmuka SDRAM
  4. Aktifkan mode repeater karena mereka dua arah dan tidak boleh dibiarkan mengambang pada input cmos.
  5. Ubah tegangan suplai untuk menentukan sensitivitas terhadap kesalahan.
  6. mode reset default untuk pin bus data adalah FUNC = 0X00, MODE = 0X02, HYSTERESIS = ENABLED, INVERT = DISABLED, dan SLEW = STANDARD
  7. Apakah panggilan Anda ke PINSEL_ConfigPin () dengan nilai fungsi baru, setel ulang MODE ke INACTIVE (tanpa resistor pull-down / pull-up) dan matikan HYSTERESIS?
  8. Apakah Anda menggunakan for / next loop atau kode diskrit seperti;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 dll.
  9. Apakah Anda menegaskan untuk mengaktifkan kembali pin WE, setiap kali saat dibutuhkan?
  10. Apakah kamu menggunakan? * pPIN & = ~ (0x00000007); // Hapus bit fungsi "

Saya ingat men-debug desain CMOS pertama saya dari mahasiswa pasca sarjana Fisika untuk rekaman portabel seismik, papan logika timer yang dapat diganti. Tidak ada firmware atau UC tetapi ia tidak pernah melakukan analisis toleransi kasus terburuk dan perangkat keras memiliki kondisi lomba di mana-mana ketika selusin papan lebih dibangun dan didebet sendiri. Prof Seismik membawa Kepala Departemen Fisika untuk bertanya mengapa saya tidak bisa membuat debug papan, maka saya harus menasihatinya variasi komponen memperlihatkan banyak kekurangan desain yang disebut kondisi waktu balapan karena kondisi metastabil dan ujung jam yang digunakan. Dia masih tidak mengerti, lalu saya bertanya kepadanya berapa banyak jari yang saya buka ketika saya mengangkat tangan sebelum mencapai tingkat pinggang saya dari rendah ke tinggi. Lalu dia berkata, Anda tidak bisa melakukan itu dan mengharapkan jawaban yang benar. Kataku, tepatnya. Itu adalah kondisi ras primitif. Mereka menjadi kurang jelas dengan lebih banyak tingkat kompleksitas. U dari Manitoba 1973.

1st menambahkan: Skema pemberhentian bus mana yang Anda gunakan? bis Metode (1) lebih disukai, Apakah 1,25Vdc bersih?


  1. Apakah membayar untuk TIK di papan ini? tes papan kosong adalah suatu keharusan
  2. Apakah Anda menentukan impedansi pada petunjuk tata letak gerber Anda?
  3. Apakah Anda menjalankan simulasi pada tata letak dengan toleransi?
  4. Konstanta dielektrik pada papan dan lapisan # pre-preg mengontrol impedansi stripline dan microstrip bersama dengan lebar jejak dan celah.

    Ada banyak kalkulator Z online gratis untuk stripline.

    Anda dapat mencoba mengukur kapasitansi pada trek besar atau bidang tanah dan membandingkan kedua papan kosong.

    Lihat juga sinyal dengan cakupan kecepatan tinggi dan amati pola mata data overshoot dan clock.

Harus ada penjelasan sederhana untuk kesalahan, tetapi tidak mudah ditemukan. Tetapi begitu Anda menemukan akar masalahnya ... Anda tidak akan membuat kesalahan itu lagi.

menambahkan: Kesalahan lain yang saya temukan adalah diagram tinggi tumpukan Anda tidak menunjukkan ketebalan lapisan Cu dan ada cukup untuk masuk dalam 6 lapisan kecuali itu salah atau ketebalan Cu 0,039 mm (TIDAK;)

Tony Stewart Sunnyskyguy EE75
sumber
Hanya komentar untuk OP - Saya melihat OP menggunakan Altium Designer, dan ada kalkulator impedansi yang dibangun ke dalam perangkat lunak. Saya belum sering menggunakannya tetapi saya tahu ada di suatu tempat!
dext0rb
2
Saat memasang jejak (tekan W dalam tampilan PCB), tekan tombol Tab dan Anda akan melihat perkiraan impedansi.
ajs410
umumnya untuk kompleksitas rendah Qty 100 PWB, saya tidak akan membayar untuk ICT (tes), tetapi ini memiliki trek buta jadi saya akan ... sesuatu untuk dipertimbangkan ... dan mengukur kapasitansi pada papan kosong V + <> GND
Tony Stewart Sunnyskyguy EE75
Saya tidak membayar untuk kontrol impedansi pada papan ini. Garis yang disimulasikan dalam Hyperlynx (MentorGraphics) menunjukkan bentuk gelombang yang cukup sempurna (atau juga dalam spesifikasi) berdasarkan desain saya yang diarahkan. Untuk memodelkan ini saya menciptakan kembali setiap saluran transmisi dan melalui bersama dengan model IBIS. Saya tidak memiliki ruang lingkup bandwidth yang cukup dengan benar menyelidiki sinyal aktual = (
James
1
Halo @TonyStewart, terima kasih atas dukungan Anda. 1) Papan prototipe tidak memerlukan bilah cepat. Diaktifkan tanpa perubahan efek. 2) Tidak yakin apa artinya ini - jam adalah output? 3) Histeresis dibiarkan aktif. Dinonaktifkan tanpa perubahan efek. 4) Peningkatan membunuh tidak diaktifkan pada proto. Diaktifkan tanpa perubahan efek. 5) Tidak diuji. 7) Fungsi Pin Config tidak mengubah bit lainnya. 8) Kode diskrit untuk pin kontrol, untuk loop untuk data / alamat 9) Kapan saya perlu mengaktifkan WE? Kontroler EMC harus melakukan ini untuk saya? 10) Bits DIPERHATIKAN sebelum ditetapkan. Saya punya prototipe lain yang dipesan, berada di sini minggu depan.
James