Apakah FPGA layak untuk proyek semacam itu?

12

Saat ini saya sedang mengerjakan Super OSD - proyek tampilan layar. http://code.google.com/p/super-osd memiliki semua detail.

Saat ini saya menggunakan MCU dsPIC untuk melakukan pekerjaan. Ini adalah DSP yang sangat kuat (40 MIPS @ 80 MHz, operasi tiga siklus register tunggal dan unit MAC) dan, yang penting, ia datang dalam paket DIP (karena saya menggunakan papan tempat memotong roti untuk prototipe itu.) Saya benar-benar mendapatkan setiap bit terakhir dari kinerja menjalankan OSD - chip memiliki sekitar 200ns atau 10 siklus per piksel pada tahap output sehingga kode harus sangat dioptimalkan di bagian ini (untuk alasan ini akan selalu ditulis dalam majelis.)

Sekarang saya sedang mempertimbangkan untuk menggunakan FPGA untuk ini karena karena arsitektur paralel dari chip seperti itu dimungkinkan untuk memiliki program logika sederhana yang menjalankan OSD. Hal-hal seperti menggambar garis dan kode algoritmik akan ditangani oleh MCU, tetapi output aktual akan dilakukan dengan FPGA. Dan beberapa hal sederhana seperti mengatur piksel atau menggambar garis horizontal dan vertikal yang ingin saya integrasikan ke FPGA, untuk meningkatkan kecepatan.

Saya punya beberapa pertanyaan:

  1. Akankah harganya jauh lebih mahal? FPGA termurah yang saya temukan adalah ~ £ 5 masing-masing dan dsPIC adalah £ 3 masing-masing. Jadi biayanya lebih mahal, tapi berapa harganya?
  2. DsPIC cocok dalam paket SO28. Saya tidak ingin menjadi lebih besar dari SO28 atau TQFP44. Sebagian besar FPGA yang saya lihat datang dalam BGA atau TQFP> 100 paket, yang bukan merupakan pilihan saat ini, karena ukuran geser, dan kesulitan menyoldernya sendiri.
  3. Berapa banyak arus yang digunakan oleh FPGA? Solusi dsPIC saat ini mengkonsumsi sekitar 55mA +/- 10mA, yang oke saat ini. Apakah FPGA akan mengkonsumsi lebih atau kurang? Apakah variabel, atau cukup statis, seperti dsPIC?
  4. Saya memerlukan setidaknya 12KB memori grafis untuk menyimpan grafik OSD. Apakah FPGA's memiliki jenis memori yang tersedia pada chip atau ini hanya tersedia dengan chip eksternal?
Thomas O
sumber

Jawaban:

7

Pada prinsipnya ini adalah kandidat yang baik untuk desain berbasis FPGA. Mengenai kebutuhan Anda:

iklan 1. FPGA kemungkinan besar akan lebih mahal, tergantung seberapa besar tergantung pada perangkat yang Anda pilih. Sekilas Spartan 3 terkecil dari Xilinx (XC3S50AN) akan lebih dari cukup untuk tugas ini (~ 10 £ dari Farnell). Saya pikir Anda dapat menganggap ini adalah batas atas untuk biaya (memiliki 56kB RAM di dalamnya, jadi lebih dari yang Anda butuhkan). Anda dapat menemukan perangkat yang lebih murah baik dari penawaran Xilinx atau pesaing mereka Altera dan Lattice.

iklan 2. Paket ini adalah masalah yang sulit, saya juga tidak melihat FPGA dengan tapak yang lebih kecil. Namun mungkin Anda dapat menggunakan perangkat CPLD (demi argumen CPLD adalah FPGA kecil) yang mungkin dalam paket lebih kecil (PLCC atau QFN). Di sisi positifnya mereka akan lebih murah (bahkan satu $) di sisi negatif kemungkinan besar tidak akan memiliki RAM di dalamnya. Dengan CPLD mungkin Anda akan membutuhkan chip SRAM eksternal.

iklan 3. FPGA dan konsumsi CPLD saat ini sangat tergantung pada desain yang diprogram. Namun ada kemungkinan besar bahwa FPGA dan terutama desain CPLD akan mengkonsumsi kurang dari solusi Anda saat ini.

iklan 4. FPGA memang memiliki memori seperti itu di dalam, CPLD pasti tidak. Ini dapat diselesaikan dengan chip SRAM eksternal (atau dua). Sebagai contoh:

| SRAM 1 | <--> | CPLD | <--> | UC |
| SRAM 2 | <-->

Dalam pengaturan seperti itu saat UC menulis ke SRAM 1, CPLD akan menampilkan data dari SRAM 2. CPLD harus mampu menangani kedua tugas secara bersamaan.

Tentu saja Anda dapat menyelesaikan ini dengan cara lain juga:
1) menggunakan uController lebih cepat (misalnya ARM)
2) menggunakan perangkat dengan beberapa kain yang dapat diprogram dan uC di dalam (misalnya FPSLIC dari Atmel, namun saya belum pernah menggunakan perangkat tersebut dan saya tahu sangat sedikit tentang itu)

Penafian standar -> karena desain adalah masalah terbuka, dengan banyak kendala dan kemungkinan solusi apa pun yang saya tulis di atas mungkin tidak berlaku untuk kasus Anda. Saya percaya ada baiknya memeriksa opsi itu.

mazurnifikasi
sumber
4

