ნაკეცების გამოყენება თანამედროვე მოწყობილობებში. საინფორმაციო და ანალიტიკური პორტალი "ელექტრონიკა დრო" დიდი fpga პროექტების დიზაინის მაგალითები

წარმოიდგინეთ, რომ პროცესორი, იმის ნაცვლად, რომ შეასრულოს ინსტრუქციების კონკრეტული ნაკრები, გადაკეთდება თითოეული პროგრამისთვის და გადააქცევს ალგორითმს პირდაპირ აპარატურაზე. ზუსტად ასე მუშაობს FPG-ები. დღევანდელ სტატიაში მე გეტყვით, თუ როგორ არის ეს შესაძლებელი და გაგაცნობთ FPGA დიზაინის სხვადასხვა მეთოდს.

დასაწყისისთვის, ცოტა უნდა გაიგოთ ASIC ჩიპების ციფრული ლოგიკის შესახებ, მაგრამ მათით დაწყება ძალიან რთული და ძვირია და ამის ნაცვლად ჯობია FPGA-ებით დაიწყოთ.

რა არის FPGA?

FPGAნიშნავს საველე პროგრამირებადი კარიბჭის მასივს (მომხმარებლის მიერ პროგრამირებადი კარიბჭის მასივები, FPGA). უფრო ზოგადად, მათ უწოდებენ FPGA - პროგრამირებადი ლოგიკური ინტეგრირებული სქემები.

FPGA-ის გამოყენებით, შეგიძლიათ სიტყვასიტყვით შეიმუშაოთ ციფრული მიკროსქემები სახლში ჯდომისას, მაგიდაზე არსებული გამართვის დაფის და რამდენიმე ათასი მწვანე რუბლის დეველოპერული პროგრამული უზრუნველყოფის საშუალებით. მაგრამ ასევე არსებობს უფასო ვარიანტები. გთხოვთ გაითვალისწინოთ: ეს არის დიზაინი და არა დაპროგრამება, რადგან გამოსავალზე მივიღებთ ფიზიკურ ციფრულ წრეს, რომელიც ასრულებს გარკვეულ ალგორითმს ტექნიკის დონეზე და არა პროგრამას პროცესორისთვის.

ის მუშაობს შემდეგნაირად. არის მზა ბეჭდური მიკროსქემის დაფა ინტერფეისების კომპლექტით, რომლებიც დაკავშირებულია დაფაზე დაყენებულ FPGA ჩიპთან, მსგავსი მაგარი დაფა მონაცემთა ცენტრისთვის ან ეს გამართვის დაფა ტრენინგისთვის.

სანამ FPGA-ს კონფიგურაციას არ ვაკეთებთ, ჩიპში უბრალოდ არ არის ლოგიკა ინტერფეისებიდან მონაცემების დასამუშავებლად და, შესაბამისად, რა თქმა უნდა, არაფერი იმუშავებს. მაგრამ დიზაინის შედეგად შეიქმნება firmware, რომელიც FPGA-ში ჩატვირთვის შემდეგ შექმნის ჩვენთვის საჭირო ციფრულ წრეს. ამ გზით, თქვენ შეგიძლიათ შექმნათ 100G Ethernet კონტროლერი, რომელიც მიიღებს და დაამუშავებს ქსელის პაკეტებს.

FPGA-ის მნიშვნელოვანი მახასიათებელია მისი ხელახალი კონფიგურაცია. ვთქვათ, ახლა გვჭირდება 100G Ethernet კონტროლერი და ერთ კვირაში იგივე დაფა შეიძლება გამოყენებულ იქნას ოთხი დამოუკიდებელი 25G Ethernet ინტერფეისის დასანერგად.

ბაზარზე FPGA ჩიპების ორი წამყვანი მწარმოებელია: კარგად ცნობილი Intel და Xilinx. ისინი აკონტროლებენ ბაზრის 58 და 42%-ს. Xilinx-ის დამფუძნებლებმა გამოიგონეს თავიანთი პირველი FPGA ჩიპი ჯერ კიდევ 1985 წელს. Intel ბაზარზე სულ ცოტა ხნის წინ შემოვიდა - 2015 წელს, რომელმაც შთანთქა Altera, რომელიც Xilinx-თან ერთად დაარსდა. Altera და Xilinx ტექნოლოგიები მსგავსია მრავალი თვალსაზრისით, ისევე როგორც განვითარების გარემო. მე უფრო ხშირად ვმუშაობდი Xilinx-ის პროდუქტებთან, ამიტომ არ გაგიკვირდეთ მისი მუდმივი ხსენება სტატიაში.

FPGA ფართოდ გამოიყენება სხვადასხვა სფეროში: სამომხმარებლო ელექტრონიკა, სატელეკომუნიკაციო აღჭურვილობა, ამაჩქარებლის დაფები მონაცემთა ცენტრებში გამოსაყენებლად, რობოტიკა, ASIC ჩიპების პროტოტიპირება. ქვემოთ განვიხილავ რამდენიმე მაგალითს.

ჩვენ ასევე განვიხილავთ ტექნოლოგიას, რომელიც უზრუნველყოფს ტექნიკის რეკონფიგურაციას, გავეცნობით დიზაინის პროცესს და შევხედავთ Verilog-ში ტექნიკის მრიცხველის დანერგვის მარტივ მაგალითს. თუ თქვენ გაქვთ რაიმე FPGA განვითარების დაფა, თქვენ უნდა შეძლოთ ამის გამეორება. თუ დაფა არ არის, თქვენ მაინც შეგიძლიათ გაეცნოთ Verilog-ს თქვენს კომპიუტერზე მიკროსქემის მუშაობის სიმულირებით.

FPGA-ს მუშაობის პრინციპი

FPGA ჩიპი არის იგივე მორგებული ASIC ჩიპი, რომელიც შედგება იგივე ტრანზისტორებისგან, საიდანაც იკრიბება ფლიპ-ფლოპები, რეგისტრები, მულტიპლექსერები და სხვა ლოგიკური ელემენტები ჩვეულებრივი სქემებისთვის. რა თქმა უნდა, შეუძლებელია ამ ტრანზისტორების მიერთების თანმიმდევრობის შეცვლა. მაგრამ არქიტექტურულად, მიკროსქემა აგებულია ისე ჭკვიანურად, რომ შესაძლებელია სიგნალების გადართვის შეცვლა უფრო დიდ ბლოკებს შორის: მათ უწოდებენ CLB - პროგრამირებადი ლოგიკური ბლოკები.

ასევე შესაძლებელია შეიცვალოს ლოგიკური ფუნქცია, რომელსაც ასრულებს CLB. ეს მიიღწევა იმის გამო, რომ მთელი ჩიპი გაჟღენთილია სტატიკური ოპერატიული მეხსიერების კონფიგურაციის უჯრედებით. ამ მეხსიერების თითოეული ბიტი ან აკონტროლებს სიგნალის გადართვის კლავიშს, ან არის ლოგიკური ფუნქციის სიმართლის ცხრილის ნაწილი, რომელსაც CLB ახორციელებს.

ვინაიდან კონფიგურაციის მეხსიერება აგებულია Static RAM ტექნოლოგიის გამოყენებით, ჯერ ერთი, როდესაც FPGA ჩართულია, ჩიპი უნდა იყოს კონფიგურირებული და მეორეც, ჩიპის კონფიგურაცია შესაძლებელია თითქმის უსასრულო რაოდენობის ჯერ.

ძალიან გამარტივებული 2D ჩიპის სტრუქტურა კონფიგურაციის მეხსიერების გარეშე

CLB-ები განლაგებულია გადამრთველ ქსოვილში, რომელიც განსაზღვრავს კავშირებს CLB-ების შეყვანასა და გამომავალს შორის.

გადართვის მატრიცული დიაგრამა

დირიჟორების თითოეულ კვეთაზე არის ექვსი გადამრთველი, რომელსაც აკონტროლებს საკუთარი კონფიგურაციის მეხსიერების უჯრედები. ზოგიერთის გახსნით და სხვის დახურვით, შეგიძლიათ უზრუნველყოთ სხვადასხვა სიგნალის გადართვა CLB-ებს შორის.

CLB

CLB უბრალოდ შედგება ბლოკისგან, რომელიც განსაზღვრავს ლოგიკურ ფუნქციას რამდენიმე არგუმენტისგან (მას უწოდებენ Look Up Table, LUT) და ტრიგერის (Flip-flop, FF). თანამედროვე FPGA-ებში LUT-ს აქვს ექვსი შეყვანა, მაგრამ სიმარტივისთვის სურათი გვიჩვენებს სამს. LUT-ის გამომავალი მიეწოდება CLB გამომავალს ასინქრონულად (პირდაპირ) ან სინქრონულად (FF flip-flop-ის მეშვეობით, რომელიც მუშაობს სისტემის საათზე).

LUT განხორციელების პრინციპი

საინტერესოა შევხედოთ LUT განხორციელების პრინციპს. მოდით გვქონდეს ლოგიკური ფუნქცია y = (a & b) | ~ გ . მისი მიკროსქემის დიაგრამა და სიმართლის ცხრილი ნაჩვენებია სურათზე. ფუნქციას აქვს სამი არგუმენტი, ამიტომ იღებს 2^3 = 8 მნიშვნელობას. თითოეული მათგანი შეესაბამება შეყვანის სიგნალების საკუთარ კომბინაციას. ეს მნიშვნელობები გამოითვლება FPGA firmware განვითარების პროგრამით და იწერება სპეციალური კონფიგურაციის მეხსიერების უჯრედებში.

თითოეული უჯრედის მნიშვნელობა მიეწოდება მის შეყვანას გამომავალი მულტიპლექსერის LUT, ხოლო ლოგიკური ფუნქციის შეყვანის არგუმენტები გამოიყენება ფუნქციის ამა თუ იმ მნიშვნელობის შესარჩევად. CLB არის FPGA-ს ყველაზე მნიშვნელოვანი ტექნიკის რესურსი. თანამედროვე FPGA ჩიპებში CLB-ების რაოდენობა შეიძლება განსხვავდებოდეს და დამოკიდებულია ჩიპის ტიპსა და მოცულობაზე. Xilinx კვდება CLB ითვლებით დაახლოებით ოთხი ათასიდან სამ მილიონამდე.

CLB-ის გარდა, FPGA-ში არის მრავალი სხვა მნიშვნელოვანი ტექნიკის რესურსი. მაგალითად, ტექნიკის გამრავლება-დაგროვების ერთეული ან DSP ერთეული. თითოეულ მათგანს შეუძლია შეასრულოს გამრავლების და შეკრების ოპერაციები 18-ბიტიან რიცხვებზე ყოველ საათის ციკლში. ზედა დონის კრისტალებში, DSP ბლოკების რაოდენობა შეიძლება აღემატებოდეს 6000-ს.

კიდევ ერთი რესურსი არის ბლოკები შიდა მეხსიერება(დაბლოკეთ RAM, BRAM). თითოეულ ბლოკს შეუძლია შეინახოს 2 კბ. ასეთი მეხსიერების საერთო მოცულობა, ბროლის მიხედვით, შეიძლება მიაღწიოს 20 კბ-დან 20 მბ-მდე. CLB-ების მსგავსად, BRAM-ები და DSP ბლოკები დაკავშირებულია გადამრთველი ქსოვილით და ვრცელდება მთელ საძირკველზე. CLB, DSP და BRAM ბლოკების ურთიერთდაკავშირებით, მონაცემთა დამუშავების ძალიან ეფექტური სქემები შეიძლება მიიღოთ.

FPGA-ს უპირატესობები

