Daftar Isi:
- Langkah 1: Apa itu Vivado HLS?
- Langkah 2: Perpustakaan Video HLS
- Langkah 3: Sintesis
- Langkah 4: Pembuatan Versi dan Info Lainnya untuk Ekspor
- Langkah 5: Mengekspor ke Vivado IP Library
- Langkah 6: Sintesis dan Analisis Ekspor
- Langkah 7: Menambahkan Perpustakaan IP di Vivado
- Langkah 8: Melakukan Peningkatan
- Langkah 9: Detail dan Info Tambahan
- Langkah 10: Keluaran dan Masukan
- Langkah 11: Antarmuka Daftar AXI
- Langkah 12: Pragma Aliran Data
Video: Sintesis Blok IP Video HLS Vivado: 12 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Pernahkah Anda ingin memproses video secara real-time tanpa menambahkan banyak latensi atau dalam sistem tertanam? FPGA (Field Programmable Gate Arrays) terkadang digunakan untuk melakukan ini; namun, menulis algoritme pemrosesan video dalam bahasa spesifikasi perangkat keras seperti VHDL atau Verilog paling membuat frustrasi. Masukkan Vivado HLS, alat Xilinx yang memungkinkan Anda memprogram dalam lingkungan C++ dan menghasilkan kode bahasa spesifikasi perangkat keras darinya.
Software yang dibutuhkan:
- Vivado HLS
- hidup
- (Jika Anda menggunakan register AXI) Vivado SDK
(Opsional) Unduh contoh buatan Xilinx di sini:
Contoh video Xilinx HLS
Langkah 1: Apa itu Vivado HLS?
Vivado HLS adalah alat yang digunakan untuk mengubah c++ seperti kode menjadi struktur perangkat keras yang dapat diimplementasikan pada FPGA. Ini termasuk IDE untuk melakukan pengembangan ini. Setelah Anda menyelesaikan pengembangan kode untuk HLS, Anda dapat mengekspor IP yang dihasilkan dalam format untuk digunakan dengan Vivado.
Unduh file terlampir dan letakkan di dekat tempat Anda akan membuat proyek. (ganti nama mereka kembali ke "top.cpp" dan "top.h" jika mereka memiliki nama acak)
Langkah 2: Perpustakaan Video HLS
Perpustakaan Video HLS memiliki dokumentasi dengan desain referensi dalam makalah ini:XAPP1167Sumber daya bagus lainnya adalah halaman Wiki Xilinx tentangnya.
Mulai Vivado HLS.
Buat proyek baru.
Ambil file yang Anda unduh pada langkah sebelumnya dan tambahkan sebagai file sumber. (Catatan: file tidak disalin ke dalam proyek, tetapi tetap di tempatnya)
Kemudian gunakan tombol Browse untuk memilih fungsi teratas.
Pada halaman berikutnya, pilih bagian Xilinx yang Anda gunakan.
Langkah 3: Sintesis
Solusi => Jalankan Sintesis C => Solusi Aktif
Setelah ~227.218 detik, itu harus dilakukan. (Catatan: waktu sintesis Anda yang sebenarnya akan bervariasi berdasarkan banyak faktor)
Langkah 4: Pembuatan Versi dan Info Lainnya untuk Ekspor
Nomor versi berinteraksi dengan Vivado sehingga Anda dapat memperbarui IP dalam sebuah desain. Jika itu adalah perubahan versi kecil, itu dapat dilakukan di tempat sementara perubahan versi utama mengharuskan Anda untuk secara manual menambahkan blok baru dan menghapus yang lama. Jika antarmuka Anda tidak berubah dan pembaruan versi kecil, pembaruan dapat dilakukan dilakukan sepenuhnya secara otomatis dengan menekan tombol update IP. Anda dapat menjalankan "report_ip_status" di konsol tcl Vivado untuk melihat status IP Anda.
Setel nomor versi dan info lainnya di Solusi => Pengaturan Solusi…
Atau, pengaturan ini dapat diatur selama ekspor.
Langkah 5: Mengekspor ke Vivado IP Library
Solusi => Ekspor RTL
Jika Anda tidak menyetel detail pustaka IP pada langkah sebelumnya, Anda dapat melakukannya sekarang.
Langkah 6: Sintesis dan Analisis Ekspor
Pada layar ini kita dapat melihat statistik tentang modul yang diekspor, menunjukkan bahwa modul tersebut memenuhi periode clock 10ns (100MHz) dan berapa banyak dari setiap sumber daya yang digunakannya.
Dengan kombinasi ini, Laporan Sintesis kami, dan analisis Dataflow kami, kami dapat melihat bahwa dibutuhkan 317338 siklus jam * 10ns periode jam * 14 tahap pipa = 0,04442732 detik. Artinya, total latensi yang ditambahkan oleh pemrosesan gambar kami kurang dari seperduapuluh detik (bila di-clock pada 100MHz yang ditargetkan).
Langkah 7: Menambahkan Perpustakaan IP di Vivado
Untuk menggunakan blok IP yang disintesis, Anda harus menambahkannya ke Vivado.
Di Vivado, tambahkan repositori IP ke proyek Anda dengan membuka katalog IP dan klik kanan memilih "Tambah Repositori…"
Arahkan ke direktori proyek Vivado HLS Anda dan pilih direktori solusi Anda.
Itu harus melaporkan IP yang ditemukannya.
Langkah 8: Melakukan Peningkatan
Terkadang Anda perlu membuat perubahan pada blok HLS Anda setelah memasukkannya ke dalam desain Vivado.
Untuk melakukan ini, Anda dapat membuat perubahan dan mensintesis ulang dan mengekspor IP dengan nomor versi yang lebih tinggi (lihat detail di langkah sebelumnya tentang perubahan nomor versi mayor/minor).
Setelah mengubah mengekspor versi baru, segarkan repositori IP Anda di Vivado. Ini dapat dilakukan ketika Vivado mengetahui bahwa IP telah berubah di repositori, atau diaktifkan secara manual. (Catatan, jika Anda me-refresh repositori IP Anda setelah memulai, tetapi sebelum ekspor selesai di HLS, IP untuk sementara tidak akan ada, tunggu sampai selesai dan segarkan kembali.)
Pada titik ini sebuah jendela akan muncul dengan informasi bahwa IP telah diubah pada disk dan memberi Anda opsi untuk memperbaruinya dengan tombol "Tingkatkan Dipilih". Jika perubahan itu adalah perubahan versi kecil dan tidak ada antarmuka yang berubah, kemudian menekan tombol itu akan secara otomatis mengganti IP lama dengan yang baru, jika tidak, mungkin diperlukan lebih banyak pekerjaan.
Langkah 9: Detail dan Info Tambahan
Langkah-langkah berikut memberikan informasi lebih lanjut tentang cara kerja sintesis HLS dan apa yang dapat Anda lakukan dengannya.
Untuk contoh proyek yang menggunakan blok IP sintesis HLS, lihat instruksi ini.
Langkah 10: Keluaran dan Masukan
Output dan Input ke blok IP akhir ditentukan dari analisis yang dilakukan synthesizer terhadap aliran data masuk dan keluar dari fungsi teratas.
Mirip dengan di VHDL atau Verilog, HLS memungkinkan Anda untuk menentukan detail tentang koneksi antara IP. Garis-garis ini adalah contohnya:
void image_filter(AXI_STREAM& video_in, AXI_STREAM& video_out, int& x, int& y) {
#pragma HLS INTERFACE axis port=video_in bundle=INPUT_STREAM #pragma HLS INTERFACE axis port=video_out bundle=OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port=x bundle=CONTROL_BUS offset=0x14#pragma HLS INTERFACE s_axilite bundle=0CONTROL_BUS port=y offset CONTROL_BUS
Anda dapat melihat bagaimana port yang ditampilkan pada blok IP dipengaruhi oleh arahan ini.
Langkah 11: Antarmuka Daftar AXI
Untuk mendapatkan input/output ke/dari blok IP Anda ke PS, cara yang baik untuk melakukannya adalah melalui antarmuka AXI.
Anda dapat menentukan ini dalam kode HLS Anda, termasuk offset yang akan digunakan untuk mengakses nilai nanti seperti ini:
void image_filter(AXI_STREAM& video_in, AXI_STREAM& video_out, int& x, int& y) {
#pragma HLS INTERFACE s_axilite port=x bundle=CONTROL_BUS offset=0x14
#pragma HLS INTERFACE s_axilite port=y bundle=CONTROL_BUS offset=0x1C #pragma HLS dataflow
x = 42;
y = 0xDEADBEEF; }
Setelah terhubung dengan benar di Vivado, Anda dapat mengakses nilai menggunakan kode ini di Vivado SDK:
#sertakan "parameters.h"
#define xregoff 0x14 #define yregoff 0x1c x = Xil_In32(XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+xregoff); y = Xil_In32(XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+yregoff);
Ini akan membuat Anda mendapatkan 42 di x dan 0xdeadbeef di y
Langkah 12: Pragma Aliran Data
Di dalam #pragma DATAFLOW cara kode diimplementasikan berubah dari C++ normal. Kode disalurkan sehingga semua instruksi berjalan setiap saat di berbagai bagian data (Anggap saja seperti jalur perakitan di pabrik, setiap stasiun bekerja terus menerus melakukan satu fungsi dan meneruskannya ke stasiun berikutnya)
dari gambar Anda dapat melihat bahwa masing-masing arahan
Meskipun tampak sebagai variabel normal, objek img sebenarnya diimplementasikan sebagai buffer kecil di antara perintah. Menggunakan gambar sebagai input ke suatu fungsi "mengkonsumsinya" dan membuatnya tidak dapat digunakan lagi. (Oleh karena itu kebutuhan akan perintah duplikat)
Direkomendasikan:
Linefollower HoGent - Proyek sintesis: 8 Langkah
Linefollower HoGent - Syntheseproject: Voor het vak syntheseproject kregen we de opdracht een linefollower te maken. In deze dapat diinstruksikan zal ik uitleggen hoe ik deze gemaakt heb, en tegen welke problemen ik o.a ben aangelopen
Motor Stepper yang dikendalikan MIDI Dengan Chip Sintesis Digital Langsung (DDS): 3 Langkah
Motor Stepper yang dikendalikan MIDI Dengan Chip Sintesis Digital Langsung (DDS): Pernah terpikir bahwa Anda HANYA harus mengubahnya menjadi proyek mini? Yah, saya bermain-main dengan sketsa yang saya buat untuk Arduino Due yang bertujuan membuat musik dengan modul AD9833 Direct Digital Synthesis (DDS)… dan pada titik tertentu saya berpikir &q
Catu Daya Sintesis Eurorack: 8 Langkah
Eurorack Synthesizer Power Supply: Selamat datang di Instructable saya tentang cara membuat catu daya DIY untuk synthesizer Eurorack. Perlu diketahui bahwa pengetahuan saya tentang desain catu daya dan synthesizer Eurorack tidak ada duanya. Ikuti saran saya dengan hati-hati. Saya tidak akan bertanggung jawab atas
Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: 12 Langkah (dengan Gambar)
Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: Artikel ini adalah yang ke-12 dalam seri tentang otomatisasi rumah Instruksi yang mendokumentasikan cara membuat dan mengintegrasikan Perangkat Sintesis Pidato Retro IoT ke dalam sistem otomatisasi rumah yang ada, termasuk semua fungsi perangkat lunak yang diperlukan untuk mengaktifkan
Reconocimiento De Voz Desconectado Y Sintesis En Español Untuk Arduino: 11 Langkah
Reconocimiento De Voz Desconectado Y Sintesis En Español Para Arduino: Instruksi ini juga tersedia dalam bahasa Inggris.MOVI signifikan 'Antarmuka Suara Saya Sendiri' (Mi propia interfaz de voz) y es un escudo para el Arduino. Con MOVI construir sus propios diálogos de voz para controlar dispositivos dentro del IDE de Ar