Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Desain tersemat dengan FPGA:Sumber daya perangkat keras

Catatan Editor:Karena algoritme canggih terus muncul untuk desain produk cerdas, pengembang sering kali kesulitan menerapkan sistem tertanam yang mampu memenuhi tuntutan pemrosesan terkait algoritme ini. FPGA dapat memberikan kinerja yang diperlukan, tetapi merancang dengan FPGA telah lama dianggap terbatas pada bidang ahli pemrograman FPGA. Namun, hari ini, ketersediaan FPGA yang lebih kuat dan lingkungan pengembangan yang lebih efektif telah membuat pengembangan FPGA dapat diakses secara luas. Dalam kutipan ini, Bab 4 dari buku Architecting High-Performance Embedded Systems, penulis menawarkan tinjauan komprehensif perangkat FPGA, bahasa implementasi, dan proses pengembangan FPGA serta panduan terperinci tentang cara mulai mengimplementasikan FPGA di Anda sendiri desain. Kutipan lengkapnya disajikan dalam rangkaian angsuran berikut:
1:Sumber daya perangkat keras (artikel ini)
2:Bahasa implementasi
3:Proses pengembangan
4:Membangun proyek
5:Implementasi

Diadaptasi dari Merancang Sistem Tertanam Kinerja Tinggi, oleh Jim Ledin.


Mengembangkan Program FPGA Pertama Anda

Bab ini dimulai dengan diskusi tentang penggunaan perangkat FPGA yang efektif dalam sistem tertanam waktu nyata dan dilanjutkan dengan deskripsi elemen fungsional yang terkandung dalam FPGA standar. Berbagai bahasa desain FPGA, termasuk Perangkat Keras Bahasa Deskripsi (HDL ), metode diagram blok, dan bahasa pemrograman perangkat lunak populer termasuk C dan C++, diperkenalkan. Bab ini berlanjut dengan gambaran umum proses pengembangan FPGA dan diakhiri dengan contoh lengkap siklus pengembangan FPGA yang dimulai dengan pernyataan persyaratan sistem dan diakhiri dengan sistem fungsional yang diimplementasikan dalam papan pengembangan FPGA berbiaya rendah.

Setelah menyelesaikan bab ini, Anda akan mengetahui bagaimana FPGA dapat diterapkan dalam arsitektur sistem tertanam waktu nyata dan akan memahami komponen yang membentuk sirkuit terpadu FPGA. Anda akan telah belajar tentang bahasa pemrograman yang digunakan dalam desain algoritma FPGA dan akan memahami urutan langkah-langkah untuk mengembangkan aplikasi berbasis FPGA. Anda juga akan mengerjakan contoh pengembangan FPGA lengkap di papan pengembangan berbiaya rendah menggunakan alat perangkat lunak FPGA gratis.

Kami akan membahas topik berikut dalam bab ini:

Persyaratan teknis

File untuk bab ini tersedia di https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems.

Menggunakan FPGA dalam desain sistem tersemat waktu nyata

Seperti yang kita lihat di Elemen FPGA bagian dari Bab 1 , Arsitek Kinerja Tinggi Sistem Tertanam , perangkat FPGA khas berisi sejumlah besar tabel pencarian, flip-flop, elemen RAM blok, irisan DSP, dan komponen lainnya. Meskipun dapat menjadi pelajaran untuk memahami kemampuan terperinci dari masing-masing komponen ini, kekhawatiran tersebut tidak selalu informatif selama proses pengembangan FPGA. Batasan yang paling penting untuk diingat adalah bahwa nomor bagian FPGA tertentu berisi jumlah terbatas dari masing-masing elemen ini, dan desain tidak dapat melebihi batas tersebut bila ditargetkan pada model FPGA tertentu.