Xilinx-ის მიერ 1985 წელს შექმნილი პირველი FPGA ჩიპი მხოლოდ 64 CLB-ს შეიცავდა. იმ დროს ტრანზისტორების ინტეგრაცია ჩიპებზე გაცილებით დაბალი იყო, ვიდრე ახლაა და ციფრული მოწყობილობები ხშირად იყენებდნენ „გაფანტული ლოგიკის“ ჩიპებს. არსებობდა ცალკეული მიკროსქემები რეგისტრებისთვის, მრიცხველებისთვის, მულტიპლექსერებისთვის და მამრავლებისთვის. ქვეშ კონკრეტული მოწყობილობაჩვენ შევქმენით ჩვენი ბეჭდური მიკროსქემის დაფა, რომელზედაც დამონტაჟდა ეს დაბალი ინტეგრაციის მიკროსქემები.

FPGA-ს გამოყენებამ შესაძლებელი გახადა ამ მიდგომის მიტოვება. თუნდაც 64 CLB FPGA დაზოგავს მნიშვნელოვან ადგილს ბეჭდური მიკროსქემის დაფა, და ხელახალი კონფიგურაციის ხელმისაწვდომობამ დაამატა მოწყობილობების ფუნქციონირების განახლების შესაძლებლობა ოპერაციის დროს წარმოების შემდეგ, როგორც ამბობენ "ველში" (აქედან გამომდინარე, სახელწოდება - საველე პროგრამირებადი კარიბჭის მასივი).

გამომდინარე იქიდან, რომ ნებისმიერი აპარატურის ციფრული წრე შეიძლება შეიქმნას FPGA-ში (მთავარია საკმარისი რესურსი იყოს), FPGA-ების ერთ-ერთი მნიშვნელოვანი აპლიკაციაა ASIC ჩიპების პროტოტიპირება.

ASIC განვითარება ძალიან რთული და ძვირია, შეცდომის ღირებულება ძალიან მაღალია და ლოგიკური ტესტირების საკითხი კრიტიკულია. ამრიგად, განვითარების ერთ-ერთი ეტაპი, მიკროსქემის ფიზიკურ ტოპოლოგიაზე მუშაობის დაწყებამდეც კი, იყო მისი პროტოტიპირება ერთ ან მეტ FPGA ჩიპზე.

ASIC-ის განვითარებისთვის იწარმოება სპეციალური დაფები, რომლებიც შეიცავს ბევრ FPGA-ს, რომლებიც დაკავშირებულია ერთმანეთთან. მიკროსქემის პროტოტიპი მუშაობს მნიშვნელოვნად დაბალ სიხშირეზე (შეიძლება ათობით მეგაჰერცი), მაგრამ საშუალებას იძლევა დაზოგოთ პრობლემები და შეცდომები.

თუმცა, ჩემი აზრით, FPGA-ების უფრო საინტერესო აპლიკაციები არსებობს. FPGA-ის მოქნილი სტრუქტურა საშუალებას იძლევა განახორციელოს ტექნიკის სქემები მონაცემთა მაღალსიჩქარიანი და პარალელური დამუშავებისთვის ალგორითმის შეცვლის შესაძლებლობით.


ტექნიკის პლატფორმების შედარება

მოდით ვიფიქროთ იმაზე, თუ როგორ განსხვავდება CPU, GPU, FPGA და ASIC ძირეულად. CPU უნივერსალურია, მასზე შეგიძლიათ გაუშვათ ნებისმიერი ალგორითმი, ის არის ყველაზე მოქნილი და ყველაზე მარტივი გამოსაყენებელია პროგრამირების ენების და განვითარების გარემოს უზარმაზარი რაოდენობის წყალობით.

ამავდროულად, CPU ინსტრუქციების მრავალფეროვნებისა და თანმიმდევრული შესრულების გამო, შესრულება მცირდება და მიკროსქემის ენერგიის მოხმარება იზრდება. ეს იმიტომ ხდება, რომ ყოველი სასარგებლო არითმეტიკული ოპერაცია CPU ასრულებს ბევრ დამატებით ოპერაციას, რომლებიც დაკავშირებულია ინსტრუქციების წაკითხვასთან, მონაცემთა გადაადგილებასთან რეგისტრებსა და ქეშს შორის და სხვა მოძრაობებთან.

მეორე მხარეს არის ASIC. ამ პლატფორმაზე, საჭირო ალგორითმი დანერგილია აპარატურაში ტრანზისტორების უშუალო შეერთებით; ყველა ოპერაცია დაკავშირებულია მხოლოდ ალგორითმის შესრულებასთან და არ არსებობს მისი შეცვლის საშუალება. აქედან გამომდინარეობს პლატფორმის მაქსიმალური შესრულება და ენერგიის დაბალი მოხმარება. მაგრამ ASIC-ის გადაპროგრამება შეუძლებელია.

CPU-ს მარჯვნივ არის GPU. ეს ჩიპები თავდაპირველად გრაფიკული დამუშავებისთვის იყო შექმნილი, მაგრამ ახლა ასევე გამოიყენება მაინინგ გამოთვლებისთვის. ძირითადი მიზანი. ისინი შედგება ათასობით მცირე გამოთვლითი ბირთვისგან და ასრულებენ პარალელურ ოპერაციებს მონაცემთა მასივზე.

თუ ალგორითმის პარალელიზება შესაძლებელია, მაშინ GPU-ს შეუძლია მიაღწიოს მნიშვნელოვან აჩქარებას CPU-სთან შედარებით. მეორეს მხრივ, თანმიმდევრული ალგორითმები უარესად განხორციელდება, ამიტომ პლატფორმა ნაკლებად მოქნილი აღმოჩნდება ვიდრე CPU. ასევე, GPU-სთვის განვითარებისთვის საჭიროა გქონდეთ სპეციალური უნარები, იცოდეთ OpenCL ან CUDA.

და ბოლოს, FPGA. ეს პლატფორმა აერთიანებს ASIC-ების ეფექტურობას პროგრამის შეცვლის შესაძლებლობასთან. FPGA არ არის უნივერსალური, მაგრამ არსებობს ალგორითმებისა და ამოცანების კლასი, რომელიც აჩვენებს მათზე უკეთეს შესრულებას, ვიდრე CPU-ზე ან თუნდაც GPU-ზე. FPGA-ებისთვის შემუშავების სირთულე უფრო მაღალია, მაგრამ განვითარების ახალი ინსტრუმენტები ამ ხარვეზს ამცირებენ.

FPGA-ების გადამწყვეტი უპირატესობა არის მონაცემთა დამუშავების შესაძლებლობა, როდესაც ისინი მიდიან პასუხების მინიმალური დაგვიანებით. მაგალითად, შეგიძლიათ წარმოიდგინოთ ჭკვიანი ქსელის როუტერი დიდი თანხაპორტები: როდესაც Ethernet პაკეტი ჩამოდის მის ერთ-ერთ პორტზე, ბევრი წესი უნდა შემოწმდეს გამომავალი პორტის არჩევამდე. შესაძლოა დაგჭირდეთ პაკეტში ზოგიერთი ველის შეცვლა ან ახლის დამატება.

FPGA-ის გამოყენება საშუალებას გაძლევთ მომენტალურად მოაგვაროთ ეს პრობლემა: პაკეტის ბაიტებმა ახლახან დაიწყეს ჩიპზე ჩამოსვლა ქსელის ინტერფეისიდან და მისი სათაური უკვე გაანალიზებულია. აქ პროცესორების გამოყენებამ შეიძლება მნიშვნელოვნად შეანელოს ქსელის ტრაფიკის დამუშავების სიჩქარე. გასაგებია, რომ მარშრუტიზატორებს შეუძლიათ ჰქონდეთ მორგებული ASIC, რომელიც ყველაზე ეფექტურად მუშაობს, მაგრამ რა მოხდება, თუ პაკეტების დამუშავების წესები უნდა შეიცვალოს? მხოლოდ FPGA-ებს შეუძლიათ მიაღწიონ საჭირო მოქნილობას მაღალ შესრულებასთან ერთად.

ამრიგად, FPGA გამოიყენება იქ, სადაც საჭიროა მონაცემთა დამუშავების მაღალი შესრულება, უმოკლეს რეაგირების დრო და დაბალი ენერგიის მოხმარება.

FPGA ღრუბელში

ღრუბლოვან გამოთვლებში FPGA გამოიყენება სწრაფი გამოთვლებისთვის, ქსელის ტრაფიკის დაჩქარებისთვის და მონაცემთა მასივებზე წვდომისთვის. ეს ასევე მოიცავს FPGA-ების გამოყენებას ბირჟებზე მაღალი სიხშირის ვაჭრობისთვის. FPGA დაფებით PCI Expressდა Intel (Altera) ან Xilinx-ის მიერ წარმოებული ოპტიკური ქსელის ინტერფეისი.

FPGA შესანიშნავია კრიპტოგრაფიული ალგორითმებისთვის, დნმ-ის თანმიმდევრობის შედარებისთვის და სამეცნიერო ამოცანებისთვის, როგორიცაა მოლეკულური დინამიკა. Microsoft დიდი ხანია იყენებს FPGA-ებს Bing საძიებო სერვისის დასაჩქარებლად, ასევე პროგრამული უზრუნველყოფის განსაზღვრული ქსელის ორგანიზებისთვის Azure ღრუბელში.

მანქანათმცოდნეობის ბუმმა ასევე არ დაზოგა FPGA-ები. Xilinx და Intel გვთავაზობენ FPGA-ზე დაფუძნებულ ინსტრუმენტებს ღრმა ნერვულ ქსელებთან მუშაობისთვის. ისინი საშუალებას გაძლევთ მიიღოთ FPGA firmware, რომელიც ახორციელებს კონკრეტულ ქსელს პირდაპირ ჩარჩოებიდან, როგორიცაა Caffe და TensorFlow.

უფრო მეტიც, ეს ყველაფერი შეგიძლიათ სცადოთ სახლიდან გაუსვლელად და გამოყენების გარეშე ღრუბლოვანი სერვისები. მაგალითად, შეგიძლიათ დაიქირავოთ ამაზონიდან ვირტუალური ხელსაწყო FPGA დაფაზე და განვითარების ნებისმიერ ინსტრუმენტზე წვდომით, მანქანური სწავლის ჩათვლით.

FPGA ზღვარზე

კიდევ რა საინტერესო საქმეებს აკეთებენ FPGA-ები? რატომ არაფერს აკეთებენ! რობოტიკა, თვითმართვადი მანქანები, დრონები, სამეცნიერო ინსტრუმენტები, სამედიცინო აღჭურვილობა, საბაჟო მობილური მოწყობილობები, ჭკვიანი CCTV კამერები და ა.შ.

ტრადიციულად, FPGA გამოიყენებოდა ერთგანზომილებიანი სიგნალების ციფრული დამუშავებისთვის (და კონკურენციას უწევდა DSP პროცესორებს) რადარის მოწყობილობებში, რადიო გადამცემებში. ჩიპების ინტეგრაციისა და შესრულების გაზრდით, FPGA პლატფორმები სულ უფრო ხშირად გამოიყენება მაღალი ხარისხის გამოთვლებისთვის, როგორიცაა 2D სიგნალის დამუშავება ღრუბლის კიდეზე.

ეს კონცეფცია ყველაზე ადვილად გასაგებია საგზაო მოძრაობის კამერის გამოყენებით სანომრე ნიშნების ამოცნობით, როგორც მაგალითი. შეგიძლიათ აიღოთ კამერა, რომელსაც შეუძლია ვიდეო გადაიტანოს Ethernet-ით და დაამუშავოს ნაკადი დისტანციურ სერვერზე. კამერების რაოდენობის მატებასთან ერთად, ქსელში დატვირთვაც გაიზრდება, რამაც შეიძლება გამოიწვიოს სისტემის გაუმართაობა.

ამის ნაცვლად, სჯობს სანომრე ნიშნების ამოცნობა განხორციელდეს უშუალოდ ვიდეოკამერის კორპუსში დაყენებულ კომპიუტერზე და ნომრის ნომრები ღრუბელში ტექსტური ფორმატით გადაიტანოთ. ამისათვის თქვენ შეგიძლიათ აიღოთ შედარებით იაფი FPGA-ები დაბალი ენერგიის მოხმარებით, რათა დაკმაყოფილდეთ ბატარეით. ამავდროულად, შესაძლებელია FPGA-ს ოპერაციული ლოგიკის შეცვლა, მაგალითად, სანომრე ნიშნის სტანდარტის შეცვლისას.

