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 2:Bahasa implementasi 3:Proses pengembangan (artikel ini) 4:Membangun proyek 5:Implementasi
Diadaptasi dari Merancang Sistem Tertanam Kinerja Tinggi, oleh Jim Ledin.
Proses pengembangan FPGA
Sementara FPGA digunakan di berbagai domain aplikasi yang berbeda, adalah mungkin untuk mengidentifikasi serangkaian langkah pengembangan yang dapat diterapkan secara luas untuk setiap proyek pengembangan FPGA. Bagian ini membahas langkah-langkah pengembangan FPGA biasa dalam urutan yang biasanya terjadi selama proyek.
Menentukan persyaratan sistem
Langkah pertama dalam mengembangkan sistem baru, atau ketika memulai peningkatan signifikan ke sistem yang ada, adalah mengembangkan pemahaman yang jelas dan terperinci tentang apa yang seharusnya dilakukan sistem. Proses definisi persyaratan dimulai dengan deskripsi umum tentang fungsionalitas yang dimaksudkan sistem, mode operasi, dan fitur utama. Informasi ini harus ditulis dalam bahasa yang jelas dan tidak ambigu dan dibagikan kepada semua pihak yang memiliki kepentingan dalam keberhasilan upaya pembangunan. Tujuan berbagi persyaratan sistem adalah untuk mencapai konsensus di antara semua pihak mengenai kelengkapan dan kebenaran deskripsi.
Deskripsi persyaratan harus disempurnakan untuk menyertakan spesifikasi untuk tingkat kinerja sistem yang diperlukan dalam hal seperti laju pengambilan sampel sinyal input dan laju pembaruan untuk perintah keluaran aktuator. Detail tambahan seperti batasan ukuran fisik, masa pakai baterai minimum, dan kisaran suhu lingkungan yang dapat ditoleransi akan memandu proses desain. Secara umum, seperangkat spesifikasi yang komprehensif harus dikembangkan yang menjelaskan ambang batas kinerja minimum untuk semua parameter sistem yang dinilai relevan dengan keberhasilan sistem secara keseluruhan.
Kumpulan lengkap persyaratan sistem harus lengkap sejauh solusi desain apa pun yang sesuai dengan semua spesifikasi yang dinyatakan harus menjadi solusi yang memadai. Jika ternyata desain yang memenuhi semua spesifikasi dianggap tidak dapat diterima karena beberapa alasan yang tidak terkait, ini menunjukkan kegagalan untuk sepenuhnya menyatakan persyaratan sistem.
Misalnya, jika solusi yang memadai secara teknis dianggap terlalu mahal untuk diproduksi, sumber masalahnya kemungkinan besar adalah kegagalan untuk sepenuhnya mendefinisikan kendala penahanan biaya selama proses pengembangan persyaratan.
Setelah persyaratan sistem tingkat atas didefinisikan dan disepakati, umumnya perlu untuk membagi konfigurasi sistem secara keseluruhan ke dalam kumpulan subsistem, masing-masing dengan tujuan kohesif dan seperangkat persyaratan deskriptif dan spesifikasi teknisnya sendiri. Dalam arsitektur sistem tertanam waktu nyata, kemampuan pemrosesan digital kemungkinan akan direpresentasikan sebagai subsistem dengan kumpulan persyaratan yang sesuai
Mengalokasikan fungsionalitas ke FPGA
Jika persyaratan untuk pemrosesan digital dalam arsitektur sistem melebihi kemampuan mikrokontroler dan mikroprosesor yang seharusnya sesuai untuk digunakan dalam sistem, mungkin tepat untuk mempertimbangkan memasukkan FPGA dalam desain. Beberapa arsitektur sistem, terutama yang mendapat manfaat dari perangkat keras digital berkecepatan tinggi yang melakukan operasi paralel, adalah kandidat alami untuk implementasi FPGA. Arsitektur sistem lain mungkin mampu memberikan kinerja yang memadai dengan pemrosesan digital tradisional, tetapi mungkin ada peluang berharga untuk memanfaatkan fleksibilitas dan ekstensibilitas yang ditawarkan oleh implementasi FPGA selama masa pakai yang direncanakan yang membayangkan peningkatan sistem yang substansial di masa depan.
Setelah keputusan dibuat untuk memasukkan FPGA ke dalam desain, langkah selanjutnya adalah mengalokasikan bagian dari persyaratan pemrosesan digital sistem secara keseluruhan ke perangkat FPGA. Ini biasanya mencakup spesifikasi sinyal input dan output FPGA, kecepatan pembaruan input dan output, dan identifikasi komponen yang harus berinteraksi dengan FPGA, termasuk bagian seperti ADC dan perangkat RAM.
Mengidentifikasi fitur FPGA yang diperlukan
Setelah mendefinisikan fungsi yang akan dilakukan oleh FPGA, dan dengan pengetahuan tentang antarmuka ke perangkat lain yang harus didukung oleh FPGA, menjadi mungkin untuk mengembangkan daftar fitur yang harus disediakan oleh calon perangkat FPGA.
Beberapa keluarga FPGA dirancang untuk aplikasi berbiaya rendah dan tidak terlalu kompleks dan dengan demikian menawarkan serangkaian sumber daya terbatas untuk mengimplementasikan logika digital. Perangkat ini mungkin beroperasi dari daya baterai dan hanya memerlukan pendinginan pasif. Keluarga FPGA lainnya yang lebih bertenaga mendukung desain digital skala besar dengan fitur lengkap, dimaksudkan untuk beroperasi pada kinerja puncak, dan mungkin memerlukan pendinginan aktif yang berkelanjutan.
Persyaratan sistem yang terkait dengan aplikasi tertanam akan memandu pemilihan keluarga FPGA yang sesuai untuk aplikasi tersebut. Pada titik ini, kemungkinan tidak mungkin untuk mengidentifikasi model FPGA tertentu dalam keluarga pilihan karena persyaratan sumber daya dari implementasi FPGA belum sepenuhnya ditentukan. Namun, dengan pengalaman, dimungkinkan untuk mengidentifikasi sejumlah kecil model FPGA yang tampaknya cocok untuk desain.
Selain sumber daya FPGA untuk implementasi sirkuit digital, banyak model FPGA menyertakan fitur tambahan yang mungkin penting untuk desain sistem. Misalnya, ADC internal mungkin berguna untuk meminimalkan jumlah komponen sistem. Daftar fitur FPGA yang diperlukan dan diinginkan akan membantu lebih mempersempit pemilihan perangkat FPGA yang sesuai untuk sistem.
Mengimplementasikan desain FPGA
Setelah mengidentifikasi calon model FPGA, dan dengan definisi rinci tentang fungsionalitas yang dialokasikan untuk FPGA, sekarang saatnya untuk memulai implementasi desain FPGA. Ini umumnya akan melibatkan penggunaan rangkaian alat pengembangan FPGA dan biasanya sebagian besar terdiri dari pengembangan kode HDL dalam bahasa pilihan untuk proyek tersebut.
Jika sesuai, implementasi FPGA dapat dimulai dengan representasi diagram blok dari desain FPGA tingkat atas. Jika diperlukan, komponen yang dikembangkan dalam HDL atau C/C++ dapat dimasukkan ke dalam desain blok untuk menyelesaikan implementasi sistem secara penuh.
Atau, juga umum untuk seluruh desain sistem dikembangkan secara langsung dalam HDL. Untuk pengembang yang terbiasa dengan bahasa tersebut dan dengan pemahaman penuh tentang fitur dan batasan model FPGA yang digunakan, ini dapat menghasilkan hasil desain yang paling hemat sumber daya dan berkinerja tertinggi.
Pengembangan FPGA berlangsung secara bertahap saat desain awal menjadi lebih terinci hingga file pemrograman untuk perangkat FPGA diproduksi. Adalah umum untuk mengulangi fase-fase ini beberapa kali untuk sebuah proyek besar, mengembangkan sebagian kecil dari total desain selama setiap melewati langkah-langkah. Fase-fase ini dijelaskan di bagian berikut.
Entri desain
Entri desain adalah fase di mana pengembang sistem mendefinisikan fungsionalitas sistem menggunakan kode HDL, diagram blok, dan/atau kode C/C++. Kode dan artefak lainnya, seperti diagram blok, mendefinisikan fungsionalitas logis dari sistem dalam istilah abstrak. Dengan kata lain, artefak desain mendefinisikan sirkuit logika, tetapi tidak mendefinisikan bagaimana itu terintegrasi dengan sistem lainnya.
Perencanaan I/O
Perencanaan I/O FPGA adalah proses mengidentifikasi pin yang ditugaskan untuk melakukan fungsi I/O tertentu dan mengaitkan fitur perangkat apa pun seperti standar sinyal I/O yang akan digunakan untuk setiap sinyal. Sebagai bagian dari proses perencanaan I/O, mungkin penting untuk mempertimbangkan isu-isu seperti di mana pin I/O paket perangkat fisik berada. Langkah ini penting untuk meminimalkan panjang jejak papan sirkuit tercetak untuk sinyal kecepatan tinggi dan untuk menghindari pemaksaan jejak sinyal sirkuit yang tidak perlu saling bersilangan.
Definisi kebutuhan sinyal I/O adalah salah satu bentuk dari constraint dalam proses pengembangan FPGA. Kategori kendala utama lainnya terdiri dari persyaratan waktu yang menentukan kinerja solusi FPGA. Proses sintesis FPGA menggunakan kode HDL dan batasan proyek untuk mengembangkan solusi FPGA yang benar secara fungsional yang memenuhi semua batasan yang ditentukan. Jika alat tidak dapat memenuhi semua batasan, sintesis akan gagal.
Sintesis
Sintesis mengubah kode sumber menjadi desain sirkuit yang disebut netlist . Netlist mewakili rangkaian yang dibangun dari sumber daya model FPGA target. Netlist mewakili versi logis, atau skematis, dari sirkuit. Itu tidak menentukan bagaimana sirkuit akan diimplementasikan dalam perangkat FPGA fisik. Ini terjadi pada langkah berikutnya.
Tempat dan rute
Tempat proses mengambil sumber daya FPGA yang ditentukan dalam netlist dan menetapkannya ke elemen logika tertentu dalam FPGA yang dipilih. Penempatan sumber daya yang dihasilkan harus memenuhi batasan apa pun yang membatasi alokasi elemen ini, termasuk batasan I/O dan batasan waktu.
Setelah elemen logika telah ditetapkan lokasi fisik selama proses tempat, satu set koneksi antara elemen logika dikonfigurasi selama rute proses. Perutean mengimplementasikan semua koneksi antara elemen logika dan memungkinkan rangkaian berfungsi seperti yang dijelaskan dalam kode HDL. Setelah operasi tempat dan rute selesai, konfigurasi FPGA sepenuhnya ditentukan.
Pembuatan bitstream
Langkah terakhir dalam proses pengembangan FPGA adalah produksi file bitstream. Untuk mencapai kinerja tertinggi, sebagian besar perangkat FPGA modern menyimpan konfigurasinya secara internal menggunakan RAM statis (SRAM ).
Anda dapat menganggap konfigurasi FPGA SRAM sebagai register geser yang sangat besar, mungkin berisi jutaan bit. Isi register geser ini sepenuhnya menentukan semua aspek konfigurasi dan operasi perangkat FPGA. File bitstream yang dihasilkan selama pengembangan FPGA mewakili pengaturan untuk register geser yang menyebabkan perangkat melakukan fungsi yang dimaksudkan yang ditentukan oleh HDL dan batasannya. Dalam hal proses pengembangan perangkat lunak tradisional, file bitstream dianalogikan dengan program yang dapat dieksekusi yang dihasilkan oleh tautan.
SRAM tidak stabil dan kehilangan isinya setiap kali daya perangkat dilepas. Arsitektur sistem tertanam waktu nyata harus menyediakan sarana untuk memuat file bitstream ke dalam FPGA setiap kali daya diterapkan. Biasanya, aliran bit dimuat dari memori flash yang terletak di dalam perangkat atau dari sumber eksternal, seperti PC, yang terhubung ke perangkat selama setiap siklus penyalaan.
Setelah menyelesaikan kompilasi bitstream FPGA, langkah selanjutnya adalah menguji implementasi untuk memverifikasi bahwa itu beroperasi dengan benar. Langkah ini tidak berbeda dengan pengujian yang diperlukan di akhir proses pembuatan perangkat lunak tradisional.
Menguji penerapan
Pengembangan FPGA rentan terhadap semua jenis bug yang mengganggu upaya pengembangan perangkat lunak tradisional. Selama pengembangan FPGA, Anda mungkin akan disajikan dengan banyak pesan kesalahan yang terkait dengan sintaks yang salah, upaya untuk menggunakan sumber daya yang saat ini tidak dapat diakses, dan banyak jenis pelanggaran lainnya. Seperti dalam upaya pemrograman apa pun, Anda perlu mengidentifikasi sumber setiap kesalahan dan memperbaiki masalahnya.
Bahkan setelah aplikasi FPGA berhasil melewati semua tahapan ke generasi bitstream, tidak ada jaminan bahwa desain akan berfungsi sebagaimana dimaksud. Untuk mencapai desain yang sukses pada jadwal yang wajar, sangat penting untuk melakukan pengujian yang memadai pada setiap tahap pengembangan.
Tahap pertama pengujian harus benar-benar melatih perilaku kode HDL untuk menunjukkan bahwa ia melakukan sebagaimana dimaksud. Contoh proyek di akhir bab ini akan mendemonstrasikan penggunaan rangkaian alat Vivado untuk melakukan pengujian menyeluruh terhadap logika HDL dalam desain.
Setelah bitstream dihasilkan, tidak ada pengganti untuk pengujian komprehensif FPGA seperti yang diterapkan dalam konfigurasi sistem akhir. Pengujian ini harus benar-benar menggunakan semua fitur dan mode FPGA, termasuk responsnya terhadap kondisi di luar jangkauan dan kesalahan.
Pada setiap langkah proses desain, pengembangan, dan pengujian, personel proyek harus tetap memperhatikan kemungkinan penerapan fitur sistem yang rentan terhadap perilaku yang tidak pantas dalam situasi yang tidak mungkin atau jarang terjadi. Terjadinya masalah semacam ini dapat mewakili bug yang sangat sulit untuk diduplikasi dan yang selamanya dapat menodai persepsi desain sistem tertanam dan organisasi yang memproduksinya. Jika Anda melakukan pengujian dengan sangat baik, kemungkinan hasil ini akan berkurang secara substansial.
Bagian berikutnya memberikan deskripsi terperinci tentang langkah-langkah dalam pengembangan, pengujian, dan implementasi proyek FPGA sederhana menggunakan papan pengembangan Arty A7 dan rangkaian alat Xilinx Vivado.
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:
Desain tersemat dengan FPGA:Sumber daya perangkat keras
Desain tersemat dengan FPGA:Bahasa implementasi
Alat sumber terbuka membantu menyederhanakan pemrograman FPGA
Menerapkan algoritme titik-mengambang dalam FPGA atau ASIC
Memanfaatkan FPGA untuk pembelajaran mendalam
Alat perangkat lunak memigrasikan kode GPU ke FPGA untuk aplikasi AI
FPGA menggantikan ASIC di ADAS berbasis penglihatan Subaru Eyesight
Untuk lebih banyak Tertanam, berlangganan buletin email mingguan Tertanam.