Sebaliknya, lebih produktif untuk melihat proses pengembangan FPGA dari perspektif pernyataan persyaratan sistem yang disematkan. Anda dapat mulai mengembangkan desain FPGA yang ditargetkan pada model FPGA yang dipilih secara acak. Saat pengembangan berlangsung, Anda dapat mencapai batas sumber daya atau mengidentifikasi fitur FPGA yang diperlukan desain yang tidak ada dalam FPGA yang saat ini ditargetkan. Pada saat itu, Anda dapat memilih yang berbeda, lebih mampu, menargetkan, dan melanjutkan pengembangan.

Sebagai alternatif, saat pengembangan desain hampir selesai, Anda mungkin menyadari bahwa FPGA target yang awalnya Anda pilih mengandung sumber daya yang berlebihan dan desain dapat ditingkatkan dengan memilih FPGA yang lebih kecil, dengan manfaat potensial dalam hal biaya yang lebih rendah, pin yang lebih sedikit, ukuran paket yang lebih kecil, dan mengurangi konsumsi daya.

Dalam salah satu dari situasi ini, biasanya mudah untuk mengalihkan FPGA yang ditargetkan ke model yang berbeda dalam keluarga yang sama. Alat pengembangan dan artefak desain yang telah Anda buat hingga saat ini harus dapat digunakan kembali sepenuhnya dengan model FPGA yang baru ditargetkan. Jika perlu untuk beralih ke keluarga FPGA yang berbeda dari vendor yang sama, atau ke model dari vendor yang berbeda, peralihan kemungkinan akan melibatkan lebih banyak pekerjaan.

Inti dari diskusi ini adalah untuk menekankan bahwa tidak terlalu penting untuk mengidentifikasi model FPGA tertentu di awal upaya pengembangan sistem tertanam kinerja tinggi. Sebagai gantinya, pertimbangan awal harus fokus pada validasi keputusan untuk menggunakan FPGA sebagai bagian dari desain, kemudian, jika FPGA adalah pendekatan desain terbaik, lanjutkan dengan pemilihan vendor FPGA dan rangkaian perangkat yang sesuai.

Contoh proyek dalam buku ini akan didasarkan pada rangkaian alat pengembangan FPGA Xilinx Vivado. Meskipun lisensi Vivado harus dibeli untuk dikembangkan untuk beberapa keluarga FPGA Xilinx, perangkat FPGA di Artix-7 yang akan kami kerjakan didukung oleh Vivado secara gratis. Keluarga FPGA Artix-7 menggabungkan atribut kinerja tinggi, konsumsi daya rendah, dan pengurangan biaya sistem total. Rangkaian perangkat FPGA serupa dan rangkaian alat pengembangan tersedia dari vendor FPGA lainnya.

Pengembangan FPGA adalah proses yang cukup melibatkan, dengan berbagai jenis analisis dan desain input data yang diperlukan. Untuk menghindari pembahasan topik-topik ini pada tingkat yang terlalu abstrak, dan untuk menyajikan hasil nyata dalam bentuk proyek contoh kerja, kami akan menggunakan Vivado di seluruh buku ini. Setelah Anda terbiasa dengan alat dan teknik yang dibahas di sini, Anda seharusnya dapat menerapkannya menggunakan alat serupa dari vendor lain.

Bagian berikut akan membahas beberapa fitur pembeda utama dari keluarga FPGA dan model individu dalam keluarga tersebut, termasuk jumlah RAM blok, jumlah dan jenis sinyal I/O yang tersedia, sumber daya perangkat keras on-chip khusus, dan penyertaan satu atau lebih inti prosesor perangkat keras dalam paket FPGA.

Memblokir RAM dan mendistribusikan RAM

Blokir RAM digunakan untuk mengimplementasikan wilayah memori dalam FPGA. Wilayah memori tertentu ditentukan dalam hal lebar dalam bit (biasanya 8 atau 16 bit) dan kedalaman, yang menentukan jumlah lokasi penyimpanan di wilayah memori.

Jumlah total blok RAM dalam FPGA biasanya ditentukan dalam kilobit (Kb ). Jumlah RAM blok yang tersedia bervariasi di seluruh keluarga FPGA dan di antara model dalam keluarga tertentu. Seperti yang Anda harapkan, suku cadang yang lebih besar dan lebih mahal umumnya memiliki jumlah sumber daya yang lebih besar yang dapat digunakan sebagai RAM blok.