რაც შეეხება რობოტიკას და დრონებს, ამ სფეროში განსაკუთრებით მნიშვნელოვანია ორი პირობის შესრულება - მაღალი წარმადობა და დაბალი ენერგიის მოხმარება. FPGA პლატფორმა იდეალურია და შეიძლება გამოყენებულ იქნას, კერძოდ, თვითმფრინავების ფრენის კონტროლერების შესაქმნელად. ისინი უკვე ქმნიან უპილოტო საფრენ აპარატებს, რომლებსაც შეუძლიათ გადაწყვეტილების მიღება ფრენის დროს.

პროექტის განვითარება FPGA-ზე

არსებობს დიზაინის სხვადასხვა დონე: დაბალი, ბლოკი და მაღალი. დაბალი დონე მოიცავს ენების გამოყენებას, როგორიცაა Verilog ან VHDL, რომლებშიც თქვენ აკონტროლებთ განვითარებას რეესტრის გადაცემის დონეზე (RTL). ამ შემთხვევაში, თქვენ ქმნით რეგისტრებს, როგორც პროცესორში, და განსაზღვრავთ ლოგიკურ ფუნქციებს, რომლებიც ცვლის მათ შორის მონაცემებს.

FPGA სქემები ყოველთვის მუშაობენ კონკრეტული საათის სიჩქარით (ჩვეულებრივ 100-300 MHz) და RTL დონეზე თქვენ განსაზღვრავთ მიკროსქემის ქცევას სისტემის საათის სიხშირემდე. ამ შრომატევადი სამუშაოს შედეგად მიიღება დიზაინები, რომლებიც მაქსიმალურად ეფექტურია შესრულების, FPGA-ს რესურსების მოხმარებისა და ენერგიის მოხმარების თვალსაზრისით. მაგრამ ეს მოითხოვს სერიოზულ უნარებს მიკროსქემის დიზაინში და მათთანაც კი პროცესი ნელია.

ბლოკის დონეზე, თქვენ ძირითადად დაკავებული ხართ მზა დიდი ბლოკების შეერთებით, რომლებიც ასრულებენ გარკვეულ ფუნქციებს, რათა მიიღოთ თქვენთვის საჭირო სისტემა-ჩიპზე ფუნქციონირება.

დიზაინის მაღალ დონეზე, თქვენ აღარ აკონტროლებთ მონაცემებს ყოველ საათის ციკლში, არამედ ფოკუსირდებით ალგორითმზე. არსებობს შემდგენელები ან მთარგმნელები C-დან და C++-დან RTL დონეზე, მაგალითად Vivado HLS. ის საკმაოდ ჭკვიანია და საშუალებას გაძლევთ თარგმნოთ ალგორითმების ფართო კლასი ტექნიკის დონეზე.

ამ მიდგომის მთავარი უპირატესობა RTL ენებთან შედარებით არის ალგორითმის განვითარების და განსაკუთრებით ტესტირების დაჩქარება: C++ კოდის გაშვება და შემოწმება შესაძლებელია კომპიუტერზე და ეს ბევრად უფრო სწრაფი იქნება, ვიდრე RTL დონეზე ალგორითმის ცვლილებების ტესტირება. რა თქმა უნდა, თქვენ უნდა გადაიხადოთ მოხერხებულობისთვის - სქემა შეიძლება არც ისე სწრაფი იყოს და უფრო მეტ ტექნიკის რესურსს დაიკავებს.

ხშირად ჩვენ მზად ვართ გადავიხადოთ ეს ფასი: თუ მთარგმნელს სწორად გამოვიყენებთ, მაშინ ეფექტურობა დიდად არ დაზარალდება და თანამედროვე FPGA-ებს აქვთ საკმარისი რესურსები. ჩვენს სამყაროში, სადაც ბაზრისთვის კრიტიკული დროა, ეს გამართლებულია.

ხშირად საჭიროა სამივე განვითარების სტილის ერთ დიზაინში გაერთიანება. ვთქვათ, ჩვენ უნდა გავაკეთოთ მოწყობილობა, რომელიც შეგვიძლია რობოტად ავაშენოთ და მივცეთ მას ვიდეო ნაკადში ობიექტების ამოცნობის უნარი - მაგალითად, საგზაო ნიშნები. ავიღოთ ვიდეო სენსორის ჩიპი და დავუკავშიროთ პირდაპირ FPGA-ს. გამართვისთვის შეგვიძლია გამოვიყენოთ hdmi მონიტორი, ასევე დაკავშირებულია FPGA-სთან.

კამერის ჩარჩოები გადაეცემა FPGA-ს ინტერფეისის მეშვეობით, რომელიც მკაფიოდ არის განსაზღვრული სენსორის მწარმოებლის მიერ (აქ USB არ მუშაობს), დამუშავდება და გამოჩნდება მონიტორზე. ჩარჩოების დასამუშავებლად დაგჭირდებათ ფრეიმბუფერი, რომელიც ჩვეულებრივ მდებარეობს გარედან DDR მეხსიერებადაყენებული ბეჭდური მიკროსქემის დაფაზე FPGA ჩიპის გვერდით.


FPGA დიზაინის ტიპიური ბლოკ-სქემა

თუ ვიდეო სენსორის მწარმოებელი არ უზრუნველყოფს ინტერფეისის IP ჩვენს FPGA ჩიპს, მაშინ ჩვენ თვითონ მოგვიწევს მისი ჩაწერა RTL-ში, დავთვალოთ საათის ციკლები, ბიტები და ბაიტები მონაცემთა გადაცემის პროტოკოლის სპეციფიკაციის შესაბამისად. ჩვენ სავარაუდოდ ავიღებთ მზა ბლოკებს Preprocess, DDR Controller და HDMI IP და უბრალოდ დავაკავშირებთ მათ ინტერფეისებს. და ჩვენ შეგვიძლია ჩავწეროთ HLS ბლოკი, რომელიც ეძებს და ამუშავებს შემოსულ მონაცემებს, C++-ში და გავავრცელოთ Vivado HLS-ის გამოყენებით.

სავარაუდოდ, ჩვენ კვლავ დაგვჭირდება დეტექტორისა და საგზაო ნიშნების კლასიფიკატორის მზა ბიბლიოთეკა, რომელიც ადაპტირებულია FPGA-ში გამოსაყენებლად. ამ მაგალითში, რა თქმა უნდა, წარმოგიდგენთ უაღრესად გამარტივებულ დიზაინის სქემას, მაგრამ ის სწორად ასახავს ოპერაციის ლოგიკას.

მოდით გადავხედოთ დიზაინის გზას RTL კოდის დაწერიდან კონფიგურაციის ფაილის FPGA-ში ჩატვირთვამდე.

დიზაინის გზა

ასე რომ, თქვენ წერთ RTL კოდს, რომელიც ახორციელებს თქვენთვის სასურველ წრეს. რეალურ აპარატზე მის გამოცდამდე უნდა დარწმუნდეთ, რომ ის სწორია და სწორად აგვარებს საჭირო პრობლემას. ამისათვის RTL მოდელირება გამოიყენება კომპიუტერის სიმულატორში.

თქვენ იღებთ თქვენს წრეს, რომელიც ამჟამად წარმოდგენილია მხოლოდ RTL კოდით, და განათავსებთ მას ვირტუალურ სკამზე, სადაც მიმართავთ ციფრული სიგნალების თანმიმდევრობას მიკროსქემის შეყვანებზე, ჩაწერთ გამომავალ დიაგრამებს, გამომავალი სიგნალების დროზე დამოკიდებულებებს და ადარებთ მათ მოსალოდნელი შედეგებით. ჩვეულებრივ, თქვენ პოულობთ შეცდომებს და უბრუნდებით RTL-ს წერას.

შემდეგი, ლოგიკურად დამოწმებული კოდი მიეწოდება სინთეზატორის პროგრამაში შეყვანის სახით. ის გარდაქმნის მიკროსქემის ტექსტურ აღწერილობას ციფრული ელემენტების დაკავშირებულ სიაში ბიბლიოთეკიდან, რომელიც ხელმისაწვდომია მოცემული FPGA-სთვის. ეს სია აჩვენებს ელემენტებს, როგორიცაა LUTs, ტრიგერები და მათ შორის კავშირები. ამ ეტაპზე ელემენტები ჯერ არ არის მიბმული სპეციფიკურ აპარატურულ რესურსებთან. ამისათვის თქვენ უნდა დააწესოთ შეზღუდვები წრედზე - კერძოდ, მიუთითეთ FPGA ჩიპის რომელ ფიზიკურ I/O პინებთან არის დაკავშირებული თქვენი მიკროსქემის ლოგიკური შეყვანა და გამომავალი.

ეს შეზღუდვები ასევე მოითხოვს, რომ მიუთითოთ რა საათის სიჩქარით უნდა იმუშაოს წრედმა. სინთეზატორის გამომავალი და შეზღუდვის ფაილი იგზავნება Implementation პროცესორში, რომელიც, სხვა საკითხებთან ერთად, ამუშავებს ადგილს და მარშრუტს.

Place პროცესი აკავშირებს თითოეულ ჯერ კიდევ ანონიმურ ელემენტს ქსელის სიიდან კონკრეტულ ელემენტთან FPGA ჩიპის შიგნით. შემდეგი, მარშრუტის პროცესი იწყებს მუშაობას, რომელიც ცდილობს იპოვოს ამ ელემენტების ოპტიმალური კავშირი FPGA გადართვის მატრიცის შესაბამისი კონფიგურაციისთვის.

ადგილი და მარშრუტი მოქმედებს იმ შეზღუდვების საფუძველზე, რომლებიც ჩვენ დავაყენეთ წრედზე: I/O პინები და საათის სიჩქარე. საათის პერიოდს აქვს ძალიან ძლიერი გავლენა იმპლემენტაციაზე: ის არ უნდა იყოს ნაკლები დროის დაყოვნებაზე ლოგიკურ კარიბჭეზე კრიტიკულ წრეში ორ თანმიმდევრულ ფლიპ-ფლოპს შორის.

ხშირად შეუძლებელია ამ მოთხოვნის დაუყონებლივ დაკმაყოფილება, შემდეგ კი საჭიროა საწყის ეტაპზე დაბრუნება და RTL კოდის შეცვლა: მაგალითად, შეეცადეთ შეამციროთ ლოგიკა კრიტიკულ ჯაჭვში. განხორციელების წარმატებით დასრულების შემდეგ, ჩვენ ვიცით, რომელი ელემენტები სად მიდის და როგორ არის დაკავშირებული.

მხოლოდ ამის შემდეგ იწყება ბინარული FPGA firmware ფაილის შექმნის პროცესი. რჩება მხოლოდ მისი ჩატვირთვა რეალურ აპარატურაში და შეამოწმეთ მუშაობს თუ არა ისე, როგორც მოსალოდნელია. თუ ამ ეტაპზე პრობლემები წარმოიქმნება, ეს ნიშნავს, რომ მოდელირება იყო არასრული და ყველა შეცდომა და ხარვეზი ამ ეტაპზე არ აღმოიფხვრა.

თქვენ შეგიძლიათ დაბრუნდეთ სიმულაციის ეტაპზე და მოაწყოთ საგანგებო სიტუაციის სიმულაცია, ხოლო თუ ეს არ მუშაობს, როგორც ბოლო საშუალება, გამართვის მექანიზმი უზრუნველყოფილია უშუალოდ სამუშაო აპარატურაში. თქვენ შეგიძლიათ მიუთითოთ რომელი სიგნალების თვალყურის დევნება გსურთ დროთა განმავლობაში და დიზაინის გარემო წარმოქმნის დამატებით ლოგიკური ანალიზატორის წრეს, რომელიც ზის თქვენი დიზაინის გვერდით ჩიპზე, უერთდება თქვენთვის საინტერესო სიგნალებს და ინახავს მათ მნიშვნელობებს დროთა განმავლობაში. . სასურველი სიგნალების შენახული დროის დიაგრამები შეიძლება გადმოიწეროს კომპიუტერში და გაანალიზდეს.

