Caranya: Gadget Logika yang Dapat Diprogram (CPLD)

Kompleks Gadget Logika Programmable (CPLDS) berisi blok bangunan untuk berbagai IC logika 7400-serpih. Total sirkuit dapat dirancang pada PC serta kemudian diunggah ke CPLD untuk implementasi segera. Mikrokontroler yang ditautkan ke CPLD seperti mikrokontroler yang dipasangkan dengan kartu sirkuit yang telah diprogram ulang serta toko elektronik yang benar-benar penuh.

Pada awalnya kami tidak yakin dengan pesona yang luas serta penerapan CPLDS dalam proyek-proyek penghobi, namun kami telah diyakinkan. Gadget logika khusus dapat menyingkirkan hari-hari membaca lembar data, menemukan kombinasi IC logika yang sempurna, serta kemudian menunggu chip tiba. Papan sirkuit lebih mudah dengan CPLD karena satu chip dengan penempatan pin yang dapat diprogram dapat menggantikan 100-an IC logika pribadi. Kesalahan sirkuit dapat dikoreksi dengan mengunggah desain baru, bukannya etsa serta mengisi papan sirkuit baru. CPLD cepat, dengan waktu reaksi mulai dari 100MHz. Terlepas dari fleksibilitas ekstrim mereka, CPLD adalah inovasi yang matang dengan chip mulai dari $ 1.

Kami memiliki papan kemajuan pemrograman pemrograman rumah yang dapat diputar untuk Anda mulai. Jangan khawatir, papan ini memiliki antarmuka port serial untuk bekerja dengan CPLD, serta tidak memerlukan programmer JTAG yang terpisah (biasanya paralel).

Intro ke CPLDS.

Kapan memanfaatkan CPLD

Pertimbangkan untuk memanfaatkan CPLD ketika gaya membutuhkan lebih dari satu 7400 IC logika. CPLD akan lebih murah, lebih cepat, serta dapat diprogram dengan konfigurasi pin-out sempurna Anda untuk PCB yang lebih mudah.

Gunakan CPLD dalam gaya rumit yang mungkin memerlukan sejumlah iterasi. Lebih mudah untuk menata sirkuit baru dalam aplikasi perangkat lunak serta mengunggahnya ke CPLD daripada merancang, etsa, serta barang-barang papan sirkuit baru.

Untuk kecepatan maksimum serta respons langsung, pilih CPLD. Perbedaan kecepatan luar biasa; CPLD dimulai pada 100MHz, sementara mikrokontroler merespons interupsi pada beberapa MHz. Gaya CPLD Jenis sirkuit yang bereaksi terhadap stimulus luar, reaksi terjadi hampir secara instan. Mikrokontroler mengeksekusi kode untuk bereaksi terhadap peristiwa, bahkan rutinitas interupsi memiliki latensi yang relatif tinggi.

CPLD vs FPGA.

FPGA jauh lebih baik dipahami daripada CPLD, namun mereka berbagi banyak karakteristik. Analogi ini tidak sempurna, namun kami menyukainya: di mana FPGA adalah inti prosesor yang diprogram ulang, CPLD adalah kartu sirkuit atau papan tempat memotong roti. FPGAS Ganti mikrokontroler, memori, serta komponen lainnya. CPLD mengambil IC logika, serta bekerja dengan baik dengan mikrokontroler.

Produsen

Altera serta Xilinx, produsen CPLD terbesar, jauh lebih baik dipahami untuk FPGA mereka. Kisi semikonduktor adalah satu lagi produsen CPLD besar dengan lebih sedikit lingkungan berikut. Atmel membuat versi PIN-yang kompatibel dengan CPLDS standar industri lama.

Jika Anda berencana untuk bekerja pada 5VOLTS, pilihan Anda terbatas. Xilinx XC9500 CPLDS masih ditawarkan sebagai saham lama baru, namun biaya empat kali lebih dari 3,3Volt setara. Atmel’s ATF1502 series bekerja pada 5VOLTS, namun mereka tidak menawarkan lingkungan kemajuan gratis.

Pada 3.3Volt ada lebih banyak opsi, namun CPLD baru secara progresif memiliki inti yang berjalan pada 2.5Volts, 1.8volts, atau lebih rendah. Altera Maxii serta seri Xilinx XC9500XL kemungkinan besar merupakan CPLD 3.3Volt yang paling menonjol. Xilinx juga membuat COOLRUNNERII CPLD, namun hanya tersedia dalam bundel TQFP serta membutuhkan pasokan 1.8volt terpisah untuk inti.

Paket