Dalam FPGA Xilinx, dan untuk berbagai tingkat dalam FPGA dari vendor lain, kategori memori yang berbeda yang disebut RAM terdistribusi tersedia selain untuk memblokir RAM. RAM Terdistribusi dibangun dari elemen logika yang digunakan dalam tabel pencarian dan menggunakan kembali sirkuit perangkat tersebut untuk membentuk segmen kecil RAM, masing-masing berisi 16 bit. Segmen ini dapat digabungkan untuk membentuk blok memori yang lebih besar bila diperlukan.

Block RAM cenderung digunakan untuk tujuan yang secara tradisional terkait dengan RAM, seperti mengimplementasikan memori cache prosesor atau sebagai buffer penyimpanan untuk data I/O. RAM terdistribusi dapat digunakan untuk tujuan seperti penyimpanan sementara hasil komputasi menengah. Karena RAM terdistribusi didasarkan pada sirkuit tabel pencarian, penggunaan RAM terdistribusi dalam desain mengurangi sumber daya yang tersedia untuk mengimplementasikan operasi logika.

Block RAM dapat memiliki port tunggal atau port ganda. RAM blok port tunggal mewakili pola penggunaan umum prosesor yang membaca dan menulis RAM selama operasi.

RAM blok dua port menyediakan dua port baca/tulis, keduanya dapat secara aktif membaca atau menulis wilayah memori yang sama secara bersamaan.

RAM blok port ganda sangat ideal untuk situasi di mana data sedang ditransfer antara bagian-bagian dari FPGA yang berjalan pada kecepatan clock yang berbeda. Misalnya, subsistem I/O mungkin memiliki kecepatan clock dalam ratusan MHz saat menerima aliran data yang masuk. Subsistem I/O menulis data yang masuk ke blok RAM saat data tersebut tiba melalui salah satu saluran I/O berkecepatan tinggi FPGA. Subsistem terpisah dalam FPGA, berjalan pada kecepatan clock yang berbeda, dapat membaca data dari port kedua blok RAM tanpa mengganggu operasi subsistem I/O.

Block RAM juga dapat beroperasi di first-in-first-out (FIFO ) modus. Dalam contoh aliran data serial yang masuk, subsistem I/O dapat memasukkan kata-kata data ke dalam FIFO saat mereka tiba dan subsistem pemrosesan dapat membacanya dalam urutan yang sama. Blok RAM dalam mode FIFO memberikan sinyal yang menunjukkan apakah FIFO penuh, kosong, hampir penuh, atau hampir kosong. Definisi hampir penuh dan hampir kosong terserah perancang sistem. Jika Anda menetapkan hampir kosong artinya kurang dari 16 item yang tersisa di FIFO, Anda kemudian dapat yakin bahwa setiap kali FIFO tidak menunjukkan hampir kosong, Anda dapat membaca 16 item tanpa pemeriksaan lebih lanjut ketersediaan data.

Saat menggunakan RAM blok dalam mode FIFO, sangat penting bahwa logika yang memasukkan item ke dalam FIFO tidak pernah mencoba untuk menulis saat FIFO penuh, dan pembacaan logika dari FIFO tidak pernah mencoba membaca saat FIFO kosong. Jika salah satu dari peristiwa ini terjadi, sistem akan kehilangan data atau akan mencoba memproses data yang tidak ditentukan.

Pin I/O FPGA dan fitur terkait

Karena FPGA dimaksudkan untuk digunakan dalam aplikasi berkinerja tinggi, pin I/O mereka umumnya mampu menerapkan berbagai standar I/O berkecepatan tinggi. Selama implementasi desain dengan rangkaian alat pengembangan FPGA, pengembang sistem harus melakukan tugas yang mencakup menetapkan fungsi ke pin tertentu pada paket FPGA dan mengonfigurasi setiap pin tersebut untuk beroperasi dengan standar antarmuka yang sesuai. Langkah tambahan harus dilakukan untuk mengaitkan sinyal input dan output dalam kode model FPGA dengan pin paket yang benar.