პროექტის განხორციელება FPGA-ზე

ფუნქციური მოდელირების გამოყენებით ლოგიკური სქემის შემოწმების შემდეგ, აუცილებელია მისი განთავსება ჩიპზე. შემდეგ გააკეთეთ მიკროსქემის სიმულაცია ჩიპზე მიკროსქემის დადების შემდეგ მიღებული ელემენტების ფაქტობრივი შეფერხებების გათვალისწინებით. საჭიროების შემთხვევაში, დაარეგულირეთ მიღებული ხსნარები. რის შემდეგაც წრე იტვირთება FPGA-ში და ტესტირება სკამზე.

ბრინჯი. 82.ციფრული მოწყობილობის დიზაინის ეტაპები FPGA-ზე

FPGA-ზე დიზაინის ძირითადი ეტაპები (ლექციებიდან):

    შემუშავებულია მოწყობილობის დიაგრამა და შედის XILINX-ში.

    ხორციელდება იმპლემენტაცია (თარგმნა, მიკროსქემის ფორმირება ბიბლიოთეკის ელემენტების ამოღებით, ოპტიმიზაცია, ჩიპზე განთავსება).

    პროგრამირება.

  1. ასოციაციური მეხსიერება. ორგანიზაცია, შერჩევის მეთოდი, განსხვავებები მისამართების შენახვისგან.

ასოციაციური წვდომაახორციელებს ინფორმაციის ძიებას ზოგიერთი მახასიათებლის საფუძველზე და არა მისი მდებარეობის მეხსიერებაში (მისამართი ან ადგილი რიგში). ყველაზე სრულ ვერსიაში, მეხსიერებაში შენახული ყველა სიტყვა ერთდროულად შემოწმდება მახასიათებლებთან შესაბამისობაში, მაგალითად, გარკვეული სიტყვის ველების (ტეგები - ინგლისური სიტყვის ტეგიდან) დამთხვევისთვის შეყვანის სიტყვით მითითებულ ფუნქციასთან (ტეგის მისამართი). ). გამოდის სიტყვები, რომლებიც აკმაყოფილებენ კრიტერიუმს. სიტყვების გამოცემის დისციპლინა, თუ რამდენიმე სიტყვა აკმაყოფილებს ტეგს, ისევე როგორც ახალი მონაცემების ჩაწერის დისციპლინა შეიძლება იყოს განსხვავებული. თანამედროვე კომპიუტერებში ასოციაციური მეხსიერების გამოყენების ძირითადი სფეროა მონაცემთა ქეშირება.

ასოციაციურ შესანახ მოწყობილობებში ინფორმაციის მოძიება ხდება მეხსიერების თითოეულ უჯრედში ჩაწერილი ასოციაციური ფუნქციის მიხედვით.

ნიღბის რეესტრში იწერება სიტყვა, რომელიც საშუალებას აძლევს შეკითხვის დასმას ასოციაციური ატრიბუტის ყველა ან მხოლოდ ზოგიერთ ბიტზე; ნიღბის გამოყენება საშუალებას გაძლევთ შეამციროთ ან გააფართოვოთ საძიებო არეალი.

ინფორმაციის ძებნა პარალელურად ხორციელდება ყველა უჯრედში, მოთხოვნის შედარებით თითოეული უჯრედის ასოციაციურ მახასიათებლებთან.

ძიების შედეგი წარმოიქმნება სპეციალური კომბინირებული სქემით, რომელიც წარმოქმნის სიგნალებს, რომლებიც აცნობებენ სიტყვების არარსებობას, რომლებიც აკმაყოფილებენ საძიებო პირობებს, მხოლოდ ერთი სიტყვის არსებობის შესახებ, რამდენიმე სიტყვის არსებობის შესახებ, რომლებსაც აქვთ ასეთი ასოციაციური ფუნქცია.

გამაფრთხილებელი სიგნალების გენერირებისა და დამუშავების შემდეგ საკონტროლო წრე კითხულობს საჭირო ინფორმაციას. წერისას, თავისუფალი უჯრედი მოიძებნება დაკავებულობის ბიტის მნიშვნელობის საფუძველზე და ინფორმაცია იწერება პირველ ნაპოვნი თავისუფალ უჯრედში.

დაკავებულობის ციფრი მოწმდება ნიღბის n-ე ციფრის (დატვირთული ციფრის) დაყენებით. ასოციაციურ მეხსიერებაში დამატებითი კომბინირებული სქემების გამოყენებისას შეგიძლიათ შეასრულოთ სხვადასხვა ლოგიკური ოპერაციები, განსაზღვროთ მაქსიმალური ან მინიმალური რაოდენობა, სიტყვების რაოდენობა, რომლებსაც აქვთ იგივე ასოციაციური ფუნქცია და ა.შ. ასოციაციური შესანახი მოწყობილობის მეხსიერების უჯრედები უნდა იყოს სტატიკური მეხსიერების ელემენტები; ასოციაციურ მეხსიერებაში ყველა უჯრედი ერთდროულად არის წვდომა და არ უნდა შეწყდეს რეგენერაციის ციკლებით. ასოციაციური მეხსიერება არის ყველაზე სწრაფი, მაგრამ ძალიან ძვირი, რადგან ის მოითხოვს დამატებით შედარების მიკროსქემის დანერგვას, რომელიც საშუალებას გაძლევთ მოძებნოთ თითოეული მეხსიერების უჯრედი. ამიტომ, ასეთი მეხსიერება, როგორც წესი, არ გამოიყენება მისი სუფთა სახით და მაღალსიჩქარიანი ქეშის ტიპის მეხსიერების მოწყობილობები, როგორც წესი, დანერგილია ნაწილობრივ ასოციაციურად.

INსრულად ასოციაციური ქეში მეხსიერება (FACM, სრულად ასოცირებული ქეში მეხსიერება), თითოეული უჯრედი ინახავს მონაცემებს, ხოლო „ტეგის“ ველში - ინფორმაციის სრული ფიზიკური მისამართი, რომლის ასლი ჩაწერილია. ნებისმიერი გაცვლის დროს, მოთხოვნილი ინფორმაციის ფიზიკური მისამართი შედარებულია ყველა უჯრედის „ტეგის“ ველებთან და თუ ისინი ემთხვევა, Hit სიგნალი დაყენებულია ნებისმიერ უჯრედში.

წაკითხვისას და სიგნალის მნიშვნელობა Hit = 1, მონაცემები გამოდის მონაცემთა ავტობუსში, მაგრამ თუ არ არის შესატყვისი (Hit = 0), მაშინ ძირითადი მეხსიერებიდან წაკითხვისას მონაცემები მისამართთან ერთად თავსდება თავისუფალში. ან ბოლო გამოუყენებელი ქეში მეხსიერების უჯრედი.

ჩაწერისას, მონაცემები მისამართთან ერთად პირველ რიგში, როგორც წესი, მოთავსებულია ქეშ მეხსიერებაში (გამოვლენილ უჯრედში Hit = 1 და თავისუფალი Hit = 0). მონაცემთა გადაწერა მთავარ მეხსიერებაში ხორციელდება სპეციალური კონტროლერის კონტროლის ქვეშ, როდესაც მეხსიერებაში წვდომა არ არის.

FACM მეხსიერება ძალიან რთული მოწყობილობაა და გამოიყენება მხოლოდ მცირე ტევადობით, ძირითადად სპეციალურ პროგრამებში. ამავდროულად, ამ ტიპის ქეში მეხსიერება უზრუნველყოფს უდიდეს ფუნქციურ მოქნილობას და მისამართების კონფლიქტების არარსებობას, რადგან ინფორმაციის ნებისმიერი ერთეული შეიძლება ჩაიტვირთოს ქეში მეხსიერების ნებისმიერ უჯრედში.

ლექციებიდან:

ასოციაციური შენახვის მოწყობილობები

ფუნდამენტური განსხვავება ისაა, რომ მათგან ინფორმაციის მოპოვების სისტემა ხორციელდება არა უნიკალური მისამართის მიხედვით, სადაც განთავსებულია ინფორმაცია, არამედ გარკვეული მახასიათებლის მიხედვით, რაც, ფაქტობრივად, არის მოძიებული ინფორმაციის ნაწილი.

ინფორმაცია

ტეგი არის გამორჩეული თვისება, რომლითაც დამთხვევით მიიღება ინფორმაცია.

ასოციაციური მეხსიერების გამარტივებული დიაგრამა:

შენახვის ზონა არის მისამართის მქონე მეხსიერება დანომრილი უჯრედებით, რომელიც ინახავს ინფორმაციას და ტეგებს.

ასოციაციურ მეხსიერებაში წვდომისთვის სასურველი ტეგის ნიმუში მოთავსებულია მოთხოვნის რეესტრში. შედარების სქემა ადარებს შეკითხვას. დამთხვევა იქმნება მატჩის რეესტრში, სადაც მეხსიერების ტეგი ემთხვეოდა ნიმუშს. შესაძლებელია რეაქციები (შემთხვევა არ არის; არის მინიმუმ ერთი შესატყვისი - ამ შემთხვევაში ნაპოვნი უჯრედი მოთავსებულია მონაცემთა რეესტრში; მრავალი შესატყვისი - CS-მ უნდა გადაწყვიტოს რომელი უჯრედი მიიღოს დასამუშავებლად).

აპლიკაცია: მონაცემთა ბაზა, ცოდნის ბაზა, კომპიუტერი, როგორც ქეში.

FPGA-ების გამოყენება თანამედროვე მოწყობილობებში

ტუპიკოვი პაველ ანდრეევიჩი

მე-5 კურსის სტუდენტი, ხელოვნების დეპარტამენტი, ომსკის სახელმწიფო ტექნიკური უნივერსიტეტი, რუსეთის ფედერაცია, ომსკი

დღესდღეობით, პროგრამირებადი ლოგიკური ინტეგრირებული სქემები (FPGA) სულ უფრო ხშირად გამოიყენება სხვადასხვა თანამედროვე მოწყობილობებში, ეს გამოწვეულია იმით, რომ FPGA-ებს მნიშვნელოვანი უპირატესობები აქვთ ჩვეულებრივ ციფრულ მიკროსქემებთან შედარებით. ეს უპირატესობები მოიცავს:

· გაუმჯობესებულია პროდუქტის დროებითი მახასიათებლები.

· პროდუქტის ფასი იკლებს.

· პროდუქტის ზომები შემცირებულია.

· პროდუქტის საიმედოობა იზრდება (დისკრეტული ჩიპების რაოდენობა მცირდება)

ზრდის პროდუქტის მოქნილობას (FPGA ყოველთვის შეიძლება ხელახლა დაპროგრამდეს)

FPGA არქიტექტურას აქვს რთული სტრუქტურა (ნახ. 1)

სურათი 1. FPGA-ს შიდა სტრუქტურა

როგორც ნახაზი 1-დან ჩანს, FPGA-ს ძირითადი ნაწილი შედგება პროგრამირებადი ლოგიკური ბლოკებისგან და პროგრამირებადი შიდა კავშირები.

FPGA-ის პროგრამირების (firmware) პროცესი შედგება საჭირო კავშირების ჩამოყალიბებისგან მოწყობილობის შეყვანასა და გამოსავალს შორის.

დღეს მსოფლიოში ორი ლიდერია FPGA-ების წარმოებაში. ესენი არიან ამერიკული კომპანიები Xilinx და Altera.