Sebagian besar produsen menawarkan satu atau dua CPLD dalam paket Hobi PLCC 44 yang ramah, meskipun ini mulai menghilang. PLCC adalah chip instalasi permukaan SOIC dengan pin di keempat sisi. Soket PLCC44 biasanya ditawarkan melalui versi melalui-lubang serta SMD. Sayangnya, rumah tangga CPLD yang lebih baru mulai menyingkirkan bundel PLCC serta hanya menawarkan 44 pin serta chip TQFP yang lebih besar, seperti Coolrunnerii Xilinx.

Lingkungan pengembangan

Sebagian besar produsen menawarkan suasana kemajuan gratis yang mendukung entri gaya memanfaatkan skema sederhana, selain Verilog atau VHDL. Banyak yang tidak akan mendukung FPGA terbaru dalam versi gratis, namun kami hanya membutuhkan bagian CPLD. Altera memiliki kuartus, Xilinx memiliki ISE, serta kisi memiliki isplever. Atmel memiliki Prochip Designer untuk seri ATF15xx, namun mereka hanya menawarkan izin uji coba 6 bulan – yang mereka tidak akan benar-benar memberi kami.

Programmer.

Dewan kemajuan yang kami sajikan tidak memerlukan programmer JTAG yang terpisah sejak mikrokontroler PIC sudah memprogram CPLD. Jika Anda menginginkan programmer luar, yang termurah adalah programmer port paralel: Paralel Cable III untuk Xilinx serta BytleBlaster untuk Altera. Klon yang terjangkau, serta skema, ditawarkan di Sparkfun. OpenOcd adalah programmer USB JTAG generik yang akan bekerja dengan banyak CPLD, FPGA, serta lengan.

Pilihan kita

Kami akhirnya menetap pada seri Xilinx XC9500XL sejak HAd Kemajuan yang murah. Kami dapat menggunakan untuk menguji programmer JTAG kami sebelum menerapkan seluruh desain.