Anda bisa menggunakan CPLD daripada FPGA, seperti salah satu bagian Altera MAX II. Mereka tersedia dalam paket QFP44, tidak seperti FPGA. Mereka sebenarnya FPGA kecil, tetapi Altera mengecilkan aspek itu. CPLD memiliki keunggulan dibandingkan kebanyakan FPGA karena memiliki memori konfigurasi on-chip, FPGA umumnya memerlukan chip flash eksternal. Ada CPLD lain, tentu saja, tapi saya suka MAX II.

Tidak mungkin untuk mengatakan apa konsumsi saat ini, karena itu tergantung pada kecepatan clock dan jumlah logika yang sebenarnya digunakan.

FPGA biasanya memiliki jumlah memori on-chip yang terbatas yang dapat Anda gunakan, tetapi Anda akan membutuhkan memori eksternal dengan CPLD.

Pilihan lain adalah chip XMOS , tetapi yang terkecil (XS1-L1) ada dalam paket QFP64. Ini memiliki banyak RAM on-chip - 64k.

Leon Heller
sumber
2

1) Ya, FPGA akan lebih mahal. Tidak hanya chip itu sendiri lebih mahal, tetapi Anda juga akan memerlukan memori Flash untuk menyimpan pemrograman. FPGA + Flash mungkin 3x biaya hanya dsPIC ... sekitar $ 10 untuk FPGA kecil dan $ 3 untuk Flash kecil.

2) Mereka mungkin ada, tapi saya tidak benar-benar mengetahui adanya FPGA yang tidak dipasang di permukaan. Sebagian besar dari mereka mungkin QFP atau BGA.

3) FPGA mungkin akan menarik sekitar 3x arus yang dilakukan dsPIC, tapi itu bisa naik atau turun tergantung pada fitur apa yang Anda gunakan. FPGA memiliki banyak fitur yang dapat meningkatkan daya tarik. Tapi harapkan setidaknya 150 mA.

4) FPGA biasanya memiliki blok RAM di dalamnya. Semua kecuali FPGA terkecil harus memiliki banyak memori.

Lainnya menyebutkan CPLD. Jika Anda hati-hati mempartisi desain Anda, Anda mungkin bisa memindahkan beberapa operasi kecil tapi mahal ke dalam CPLD. Ini akan seperti co-prosesor mini.

ajs410
sumber
2

Solusi termurah dengan kurva belajar terendah adalah pindah ke prosesor yang lebih tinggi, ARM kemungkinan besar.

Memprogram FPGA / CPLD dalam VHDL / Verilog adalah kurva pembelajaran yang cukup curam yang berasal dari C untuk banyak orang. Mereka juga bukan bagian yang terlalu murah.

Menggunakan ARM yang mampu, mungkin LPC1769? (korteks-M3) Anda mungkin juga dapat mengganti PIC18 dalam desain Anda.

Sedangkan untuk masalah through hole, selama Anda bisa mendapatkan SoC dalam paket tipe pin QFP yang terbuka, cukup ambil beberapa adaptor ini untuk pin yang diperlukan untuk prototyping Anda.

Menandai
sumber
Dia menggunakan dsPIC, bukan PIC18.
Leon Heller
2
dia menggunakan keduanya, lihat skema dalam dokumentasi yang dia tautkan. PIC18 menjalankan tombol / antarmuka dan berbicara dengan dsPIC melalui I2C. DsPIC hanya melakukan pemrosesan video.
Tandai
1

Kecenderungan saya adalah menggunakan sesuatu untuk menyangga waktu antara prosesor dan layar. Memiliki perangkat keras yang dapat menampilkan seluruh bingkai video tanpa campur tangan prosesor mungkin bagus, tetapi mungkin berlebihan. Saya akan menyarankan bahwa kompromi terbaik antara kompleksitas perangkat keras dan perangkat lunak mungkin akan membuat sesuatu dengan dua atau tiga register shift 1024-bit independen (dua bit per piksel, untuk memungkinkan hitam, putih, abu-abu, atau transparan), dan sarana beralih di antara mereka. Mintalah PIC memuat register geser, dan kemudian minta perangkat keras mulai memindahkan yang keluar saat ia menetapkan sebuah bendera sehingga PIC dapat memuat yang berikutnya. Dengan dua register geser, PIC akan memiliki 64us antara waktu itu dikatakan register geser tersedia dan waktu semua data harus digeser. Dengan tiga register shift,

Perhatikan bahwa sementara FIFO 1024-bit akan sama baiknya dengan dua register shift 1024-bit, dan dalam CPLD, sebuah FIFO hanya berharga satu macrocell per bit, ditambah beberapa logika kontrol, di sebagian besar jenis logika lainnya, dua bit register geser akan lebih murah daripada sedikit FIFO.

Pendekatan alternatif akan menghubungkan CPLD ke SRAM, dan membuat subsistem video sederhana dengan itu. Secara estetika, saya suka generasi video on-the-fly, dan jika seseorang membuat chip register-1024-bit yang bagus dan murah itu pendekatan yang saya sukai, tetapi menggunakan SRAM eksternal mungkin lebih murah daripada menggunakan FPGA dengan sumber daya yang cukup untuk membuat beberapa register shift 1024-bit. Untuk resolusi output Anda, Anda perlu mengeluarkan data pada 12M piksel / detik, atau 3MBytes / detik. Seharusnya memungkinkan untuk mengatur hal-hal yang memungkinkan data untuk clock pada kecepatan hingga 10mbps tanpa terlalu banyak kesulitan dengan interleaving siklus memori; Trik terbesar adalah mencegah korupsi data jika pulsa sinkronisasi tidak datang pada saat yang tepat yang diharapkan.

supercat
sumber