თითოეული კომპანია გთავაზობთ საკუთარ CAD პროგრამას FPGA-ებთან მუშაობისთვის. Xilinx გთავაზობთ Xilinx Software Development Kit (SDK). Altera გთავაზობთ Max+Plus II და Quartus II, ისევე როგორც ModelSim მოდელირების სისტემას.

პროგრამული უზრუნველყოფის პროგრამების შესაქმნელად, ჩვეულებრივ გამოიყენება ტექნიკის მუშაობის აღწერის ენები; დღეს ყველაზე გავრცელებული ენებია შემდეგი:

Verilog HDL.

VHDL არის ყველაზე რთული სასწავლი ენა, მაგრამ ასევე აქვს უდიდესი შესაძლებლობებიაბსტრაქციის ფუნქციურ და ქცევით დონეზე, მაგრამ აქვს ნაკლები შესაძლებლობები აბსტრაქციის სტრუქტურულ დონეზე Verilog HDL-თან შედარებით, VITAL ბიბლიოთეკა შეიქმნა VHDL ენის შესაძლებლობების გასაფართოებლად (ნახ. 2).


სურათი 2. აბსტრაქციის დონეები ვერილოგი და VHDL

Verilog HDL ენის მუშაობის მაგალითია პროგრამა, რომელიც განხორციელებულია Mini-DiLab სტენდის FPGA CYCLONE III EP3C5E1444C8N-ზე, რომლის ზოგადი ხედი ნაჩვენებია ნახ. 3.


სურათი 3. დაფის ზოგადი ხედი მინი - დილაბი

ეს პროგრამა ახორციელებს led0-led7 LED-ების თანმიმდევრულ გადართვას, „შუქის“ მოძრაობის გაზრდის არჩევით pba და pbb ღილაკების გამოყენებით, ასევე გადართვის სიჩქარის კონტროლი sw0, sw1 კონცენტრატორების გამოყენებით.

//პროგრამის ტექსტი

მოდულიპროექტი ( გამომავალიხელმძღვანელობდა, შეყვანა clk_25mhz, შეყვანა pba შეყვანა pbb

შეყვანასვ);

// შიდა საპროექტო კავშირების დანიშნულება

მავთული s1;

მავთული s2;

მავთული s3;

// პროექტთან დაკავშირებული სხვა ფაილების (ქვეპროგრამების) გამოძახება

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

მრიცხველი counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

ენდომოდული// პროგრამის დასასრული

ქვეპროგრამა tr

მოდული tr(out, set, res); // პროგრამის შექმნა

// შეყვანის/გამოსვლების მინიჭება

გამომავალირეგგარეთ;

შეყვანაკომპლექტი;

შეყვანარეს;

// ინიციალიზაცია

საწყისი

დაიწყოს

გარეთ<= 1"d0;

// პროგრამის მთავარი კოდი

ყოველთვის @(ნეგეჯიკომპლექტი ან ნეგეჯირეს)

დაიწყოს

თუ(~(კომპლექტი))

გარეთ<= 1"d1;

სხვა

გარეთ<= 1"d0;

საბოლოო მოდული //პროგრამის დასასრული

ქვეპროგრამის მრიცხველი

მოდულიმრიცხველი (con, q, clk, up); // პროგრამის დაწყება

გამომავალირეგკონ;

გამომავალი q = con;

შეყვანა up, clk;

// პროგრამის მთავარი კოდი

ყოველთვის @(პოჟე clk)

დაიწყოს

თუ(დააწკაპუნეთ)

თუ(ზემოთ)

კონ<= con - 1"d1;

სხვა

კონ<= con + 1"d1;

ენდომოდული//პროგრამის დასასრული

ქვეპროგრამა mx (მულტიპლექსერი)

მოდული mx( გამომავალი რეგა, შეყვანა in, შეყვანადატვირთვა);

// პროგრამის მთავარი კოდი

ყოველთვის @*

დაიწყოს

საქმე(დატვირთვა)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

ბოლო შემთხვევა

ენდომოდული // პროგრამის დასასრული

ქვეპროგრამა dc3_8 (მულტიპლექსერი)

მოდული dc3_8 (გამოსული, შემოსული); // პროგრამის დაწყება

// შეყვანის/გამოსვლების მინიჭება

გამომავალი რეგგარეთ;

შეყვანის მავთული in;

// პროგრამის მთავარი კოდი

ყოველთვის @*

დაიწყოს

საქმე(ში)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

ბოლო შემთხვევა

ენდომოდული // პროგრამის დასასრული

პროგრამა განხორციელდა Quartus II CAD პროგრამულ უზრუნველყოფაში.

პროგრამის შედგენის შემდეგ შემდგენელს არ გაუკეთებია პროგრამაში შეცდომები ან კომენტარები, რომლებიც დაკავშირებულია პროგრამის ანალიზთან და სინტაქსთან (ნახ. 4).


სურათი 4. პროექტის შეტყობინების ფანჯარა

შემდგენელის მიერ გაკეთებული კომენტარები მიუთითებს იმაზე, რომ არ არსებობს Quartus II-ის ლიცენზია (პროგრამის უფასო ვერსია გამოიყენებოდა ტრენინგისთვის) და პროექტის მოდელირებისთვის საჭირო ფაილების არარსებობა.

RTL ამ პროექტის სტრუქტურა ნაჩვენებია ნახ. 5.


სურათი 5. პროექტის განხორციელება ( RTL სტრუქტურა)

როგორც ნაჩვენებია ნახ. 6 ამ პროგრამაში გამოიყენება ამ FPGA-ს შესაძლებლობების მხოლოდ მცირე ნაწილი.

სურათი 6. პროექტში ჩართული FPGA-ს ნაწილი

დასკვნები:პროგრამირებადი ლოგიკური ინტეგრირებული სქემები შეიძლება გამოყენებულ იქნას მრავალ მოწყობილობაში. მათთან მუშაობის შესასწავლად, ტექნიკის აღწერილობის ენების გაცნობა (Verilog HDL და VHDL) უნდა დაინერგოს ელექტრონული აღჭურვილობის დიზაინსა და მშენებლობასთან დაკავშირებული სპეციალობების საგანმანათლებლო პროგრამაში.

ბიბლიოგრაფია:

1. გრუშევიცკი რ.ი. სისტემების დიზაინი პროგრამის ლოგიკურ ჩიპებზე / R.I. გრუშევიცკი, ა.ქ. მურსაევი, ე.პ. პირქუში. სანქტ-პეტერბურგი: BHV Petersburg, 2002. - 608 გვ.

2. კოლომოვი დ.ა. Altra MAX+plus II და Quartus II კომპიუტერული დამხმარე დიზაინის სისტემები. მოკლე აღწერა და გაკვეთილი / D.A. კოლომოვი, რ.ა. მიალკი, ა.ა. ზობენკო, ა.ს. ფილიპოვი. M.: IP RadioSoft, 2002. - 126გვ.

3. Maxfield K. დიზაინი FPGA-ზე. კურსი ახალგაზრდა მებრძოლისთვის./ K. Maxfield. მ.: გამომცემლობა "დოდეკა-XXI", 2007. - 408გვ. (თარგმანი ინგლისურიდან).

სანამ არდადეგები იყო, ვერილოგში გავაკეთე პატარა პროექტი, რომლის გამოც დიდი ხანია მინდოდა.

პროექტის არსი შემდეგში მდგომარეობს: FPGA-ს უკავშირდება მაღალსიჩქარიანი (შედარებით, რა თქმა უნდა) ADC ორი არხით და პარალელური ინტერფეისით (14-16 ბიტი თითო არხზე). FPGA კითხულობს მონაცემებს ADC-დან და ამატებს მას ბუფერში (მის შიდა BRAM მეხსიერებაში). როდესაც ბუფერი სავსეა, კითხვა ჩერდება და გარე მოწყობილობას (მიკროკონტროლერს) შეუძლია ბუფერიდან მონაცემების წაკითხვა SPI ინტერფეისის საშუალებით. თქვენ ასევე შეგიძლიათ SPI-ის მეშვეობით დააკონფიგურიროთ რამდენიმე პარამეტრი (ამაზე განხილული იქნება მომდევნო პოსტში).

პროექტის ტესტი (სურათზე დაჭერით).

ციკლონის IVE სინთეზის შედეგი

მე გავასინთეზე შედეგი Quartus II-ში, ციკლონის IVE ოჯახის FPGA-სთვის (EP4CE6E22A7). ეს არის ერთ-ერთი უმარტივესი და ყველაზე იაფი FPGA QFP144 პაკეტში 6272 ლოგიკური ელემენტით. ჩიპს აქვს მეხსიერების მოცულობა 30K * 9 ბიტი. მომხმარებლის ქინძისთავები - 92.

ჩიპი EP4CE6E22A7
ლოგიკური ელემენტები - 301 (5%)
ქინძისთავები - 41 (45%)
მეხსიერება - 65536 ბიტი (24%)
უარეს შემთხვევაში სიხშირე (125 C) - 151 MHz.

მეხსიერება არის 8 KB, ეს არის ფაქტობრივი ბუფერი, სადაც მონაცემები იწერება. 16 ბიტიანი ორი არხით, შედეგი არის 32 ბიტი თითო ნიმუშზე და 2048 ნიმუში. მე გადავწყვიტე, რომ ეს სავსებით საკმარისი იყო, თუმცა ბუფერი შეიძლება გაფართოვდეს მინიმუმ მთელ მოცულობამდე.

სიხშირე საკმაოდ დამაკმაყოფილებელია, ველოდი, რომ 50 MHz იქნებოდა საათის სიხშირე, ხოლო ADC 25 MHz. ანუ მიიღება სამმაგი სიხშირის ზღვარი.

ლოგიკური ელემენტების რაოდენობა სრულიად უმნიშვნელოა ასეთი FPGA-სთვის, ე.ი. თუ სურვილი გაქვთ, შეგიძლიათ ბევრი სხვა რამ დაამატოთ იქ, მით უმეტეს, რომ დარჩენილია 51 პინი.

არის უფრო ახალი ციკლონი 10 ოჯახი.

ციკლონის 10-ის სინთეზის შედეგი

აირჩიეთ ჩიპი 10CL006YE144C8G. მას აქვს იგივე რაოდენობის ლოგიკური ელემენტები (6272), როგორც ვერსია Cyclone 4-ზე და იგივე რაოდენობის მეხსიერება (30K x 9). საქმეც იგივეა, QFP144, მომხმარებელთა პინებიც ნაკლებია - 89.

ჩიპი 10CL006YE144C8G
ლოგიკური ელემენტები - 289 (5%)
ქინძისთავები - 41 (46%)
მეხსიერება - 65536 ბიტი (24%)
უარეს შემთხვევაში სიხშირე (85 C) - 145,5 MHz.

საინტერესოა, რომ პროექტი უფრო კომპაქტური გახდა ლოგიკური ელემენტების თვალსაზრისით. ანუ, იგივე ლოგიკური სიმძლავრით, ციკლონ 10-ს შეუძლია უფრო რთული პროექტის განთავსება. ყველაფერი დანარჩენი დაახლოებით იმავე დონეზეა.

ჩნდება გონივრული კითხვა: შესაძლებელია თუ არა ფულის დაზოგვა სხვა FPGA ან CPLD დაყენებით?

ვცადოთ FPGA MAX10.

სინთეზის შედეგი MAX 10-ისთვის

აქ მკითხველმა (თუ იცის) შეიძლება წამოიძახოს: არა, ეს ასე არ არის! MAX ოჯახი არის CPLD და არა FPGA და ამ ცნებების აღრევა აშკარად არაპროფესიონალურია!

თუმცა, ინტელის მარკეტოლოგების ძალისხმევით (ყველამ იცის, რომ საუბარია ინტელის ჩიპებზე?), MAX10 ოჯახი გადაიქცა FPGA-ად, თუმცა მას აქვს შიდა არასტაბილური კონფიგურაციის მეხსიერება, როგორც ნებისმიერ CPLD-ს.

