Isi kandungan:
- Langkah 1: Apa itu Vivado HLS?
- Langkah 2: Perpustakaan Video HLS
- Langkah 3: Mensintesis
- Langkah 4: Versi dan Maklumat Lain untuk Eksport
- Langkah 5: Mengeksport ke Perpustakaan IP Vivado
- Langkah 6: Analisis Sintesis dan Eksport
- Langkah 7: Menambah Perpustakaan IP di Vivado
- Langkah 8: Melakukan Peningkatan
- Langkah 9: Maklumat dan Maklumat Tambahan
- Langkah 10: Output dan Input
- Langkah 11: Antaramuka Daftar AXI
- Langkah 12: Pragma Aliran Data
Video: Sintesis Blok IP Video Vivado HLS: 12 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Adakah anda pernah mahu memproses masa nyata pada video tanpa menambahkan banyak latensi atau dalam sistem terbenam? FPGAs (Array Gerbang Programmable Field) kadang-kadang digunakan untuk melakukan ini; namun, menulis algoritma pemprosesan video dalam bahasa spesifikasi perkakasan seperti VHDL atau Verilog sangat mengecewakan. Masukkan Vivado HLS, alat Xilinx yang membolehkan anda memprogram dalam persekitaran C ++ dan menghasilkan kod bahasa spesifikasi perkakasan daripadanya.
Perisian yang diperlukan:
- Vivado HLS
- Vivado
- (Sekiranya anda menggunakan register AXI) Vivado SDK
(Pilihan) Muat turun contoh Xilinx yang dibuat di sini:
Contoh video Xilinx HLS
Langkah 1: Apa itu Vivado HLS?
Vivado HLS adalah alat yang digunakan untuk mengubah kod seperti c ++ menjadi struktur perkakasan yang dapat dilaksanakan pada FPGA. Ia termasuk IDE untuk melakukan pengembangan ini. Sebaik sahaja anda menyelesaikan pengembangan kod untuk HLS, anda boleh mengeksport IP yang dihasilkan dalam format untuk digunakan dengan Vivado.
Muat turun fail yang dilampirkan dan letakkan di dekat tempat anda akan membuat projek anda. (ganti nama mereka kembali ke "top.cpp" dan "top.h" jika mereka mempunyai nama rawak)
Langkah 2: Perpustakaan Video HLS
Perpustakaan Video HLS mempunyai dokumentasi dengan reka bentuk rujukan dalam makalah ini: XAPP1167Sumber lain yang baik adalah halaman Xilinx Wiki mengenainya.
Mulakan Vivado HLS.
Buat projek baru.
Ambil fail yang anda muat turun pada langkah sebelumnya dan tambahkan sebagai fail sumber. (Catatan: fail tidak disalin ke dalam proyek, tetapi tetap di tempatnya)
Kemudian gunakan butang Browse untuk memilih fungsi teratas.
Pada halaman seterusnya, pilih bahagian Xilinx yang anda gunakan.
Langkah 3: Mensintesis
Penyelesaian => Jalankan C Sintesis => Penyelesaian Aktif
Selepas ~ 227.218 saat, ia harus dilakukan. (Catatan: masa sintesis sebenar anda akan berbeza berdasarkan banyak faktor)
Langkah 4: Versi dan Maklumat Lain untuk Eksport
Nombor versi berinteraksi dengan Vivado menyebabkan anda dapat mengemas kini IP dalam reka bentuk. Sekiranya ia adalah perubahan versi kecil, ia dapat dilakukan sementara perubahan versi utama mengharuskan anda menambahkan blok baru secara manual dan mengeluarkan yang lama. Sekiranya antara muka anda tidak berubah dan kemas kini versi kecil, kemas kini boleh dilakukan dilakukan sepenuhnya secara automatik dengan menekan butang IP kemas kini. Anda boleh menjalankan "report_ip_status" di konsol Vivado tcl untuk melihat status IP anda.
Tetapkan nombor versi dan maklumat lain dalam Penyelesaian => Tetapan Penyelesaian…
Sebagai alternatif, tetapan ini boleh ditetapkan semasa eksport.
Langkah 5: Mengeksport ke Perpustakaan IP Vivado
Penyelesaian => Eksport RTL
Sekiranya anda tidak menetapkan butiran perpustakaan IP pada langkah sebelumnya, anda boleh melakukannya sekarang.
Langkah 6: Analisis Sintesis dan Eksport
Pada skrin ini kita dapat melihat statistik mengenai modul yang dieksport kami, menunjukkan bahawa ia memenuhi jangka masa 10ns (100MHz) dan berapa banyak sumber yang digunakannya.
Dengan gabungan ini, Laporan Sintesis, dan analisis Alur Data kami, kami dapat melihat bahawa memerlukan 317338 kitaran jam * tempoh jam 10ns * 14 peringkat saluran paip = 0,04442732 saat. Bermaksud bahawa jumlah latensi yang ditambahkan oleh pemprosesan gambar kami kurang dari satu puluh dua saat (apabila dicatat pada 100MHz yang disasarkan).
Langkah 7: Menambah Perpustakaan IP di Vivado
Untuk menggunakan blok IP yang disintesis, anda perlu menambahkannya ke Vivado.
Di Vivado tambahkan repositori IP ke projek anda dengan pergi ke katalog IP dan klik kanan memilih "Tambah Repositori …"
Navigasi ke direktori projek Vivado HLS anda dan pilih direktori penyelesaian anda.
Ia harus melaporkan IP yang dijumpainya.
Langkah 8: Melakukan Peningkatan
Kadang kala anda perlu membuat perubahan pada blok HLS anda setelah memasukkannya ke dalam reka bentuk Vivado.
Untuk melakukan ini, anda boleh membuat perubahan dan menyintesis semula dan mengeksport IP dengan nombor versi yang lebih tinggi (lihat perincian pada langkah sebelumnya mengenai perubahan nombor versi utama / kecil).
Setelah menukar mengeksport versi baru, muat semula repositori IP anda di Vivado. Ini boleh dilakukan apabila Vivado melihat IP telah berubah di repositori, atau diaktifkan secara manual. (Perhatikan, jika anda menyegarkan repositori IP anda setelah memulakan, tetapi sebelum eksport selesai di HLS, IP tidak akan berada di sana buat sementara waktu, tunggu sehingga selesai dan muat semula.)
Pada ketika ini tetingkap akan muncul dengan maklumat bahawa IP telah diubah pada disk dan memberi anda pilihan untuk memperbaruinya dengan butang "Upgrade Selected". Sekiranya perubahan itu adalah perubahan versi kecil dan tidak ada antara muka yang berubah, kemudian menekan butang itu secara automatik akan menggantikan IP lama dengan yang baru, jika tidak, lebih banyak kerja mungkin diperlukan.
Langkah 9: Maklumat dan Maklumat Tambahan
Langkah-langkah berikut memberikan lebih banyak maklumat mengenai bagaimana sintesis HLS berfungsi dan apa yang boleh anda lakukan dengannya.
Untuk contoh projek yang menggunakan blok IP disintesis HLS, lihat arahan ini.
Langkah 10: Output dan Input
Output dan Input ke blok IP akhir ditentukan dari analisis yang dilakukan synthesizer terhadap aliran data masuk dan keluar dari fungsi teratas.
Sama seperti dalam VHDL atau verilog, HLS membolehkan anda menentukan perincian mengenai hubungan antara IP. Garis-garis ini adalah contohnya:
batal image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE sumbu port = video_in bundle = INPUT_STREAM #pragma HLS INTERFACE port port = video_out bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = 0x14 # pragmaSLB
Anda dapat melihat bagaimana port yang dipamerkan di blok IP dipengaruhi oleh arahan ini.
Langkah 11: Antaramuka Daftar AXI
Untuk mendapatkan input / output ke / dari blok IP anda ke PS, cara yang baik untuk melakukannya adalah melalui antara muka AXI.
Anda boleh menentukannya dalam kod HLS anda, termasuk ofset yang akan digunakan untuk mengakses nilai kemudian seperti ini:
batal 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 aliran data
x = 42;
y = 0xDEADBEEF; }
Setelah tersambung dengan betul di Vivado, anda boleh mengakses nilai menggunakan kod ini di Vivado SDK:
#sertakan "parameter.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 menjadikan anda berakhir dengan 42 in x dan 0xdeadbeef in y
Langkah 12: Pragma Aliran Data
Di dalam #pragma DATAFLOW cara kod tersebut dilaksanakan berubah dari C ++ biasa. Kod ini disalurkan sehingga semua arahan berjalan sepanjang masa di bahagian data yang berlainan (Anggap saja seperti garis pemasangan di kilang, setiap stesen berfungsi terus melakukan satu fungsi dan meneruskannya ke stesen seterusnya)
dari gambar anda dapat melihat bahawa setiap arahan
Walaupun tampak seperti pemboleh ubah normal, objek img sebenarnya dilaksanakan sebagai penyangga kecil antara perintah. Menggunakan gambar sebagai input untuk fungsi "memakannya" dan menjadikannya tidak dapat digunakan lagi. (Oleh itu perlunya perintah pendua)
Disyorkan:
Linefollower HoGent - Projek Sintesis: 8 Langkah
Linefollower HoGent - Syntheseproject: Voor het vak syntheseproject kregen we de opdracht een linefollower yang dibuat. In deze instruksional zal ik uitleggen hoe ik deze gemaakt heb, en tegen welke problemen ik o.a ben aangelopen
Motor Stepper yang dikendalikan oleh MIDI Dengan Cip Sintesis Digital Langsung (DDS): 3 Langkah
Motor Stepper yang dikendalikan oleh MIDI Dengan Cip Sintesis Digital Langsung (DDS): Pernahkah anda mempunyai idea buruk bahawa anda HANYA terpaksa berubah menjadi projek mini? Baiklah, saya bermain-main dengan sketsa yang saya buat untuk Arduino Due yang bertujuan untuk membuat muzik dengan modul AD9833 Direct Digital Synthesis (DDS) … dan pada suatu ketika saya fikir
Sintesis Sequencer Selari: 17 Langkah (dengan Gambar)
Parallel Sequencer Synth: Ini adalah panduan untuk membuat penjujukan ringkas. Penjurut adalah alat yang secara kitaran menghasilkan serangkaian langkah yang kemudian menggerakkan pengayun. Setiap langkah dapat diberikan dengan nada yang berbeza dan dengan itu membuat urutan atau kesan audio yang menarik
Sintesis Pertama Saya: 29 Langkah (dengan Gambar)
Sintetik Pertama Saya: Anak sintetik itu berlaku semasa saya duduk membongkokkan wayar synthesizer yang kusut. Rakan saya Oliver datang, menilai keadaannya, dan berkata, "Anda tahu anda telah berjaya membuat mainan kanak-kanak paling rumit di dunia." Semasa r awal
Modul Sintesis Raspberry Pi Stompbox: 6 Langkah (dengan Gambar)
Modul Raspberry Pi Stompbox Synth: Matlamat projek ini adalah memasukkan modul suara berasaskan Fluidsynth ke dalam stompbox. Istilah berbunyi teknikal " modul bunyi " dalam kes ini bermaksud peranti yang mengambil mesej MIDI (iaitu nilai nota, kelantangan, lengkungan nada, dll.) dan synthesi