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:Bahasa implementasi

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 (artikel ini)
3:Proses pengembangan
4:Membangun proyek
5:Implementasi

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


Bahasa implementasi FPGA

Menerapkan desain untuk FPGA pada akhirnya bermuara pada penggunaan satu atau lebih bahasa seperti pemrograman perangkat lunak untuk menentukan fungsionalitas perangkat.

Bahasa tradisional yang digunakan untuk pengembangan FPGA adalah VHDL dan Verilog.

Alat pengembangan FPGA generasi saat ini umumnya mendukung kedua bahasa ini bersama-sama dengan kemampuan untuk menentukan konfigurasi sistem menggunakan teknik diagram blok. Beberapa rangkaian alat juga mendukung definisi fungsionalitas FPGA menggunakan bahasa pemrograman C dan C++ tradisional.

VHDL

Bahasa Deskripsi Perangkat Keras VHSIC (VHDL ), di mana VHSIC adalah singkatan dari Sangat Sirkuit Terintegrasi Berkecepatan Tinggi , memiliki sintaks yang mengingatkan pada bahasa pemrograman Ada. VHDL dikembangkan di bawah bimbingan Departemen Pertahanan AS mulai tahun 1983.

Seperti Ada, VHDL cenderung bertele-tele dan terstruktur secara kaku. Dalam istilah bahasa pemrograman, VHDL diketik dengan kuat. Bahasa ini berisi kumpulan tipe data dasar yang telah ditentukan sebelumnya, terutama boolean, bit, bit_vector, karakter, string, integer, real, waktu, dan array. Semua tipe data lainnya didefinisikan berdasarkan tipe dasar.

Satu set perpustakaan VHDL telah ditentukan oleh Institute of Electrical and Electronics Engineers (IEEE ) dan diformalkan sebagai standar IEEE 1164, Sistem Logika Multinilai untuk Interoperabilitas Model VHDL . Pustaka ini menentukan kumpulan nilai logika yang akan digunakan dalam bahasa VHDL. Pustaka ini menyertakan tipe bernama std_logic, yang mewakili sinyal 1-bit. Nilai logika dalam tipe std_logic diwakili oleh literal karakter yang ditunjukkan pada tabel berikut:

Nilai 0 dan 1 "kuat" pada gambar sebelumnya mewakili sinyal yang didorong ke status biner yang ditentukan. Sinyal "lemah" mewakili sinyal yang dikendarai di bus dengan banyak pengemudi di mana pengemudi mana pun dapat menegaskan dirinya sendiri di bus, mengesampingkan pengemudi lain. Nilai Z mewakili keluaran CMOS dalam keadaan impedansi tinggi, di mana alih-alih menggerakkan bus ke keadaan 0 atau 1, keluaran malah secara efektif terputus dari bus dan tidak menggerakkannya sama sekali. Status U mewakili nilai default untuk semua sinyal. Saat melakukan simulasi rangkaian, sinyal apa pun dalam status U akan terdeteksi, yang kemungkinan menunjukkan nilai yang tidak diinisialisasi sedang digunakan secara tidak sengaja. Status X dikaitkan dengan kabel yang tidak memiliki output apa pun yang menggerakkannya. Status – mewakili input yang tidak digunakan, dan oleh karena itu tidak masalah statusnya.

Desain sirkuit VHDL umumnya dimulai dengan mengimpor perpustakaan IEEE 1164 melalui pernyataan berikut:

library IEEE;
gunakan IEEE.std_logic_1164.all;

Kami akan menggunakan VHDL dalam contoh proyek kami nanti di bab ini. Ini tidak dimaksudkan untuk mewakili preferensi yang kuat untuk VHDL atas Verilog. Kedua bahasa definisi perangkat keras sepenuhnya mampu mewakili desain apa pun yang pada dasarnya dapat disintesis untuk FPGA.

Verilog

Verilog Bahasa Deskripsi Perangkat Keras (HDL ) diperkenalkan pada tahun 1984 dan menjadi standar sebagai IEEE 1364 pada tahun 2005. Pada tahun 2009, standar Verilog digabungkan dengan SystemVerilog standar untuk menghasilkan Standar IEEE 1800-2009. SystemVerilog berisi fasilitas ekstensif untuk melakukan verifikasi sistem, selain fitur desain perangkat keras yang ada di Verilog.

Verilog dirancang menyerupai bahasa pemrograman C, termasuk prioritas operator yang serupa dan penggunaan beberapa kata kunci aliran kontrol yang sama, termasuk if, else, for, dan while.