ასე რომ, აირჩიეთ ჩიპი, მაგალითად, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), QFP144 პაკეტი.

მიკროსქემა 10M02SCE144A7G.
ლოგიკური ელემენტები - 298 (13%)
ქინძისთავები - 41 (41%)
მეხსიერება - 65536 ბიტი (59%)
უარეს შემთხვევაში სიხშირე (125 C) - 153 MHz.

ჩვენ ვხედავთ, რომ აბსოლუტური მაჩვენებლები თითქმის იგივე დარჩა, მხოლოდ ბროლის შევსების ხარისხი გაიზარდა, რაც გასაგებია - 2304LE 6272 LE-ის წინააღმდეგ.

შემიძლია გამოვიყენო MAX II?

ახლა ისმის კითხვა: შესაძლებელია თუ არა გამოვიყენოთ ძალიან იაფი CPLD, როგორიცაა MAX II? აქ ყველაფერი უფრო რთულია. მათ არ აქვთ BRAM მეხსიერება, ე.ი. ასევე დაგჭირდებათ გარე სწრაფი SRAM.

SRAM-ის დასაკავშირებლად, რა თქმა უნდა, დაგჭირდებათ დამატებითი ლოგიკა. თუ ვიყენებთ 4K x 16 მეხსიერებას, დაგვჭირდება დამატებითი 16 პინი მონაცემებისთვის, 12 მისამართისთვის და 3 კონტროლისთვის (/cs, /we, /oe), სულ 31 დამატებითი პინი.

ლოგიკაც გაიზრდება ზომაში. ძნელი სათქმელია ზუსტად რამდენია, მაგრამ ის თავიდანვე არ ჯდება CPLD-ში 240 LE-ზე, მაგრამ შესაძლოა ჯდება 570 LE-ში.

ჩვენ ვირჩევთ CPLD EPM570 QFP100 პაკეტში. ჩვენ გვჭირდება მხოლოდ 72 პინი, ქეისს აქვს 76 პინი GPIO-სთვის, ე.ი. საკმარისი უნდა იყოს ყველაფრისთვის, მაგრამ გაფართოებისთვის ძალიან ცოტა ადგილია.

ამ გადაწყვეტის დადებითი მხარეები: შესაძლოა დაბალი ფასი (თუნდაც დამატებითი SRAM ჩიპის გათვალისწინებით), უარყოფითი მხარეები: მიკროსქემის და დაფის ფართობის უფრო დიდი სირთულე.

ფასის საკითხი

აი რა ვიპოვე efind-ის გამოყენებით. მიკროსქემები ოდნავ განსხვავებულია, მაგრამ რიცხვი და ასო ბოლოს არის სიჩქარის ინდექსი და ტემპერატურის დიაპაზონი (კომერციული). ვინაიდან ჩვენ გვაქვს სამმაგი სიხშირის რეზერვი, ეს რიცხვები ჩვენთვის აბსოლუტურად არ არის მნიშვნელოვანი.