Pada level pin, sinyal I/O individual berupa ujung tunggal atau diferensial.

Sinyal ujung tunggal dirujuk ke tanah. Logika Transistor-Transistor Tradisional (TTL ) dan Semikonduktor Oksida Logam Pelengkap (CMOS ) sinyal digital beroperasi pada rentang 0-5 VDC relatif terhadap ground.

FPGA modern biasanya tidak mendukung rentang sinyal 5 VDC lama, tetapi mendukung sinyal TTL dan CMOS yang beroperasi pada rentang tegangan yang dikurangi, sehingga mengurangi konsumsi daya dan meningkatkan kecepatan. TTL Tegangan Rendah (LVTTL ) sinyal beroperasi pada rentang 0-3.3VDC. CMOS Tegangan Rendah (LVCMOS ) sinyal dapat dipilih dengan tegangan pensinyalan 1,2, 1,5, 1,8, 2,5, dan 3,3 V. Jenis sinyal ini diberi nama LVCMOS12, LVCMOS15, LVCMOS18, LVCMOS25, dan LVCMOS33. Tersedia jenis sinyal ujung tunggal berkinerja tinggi lainnya, termasuk Logika Transceiver Berkecepatan Tinggi (HSTL ) dan Stub-Series Dihentikan Logika (SSTL ).

Sinyal ujung tunggal banyak digunakan untuk tujuan frekuensi rendah, seperti membaca input tombol dan menyalakan LED. Sinyal ujung tunggal juga digunakan di banyak protokol komunikasi berkecepatan rendah seperti I2C dan SPI. Kelemahan penting dari sinyal ujung tunggal adalah bahwa setiap kebisingan yang digabungkan ke dalam kabel dan jejak papan sirkuit tercetak yang membawa sinyal berpotensi merusak input ke penerima. Masalah ini dapat dikurangi secara substansial melalui penggunaan sinyal diferensial.

Untuk kecepatan transfer data tertinggi, pensinyalan diferensial adalah pendekatan yang lebih disukai.

Sinyal diferensial gunakan sepasang pin I/O dan arahkan sinyal yang berlawanan ke kedua pin tersebut.

Dengan kata lain, satu pin didorong ke tegangan yang lebih tinggi dan pin lainnya ke tegangan yang lebih rendah untuk mewakili bit data 0 dan tegangan pin dibalik untuk mewakili 1 bit. Penerima diferensial mengurangi dua sinyal untuk menentukan apakah bit data adalah 0 atau 1. Karena dua kabel atau jejak yang membawa sinyal diferensial secara fisik terletak sangat berdekatan, setiap noise yang digabungkan ke salah satu sinyal akan digabungkan ke sinyal lainnya. dengan cara yang sangat mirip. Operasi pengurangan menghilangkan sebagian besar kebisingan, memungkinkan operasi yang andal pada kecepatan transfer data yang jauh lebih tinggi daripada sinyal ujung tunggal.

Sejumlah standar sinyal diferensial didukung oleh FPGA standar. Beberapa versi diferensial HSTL dan SSTL didefinisikan, dengan berbagai level tegangan sinyal untuk masing-masing.

Pensinyalan Diferensial Tegangan Rendah (LVDS ) diperkenalkan sebagai standar pada tahun 1994 dan terus digunakan dalam berbagai aplikasi. Pemancar sinyal LVDS menghasilkan arus konstan 3,5 mA dan mengalihkan arah arus yang mengalir melalui resistor pada penerima untuk menghasilkan perubahan status yang mewakili nilai data 0 dan 1 seperti yang ditunjukkan pada Gambar 4.1 :


Gambar 4.1 – Antarmuka LVDS

Dalam komunikasi LVDS, seperti dalam standar pensinyalan diferensial dan ujung tunggal lainnya, penting untuk impedansi jalur komunikasi antara pemancar dan penerima agar sesuai dengan impedansi terminasi, yaitu 100 ohm dalam kasus LVDS. Jika impedansi saluran komunikasi tidak sesuai dengan impedansi terminasi, pantulan dapat terjadi pada saluran, mencegah penerimaan data yang andal.