Verilog menggunakan konsep kawat untuk mewakili status sinyal. Nilai sinyal dapat mengambil salah satu dari nilai 0, 1, tidak peduli (x), atau impedansi tinggi (z), dan dapat memiliki kuat atau lemah kekuatan sinyal.

Baik VHDL dan Verilog mendefinisikan himpunan bagian bahasa yang dapat digunakan untuk merancang sirkuit logika. Subset ini disebut sebagai yang dapat disintesis himpunan bagian bahasa. Fitur bahasa tambahan di luar himpunan bagian yang dapat disintesis tersedia untuk mendukung tugas-tugas seperti simulasi sirkuit. Kita akan melihat contohnya nanti di bab ini.

Konstruksi bahasa yang tidak dapat disintesis cenderung berperilaku lebih seperti bahasa pemrograman perangkat lunak tradisional. Misalnya, loop for yang tidak dapat disintesis berulang melalui blok kode secara berurutan beberapa kali, seperti dalam bahasa pemrograman biasa. Sebaliknya, loop for yang dapat disintesis menjadi terbuka secara efektif untuk menghasilkan kumpulan konstruksi perangkat keras yang direplikasi yang dijalankan secara paralel yang mewakili setiap iterasi loop.

Diagram blok

Pada tingkat abstraksi di atas HDL berbasis teks, rangkaian alat pengembangan FPGA modern mendukung konfigurasi cepat desain sistem yang menggabungkan komponen logika kompleks seperti mikroprosesor dan perangkat I/O canggih menggunakan format struktur blok. Gambar 4.2 adalah contoh bagian dari diagram blok untuk desain FPGA Xilinx yang menggabungkan prosesor lunak MicroBlaze:

klik untuk gambar ukuran penuh

Gambar 4.2 – Diagram blok yang berisi mikroprosesor lunak MicroBlaze

Prosesor MicroBlaze adalah inti prosesor yang dilengkapi dengan rangkaian alat Xilinx Vivado untuk digunakan dalam desain FPGA dalam keluarga prosesor termasuk Artix-7.

Sementara penggunaan diagram blok menyediakan cara visual intuitif untuk mengatur instantiasi dan interkoneksi elemen logika kompleks dalam desain FPGA, penting untuk diingat bahwa di balik diagram, alat pengembangan menghasilkan kode VHDL atau Verilog untuk mendefinisikan komponen dan komponennya. koneksi. Diagram blok hanyalah antarmuka pengguna untuk mengelola konfigurasi komponen ini.

Setelah Anda mengembangkan diagram blok, Anda dapat memeriksa kode HDL yang dihasilkan, yang akan dimuat dalam file yang terkait dengan proyek. Pada diagram Gambar 4.2 , file bernama design_1_microblaze_0_0_stub.vhdl dihasilkan dari diagram. File ini dimulai dengan kode VHDL berikut:

