Სარჩევი:
- ნაბიჯი 1: რა არის Vivado HLS?
- ნაბიჯი 2: HLS ვიდეო ბიბლიოთეკა
- ნაბიჯი 3: სინთეზირება
- ნაბიჯი 4: ვერსია და სხვა ინფორმაცია ექსპორტისთვის
- ნაბიჯი 5: ექსპორტი Vivado IP ბიბლიოთეკაში
- ნაბიჯი 6: სინთეზი და ექსპორტის ანალიზი
- ნაბიჯი 7: IP ბიბლიოთეკის დამატება Vivado– ში
- ნაბიჯი 8: განახლების გაკეთება
- ნაბიჯი 9: დამატებითი დეტალები და ინფორმაცია
- ნაბიჯი 10: გამოყვანა და შეყვანა
- ნაბიჯი 11: ინტერფეისის AXI რეგისტრაცია
- ნაბიჯი 12: Dataflow Pragma
ვიდეო: Vivado HLS ვიდეო IP ბლოკის სინთეზი: 12 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
გსურდათ ოდესმე ვიდეოზე რეალურ დროში დამუშავება დიდი შეფერხების გარეშე ან ჩაშენებულ სისტემაში? FPGAs (საველე პროგრამირებადი კარიბჭის მასივები) ზოგჯერ გამოიყენება ამისათვის; თუმცა, ვიდეო დამუშავების ალგორითმების წერა ტექნიკის სპეციფიკაციის ენებზე, როგორიცაა VHDL ან Verilog, საუკეთესო შემთხვევაში იმედგაცრუებულია. შეიყვანეთ Vivado HLS, Xilinx ინსტრუმენტი, რომელიც საშუალებას გაძლევთ დაპროგრამდეთ C ++ გარემოში და შექმნათ აპარატურის სპეციფიკაციის ენის კოდი მისგან.
საჭირო პროგრამები:
- Vivado HLS
- ვივადო
- (თუ იყენებთ AXI რეგისტრებს) Vivado SDK
(სურვილისამებრ) ჩამოტვირთეთ Xilinx– ის მაგალითები აქ:
Xilinx HLS ვიდეო მაგალითები
ნაბიჯი 1: რა არის Vivado HLS?
Vivado HLS არის ინსტრუმენტი, რომელიც გამოიყენება c ++ - ის კოდის აპარატურ სტრუქტურებად გადასაყვანად, რომელსაც შეუძლია განახორციელოს FPGA. იგი მოიცავს IDE- ს ამ განვითარებისათვის. მას შემდეგ რაც დაასრულებთ HLS კოდის შემუშავებას, შეგიძლიათ გენერირებული IP ფორმატის ექსპორტი ვივადოსთან გამოსაყენებლად.
ჩამოტვირთეთ თანდართული ფაილები და განათავსეთ ისინი იმ ადგილას, სადაც თქვენ შექმნით თქვენს პროექტს. (გადაარქვით მათ სახელები "top.cpp" და "top.h", თუ მათ აქვთ რანდომიზებული სახელი)
ნაბიჯი 2: HLS ვიდეო ბიბლიოთეკა
HLS ვიდეო ბიბლიოთეკას აქვს დოკუმენტაცია ამ ნაშრომში მითითებული დიზაინით: XAPP1167 კიდევ ერთი კარგი რესურსია Xilinx ვიკის გვერდი ამის შესახებ.
დაიწყეთ Vivado HLS.
შექმენით ახალი პროექტი.
აიღეთ წინა ეტაპზე გადმოწერილი ფაილები და დაამატეთ ისინი საწყის ფაილებად. (შენიშვნა: ფაილები არ არის კოპირებული პროექტში, არამედ რჩება იქ, სადაც არის)
შემდეგ გამოიყენეთ Browse ღილაკი ზედა ფუნქციის შესარჩევად.
შემდეგ გვერდზე შეარჩიეთ Xilinx ნაწილი, რომელსაც თქვენ იყენებთ.
ნაბიჯი 3: სინთეზირება
ამოხსნა => გაუშვით C სინთეზი => აქტიური გადაწყვეტა
227.218 წამის შემდეგ, ეს უნდა გაკეთდეს. (შენიშვნა: თქვენი ფაქტობრივი სინთეზის დრო განსხვავდება მრავალი ფაქტორიდან გამომდინარე)
ნაბიჯი 4: ვერსია და სხვა ინფორმაცია ექსპორტისთვის
ვერსიების ნომრები ურთიერთქმედებენ Vivado– სთან, რათა თქვენ შეძლოთ IP– ის განახლება დიზაინში. თუ ის უმნიშვნელო ვერსიის შეცვლაა, ის შეიძლება გაკეთდეს ადგილზე, ხოლო ძირითადი ვერსიის ცვლილებები მოითხოვს თქვენ ხელით დაამატოთ ახალი ბლოკი და წაშალოთ ძველი. თუ თქვენი ინტერფეისები არ შეცვლილა და ვერსიის განახლება უმნიშვნელოა, განახლება შეიძლება იყოს სრულიად ავტომატურად განახლების IP ღილაკზე დაჭერით. თქვენ შეგიძლიათ გაუშვათ "report_ip_status" Vivado tcl კონსოლში თქვენი IP სტატუსის სანახავად.
დააყენეთ ვერსიის ნომრები და სხვა ინფორმაცია Solution => Solution Settings…
გარდა ამისა, ამ პარამეტრების დაყენება შესაძლებელია ექსპორტის დროს.
ნაბიჯი 5: ექსპორტი Vivado IP ბიბლიოთეკაში
გამოსავალი => RTL ექსპორტი
თუ თქვენ არ დააყენეთ IP ბიბლიოთეკის დეტალები წინა ეტაპზე, ამის გაკეთება შეგიძლიათ ახლავე.
ნაბიჯი 6: სინთეზი და ექსპორტის ანალიზი
ამ ეკრანზე ჩვენ შეგვიძლია ვიხილოთ სტატისტიკა ჩვენი ექსპორტირებული მოდულის შესახებ, რომელიც აჩვენებს, რომ ის აკმაყოფილებს ჩვენს საათს 10ns (100MHz) და რამდენს იყენებს თითოეული რესურსი.
ამის კომბინაციით, ჩვენი სინთეზის ანგარიში და ჩვენი მონაცემთა ნაკადის ანალიზი, ჩვენ ვხედავთ, რომ მას სჭირდება 317338 საათის ციკლი * 10ns საათის პერიოდი * 14 მილსადენის საფეხურები = 0.04442732 წამი. რაც იმას ნიშნავს, რომ ჩვენი სურათის დამუშავებით დამატებული შეფერხება არის წამის მეოცეზე ნაკლები (როდესაც მიზანმიმართული 100 მეგაჰერც სიხშირეზეა დაფიქსირებული).
ნაბიჯი 7: IP ბიბლიოთეკის დამატება Vivado– ში
თქვენი სინთეზირებული IP ბლოკის გამოსაყენებლად თქვენ დაგჭირდებათ მისი დამატება Vivado– ში.
Vivado– ში დაამატეთ IP საცავი თქვენს პროექტს IP კატალოგზე გადასვლით და მარჯვენა ღილაკით აირჩიეთ „საცავის დამატება…“
გადადით თქვენს Vivado HLS პროექტის დირექტორიაში და შეარჩიეთ თქვენი გადაწყვეტის დირექტორია.
მან უნდა შეატყობინოს IP, რომელიც აღმოაჩინა.
ნაბიჯი 8: განახლების გაკეთება
ზოგჯერ თქვენ გჭირდებათ ცვლილებები თქვენს HLS ბლოკში Vivado დიზაინში ჩართვის შემდეგ.
ამისათვის თქვენ შეგიძლიათ შეიტანოთ ცვლილებები და მოახდინოთ IP- ის სინთეზირება და ექსპორტი უფრო მაღალი ვერსიის ნომრით (იხილეთ დეტალები წინა საფეხურზე ძირითადი/მცირე ვერსიის ნომრის ცვლილებების შესახებ).
ახალი ვერსიის ექსპორტის შეცვლის შემდეგ განაახლეთ თქვენი IP საცავი Vivado– ში. ეს შეიძლება გაკეთდეს, როდესაც Vivado შენიშნავს, რომ IP შეიცვალა საცავში, ან გააქტიურდა ხელით. (შენიშვნა, თუ თქვენ განაახლებთ თქვენს IP საცავებს დაწყების შემდეგ, მაგრამ სანამ ექსპორტი დასრულდება HLS– ში, IP დროებით არ იქნება იქ, დაელოდეთ მის დასრულებას და კვლავ განახლებას.)
ამ დროს უნდა გამოჩნდეს ფანჯარა იმ ინფორმაციით, რომ IP შეიცვალა დისკზე და გაძლევთ შესაძლებლობას განაახლოთ იგი ღილაკით "Upgrade Selected". თუ ცვლილება იყო მცირე ვერსიის ცვლილება და არცერთი ინტერფეისი არ შეცვლილა, ამ ღილაკზე დაჭერით ავტომატურად ჩაანაცვლებს ძველ IP– ს ახალს, წინააღმდეგ შემთხვევაში შეიძლება საჭირო გახდეს მეტი მუშაობა.
ნაბიჯი 9: დამატებითი დეტალები და ინფორმაცია
შემდეგი ნაბიჯები იძლევა უფრო მეტ ინფორმაციას იმის შესახებ, თუ როგორ მუშაობს HLS სინთეზი და რისი გაკეთება შეგიძლიათ მასთან.
პროექტის მაგალითისთვის, HLS სინთეზირებული IP ბლოკის გამოყენებით, იხილეთ ეს ინსტრუქციულად.
ნაბიჯი 10: გამოყვანა და შეყვანა
საბოლოო IP ბლოკში გამომავალი და შესასვლელი განისაზღვრება ანალიზის შედეგად, რომელსაც სინთეზატორი აკეთებს მონაცემთა ნაკადის და ზედა ფუნქციის გარეთ.
VHDL ან verilog– ის მსგავსად, HLS საშუალებას გაძლევთ მიუთითოთ დეტალები IP– ს შორის კავშირების შესახებ. ეს სტრიქონები ამის მაგალითებია:
ბათილი გამოსახულების_ფილტერი (AXI_STREAM და ვიდეო_ში, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE ღერძი პორტი = ვიდეო_შეკვრაში = INPUT_STREAM #pragma HLS INTERFACE ღერძი პორტი = video_out bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUFF = bX
თქვენ ხედავთ, როგორ გავლენას ახდენს IP ბლოკზე გამოსახული პორტები ამ დირექტივებზე.
ნაბიჯი 11: ინტერფეისის AXI რეგისტრაცია
თქვენი IP ბლოკიდან PS– მდე შეყვანის/გამოყვანის მიზნით, ამის კარგი გზაა AXI ინტერფეისის საშუალებით.
თქვენ შეგიძლიათ მიუთითოთ ეს თქვენს HLS კოდში, მათ შორის ოფსეტები, რომლებიც გამოყენებული იქნება შემდეგ მნიშვნელობაზე წვდომისათვის:
ბათილი გამოსახულების_ფილტერი (AXI_STREAM და ვიდეო_ში, 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; }
მას შემდეგ რაც სწორად დაუკავშირდებით Vivado– ს, შეგიძლიათ მიიღოთ ღირებულებები ამ კოდის გამოყენებით Vivado SDK– ში:
#მოიცავს "პარამეტრებს.ჰ"
#განსაზღვრეთ xregoff 0x14 #განსაზღვრეთ 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);
ამით თქვენ მიიღებთ 42 – ს x– ში და 0xdeadbeef– ში y– ში
ნაბიჯი 12: Dataflow Pragma
#Pragma DATAFLOW- ის შიგნით კოდის განხორციელების წესი იცვლება ნორმალური C ++ - დან. კოდი მიწოდებულია ისე, რომ ყველა ინსტრუქცია მუშაობს ნებისმიერ დროს მონაცემთა სხვადასხვა ნაწილში (დაფიქრდით, როგორც ქარხნის შეკრების ხაზი, თითოეული სადგური განუწყვეტლივ ასრულებს ერთ ფუნქციას და გადასცემს მას შემდეგ სადგურს)
სურათიდან ხედავთ, რომ თითოეული დირექტივა
მიუხედავად იმისა, რომ როგორც ჩანს, ნორმალური ცვლადებია, img ობიექტები რეალურად ხორციელდება ბრძანებებს შორის მცირე ბუფერის სახით. გამოსახულების გამოყენება ფუნქციის შესასვლელად "მოიხმარს" მას და აღარ გამოდგება. (აქედან გამომდინარე, დუბლიკატი ბრძანებების საჭიროება)
გირჩევთ:
კომპიუტერის კორპუსის კვების ბლოკის შეცვლა: 6 ნაბიჯი (სურათებით)
კომპიუტერის კაზუსის კვების შეცვლა არის ძალიან მარტივი და 7 გვერდი ნამდვილად გადაჭარბებულია კომპიუტერის საქმეში მარტივი გადამრთველის დაყენებისთვის. ფაქტობრივი
Android TV Box კვების ბლოკის შეკეთება: 5 ნაბიჯი (სურათებით)
Android TV Box ელექტრომომარაგების რემონტი: გამარჯობა ყველას, მე მომცა ეს Android TV ყუთი მის შესაკეთებლად და ჩივილი იყო, რომ ის არ ჩაირთვება. როგორც დამატებითი სიმპტომი, მითხრეს, რომ წარსულში რამდენჯერმე, კაბელი უნდა მიეჭირა დენის ჯეკთან ახლოს, რომ ყუთი ჩართულიყო
ფონო -ქრონოქსილი - 360 გრადუსიანი სინთეზი: 3 ნაბიჯი (სურათებით)
Phono -Chronoxyle - 360 გრადუსიანი სინტი: ჟიულიენ სინოლე მოქანდაკე პარიზიდან და მუსიკოსი მატიას დიურანდი მომიახლოვდნენ პარიზის Parc Floral– ში ინტერაქტიული ხმის ინსტალაციისთვის Nuit Blanche 2019. ინსტალაცია იქნება კარზე და მე არ ვიქნები წარმოდგენილი შიგნით
რეტრო მეტყველების სინთეზი. ნაწილი: 12 IoT, სახლის ავტომატიზაცია: 12 ნაბიჯი (სურათებით)
რეტრო მეტყველების სინთეზი. ნაწილი: 12 IoT, სახლის ავტომატიზაცია: ეს სტატია მე –12 სერიაა სახლის ავტომატიზაციის შესახებ ინსტრუქციებით, რომლებიც ასახავს თუ როგორ უნდა შექმნათ და ინტეგრირდეთ IoT რეტრო მეტყველების სინთეზის მოწყობილობა არსებულ სახლის ავტომატიზაციის სისტემაში, მათ შორის ყველა საჭირო პროგრამული უზრუნველყოფის ფუნქციონირებით
ანალოგური ხმის სინთეზი თქვენს კომპიუტერში: 10 ნაბიჯი (სურათებით)
ანალოგური ხმის სინთეზი თქვენს კომპიუტერში: მოგწონთ ძველი ანალოგური სინთეზატორების ხმა? გსურთ ითამაშოთ ერთთან ერთად თქვენს დროს, თქვენს ადგილას, რამდენიც გინდათ, უფასოდ? აქ თქვენი ოცნების ყველაზე საშინელი ოცნებები ახდება. თქვენ შეიძლება გახდეთ ელექტრონული ჩამწერი მხატვარი ან იუსტიციის