Impedansi pasangan jejak sinyal diferensial adalah fungsi dari geometri jejak pasangan dan hubungannya dengan bidang dasar. Seperti yang akan kita lihat di Bab 6 , Merancang Sirkuit dengan KiCad , sangat mudah untuk merancang papan sirkuit yang memenuhi persyaratan standar sinyal diferensial kecepatan tinggi.

Sumber daya perangkat keras khusus

FPGA umumnya menyertakan pilihan sumber daya perangkat keras khusus untuk fungsi yang umumnya diperlukan dan diimplementasikan lebih efisien dalam perangkat keras daripada menggunakan fungsi FPGA yang disintesis, atau tidak mungkin diimplementasikan dengan komponen FPGA. Beberapa contoh sumber daya ini adalah sebagai berikut:

Sumber daya perangkat keras ini memungkinkan pengembangan sistem yang kompleks dengan kemampuan yang luas. Perangkat keras khusus disediakan untuk fungsi seperti operasi MAC karena kinerja perangkat keras secara signifikan lebih baik daripada fungsi setara yang disintesis menggunakan sumber daya logika FPGA.

Inti prosesor

Beberapa keluarga FPGA menyertakan inti prosesor perangkat keras untuk tujuan menggabungkan kecepatan eksekusi perangkat lunak puncak dengan keunggulan kinerja dari algoritma yang diterapkan FPGA. Misalnya, keluarga Xilinx Zynq-7000 mengintegrasikan prosesor perangkat keras ARM Cortex-A9 bersama dengan fabric FPGA tradisional.

Desain FPGA yang tidak memerlukan prosesor perangkat keras dapat mengimplementasikan prosesor menggunakan sumber daya FPGA, yang disebut sebagai prosesor lunak . Prosesor lunak sangat dapat dikonfigurasi, meskipun umumnya tidak mampu menandingi kinerja prosesor yang diimplementasikan di perangkat keras.

Bagian selanjutnya akan memperkenalkan bahasa pemrograman utama dan metode entri data yang digunakan untuk mengembangkan algoritme FPGA.

Dicetak ulang dengan izin dari Packt Publishing. Hak Cipta © 2021 Packt Publishing


Jim Ledin adalah CEO dari Ledin Engineering, Inc. Jim adalah pakar dalam desain, pengembangan, dan pengujian perangkat lunak dan perangkat keras tertanam. Dia juga mahir dalam penilaian keamanan siber sistem tertanam dan pengujian penetrasi. Dia memiliki B.S. gelar di bidang teknik kedirgantaraan dari Iowa State University dan M.S. gelar di bidang teknik listrik dan komputer dari Georgia Institute of Technology. Jim adalah insinyur listrik profesional terdaftar di California, Certified Information System Security Professional (CISSP), Certified Ethical Hacker (CEH), dan Certified Penetrasi Tester (CPT).

Konten Terkait:

Untuk lebih banyak Tertanam, berlangganan buletin email mingguan Tertanam.


Tertanam

  1. Cara Menghindari Kejutan Mahal Dalam Desain Perangkat Keras yang Terhubung
  2. Apa itu Desain Sistem Tertanam :Langkah-langkah dalam Proses Desain
  3. Menyederhanakan pengembangan IoT dengan Eclipse IoT
  4. Mengembangkan mesin status dengan pengembangan yang digerakkan oleh pengujian
  5. Mengubah data besar menjadi data pintar dengan AI tersemat
  6. Cypress:ModusToolbox Suite memudahkan kompleksitas desain IoT
  7. Lattice:MachX03D FPGA meningkatkan keamanan dengan kemampuan root-of-trust perangkat keras
  8. Kit desain mengukur tekanan darah dengan sensor optik
  9. Java 9 - Coba Dengan peningkatan Sumber Daya
  10. Semua Dengan Aditif