library IEEE;
gunakan IEEE.STD_LOGIC_1164.ALL;
desain entitas_1_microblaze_0_0 adalah
Pelabuhan (
Clk:di STD_LOGIC;
Setel ulang:di STD_LOGIC;
Interupsi:di STD_LOGIC;
Interrupt_Address:di STD_LOGIC_VECTOR (0 hingga 31);
Interrupt_Ack:keluar STD_LOGIC_VECTOR (0 banding 1);
Instr_Addr:keluar STD_LOGIC_VECTOR (0 hingga 31);
Instr:di STD_LOGIC_VECTOR (0 hingga 31);

Kode ini dimulai dengan referensi ke perpustakaan standar IEEE 1164, kemudian mendefinisikan antarmuka ke prosesor MicroBlaze yang memperlihatkan sinyal yang Anda harapkan pada mikroprosesor, termasuk jam sistem, reset, permintaan interupsi, dan input vektor interupsi; interupsi mengakui dan instruksi alamat output; dan bus untuk instruksi yang diambil dari memori.

Kode ini menggunakan tipe data perpustakaan IEEE 1164 untuk sinyal bit tunggal (STD_LOGIC) dan untuk sinyal bus multi-bit (STD_LOGIC_VECTOR).

Kode dalam daftar mendefinisikan antarmuka ke prosesor MicroBlaze, tetapi tidak berisi definisi HDL dari prosesor itu sendiri. Desain HDL yang kompleks untuk komponen seperti mikroprosesor dianggap berharga Kekayaan Intelektual (IP ) dan entitas komersial yang mengembangkan desain ini sering mengambil langkah-langkah untuk memastikan bahwa desain tersebut tidak digunakan tanpa lisensi yang sesuai. Ketika vendor mendistribusikan IP untuk digunakan oleh pelanggan mereka, mungkin disediakan dalam format terkompilasi yang tidak jelas bagi pengguna akhir. Ini memungkinkan pengguna untuk memasukkan IP ke dalam desain mereka, tetapi mereka tidak dapat memeriksa HDL yang digunakan untuk mengembangkannya. Ini secara konseptual mirip dengan pengembang perangkat lunak yang merilis pustaka dalam bentuk terkompilasi tetapi tidak memberikan kode sumber.

C/C++

Sejumlah vendor menawarkan perangkat lunak yang menerjemahkan bahasa pemrograman tingkat tinggi tradisional, seringkali C dan C++, ke dalam kode HDL untuk digunakan dalam pengembangan FPGA. Pendekatan ini mungkin menarik jika Anda memiliki algoritme kompleks dalam C atau C++ yang ingin Anda percepat dalam implementasi FPGA. Alat ini juga memungkinkan pengembang perangkat lunak yang akrab dengan C/C++ untuk segera mulai mengimplementasikan kode untuk penggunaan FPGA tanpa perlu mempelajari salah satu HDL.

Sementara alat pengembangan FPGA untuk bahasa tingkat tinggi ini mampu mengoptimalkan secara signifikan implementasi FPGA yang dihasilkan dari algoritma kode C/C++, masih ada sesuatu yang terputus karena model eksekusi C/C++ melibatkan eksekusi berurutan dari pernyataan sementara lingkungan FPGA asli terdiri dari komponen perangkat keras paralel. Desain FPGA yang dihasilkan dari kode C/C++ biasanya menyerupai kumpulan mesin negara yang mengelola eksekusi berurutan dari operasi yang didefinisikan dalam pernyataan bahasa pemrograman. Bergantung pada ketersediaan peluang untuk eksekusi paralel dalam kode C/C++, implementasi FPGA dapat memberikan peningkatan kinerja yang signifikan dibandingkan dengan menjalankan kode yang sama pada prosesor tradisional.

Dalam rangkaian alat pengembangan FPGA modern, semua metode implementasi FPGA yang dijelaskan di bagian ini (VHDL, Verilog, diagram blok, dan C/C++) dapat digabungkan dalam satu desain, jika diperlukan. Karena itu, satu anggota tim mungkin lebih suka bekerja di VHDL sementara yang lain menggunakan Verilog. Mungkin ada alasan manajemen proyek untuk mencegah penggunaan multi-HDL dalam satu proyek, tetapi bahasa itu sendiri berfungsi bersama dalam satu desain tanpa masalah. Salah satu alasan manajer proyek mungkin ingin menghindari penggunaan beberapa HDL adalah karena keberlanjutan upaya di masa depan akan membutuhkan partisipasi pengembang dengan keterampilan dalam kedua bahasa.

Demikian pula, dimungkinkan untuk mendefinisikan arsitektur tingkat tinggi untuk sebuah proyek dalam bentuk diagram blok dan kemudian mengimplementasikan fungsionalitas subsistem rinci menggunakan HDL pilihan. Dalam desain yang sama, dimungkinkan juga untuk mengintegrasikan HDL yang dihasilkan dari algoritma C/C++. Arsitek dan pengembang sistem yang tertanam harus mempertimbangkan dengan cermat implikasinya dan memilih metode implementasi yang sesuai untuk setiap bagian dari desain FPGA.

Bagian selanjutnya akan memperkenalkan langkah-langkah dalam proses pengembangan FPGA standar.

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. Apa itu Pemrograman Sistem Tertanam &Bahasanya
  2. Apa itu Desain Sistem Tertanam :Langkah-langkah dalam Proses Desain
  3. Mengubah data besar menjadi data pintar dengan AI tersemat
  4. Tantangan implementasi port USB Type-C dan solusi desain
  5. Tren industri utama membentuk desain yang disematkan
  6. Akselerator FPGA untuk kamera MIPI visi tertanam
  7. Klien:terminal POS multi-fungsi dengan printer terintegrasi
  8. Kit desain mengukur tekanan darah dengan sensor optik
  9. FPGA tingkat pertahanan debut dengan akses awal
  10. Semua Dengan Aditif