DO-CPLD-DK dari Digilent mencakup XC9572XL, coolrunnergii, serta programmer port paralel. Nu Horizons memiliki beberapa desain non-RoHS lama seharga $ 40, namun karena penanganan tipe variabel yang ceroboh dalam skrip pemrosesan kartu riwayat kredit mereka, kami tidak dapat melakukan pemesanan secara online. Kami mencoba melakukannya melalui telepon tetapi mereka menolak untuk mengambil pesanan kecil di telepon, bahkan selama kerusakan situs web. Pada akhirnya, lebih murah untuk membayar biaya penuh di Digikey (# 122-1512-ND) setelah memasukkan biaya pengiriman selangit Horizon baru. Kami biasanya tidak akan menyebutkan ini, namun hanya dengan dua lokasi untuk membeli papan, kemungkinan besar patut diketahui pengalaman kami.

Papan Kemajuan CPLD.

Klik di sini untuk gambar skematis ukuran penuh (PNG). Sirkuit serta PCB dirancang memanfaatkan versi freeware dari Cadsoft Eagle. Semua data untuk pekerjaan ini dimasukkan dalam arsip kerja yang ditautkan di akhir artikel.

Sirkuit

A Pic 24FJ64GA002 Microcontroller (IC1) menyediakan antarmuka pemrograman individu serta pemrograman ke CPLD. Kami memanfaatkan pic $ 4 ini dalam banyak pekerjaan karena fungsi PIN PIPHERAL membuat papan routing benar-benar mudah. Periksa pengantar kami ke PIC24F untuk detail lebih lanjut. Pic perlu berinteraksi dengan port serial PC, jadi kami menambahkan transceiver MAX3232 RS232 yang terjangkau. Antarmuka serial harus bekerja dengan adaptor seri USB->.

Opsi kami dari CPLD (IC3), xilinx xc9572xl (PDF), ditautkan antara pic serta sejumlah komponen lain. Kami dapat menghasilkan rangkaian sirkuit tanpa akhir antara pic serta chip lain yang memanfaatkan logika yang diprogram ulang di dalam CPLD. Pic akan memprogram CPLD dengan kode yang dikirim dari port serial PC, namun kami masih membawa jtag pin ke header untuk debugging di luar yang sederhana.

A DS1085 Digital Programmable Oscillator (IC4) menghasilkan frekuensi clock antara 8KHz serta 133MHz, pada peningkatan 10KHz. Ini sangat mirip dengan DS1077 yang kami bahas sebelumnya, namun memiliki langkah-langkah antara semua frekuensi. DS1085 membutuhkan pasokan 5volt (VR2). Antarmuka I2C juga berjalan pada 5Volts, jadi kami menghubungkannya dengan pin pic toleran 5volt. Dimungkinkan untuk memanfaatkan 3.3Volt 66MHz 1085L sebagai gantinya, serta menghilangkan pasokan 5volt.

Kami menggunakan 3.3 Volt SOT223 Regulator yang murah (VR1) untuk memberi daya pada sebagian besar sirkuit. Pasokan 5Volt (VR2) dapat dikecualikan jika Anda memanfaatkan osilator 1085L 3.3Volt yang lebih lambat.

CPLD umumnya digunakan sebagai pengontrol memori, jadi kami menyertakan 32K SRAM (IC5) pada papan kemajuan. Latch 3.3Volt dengan antarmuka input toleran 5volt input memori ke berbagai macam tegangan luar (IC6). Input kait dipegang rendah dengan jaringan resistor 1MOHM (RN1). Kami akan membahas bagian ini secara luas dalam artikel yang akan datang.

PCB.

Dewan adalah desain satu sisi semu. Kami membuat sejumlah kompromi sehingga kami dapat membuat prototipe PCB yang sangat eksperimental ini sendiri. Kami menyajikan papan ‘seperti’ karena hards die lain yang mungkin ingin mengetsa papan ini di rumah. Jika Anda mengirim PCB ke rumah papan, cobalah untuk memperbaiki masalah ini sebelum membuat papan dua sisi ‘nyata’.

Satu pin listrik dari CPLD kehilangan kapasitor decoupling seluruhnya; Tidak ada metode untuk menempatkan kapasitor di area itu. Satu kapasitor decoupling CPLD, serta kapasitor decoupling SRAM, adalah bagian-bagian melalui lubang. Memanfaatkan bagian-bagian lubang ini menyingkirkan beberapa kabel jumper.

Kabel jumper di bagian belakang papan dioptimalkan untuk produksi satu sisi, daripada praktik gaya yang hebat. Kami memalsukan papan dua sisi dengan menyolder bus listrik di belakang. Gaya papan dua sisi asli harus melanjutkan bus daya untuk mencegah jalur sinyal persimpangan, serta menyertakan kapasitor decoupling yang hilang.

Kami menggunakan permukaan instal permukaan PLCC chip, namun versi through-hole jelas merupakan ide yang jauh lebih baik. Kami meskipun versi SMD akan sederhana untuk disolder, namun itu [ternyata] menjadi mimpi buruk. Kami benar-benar menginginkan CPLD untuk berada di depan papan untuk presentasi yang paling keren. Papan dua sisi yang sesuai dengan berlapis melalui lubang dapat memiliki soket melalui lubang di bagian depan, namun ini tidak mungkin dengan papan prototipe 1-sisi kami.

Daftar Bagian

Klik di sini untuk diagram penempatan ukuran penuh (PNG).

Bagian
Nilai

IC1.
Pic25fj64ga002 (SOIC)

IC2.
MAX3232CSE (SOIC-N)

Ic3.
XC9572XL-10PCG44C (PLCC)


PLCC44 Socket, SMD

Ic4.
DS1085 atau DS1085L (SOIC)

IC5.
32KX8, 3.3V, SRAM (SOJ)

Ic6.
74LVT573D (SOIC)

Vr1.
3.3V Regulator, LD1117S33 (SOT223)

Vr2.
Regulator 5V, LD1117S50 (SOT223)

C1-11,13-17.
Kapasitor Decoupling 0.1uf (0805)

C12.
0,01uf kapasitor (0805)

C15,16.
Kapasitor Decoupling 0.1uf (melalui lubang)

C18.
10UF Tantalum Capacitor (a)

R1,2.
390ohm Resistor (0805)

R3-5.
Resistor 2000ohm (0805)

Rn1.
Jaringan Resistor 1Mohm (9 Pin)

LED1,2.
LED (08.05)

X1.
konektor port serial perempuan DB9 * belum diuji

J1.
2.1mm power jack.

ICSP, JTAG, SV1
0,1 “tajuk pin, sudut kanan

S1.
Sakelar taktil (DTSM-6)

Firmware.

Firmware ditulis dalam C menggunakan versi presentasi gratis dari kompiler PIC C30. Temukan semua tentang bekerja dengan foto ini dalam pengantar kami ke seri PIC 24F. Firmware termasuk dalam arsip kerja di akhir artikel.

Kami menginginkan metode super sederhana untuk berinteraksi dengan perangkat keras di papan tulis tanpa siklus uji-program kompilasi tanpa akhir. Kami membuat versi khusus dari firmware bajak laut bus yang menyediakan antarmuka terminal ASCII sederhana ke DS1085 Clock Chip (I2C), antarmuka Programing CPLD (JTAG), serta antarmuka 3 kabel (SPI) ke CPLD. Periksa tutorial bajak laut bus untuk latar belakang pada sintaks sederhana yang digunakan dengan firmware.

Firmware bajak laut bus asli menangani sejumlah protokol yang memiliki pin yang sama persis. Untuk versi CPLD, kami mengubah tugas PIN untuk membentuk koneksi pada papan kemajuan. Kami juga menghilangkan modul yang tidak digunakan serta opsi.

CPLD Blinky LED Contoh

Kami menyiapkan sejumlah gaya di lingkungan kemajuan ISE Xilinx. Skema, file penempatan pin, serta gaya kompilasi (XSVF) termasuk dalam arsip kerja yang ditautkan di akhir artikel. Penjelasan lengkap ISE berada di luar jangkauan artikel ini; Kami menemukan data bantuan yang cukup berguna untuk membuat contoh-contoh ini.

Gaya pertama hanya menyalakan LED yang ditautkan ke pin 8 CPLD.

Siapkan file XSVF

XSVF adalah format pemrograman JTAG terkompresi, seperti yang dijelaskan oleh Xilinx dalam catatan aplikasi ini (PDF). XSVF tidak terbatas pada pemrograman perangkat xilinx, serta dapat siap untuk semua jenis chip yang menyediakan file BSDL JTAG yang khas.

Buka Alat Pemrograman Effect dari Panel Pekerjaan Suite Gaya ISE di bawah konfigurasi perangkat target-> dampak.

Pilih pilihan untuk menghasilkan file Limit Scan, serta atur tipe ke XSVF.

Berikan XSVF Keluarkan nama data serta kemudian tambahkan gambar CPLD yang dikompilasi (EX1.JED) saat diminta untuk menambahkan perangkat.

Anda harus melihat rantai JTAG yang berisi satu perangkat.

Klik pada gadget serta memilih program; Efek akan mencatat urutan pemrograman ke file XSVF.

Dengan data XSVF di tangan, saatnya membuka terminal serta memprogram CPLD. Kami menyukai istilah Tera serta Hercules di Windows. Anda harus mengizinkan aliran Xon / Xoff mengelola di klien untuk memanfaatkan antarmuka JTAG. Pengaturan sisi PC default untuk terminal papan kemajuan adalah 115200bps, 8n1.

Hiz> m <-elect mode 1. Hiz. 2. I2C. 3. JTAG. 4. Raw3Wire. Mode> 3 <-jtag Set mode 900. 602 jtag siap Jtag> (2) <-probe jtag rantai makro XXX JTAG rantai init xxx jtagsm: reset xxx jtagsm: reset-> idle
XXX JTAGSM: Idle-> Instruction Register (tertunda satu bit untuk TMS)
xxx jtagsm: ir-> idle
xxx jtagsm: idle-> register data
xxx jtagsm: dr-> idle
xxx jtagsm: reset
xxx jtagsm: reset-> idle
xxx jtagsm: idle-> register data
Laporan Rantai XXX JTAG:
Perangkat 0x01 (s)
# 0x01: 0xc9 0x02 0x06 0x9a <-xc9572xl merespons xxx jtagsm: dr-> idle
JTAG>

Di terminal kita masuk ke menu mode (m), serta pilih JTAG (3). Makro 2 menyelidiki rantai JTAG, dalam situasi kami, ini hanya CPLD. Laporan rantai memberi tahu kami bahwa chip terkait serta merespons. Memeriksa lebih lanjut tentang antarmuka JTAG.

Sekarang kita dapat menjalankan XSVF Programmer, Makro (3), serta mengunggah data XSVF dari terminal dalam mode biner. Contoh pertama hanya menyalakan LED pada PIN 8. Jika lampu LED, kami dapat mengonfirmasi bahwa pemrograman berhasil. Jika LED Anda tidak menyala, jangan putus asa; Terkadang programmer jtag menempel serta reset makro (1) akan mendapatkan chip.

Dipimpin dengan kecerahan penuh.

74LS32 / 4071 atau GATE, berkedip pada setengah laju (/ 2)

Elemen utama dari papan kemajuan CPLD adalah sinteser frekuensi 1085 (L) yang ditautkan dengan pin 7 CPLD. Contoh selanjutnya menggunakan logika atau gerbang, seperti ic 74LS32 atau 4071, untuk mengedipkan LED setiap kali sinyal jam tinggi. Pada tingkat jam paling lambat yang berkedip akan cepat lihat, namun kita harus mendapatkan dampak peredupan PWM yang bagus dibandingkan dengan contoh pertama.

JTAG> M <-Pilih mode 1. Hiz. 2. I2C. 3. JTAG. 4. Raw3Wire. Mode> 2 -Si2C antarmuka ke DS1085
Set mode 900.
202 i2c siap
I2c> (1) <-address browse makro XXX menjelajahi ruang alamat 7bit i2c. Menemukan gadget di: 0xb0 0xb1 <-found alamat DS1085 I2C>

Program CPLD seperti sebelumnya, serta kemudian beralih ke mode I2C untuk mendapatkan akses ke jam DS1085. Kita mungkin melihat alamat gadget di th

Leave a Reply