EP4CE6E22C8N - 456.55 R (Promelektronika, Ekb, საცალო ვაჭრობა)
10CL006YE144C - 754.71 (მეხუთე ელემენტი, სანკტ-პეტერბურგი, საბითუმო)
10M02SCE144C8G - 456 R (Elitan, Ekb, საბითუმო)
EPM570F100C5N - 368 R (Hi-tech, სანკტ-პეტერბურგი) + მეხსიერება (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92.51 R (Promelektronika, Ekb, საცალო ვაჭრობა)

რა თქმა უნდა, შეგიძლიათ იაფად იპოვოთ, ეს მხოლოდ საცალო ფასებია მაღაზიაში, მაგრამ თანაფარდობა დაახლოებით იგივე იქნება.

ჩანს, რომ CPLD-ით ოფცია არანაირ სარგებელს არ მოაქვს ფასის კუთხით, თან ბევრი მინუსი აქვს. დარჩენილი ვარიანტები დაახლოებით თანაბარია, გარდა იმისა, რომ Cyclone 10 ჯერ კიდევ ცოტა უფრო ძვირია და ცოტას აქვს ის მარაგში. თუმცა ეს სრულიად ახალი ოჯახია, ყველა დისტრიბუტორს ჯერ არ მოუტანია.

პირადად მე ყველაზე მეტად მომწონს MAX 10-ის ვარიანტი. მას აქვს ერთი უპირატესობა: თქვენ არ გჭირდებათ FPGA კონფიგურაციის ჩატვირთვა გაშვებისას. Cyclone 4 ვერსიაში დაგჭირდებათ FPGA კონფიგურაციის ჩატვირთვა, რაც შეიძლება გაკეთდეს ან დამატებითი კონფიგურაციის მეხსიერების ჩიპის ან მიკროკონტროლერის გამოყენებით. არის მესამე ვარიანტი: აანთეთ JTAG-ის საშუალებით და არასოდეს ამოიღოთ ენერგია ჩიპიდან. გავიგე, რომ ვიღაცამ გააკეთა ეს, არ ვიცი, ხუმრობაა თუ არა, მაგრამ ამას ნამდვილად არ გავაკეთებ.

თუმცა, მიკროკონტროლერის საშუალებით Cyclone 4 firmware-ის ვარიანტს აქვს უპირატესობა: FPGA firmware-ის განახლების შესაძლებლობა მომხმარებლის ინტერფეისებით: USB, Ethernet და ა.შ.

შესაძლებელია კიდევ ერთი არა ტრივიალური ვარიანტი: საერთოდ არ დააინსტალიროთ მიკროკონტროლერი, მაგრამ ჩართოთ რაიმე სახის ჩაშენებული პროცესორი FPGA-ში. მაგრამ ეს არ არის ძალიან კარგი ვარიანტი, ალბათ იმიტომ... ამ შემთხვევაში აუცილებლად დაგჭირდებათ გარე ROM და RAM, ასევე, მინიმუმ, USB ხიდი. ამ ვარიანტზე მიზანმიმართული უარის თქმა, რა თქმა უნდა, არ არის საჭირო, მაგრამ მისი განხორციელება უფრო რთული მეჩვენება, ვიდრე მიკროკონტროლერთან.

რა ფუნქციებს ასრულებს ეს firmware შემდეგ პოსტში დავწერ.

სტატიაში ვცდილობთ განვსაზღვროთ პროგრამირებადი ლოგიკური ინტეგრირებული სქემების (FPGA) შემუშავებული ციფრული მოდულების თანმხლები დოკუმენტაციის შემადგენლობა. დეველოპერებმა უნდა მიაწოდონ ეს თანმხლები დოკუმენტაცია მომხმარებელს/მომხმარებელს განვითარებული ციფრული მოდულის წარმატებით შემდგომი გამოყენებისათვის მათ პროექტებში FPGA-ზე ციფრული მოწყობილობების დიზაინის ეტაპზე.

შესავალი

მაშ, რა სახის დიზაინის დოკუმენტაცია უნდა ჰკითხოს დეველოპერს, გამოიყენებს თუ არა მომხმარებელთა კომპანია ან საწარმო ან სხვა დეველოპერი „უცხო“ შემუშავებულ მოწყობილობას თავიანთ პროექტებში? ეს სტატია შეიძლება გახდეს "მოტყუების ფურცელი", რათა ჯერ სწორად გამოსცეს ტექნიკური მახასიათებლები ციფრული მოწყობილობის შემუშავებისთვის FPGA-ებისთვის, შემდეგ კი დეველოპერს სთხოვოთ დიზაინის დოკუმენტაცია უკვე შემუშავებული ციფრული მოწყობილობისთვის. საპროექტო დოკუმენტაციასთან მუშაობის წინა გამოცდილებიდან გამომდინარე, საწარმო ან ფირმა ჩვეულებრივ იყენებს შემდეგ სტანდარტებსა და მარეგულირებელ დოკუმენტებს:

  • GOST 2.102-68 ESKD. საპროექტო დოკუმენტაციის სახეები და სისრულე.
  • GOST 15.101-98. პროდუქციის შემუშავებისა და წარმოებაში დანერგვის სისტემა. კვლევითი სამუშაოს განხორციელების პროცედურა.
  • GOST R 15.201-20-00. პროდუქციის შემუშავებისა და წარმოებაში დანერგვის სისტემა. პროდუქტები სამრეწველო და ტექნიკური მიზნებისთვის. პროდუქციის შემუშავებისა და წარმოებაში შეტანის პროცედურა.

როგორც წესი, ეს იყო პროგრამული უზრუნველყოფის ფაილები და პროგრამა (ციფრული მოწყობილობის აღწერა VHDL/Verilog-ში ან ციფრული სქემების ნაკრები, რომელიც შემუშავებულია მიკროსქემის რედაქტორში ციფრული ლოგიკის ბიბლიოთეკის ელემენტების გამოყენებით, როგორიცაა ფლიპ-ფლოპები, რეგისტრები, მრიცხველები, დეკოდერები. და ა.შ.) CD ან DVD-ზე და პროგრამირების ინსტრუქციები. Სულ ეს არის.

ავტორს, მაგალითად, შემდეგი პრობლემა შეექმნა. ერთ-ერთმა თანამშრომელმა შეიმუშავა რთული მრავალმოდული ციფრული მოწყობილობა. მე აღვწერე ყველა მოდული VHDL-ში და გადავხედე ამ მოდულების და მთლიანად ციფრული მოწყობილობის მუშაობის ციკლოგრამებს კარგ და ძვირადღირებულ ოსცილოსკოპზე. მან არ იცოდა Test Bench ფაილების და სიმულაციების ჩატარების შესაძლებლობის შესახებ ან არ იცოდა როგორ დაეწერა ისინი; სხვათა შორის, ასევე არ იყო კომენტარები პროექტზე და მოდულის აღწერილობებზე. სიტუაცია შეიძლება კიდევ უფრო უარესი იყოს, თუ მოდულები წარმოდგენილია ციფრული სქემებით, რომლებიც შექმნილია მიკროსქემის რედაქტორში ბიბლიოთეკის ელემენტების გამოყენებით. აქ არის ერთ-ერთი მთავარი ნაკლი: გარდა თავად დეველოპერისა, ნაკლებად სავარაუდოა, რომ ვინმემ გაიგოს ეს ციფრული მოწყობილობა, განსაკუთრებით თუ პროექტი მრავალმოდულია და თითოეული მოდულის აღწერა 100 ხაზზე მეტია ან ერთზე მეტი მონიტორი. ეკრანი. ეს ნიშნავს, რომ თუ სხვა დეველოპერს სურს FPGA-სთვის უკვე განვითარებული ციფრული მოწყობილობის ახალ განვითარებაში ან პროექტში შემოტანა, მას კვლავ სჭირდება დრო დახარჯოს ამ ციფრული მოწყობილობის განვითარებაზე.

FPGA-ების დიზაინის საკითხის ისტორია

ამჟამად, FPGA ბაზარი ერთ-ერთი ყველაზე დინამიურად განვითარებადია. FPGA გამოიყენება მრავალ ინდუსტრიაში. ამ დროისთვის, არ არსებობს ცალსახა მეთოდოლოგია, რომელიც დააკმაყოფილებს ყველა ტექნიკის დეველოპერს FPGA კონფიგურაციის მისაღებად, მოწყობილობის ფუნქციური მოდელის საფუძველზე სისტემის დონეზე. ყველაზე პოპულარული მიდგომა ამ პრობლემის გადასაჭრელად არის IP ძირითადი ტექნოლოგიის გამოყენება (ინტელექტუალური საკუთრების ბირთვები). IP ბირთვები არის მზა კომპონენტები, რომლებიც გაადვილებს მათ საკუთარ პროექტში ჩართვას უფრო რთული სისტემის შესაქმნელად. ამ მიდგომას აქვს ერთი მნიშვნელოვანი ნაკლი - IP ბირთვების მიმაგრება ელემენტარულ საფუძველთან. თითოეული IP ბირთვი ოპტიმიზებულია კონკრეტული მწარმოებლის ჩიპების კონკრეტული სერიისთვის, რაც მნიშვნელოვნად აფერხებს უკვე შექმნილი მოწყობილობების ერთი ელემენტის ბაზიდან მეორეზე გადატანის უნარს. კომერციული CAD არქიტექტურების დახურული ბუნება შეუძლებელს ხდის სისტემის დონეზე საკუთარი ფუნქციონალური მოწყობილობის მოდელების დამატებას, რათა მათზე დაფუძნებული რეგისტრის გადაცემის დონეზე (RTL) მოხდეს მოწყობილობის მოდელები. ციფრული მოდულის შემუშავება ხორციელდება მიკროსქემის რედაქტორში შედგენილი ციფრული მიკროსქემის სახით, მწარმოებლის მიერ ჩაშენებული CAD ბიბლიოთეკის ძირითადი მიკროსქემის ელემენტების გამოყენებით, როგორიცაა ფლიპ-ფლოპები, დეკოდერები, მრიცხველები, შემგროვებლები და ა.შ.

კიდევ ერთი პოპულარული მიდგომა, რომელიც საშუალებას იძლევა გადავიდეს სისტემის დონეზე ფუნქციური მოდელიდან მოწყობილობის მოდელზე რეგისტრის გადაცემის დონეზე, არის სისტემის დონის დიზაინის ენების გამოყენება (SLDL). ასეთი ენები მოიცავს SystemC, Handel-C, VHDL, Verilog, System Verilog. მთავარი უპირატესობა არის დამოუკიდებლობა ტექნიკის ბაზისგან, რომელშიც მოწყობილობა განხორციელდება.

ამრიგად, ერთის მხრივ, IP ძირითადი ტექნოლოგიის გამოყენებისას, ტექნიკის დეველოპერი იღებს მაღალი ხარისხის გადაწყვეტას, მაგრამ მკაცრად მიბმული ტექნიკის საფუძველთან, რომელშიც დანერგილია მოწყობილობა. მეორეს მხრივ, სისტემის დონეზე ტექნიკის აღწერილობის ენების გამოყენებისას, მოწყობილობის დანერგვა არის ტექნიკის დამოუკიდებელი. ზემოაღნიშნულიდან გამომდინარეობს, რომ ამჟამად მნიშვნელოვანია მწარმოებლის (Xilinx, Altera, Actel და სხვ.) და მესამე მხარის დეველოპერული კომპანიების ტექნიკის აღწერილობის ენისა და IP ბირთვების ერთობლივი გამოყენება ციფრული მოდულების დიზაინის პროცესის დასაჩქარებლად. მესამე მხარის მწარმოებლების ციფრული მოდულების გამოყენებისას, ხანდახან არის ინფორმაციის ნაკლებობა თანდართულ დოკუმენტაციაში.

FPGA-სთვის შემუშავებული ციფრული მოდულის შესახებ ინფორმაციის მიწოდება

სისტემის დონეზე მოწყობილობის ფუნქციურ მოდელზე დაფუძნებული FPGA კონფიგურაციის მოპოვების მეთოდოლოგიიდან გამომდინარე, დეველოპერს შეუძლია განასხვავოს ციფრული მოდულის შემდეგი ტიპები FPGA-სთვის:

  • პროგრამული უზრუნველყოფა - განვითარებული ციფრული მოდული, რომელიც გადაეცემა მომხმარებელს აღწერის სახით ტექნიკის აღწერილობის ენაზე (VHDL, Verilog) და/ან განვითარებულია სქემატურ რედაქტორში შემდგომი გამოყენებისთვის ლოგიკური სქემების ავტომატური სინთეზის პროგრამებში და ოპტიმიზირებულია ფუნქციური პარამეტრებისთვის. .
  • Firmware - მესამე მხარის დეველოპერული კომპანიის მიერ შემუშავებული ციფრული მოდული, სახელწოდებით IP ბირთვი, რომელიც გადაეცემა მომხმარებელს ლოგიკური სქემის (netlist) სახით FPGA მწარმოებლის ლოგიკური ელემენტების ბიბლიოთეკის საფუძველზე და ოპტიმიზირებულია ფუნქციური და ელექტრული პარამეტრებისთვის.

დოკუმენტაციის შემუშავების ეტაპზე, პირადი გამოცდილებიდან გამომდინარე, აუცილებელია შედგეს, გარდა ჩვეულებრივი საპროექტო დოკუმენტაციისა და სპეციფიკაციებისა, რომლებიც შესრულებულია GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, დოკუმენტაცია ყველა ტიპისთვის. მოდელები (სისტემური, ლოგიკური, მიკროსქემის ინჟინერია) შექმნილი ციფრული მოწყობილობების დაპროექტების ეტაპებზე FPGA-ებზე.

სხვა სიტყვებით რომ ვთქვათ, FPGA-ებისთვის ციფრული მოწყობილობის დიზაინის დოკუმენტაციის ნაკრები, გარდა firmware ფაილის, პროგრამირების ინსტრუქციებისა და ჩაწერილი პროექტის CD/DVD-ზე, ასევე უნდა მოიცავდეს თანმხლებ დოკუმენტაციას.

მაგიდა.თანმხლები დოკუმენტაციის სექციების სია

განყოფილების სათაური ხედი
პროგრამული უზრუნველყოფა Firmware
Ზოგადი ინფორმაცია
მიზანი და ფარგლები შესახებ
სპეციფიკაციები შესახებ შესახებ
გადატვირთვის სიგნალების აღწერა შესახებ შესახებ
სინქრონიზაციის სიგნალების აღწერა შესახებ შესახებ
ინტერფეისების აღწერა შესახებ
დროის დიაგრამები შესახებ
საკონტროლო რეგისტრების აღწერა შესახებ შესახებ
სტრუქტურული (ფუნქციური) დიაგრამა
პროგრამირების გზამკვლევი შესახებ შესახებ
FPGA მოდელი ან ოჯახი,
კომპანიის მწარმოებელი
შესახებ
ციფრული მოდულის პრეზენტაცია
FPGA-ზე ლოგიკური დიზაინისთვის
RTL მოდელი შესახებ არა
ლოგიკური მოდელი არა შესახებ
დიზაინის შეზღუდვები შესახებ შესახებ

აქ არის სექციების სია (ცხრილი), რომლებიც უნდა იყოს შეტანილი FPGA-ებისთვის ციფრული მოდულის პროექტის თანმხლებ დოკუმენტაციაში. თითოეული განყოფილებისთვის ნაჩვენებია განყოფილების დოკუმენტების ნაკრებში ჩართვის აუცილებლობის ნიშნები:

  • "O" არის აუცილებელი განყოფილება;
  • "P" არის მიწოდებისთვის რეკომენდებული განყოფილება.

რეკომენდირებული ფაილის ფორმატები დამხმარე დოკუმენტაციის წარდგენისთვის არის MS Word, PDF (საუკეთესო ფორმატი), HTML. აღწერილობის ფაილები ტექნიკის აღწერილობის ენაზე (VHDL, Verilog) და/ან განვითარებულ სქემატურ რედაქტორში მოწოდებულია CAD პროგრამული უზრუნველყოფის განვითარებისთვის საჭირო ფორმით. გამონაკლისი შეიძლება იყოს სქემატურ რედაქტორში შემუშავებული ციფრული მიკროსქემის ფაილების გრაფიკული ფორმატის (JPEG, BMP) დამატებითი დებულება.

Ზოგადი ინფორმაცია

ეს განყოფილება აღწერს ზოგად ინფორმაციას განვითარებული ციფრული მოდულის შესახებ აღწერილობის სახით:

  • ფუნქციონალური დიაგრამა და მისი შემადგენელი ბლოკები/ნაწილები;
  • გადატვირთვის სიგნალები, სინქრონიზაცია;
  • გამოყენებული ინტერფეისები;
  • საკონტროლო რეგისტრები;
  • დროის დიაგრამა;
  • პროგრამირება.

მიზანი და ფარგლები

განისაზღვრება ციფრული მოდულის დანიშნულება და მისი გამოყენების სფეროები.

სპეციფიკაციები

მოცემულია მისი ძირითადი ტექნიკური მახასიათებლების აღწერა, როგორიცაა შესრულება, ენერგიის მოხმარება კონკრეტული FPGA ჩიპისთვის, დაკავებული კარიბჭეების რაოდენობა და გამოყენებული FPGA ჩიპის ტიპი. გარდა ამისა, მითითებულია FPGA მწარმოებლის CAD პროგრამული უზრუნველყოფა, რომელიც გამოიყენება ციფრული მოდულის შემუშავებაში და პროგრამული უზრუნველყოფა, რომელიც გამოიყენება მოდელირებისა და გადამოწმებისთვის. ყველა გამოყენებული პროგრამისთვის მითითებულია ვერსია და დაინსტალირებული განახლებები. ციფრული მოდულის გრაფიკული გამოსახულება "შავი ყუთის" სახით მოცემულია გარე შეყვანის/გამოსვლების აღნიშვნით და მოცემულია მათი დანიშნულების მოკლე აღწერა.

გადატვირთვის სიგნალების აღწერა

გადატვირთვის სიგნალების დეტალები მოცემულია ქვემოთ:

  • გარე და შიდა გადატვირთვის სიგნალების სია.
  • გადატვირთვის სიგნალების დროის პარამეტრები და დროის დიაგრამები.
  • შიდა გადატვირთვის სიგნალების წარმოქმნის სქემები, ასეთის არსებობის შემთხვევაში, ციფრული მოდულის ნაწილია.
  • ურთიერთობა სხვა სიგნალებთან (განსაკუთრებით სინქრონიზაციის სიგნალებთან).

სინქრონიზაციის სიგნალების აღწერა

აქ არის დეტალები სინქრონიზაციის სიგნალების შესახებ:

  • გარე სინქრონიზაციის სიგნალების აღწერა;
  • სინქრონიზაციის სიგნალების დროის პარამეტრები;
  • შიდა სინქრონიზაციის სიგნალების აღწერა და მათი წარმოქმნის სქემა;
  • დროითი ურთიერთობები სინქრონიზაციის სიგნალებს შორის სხვადასხვა წყაროდან;

ინტერფეისების აღწერა

მოცემულია ყველა ინტერფეისის გამოყენების მახასიათებლები, რომლებიც შემუშავებული ციფრული მოდულის ნაწილია, სასურველია ერთიანი ჩიპზე სისტემის სხვა კვანძებთან ურთიერთქმედების ორგანიზებისთვის. გარდა ამისა, მოწოდებულია ინტერნეტ ბმული სტანდარტული ინტერფეისის სრული აღწერილობისთვის, ან მოცემულია თავად ინტერფეისის აღწერა. ამ დროისთვის, AMBA, PLB და Wishbone ავტობუსის ინტერფეისები მიღებულია, როგორც ერთიანი ინტერფეისი ციფრული მოდულებისთვის.

დროის დიაგრამები

ციფრული მოდულის ინტერფეისებისა და სხვა შეყვანის/გამოსვლების მეშვეობით მონაცემთა გაცვლის ორგანიზებისთვის საჭირო ინფორმაციაა მოწოდებული: დროის დიაგრამების გრაფიკული წარმოდგენა, მონაცემთა გადაცემის პროტოკოლების აღწერა, ციფრულ მოდულზე მიწოდებული გარე სიგნალების მოთხოვნები (ხანგრძლივობა, სიხშირე და ა.შ.). და სხვა ინფორმაცია .

საკონტროლო რეგისტრების აღწერა

მოცემულია ციფრული მოდულის ყველა საკონტროლო რეგისტრის აღწერა. ტიპიური საკონტროლო რეგისტრის აღწერა შეიცავს რეგისტრის სახელს, რეგისტრის მისამართს შიდა მისამართების სივრცეში, საწყისი მნიშვნელობა გადატვირთვის სიგნალის წაშლის შემდეგ, დაშვების ტიპს (წაკითხვა/ჩაწერა) და შიდა ველების აღწერას.

სტრუქტურული (ფუნქციური) დიაგრამა

მოწოდებულია ციფრული მოდულის მთავარი შიდა კვანძების/ბლოკების კავშირების შიდა სტრუქტურის სურათი, ასევე მათი მოკლე ტექსტური აღწერა. გარდა ამისა, მოცემულია ციფრული მოდულის ძირითადი შიდა ბლოკების აღწერა. ამ დოკუმენტის მიზანია მომხმარებელს მიაწოდოს ინფორმაცია ციფრული მოდულის მუშაობის პრინციპების გასაგებად.

აღწერილი ბლოკების რაოდენობა და აღწერილობის ფარგლები განისაზღვრება ციფრული მოდულის შემქმნელის მიერ. სასურველია, რომ აღწერილი მოდულების მინიმალური რაოდენობა შეესაბამებოდეს ციფრული მოდულის სტრუქტურული (ფუნქციური) დიაგრამის ელემენტების რაოდენობას.

შიდა განყოფილების ტიპიური აღწერა შეიცავს:

  • ბლოკის დანიშნულება;
  • ბლოკის სტრუქტურული (ფუნქციური) დიაგრამა (საჭიროების შემთხვევაში);
  • მუშაობის რეჟიმები და ალგორითმები;
  • სამუშაო დროის დიაგრამები;
  • ბლოკის მართვის ორგანიზაცია;
  • სხვა ბლოკებთან კომუნიკაციის ორგანიზება;
  • ნებისმიერი სხვა ინფორმაცია.

პროგრამირების გზამკვლევი

გთავაზობთ ყველა საჭირო ინფორმაციას პროგრამირების პროცესის შესახებ ციფრული მოდულის მწარმოებლის CAD პროგრამული უზრუნველყოფის გამოყენებით FPGA-ში, პროგრამული უზრუნველყოფის შემუშავებისა და გამართვისთვის საჭირო ინსტრუმენტებს და პროგრამული ბიბლიოთეკებს.

FPGA მოდელი ან ოჯახი, მწარმოებელი

ციფრული მოდულის Firmware-ისთვის მითითებულია FPGA მწარმოებელი, მოდელი ან ოჯახი FPGA და მისი სიჩქარის მახასიათებლები. პროგრამული უზრუნველყოფის ციფრული მოდულისთვის მოწოდებულია ინფორმაცია დაკავებული რესურსების რაოდენობისა და გამოყენებული FPGA-ის მოთხოვნების შესახებ.

ციფრული მოდულის წარმოდგენა ლოგიკური დიზაინისთვის

სტატიაში განხილული იყო VHDL-ში „უცხო“ პროექტის გამოყენების სირთულეები - დასახელების და პროგრამების დაწერის წესების არარსებობა. ასევე მოცემულია ზოგადი მითითებები სახელების შესახებ, პროგრამების წერის კარგი მანერები და სინთეზის მითითებები. ეს საკითხები მაქსიმალურად დეტალურად უნდა იყოს განხილული დეველოპერთან, თუ მომავალში აპირებთ განაგრძოთ განვითარება ან განახლება დამოუკიდებლად, სანამ ის დაიწყებს ციფრული მოდულის RTL მოდელის შემუშავებას FPGA-ზე. ეს განსაკუთრებით ეხება პროგრამული უზრუნველყოფის ციფრული მოდულის ტიპს FPGA-ზე. სტატიის ეს ნაწილი აღწერს ზოგად მოთხოვნებს FPGA-ზე შემუშავებული ციფრული მოდულის მთელი პროექტის მიმართ. აქ არის ის საკითხები, რომლებსაც ყურადღება უნდა მიაქციოთ FPGA-ზე ციფრული მოდულის შემუშავების ტექნიკური მახასიათებლების შედგენისას და ეს განსაკუთრებით ეხება სამუშაოს შედეგების გადაცემას.

RTL მოდელი

ციფრული მოდული, რომელიც აღწერილია Verilog ან VHDL ენის სინთეზირებულ ქვეჯგუფში და/ან განვითარებულია სქემატურ რედაქტორში, განკუთვნილია FPGA ლოგიკის სინთეზის ეტაპზე გამოსაყენებლად. მიეწოდება პროგრამულ უზრუნველყოფას აწყობილი ციფრული მოდულის პროექტის სახით FPGA მწარმოებლის CAD პროგრამულ უზრუნველყოფაში. ციფრული Firmware მოდულისთვის, RTL მოდელი მოცემულია ცალკე ხელშეკრულებით.

RTL მოდელის ფაილების გარდა, გადაიცემა შემდეგი:

  • მოდელის გამოყენების ინსტრუქცია.
  • მოდელში შემავალი მეხსიერების ბლოკების აღწერა, მათ შორის მეხსიერების ტიპი, ზომა, მეხსიერების ბლოკების რაოდენობა, მეხსიერების ბლოკის იერარქიული სახელწოდება.
  • მზა ბირთვების შექმნის პროცესის აღწერა მათი შესაქმნელად პროგრამების გამოყენებით (მაგალითად, CoreGenerator for Xilinx ISE). აღწერილობების არარსებობის შემთხვევაში, შეიძლება არსებობდეს შეზღუდვები ხელახალი დიზაინისა და გამოყენებისთვის ტექნოლოგიისა და მწარმოებლის დამოკიდებულების გამო.
  • მწარმოებლის მიკროპროცესორის გამოყენების შემთხვევაში (მაგალითად, Altera - Nios პროცესორიდან; Xilinx - Microblaze, PowerPC მიკროპროცესორებიდან), საჭიროა პროცესორის ბირთვისა და მისი პერიფერიული მოწყობილობების კონფიგურაციის პროცესის აღწერა.
  • ტესტების ნაკრები (Test Bench ფაილები) ციფრული მოდულის გადამოწმებისა და სიმულაციისთვის, დაწერილი Verilog და/ან VHDL და/ან System Verilog-ში.
  • ნებისმიერი სხვა დამატებითი ინფორმაცია.

ლოგიკური მოდელი

მოდელი არის სქემების სია, რომლებიც აღწერილია Verilog ან VHDL ენების გამოყენებით FPGA მწარმოებლის ბიბლიოთეკის საფუძველზე და მოწოდებულია ციფრული მოდულის Firmware-ისთვის.

ლოგიკური მოდელის ფაილების გარდა, გადაიცემა შემდეგი:

  • ამ მოდელის გამოყენების ინსტრუქცია.
  • ტესტების ნაკრები (Test Bench ფაილები) ციფრული მოდულის გადამოწმებისა და სიმულაციისთვის, დაწერილი Verilog და/ან VHDL და/ან System Verilog-ში.
  • ციფრული მოდულის მოდელირებისა და გადამოწმების ტესტებთან მუშაობის სახელმძღვანელო.
  • ნებისმიერი სხვა დამატებითი ინფორმაცია.

დიზაინის შეზღუდვები

დიზაინის შეზღუდვები მოწოდებულია, როგორც ფაილი, რომელიც აღწერს ციფრულ მოდულზე დაწესებულ შეზღუდვების ერთობლიობას, როდესაც ის შედის სისტემა-ჩიპზე ლოგიკურ მოდელში. ეს ნაკრები მოიცავს საათის შეზღუდვებს, დროის შეზღუდვებს, ციფრული მოდულის სხვა მოდულებთან ურთიერთქმედების შეზღუდვებს და ციფრული მოდულის მუშაობის პირობებს. სასურველია Synopsis Design Constraints (SDC) ფორმატი ან FPGA მწარმოებლის CAD ფორმატი.

სინქრონიზაციის სიგნალების შეზღუდვების ნიმუშის სია:

  • დროის დიაგრამა (საათის ტალღის ფორმა);
  • საათის სიხშირის არასტაბილურობა (Jitter);
  • საათის სიხშირის ფაზის შეცვლა;
  • გადართვის დროის ხანგრძლივობა (Transition times);
  • მიღებული საათის ტალღების დროის დიაგრამები;
  • ნებისმიერი სხვა დამატებითი ინფორმაცია.

პროგრამული უზრუნველყოფისა და პროგრამული უზრუნველყოფის ციფრული მოდულებისთვის საჭიროა სინქრონიზაციის სიგნალების შეზღუდვების ნაკრები.

დროის შეზღუდვების ნიმუშის ჩამონათვალი:

  • ჩასვლის დრო შეყვანებზე;
  • გამოსვლებზე სიგნალების გამოჩენის დრო (გამოსვლებზე საჭირო დრო);
  • მრავალციკლიანი ბილიკები;
  • ცრუ ბილიკები;
  • მონაცემთა სიგნალის გადართვის დროის ხანგრძლივობა (Data signal transition times);
  • ნებისმიერი სხვა დამატებითი ინფორმაცია.

დასკვნა

FPGA-ებისთვის შემუშავებული ციფრული მოდულების თანმხლები დოკუმენტაციის შემდეგი ნაკრები მოწოდებულია მომხმარებელსა და დეველოპერს შორის შეთანხმებით. ყველაზე ხშირად, დეველოპერი უბრალოდ უზრუნველყოფს ციფრულ მოდულს, რომელიც აღწერილია VHDL-ში, Verilog-ში, System Verilog-ში და/ან განვითარებულია მიკროსქემის რედაქტორში. დამატებით დოკუმენტაციასთან დაკავშირებით, დეველოპერის პასუხი ყველაზე ხშირად შემდეგია: ”ციფრული მოდული მუშაობს, ასე რომ აიღეთ და გამოიყენეთ იგი. არაფერია რთული მიკროსქემის აღწერილობაში ტექნიკის ენაზე: თქვენ თვითონ შეგიძლიათ გაარკვიოთ ეს. ”

ავტორის აზრით, თქვენ შეგიძლიათ გაარკვიოთ ყველაფერი, ეს ყველაფერი დამოკიდებულია სურვილზე და დახარჯულ დროზე, ხოლო უკვე შემუშავებული ციფრული მოდულისთვის "სხვისი" პროექტის გაგებაზე დახარჯული დრო პირდაპირპროპორციულია VHDL-ში აღჭურვილობის აღწერის გამოცდილებით. Verilog და ცოდნა ციფრული და მიკროპროცესორული სქემები. ამის თავიდან აცილება შესაძლებელია, თუ თავდაპირველად ეთანხმებით დეველოპერს თანმხლები დოკუმენტაციის შემადგენლობაში, მაშინ ციფრული მოდულის გამოყენება თქვენს პროექტში უფრო ადვილი ხდება და მისი განხორციელება უფრო სწრაფად მოხდება.

შეჯამებისთვის, ავტორს სურს აღინიშნოს, რომ FPGA-ზე ციფრული მოწყობილობის შემუშავების ამოცანის ჩამოყალიბებისას უნდა დაიცვან სტატიაში მოცემული რეკომენდაციები, მაშინ პრობლემები არ წარმოიქმნება ადრე შემუშავებული ციფრული მოწყობილობის ხელახალი გამოყენების ან განახლებისას.

ლიტერატურა

  1. Denisov A. რამდენიმე რჩევა ციფრული მოწყობილობების დიზაინისთვის VHDL-ზე FPGA-სთვის // კომპონენტები და ტექნოლოგიები. 2009. No12.
  2. GOST 2.102-68 ESKD. საპროექტო დოკუმენტაციის სახეები და სისრულე.
  3. GOST 2.114-95 ESKD. ტექნიკური პირობები.
  4. GOST 15.101-98. პროდუქციის შემუშავებისა და წარმოებაში დანერგვის სისტემა. სამეცნიერო კვლევითი სამუშაოს განხორციელების პროცედურა.
  5. GOST R 15.201-20-00. პროდუქციის შემუშავებისა და წარმოებაში დანერგვის სისტემა. პროდუქტები სამრეწველო და ტექნიკური მიზნებისთვის. პროდუქციის შემუშავებისა და წარმოებაში შეტანის პროცედურა.