SystemVerilog-da FPGA üçün proqramlaşdırmağı öyrənmək. FPGA. Biz proqramlaşdırıla bilən məntiq sxemlərinin necə qurulduğunu və onların nə üçün yaxşı olduğunu başa düşürük. Müasir cihazlarda FPGA-lardan istifadə etməklə

FPGA (Programmable Logic Integrated Circuit) xüsusi proqramlaşdırma dilində təsvirdən rəqəmsal sxemlərin qurulması üçün nəzərdə tutulmuş inteqral sxemdir. Başqa sözlə, FPGA bir çipdir, sanki 74HCxx kimi bir dəstə elementi ehtiva edir. Bu məntiqi elementlərin tam olaraq nə olacağı, onlar arasında hansı əlaqənin olacağı və nəticədə yaranan dövrənin xarici dünya ilə hansı əlaqələri olacağı FPGA proqramlaşdırma mərhələsində müəyyən edilir.

Qeyd: Bildiyimə görə, bu gün rus dilində FPGA və FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) terminləri bir-birini əvəz edən terminlər hesab olunur ki, mətndə sonradan istifadə olunacaq. Bununla birlikdə, FPGA (FPGA) FPGA (PLD, Proqramlaşdırıla bilən Məntiq Cihazı) növlərindən biri olan alternativ bir nöqteyi-nəzərinin mövcudluğunu bilməyə dəyər.

FPGA Əsasları

FPGA proqramlaşdırması Hardware Description Language (HDL) istifadə edir. Onların arasında ən populyarları Verilog (və onun dialektləri, xüsusən SystemVerilog), həmçinin VHDL-dir. Dillər bir çox cəhətdən oxşardır, lakin fərqli sintaksisə malikdir və bəzi detallarda fərqlənir. Əgər Verilog hardware təsviri dünyasının belə bir C-dirsə, VHDL müvafiq olaraq Paskaldır. Bildiyimə görə, VHDL, qismən Verilog ilə müqayisədə genişliyinə görə bir qədər az populyardır. VHDL-nin üstünlükləri (və ya mənfi cəhətləri, kimə aiddir) adlandırıla bilər sərt statik yazma. Verilog bəzən gizli tipli yayıma icazə verir. C və Paskal ilə bənzətməyə davam etmək üçün dillər o qədər də fərqli deyil ki, hər ikisini öyrənə bilməyəcəksiniz.

Hal-hazırda aparıcı FPGA istehsalçıları Altera (indi Intel-ə məxsusdur) və Xilinx-dir. Müxtəlif mənbələrdən alınan məlumata görə, onlar birlikdə bazarın ən azı 80%-nə nəzarət edirlər. Digər oyunçulara Actel (Microsemi tərəfindən alınıb), Lattice Semiconductor, Quicklogic və SiliconBlue daxildir. Xilinx aparatı yalnız Xilinx inkişaf mühitindən (Vivado adlanır) işlədilə bilər, Altra inkişaf mühiti (Quartus adlanır) isə yalnız Altera aparatını başa düşür. Yəni, tam təchizatçı kilidi və layihəniz üçün xüsusi bir FPGA seçərək, siz avtomatik olaraq müvafiq istehsalçının inkişaf alətlərini, onların texniki dəstəyini, sənədlərini, proqram təminatının lisenziyalaşdırma şərtlərini, aparat dəstəyinin dayandırılması siyasətini və s.

FPGA-lar tez-tez müəyyən hesablamaların birbaşa aparatda həyata keçirilməsi ilə əhəmiyyətli dərəcədə sürətləndirilməsini istədikləri vəzifələrdə istifadə olunur. Məsələn, FPGA-lar siqnalın emalı sahəsində, məsələn, osiloskoplarda, spektr analizatorlarında, məntiq analizatorlarında, siqnal generatorlarında, proqram təminatı ilə müəyyən edilmiş radioda və hətta bəzi monitorlarda geniş istifadə tapmışdır. Xüsusilə, LimeSDR Altera Cyclone IV, Rigol DS1054Z osiloskopu isə Xilinx Spartan-6, həmçinin Actel-dən ProASIC 3-dən istifadə edir. Haqqında eşitdiyim digər proqramlar arasında kompüter görmə, nitqin tanınması və bioinformatika daxildir. Xüsusilə FPGA-da işləyən veb-serverlərin və DBMS-nin inkişafı üçün başqa layihələr də var. Amma bildiyimə görə, bu istiqamət hələ çox eksperimentaldır.

Xilinx yoxsa Altera?

Necə deyərlər, ən yaxşı Linux sizin Linux guru bildiyinizdir.

Dmitri Oleksyuk tərəfindən təmsil olunan dostum FPGA guru mənə Digilent-dən Arty Artix-7 devboard ilə başlamağı məsləhət gördü. İstifadə etdiyi FPGA Xilinx-dən Artix-7-dir. Digilent özü Rusiyaya çatdırmır, lakin nəzərə çarpan qiymət artımına baxmayaraq, cihaz AliExpress-də də mövcuddur (rəsmi qiymət 99 dollardır). eBay-də də satılır. Bu, kifayət qədər güclü bir lövhədir, buna baxmayaraq kifayət qədər pul tələb edir.

əyləncəli faktlar!Əgər siz sadəcə Verilog və ya VHDL-də proqramlaşdırmaq istəyirsinizsə, dəqiq desək, heç bir FPGA lövhəsi almağa ehtiyac yoxdur. Əvvəlcə özünüzü bir simulyatorla məhdudlaşdıra bilərsiniz, onunla iş daha sonra müzakirə olunacaq.

Lövhənin maraqlı xüsusiyyətlərindən biri də rozetkaların Arduino qalxanlarına uyğun yerləşməsidir. Həmçinin lövhəyə Vivado üçün lisenziya almaq üçün istifadə edilə bilən əlavə daxildir və onun bütün xüsusiyyətlərini açır. Lisenziya aktivləşdirildiyi tarixdən bir il müddətində etibarlıdır və həmçinin ƏS növü və MAC ünvanı ilə bir kompüterə bağlıdır.

Çatdırılma yolu ilə. Eşitmişəm ki, bortda FPGA olan cihazların gömrükdən keçməmək şansı yüksəkdir. AliExpress-dəki mağaza, yuxarıda verdiyim link, SPSR kuryer xidməti vasitəsilə Rusiyaya lövhələr çatdırır. Gömrükdən keçmək üçün mövcud Rusiya qanunvericiliyinin tələb etdiyi kimi pasport məlumatları (yalnız məlumat, şəkil yoxdur) və əlaqə telefon nömrəsi ilə onlayn forma doldurmaq lazım idi. Bundan sonra lövhə heç bir sual verilmədən kuryer vasitəsilə birbaşa qapıya çatdırılıb.

Vivado quraşdırılması

Vivado inkişaf mühiti Xilinx veb saytından yükləmək üçün mövcuddur. Yükləməzdən əvvəl qeydiyyatdan keçməli və özünüz haqqında kifayət qədər ətraflı bir formanı doldurmalı olduğunuza zehni olaraq hazır olun. "Vivado HLx 2017.2: Bütün ƏS quraşdırıcısı Tək Fayl Yükləməsi" adlı arxivi yükləyin. Təsadüfən bəzi "Vivado Lab Solutions" ilə qarışdırmayın, bu sizə lazım olan şey deyil. Arxivin çəkisi 20 GB-dan çoxdur, ona görə də səbirli olun.

Arxivi açın, quraşdırıcını işə salın. Vivado HL System Edition qoyduq. Onun tam versiyası diskdə 47 GB tutacaq. Şəxsən mən Proqram İnkişaf etdirmə Dəstinin işarəsini sildim və ölçüsünü 12 GB-a endirən yalnız 7 Series cihazları üçün dəstəyi buraxdım. Bir az qabağa qaçaraq qeyd edirəm ki, bu konfiqurasiya kifayət qədər kifayətdir.

Vivado-nu işə salmazdan əvvəl ona Arty Artix-7 dəstəyi əlavə etməlisiniz, çünki o, bu lövhə haqqında qutudan heç nə bilmir. Bu kimi bir şey edildi:

cd ~/ opt/ xilinx/ Vivado/ 2017.2 / data/ boards/ board_files
wget https:// github.com/ Digilent/ vivado-boards/ archive/ master.zip
master.zip-i açın
mv vivado-boards-master/ yeni/ board_files/* ./
rm -r vivado-boards-master
rmmaster.zip

Biz həmçinin Arty_Master.xdc faylını hardasa yükləyib saxlayırıq. Bundan sonra bizə lazım olacaq. Faylda lövhədə yerləşən LED-lərin, açarların və s.-nin təsviri var. Onsuz Verilog-da LED-lərin yanıb-sönməsi asan olmayacaq.

SystemVerilog-da ilk layihə

Vivadoda biz File → New Project deyirik... Layihə növü olaraq RTL Project seçin, Hazırda mənbələri göstərməyin qutusunu seçin. Lövhə növü seçimi dialoqunda siyahıda Arty-ni tapırıq.

Əvvəlcə layihəyə əvvəllər yüklənmiş XDC faylını əlavə edirik. Layihə ilə qovluğa kopyalayın. Sonra deyirik Fayl → Mənbələri əlavə et... → Məhdudiyyətlər əlavə et və ya yarat → Fayl əlavə et, faylın bir nüsxəsini tap, Finish düyməsini klikləyin. Məhdudiyyətlər qrupundakı layihə fayl ağacında (Mənbələr) Arty_Master.xdc faylı və ya nüsxəni nə adlandırdığınızdan asılı olmayaraq, görünəcək. Onu açın və Saat siqnalı, Anahtarlar və LED qruplarındakı bütün sətirləri şərhdən çıxarın.

Sonra deyirik Fayl → Mənbələri əlavə et... → Dizayn mənbələri əlavə et və ya yarat → Fayl yarat. Fayl növündə SystemVerilog seçin, fayl adında salam kimi bir şey daxil edin. Bitirik deyirik. Bundan sonra, modul interfeysinə klikləməyi təklif edən Modulu müəyyənləşdirin dialoqu görünəcək. Dialoq olduqca yararsızdır, çünki eyni şeyi birbaşa kodda etmək daha rahatdır, ona görə də Ləğv et düyməsini basın.

Mənbə ağacında biz yeni hello.sv faylı tapırıq, o, Dizayn Mənbələri qrupunda olacaq. Aşağıdakı kodu açın və yazın:

`zaman miqyası 1ns / 1ps

modul salam(
giriş məntiqi CLK100MHZ,
giriş məntiqi [ 3 : 0 ] sw,
çıxış məntiqi [ 3 : 0 ] led
) ;

Həmişə@ (CLK100MHZ poza)
başlamaq
əgər (sw[ 0 ] == 0 )
başlamaq
rəhbərlik etmişdir<= 4"b0001 ;
son
başqa
başlamaq
rəhbərlik etmişdir<= 4"b0000 ;
son
son

son modul

Hər şey düzgün aparılıbsa, bu mərhələdə Vivado bu kimi görünəcək (tıklana bilən, PNG, 71 Kb):

Proqramın tərtibi iki mərhələdə - sintez (sintez) və icra (həyata keçirmə) mərhələdə həyata keçirilir. Sintez mərhələsində proqram məntiq qapılarının və digər elementlərin mücərrəd sxeminə çevrilir. İcra mərhələsində bu dövrəni müəyyən bir dəmir parçasına necə yandırmaq barədə qərar verilir.

Flow → Run Synthesis deyərək və ya sadəcə F11 düyməsini basaraq sintezi həyata keçirin. Yuxarı sağ küncdə prosesin davam etdiyinə dair bir işarə görəcəksiniz. Bu, kompüterinizdən və proqramın mürəkkəbliyindən asılı olaraq kifayət qədər uzun müddət çəkə bilər. Laptopumda yuxarıdakı proqramın sintezi təxminən 10 saniyə ərzində tamamlandı.İndi siz Flow → Open Synthesized Design desəniz, belə gözəl bir şəkil görə bilərsiniz:

Lövhəmizi yandırmağın vaxtı gəldi. Biz Flow → Run Imlementation, sonra Flow → Generate Bitstream deyirik. Lövhəni kompüterə USB vasitəsilə qoşuruq, Vivadoda Flow → Open Hardware Manager → Open target → Auto Connect → Program device deyirik. Bit faylına gedən yolu göstərməlisiniz. Mənim üçün bu belə idi:

./first-project.runs/impl_1/hello.bit

Proqram deyirik. İndi lövhədəki LD4 LED-i SW0 açarı aşağı salındıqda yanır (yuxarıdakı lövhənin şəklinə baxın). Açar yuxarıdırsa, LED sönür. Sadə, təbii, amma "salam, dünya"dır, nə gözləyirdin? :)

Simulyasiya

Simulyasiya Verilog və ya VHDL kodunun heç bir FPGA olmadan birbaşa kompüterinizdə virtual icrasıdır. Bu, həm sazlama vasitəsidir, həm də kodu testlərlə əhatə etmək üçün bir növ çərçivədir.

Simulyasiya ilə tanış olanda ilk tapdığım o oldu ki, mənim işimə yaramadı. Günlüklər sadəcə olaraq:

XƏTA: Yaradılmış C faylını [...]xsim_1.c tərtib etmək alınmadı.

Google bu səhvlə bağlı yalnız "antivirusu söndürməyə çalışın" üslubunda hər cür cəfəngiyat tapdı. Sonda ~/opt/xilinx/Vivado/2017.2/bin/xelab skriptinə -v 2 bayrağının əlavə edilməsi problemin həllinə kömək etdi. Onun köməyi ilə Vivado-nun sürüklədiyi ikili Clang-ın aşağıdakı səhvlə qəzaya uğradığını öyrəndim:

/a/long/path/to/clang: paylaşılan kitabxanaları yükləyərkən xəta baş verdi:
libncurses.so.5: paylaşılan obyekt faylını aça bilmir: Belə fayl yoxdur və ya
kataloq

Və bu səhv və onun həlli artıq Arch Wiki-də təsvir edilmişdir. Şəxsən mən artıq mövcud olan faylı Vivado_HLS qovluğundan köçürdüm:

cp ~/opt/xilinx/Vivado_HLS/2017.2/lnx64/tools/gdb_v7_2/libncurses.so.5\
~/opt/xilinx/Vivado/2017.2/lib/lnx64.o/libncurses.so.5

... bundan sonra hər şey işlədi. Beləliklə, indi, əslində, bir simulyasiya nümunəsi.

Əvvəllər hello.sv-ni necə yaratdığımıza bənzətməklə, Simulyasiya Mənbələri qrupunda yeni hello_sim.sv faylı yaradırıq. Fayla aşağıdakı kodu yazırıq:

`zaman miqyası 1ns / 1ps

modul hello_sim() ;
məntiq clck_t;
məntiq [ 3 : 0 ] sw_t;
məntiq [ 3 : 0 ] led_t;

salam hello_t(clck_t, sw_t, led_t) ;

ilkin başlayır
clck_t<= 0 ;
sw_t<= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
təsdiq (led_t === 4"b0001 );

Sw_t<= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
təsdiq (led_t === 4"b0000 );
son

son modul

Mənbə ağacında, faylı sağ klikləyin, Mənbə Node Xüsusiyyətlərini seçin. İstifadə olunan bölmədə Sintez və Tətbiq onay qutularının işarəsini çıxarın. Bəzi testlərin rezin FPGA-dan uzaqlaşmasını istəmirik, elə deyilmi?

İndi biz Flow → Run Simulation → Run Behavioral Simulation deyirik. Nəticədə belə bir şey görəcəksiniz:

Görə bilərsiniz ki, sw sıfır olduqda, led birdir və əksinə. Bu halda bütün dəyişikliklər saat siqnalının kənarında baş verir. Deyəsən proqram düzgün işləyir. Yaxşı, eyham edən iddialara heç nə düşmədi.

Nəticə

Yuxarıda təsvir olunan layihə ilə arxivi yükləmək olar. Əlavə məlumat mənbələri olaraq aşağıdakıları tövsiyə edərdim:

  • Dəmirlə bağlı təfərrüatlarla maraqlanırsınızsa, diqqət yetirin

Təsəvvür edin ki, prosessor konkret göstərişlər toplusunu yerinə yetirmək əvəzinə, hər bir proqram üçün yenidən qurulacaq və alqoritmi birbaşa aparata çevirəcək. FPG-lər belə işləyir. Bugünkü məqalədə bunun necə mümkün olduğunu izah edəcəyəm və sizi müxtəlif FPGA dizayn üsulları ilə tanış edəcəyəm.

Başlamaq üçün ASIC-lərin necə işlədiyinin rəqəmsal məntiqini bir az başa düşməlisiniz, lakin onlarla başlamaq çox çətin və bahalıdır və bunun əvəzinə FPGA-lardan başlamaq daha yaxşıdır.

FPGA nədir?

FPGA sahədə proqramlaşdırıla bilən qapı massivi (istifadəçi tərəfindən proqramlaşdırıla bilən qapı massivləri, FPGA) deməkdir. Daha ümumi halda, onlar FPGA adlanır - proqramlaşdırıla bilən məntiq inteqral sxemləri.

FPGA-nın köməyi ilə siz, sözün əsl mənasında, bir neçə min yaşıl rubla masanın üstündəki sərfəli debug lövhəsi və tərtibatçı proqramı ilə evdə oturarkən rəqəmsal mikrosxemlər tərtib edə bilərsiniz. Ancaq pulsuz seçimlər də var. Qeyd: proqramlaşdırma deyil, dizayn etməkdir, çünki çıxışda prosessor üçün proqram deyil, hardware səviyyəsində müəyyən bir alqoritmi yerinə yetirən fiziki rəqəmsal dövrə alacağıq.

Aşağıdakı kimi işləyir. Lövhədə quraşdırılmış bir FPGA çipinə qoşulmuş bir sıra interfeysləri olan hazır çap dövrə lövhəsi, belə bir sərin məlumat mərkəzi lövhəsi və ya təlim üçün bu debug lövhəsi kimi bir şey var.

FPGA-nı konfiqurasiya edənə qədər, interfeyslərdən məlumatları emal etmək üçün çipin içərisində sadəcə heç bir məntiq yoxdur və buna görə də, əlbəttə ki, heç bir şey işləməyəcək. Lakin dizayn nəticəsində FPGA-ya yükləndikdən sonra bizə lazım olan rəqəmsal sxemi yaradacaq proshivka yaradılacaq. Bu yolla siz şəbəkə paketlərini qəbul edəcək və emal edəcək 100G Ethernet nəzarətçisi yarada bilərsiniz.

FPGA-nın mühüm xüsusiyyəti yenidən konfiqurasiya etmək qabiliyyətidir. Deyək ki, indi bizə 100G Ethernet nəzarətçi lazımdır və bir həftə ərzində eyni lövhə dörd müstəqil 25G Ethernet interfeysini həyata keçirmək üçün istifadə edilə bilər.

Bazarda FPGA çip istehsalçısında iki lider var: tanınmış Intel və Xilinx. Onlar bazarın 58 və 42%-nə nəzarət edirlər. Xilinx-in qurucuları ilk FPGA çipini 1985-ci ildə icad etdilər. Intel bazara olduqca yaxınlarda - 2015-ci ildə Xilinx ilə eyni vaxtda qurulan Altera-nı mənimsəyib. Altera və Xilinx texnologiyaları inkişaf mühitləri kimi bir çox cəhətdən oxşardır. Daha tez-tez Xilinx məhsulları ilə işləmişəm, ona görə də məqalədə onun daim qeyd edildiyini görməyə təəccüblənməyin.

FPGA-lar müxtəlif sahələrdə geniş istifadə olunur: məişət elektronikası, telekommunikasiya avadanlıqları, məlumat mərkəzlərində istifadə üçün sürətləndirici lövhələr, robototexnika, ASIC prototipləri. Aşağıda bir neçə misaldan keçəcəyəm.

Biz həmçinin avadanlıqların yenidən konfiqurasiyasını təmin edən texnologiyaya baxacağıq, dizayn prosesi ilə tanış olacağıq və Verilog dilində hardware sayğacının tətbiqinin sadə nümunəsini təhlil edəcəyik. Əgər hər hansı bir FPGA debug lövhəniz varsa, bunu özünüz təkrarlaya bilməlisiniz. Lövhə yoxdursa, kompüterinizdə sxemin işini simulyasiya edərək Verilog ilə hələ də tanış ola bilərsiniz.

FPGA necə işləyir

FPGA çipi, flip-flopları, registrləri, multipleksorları və adi sxemlər üçün digər məntiq elementlərini yığmaq üçün istifadə edilən eyni tranzistorlardan ibarət eyni xüsusi ASIC çipidir. Təbii ki, bu tranzistorların qoşulma sırasını dəyişmək mümkün deyil. Lakin memarlıq baxımından mikrosxem elə hiyləgər şəkildə qurulub ki, daha böyük bloklar arasında siqnalların keçidini dəyişə bilərsiniz: onlara CLB-lər - proqramlaşdırıla bilən məntiq blokları deyilir.

Siz həmçinin CLB-nin yerinə yetirdiyi məntiq funksiyasını dəyişə bilərsiniz. Bu, bütün çipin Statik RAM konfiqurasiya yaddaş hüceyrələri ilə nüfuz etməsi səbəbindən əldə edilir. Bu yaddaşın hər bir biti ya bir növ siqnal keçid açarını idarə edir, ya da CLB-nin həyata keçirdiyi məntiqi funksiyanın həqiqət cədvəlinin bir hissəsidir.

Konfiqurasiya yaddaşı Statik RAM texnologiyası ilə qurulduğundan, birincisi, FPGA işə salındıqda, mikrosxem konfiqurasiya edilməlidir, ikincisi, mikrosxem demək olar ki, sonsuz sayda yenidən konfiqurasiya edilə bilər.

Konfiqurasiya yaddaşı olmayan çox sadələşdirilmiş 2D çip strukturu

CLB-lər CLB-lərin giriş və çıxışları üçün əlaqələri müəyyən edən keçid matrisində yerləşir.

Keçid matris diaqramı

Konduktorların hər kəsişməsində öz konfiqurasiya yaddaş hüceyrələri tərəfindən idarə olunan altı keçid açarı var. Bəzilərini açıb digərlərini bağlamaqla CLB-lər arasında siqnalların müxtəlif keçidini təmin etmək mümkündür.

CLB

CLB çox sadə bir şəkildə bir neçə arqumentin Boolean funksiyasını təyin edən blokdan (buna axtarış cədvəli deyilir - Axtar Cədvəl, LUT) və tətikdən (flip-flop, FF) ibarətdir. Müasir FPGA-larda LUT-un altı girişi var, lakin rəqəm sadəlik üçün üçü göstərir. LUT çıxışı CLB çıxışına ya asinxron (birbaşa) və ya sinxron (sistem saatında işləyən FF flip-flop vasitəsilə) verilir.

LUT Tətbiq Prinsipi

LUT-un tətbiqi prinsipinə baxmaq maraqlıdır. Tutaq ki, bizdə bəzi Boolean funksiyası var y = (a & b) | ~c. Onun sxematik təsviri və həqiqət cədvəli şəkildə göstərilmişdir. Funksiya üç arqumentə malikdir, ona görə də 2^3 = 8 qiymət alır. Onların hər biri öz giriş siqnallarının birləşməsinə uyğundur. Bu dəyərlər FPGA proqram təminatı inkişaf proqramı tərəfindən hesablanır və xüsusi konfiqurasiya yaddaş hüceyrələrinə yazılır.

Hüceyrələrin hər birinin dəyəri onun LUT çıxış multipleksorunun girişinə verilir və bu və ya digər funksiya dəyərini seçmək üçün Boolean funksiyasının giriş arqumentlərindən istifadə olunur. CLB ən vacib FPGA aparat resursudur. Müasir FPGA çiplərindəki CLB miqdarı dəyişə bilər və çipin növündən və tutumundan asılıdır. Xilinx, təxminən dörd mindən üç milyona qədər dəyişən CLB kristallarına malikdir.

CLB ilə yanaşı, FPGA daxilində bir sıra mühüm aparat resursları var. Məsələn, aparat çarpma-toplama blokları və ya DSP blokları. Onların hər biri hər dövrədə 18 bitlik ədədləri vurma və əlavə edə bilir. Yüksək səviyyəli kristallarda DSP bloklarının sayı 6000-dən çox ola bilər.

Digər resurs daxili yaddaş bloklarıdır (Blok RAM, BRAM). Hər blok 2 KB saxlaya bilər. Belə yaddaşın ümumi tutumu kristaldan asılı olaraq 20 KB-dan 20 MB-a qədər ola bilər. CLB-lər kimi, BRAM və DSP blokları kommutasiya matrisi ilə birləşdirilir və bütün çipi nüfuz edir. CLB, DSP və BRAM bloklarını birləşdirərək, çox səmərəli məlumat emal sxemləri əldə edilə bilər.

FPGA-ların üstünlükləri

1985-ci ildə Xilinx tərəfindən yaradılmış ilk FPGA çipində cəmi 64 CLB var idi. O dövrdə tranzistorların çiplərə inteqrasiyası indikindən xeyli aşağı idi və rəqəmsal cihazlarda tez-tez "boş məntiq" çiplərindən istifadə olunurdu. Registrlər, sayğaclar, multipleksorlar, çarpanlar üçün ayrıca çiplər var idi. Müəyyən bir cihaz üçün bu aşağı inteqrasiyalı mikrosxemlərin quraşdırıldığı öz çap dövrə lövhəsi yaradılmışdır.

FPGA-nın istifadəsi bu yanaşmadan imtina etməyə imkan verdi. Hətta 64 CLB FPGA çap dövrə lövhəsində yerə qənaət edir və yenidən konfiqurasiyanın mövcudluğu, "sahədə" dedikləri kimi, əməliyyat zamanı istehsal edildikdən sonra cihazların funksionallığını yeniləmək imkanı əlavə etdi (buna görə də adı - sahədə proqramlaşdırıla bilən qapı massivi). ).

FPGA daxilində istənilən aparat rəqəmsal sxemi yaradıla bildiyinə görə (əsas odur ki, kifayət qədər resurs var) FPGA-ların mühüm tətbiqlərindən biri ASIC çiplərinin prototipləşdirilməsidir.

ASIC-in inkişafı çox mürəkkəb və baha başa gəlir, səhvin qiyməti çox yüksəkdir və məntiqin yoxlanılması məsələsi çox vacibdir. Buna görə də, dövrənin fiziki topologiyası üzərində işə başlamazdan əvvəl inkişaf mərhələlərindən biri onun bir və ya bir neçə FPGA çipində prototipləşdirilməsi idi.

ASIC-in inkişafı üçün çoxlu bir-birinə bağlı FPGA-ları ehtiva edən xüsusi lövhələr buraxılır. Mikroçip prototipi daha aşağı tezliklərdə (bəlkə də onlarla megahertz) işləyir, lakin problemlərin və səhvlərin müəyyən edilməsinə pul qənaət edir.

Bununla belə, mənim fikrimcə, FPGA-ların daha maraqlı tətbiqləri var. FPGA-nın çevik strukturu alqoritmi dəyişdirmək imkanı ilə məlumatların yüksək sürətli və paralel emalı üçün aparat sxemlərinin həyata keçirilməsinə imkan verir.


Aparat platformalarının müqayisəsi

CPU, GPU, FPGA və ASIC arasındakı əsas fərq haqqında düşünək. CPU universaldır, onun üzərində hər hansı bir alqoritmi işlədə bilərsiniz, o, ən çevikdir və çox sayda proqramlaşdırma dilləri və inkişaf mühitləri sayəsində istifadəsi ən asandır.

Eyni zamanda, CPU təlimatlarının çox yönlü olması və ardıcıl yerinə yetirilməsi səbəbindən performans azalır və dövrənin enerji istehlakı artır. Bu, hər bir faydalı hesab əməliyyatı üçün CPU təlimatların oxunması, registrlər və önbellek arasında məlumatların köçürülməsi və digər jestlərlə əlaqəli bir çox əlavə əməliyyatları yerinə yetirdiyi üçün baş verir.

Digər tərəfdə ASIC var. Bu platformada tranzistorların birbaşa qoşulması hesabına tələb olunan alqoritm aparatda həyata keçirilir, bütün əməliyyatlar yalnız alqoritmin icrası ilə bağlıdır və onu dəyişdirmək imkanı yoxdur. Beləliklə, platformanın maksimum performansı və ən az enerji istehlakı. Lakin ASIC-i yenidən proqramlaşdırmaq mümkün deyil.

CPU-nun sağında GPU yerləşir. Əvvəlcə bu çiplər qrafiklərin işlənməsi üçün nəzərdə tutulmuşdu, lakin indi ümumi təyinatlı hesablama mədənləri üçün istifadə olunur. Onlar minlərlə kiçik hesablama nüvəsindən ibarətdir və verilənlər massivində paralel əməliyyatlar yerinə yetirirlər.

Alqoritmi paralelləşdirmək olarsa, onda GPU-da CPU ilə müqayisədə əhəmiyyətli sürətlənməyə nail olmaq mümkün olacaq. Digər tərəfdən, ardıcıl alqoritmlər daha pis həyata keçiriləcək, buna görə də platforma CPU-dan daha az çevikdir. Həmçinin, GPU-nun inkişafı üçün xüsusi bacarıqlara malik olmalısınız, OpenCL və ya CUDA bilməlisiniz.

Nəhayət, FPGA. Bu platforma ASIC-lərin səmərəliliyini proqramı dəyişdirmək qabiliyyəti ilə birləşdirir. FPGA-lar universal deyil, lakin CPU və hətta GPU-lardan daha yaxşı performans göstərəcək alqoritmlər və tapşırıqlar sinfi var. FPGA üçün inkişafın mürəkkəbliyi daha yüksəkdir, lakin yeni inkişaf vasitələri bu boşluğu azaldır.

FPGA-nın həlledici üstünlüyü, minimal cavab gecikməsi ilə məlumatları onların gəliş sürətində emal etmək qabiliyyətidir. Nümunə olaraq, çoxlu sayda portları olan ağıllı şəbəkə marşrutlaşdırıcısını təsəvvür edin: Ethernet paketi onun portlarından birinə gəldikdə, çıxış portu seçməzdən əvvəl bir çox qaydalar yoxlanılmalıdır. Paketdəki bəzi sahələri dəyişdirməli və ya yenilərini əlavə etməlisiniz.

FPGA-dan istifadə bu problemi dərhal həll etməyə imkan verir: paketin baytları şəbəkə interfeysindən mikrosxemə yenicə gəlməyə başlayıb və onun başlığı artıq təhlil edilir. Burada prosessorların istifadəsi şəbəkə trafikinin emal sürətini əhəmiyyətli dərəcədə yavaşlata bilər. Aydındır ki, marşrutlaşdırıcılar üçün ən səmərəli işləyəcək xüsusi ASIC çipi edə bilərsiniz, lakin paketlərin işlənməsi qaydaları dəyişməlidirsə nə etməli? Yalnız FPGA sizə yüksək performansla birlikdə tələb olunan çevikliyi əldə etməyə kömək edə bilər.

Beləliklə, FPGA-lar yüksək emal performansı, ən sürətli cavab müddəti və aşağı enerji istehlakı tələb olunan yerlərdə istifadə olunur.

Buludda FPGA

Bulud hesablamalarında FPGA-lar sürətli hesablama, şəbəkə trafikinin sürətləndirilməsi və məlumat massivlərinə giriş üçün istifadə olunur. Buraya birjalarda yüksək tezlikli ticarət üçün FPGA-dan istifadə də daxildir. PCI Express ilə FPGA lövhələri və Intel (Altera) və ya Xilinx tərəfindən istehsal edilmiş optik şəbəkə interfeysi serverlərə daxil edilir.

FPGA-lar kriptoqrafik alqoritmlər, DNT ardıcıllığının müqayisəsi və molekulyar dinamika kimi elmi vəzifələr üçün əladır. Microsoft uzun müddətdir ki, Bing axtarış xidmətini sürətləndirmək, həmçinin Azure buludunda Proqram Təminatlı Şəbəkələri təşkil etmək üçün FPGA-lardan istifadə edir.

Maşın öyrənmə bumu da FPGA-dan yan keçməyib. Xilinx və Intel dərin neyron şəbəkələri ilə işləmək üçün FPGA əsaslı alətlər təklif edir. Onlar sizə müəyyən bir şəbəkəni birbaşa Caffe və TensorFlow kimi çərçivələrdən həyata keçirən FPGA proqram təminatını əldə etməyə imkan verir.

Üstəlik, bütün bunları evdən çıxmadan və bulud xidmətlərindən istifadə etmədən sınaya bilərsiniz. Məsələn, Amazonda siz FPGA lövhəsinə və maşın öyrənməsi də daxil olmaqla istənilən inkişaf alətlərinə çıxışı olan virtual maşın icarəyə götürə bilərsiniz.

FPGA kənarında

FPGA-da başqa nə maraqlıdır? Niyə sadəcə bunu etmirlər! Robototexnika, pilotsuz nəqliyyat vasitələri, dronlar, elmi alətlər, tibbi avadanlıqlar, istifadəçinin mobil cihazları, ağıllı təhlükəsizlik kameraları və s.

Ənənəvi olaraq, FPGA-lar bir ölçülü siqnalların rəqəmsal emalı üçün istifadə olunurdu (və DSP prosessorları ilə rəqabət aparırdı) radar cihazlarında, radio siqnal ötürücülərində. Çiplərin artan inteqrasiyası və artan performans ilə FPGA platformaları yüksək məhsuldar hesablamalar üçün, məsələn, "buludun kənarında" iki ölçülü siqnalların işlənməsi üçün getdikcə daha çox istifadə olunur (kənar hesablama).

Bu konsepsiya ən asan şəkildə nömrə nişanının tanınması ilə trafik analiz kamerası nümunəsindən istifadə etməklə başa düşülür. Videonu Ethernet üzərindən ötürmək və axını uzaq serverdə emal etmək imkanı olan bir kamera götürə bilərsiniz. Kameraların sayı artdıqca şəbəkənin yükü də artacaq ki, bu da sistemin sıradan çıxmasına səbəb ola bilər.

Əvəzində nömrənin tanınmasını bilavasitə videokamera korpusunda quraşdırılmış kalkulyatorda həyata keçirmək və nömrələri mətn formatında buludlara köçürmək daha yaxşıdır. Bunu etmək üçün, hətta batareya ilə kifayətlənmək üçün nisbətən ucuz aşağı güclü FPGA-ları götürə bilərsiniz. Eyni zamanda, məsələn, nömrə nişanları üçün standart dəyişdirilərkən, FPGA-nın məntiqini dəyişdirmək mümkün olaraq qalır.

Robot texnikası və dronlara gəlincə, bu sahədə iki şərtin yerinə yetirilməsi xüsusilə vacibdir - yüksək performans və aşağı enerji istehlakı. FPGA platforması mükəmməl uyğun gəlir və xüsusilə dronlar üçün uçuş nəzarətçiləri yaratmaq üçün istifadə edilə bilər. Artıq anında qərar verə bilən PUA-lar hazırlanır.

FPGA layihəsinin inkişafı

Dizaynın müxtəlif səviyyələri var: aşağı, blok və yüksək. Aşağı səviyyə Verilog və ya VHDL kimi dillərdən istifadəni nəzərdə tutur, burada registr ötürmə səviyyəsində (RTL) inkişafa nəzarət edirsiniz. Bu halda siz prosessorda olduğu kimi registrlər təşkil edirsiniz və onlar arasında verilənləri dəyişən məntiq funksiyalarını müəyyənləşdirirsiniz.

FPGA sxemləri həmişə müəyyən takt sürətlərində (adətən 100-300 MHz) işləyir və RTL səviyyəsində siz dövrənin davranışını sistem saatı saatı daxilində təyin edirsiniz. Bu zəhmətli iş performans, FPGA kalıp resurs istehlakı və enerji istehlakı baxımından ən səmərəli sxemlərlə nəticələnir. Ancaq burada dövrə sahəsində ciddi bacarıqlar tələb olunur və proses onlarla sürətli deyil.

Blok səviyyəsində siz əsas olaraq sizə lazım olan çip üzərində sistem (sistem-çip) funksionallığını əldə etmək üçün müəyyən funksiyaları yerinə yetirən hazır böyük blokları birləşdirirsiniz.

Yüksək səviyyəli dizaynda siz artıq hər saat dövrəsində məlumatlara nəzarət etməyəcəksiniz, əksinə alqoritm üzərində cəmləşəcəksiniz. Vivado HLS kimi C və C++ dillərindən RTL səviyyəsinə qədər tərtibçilər və ya tərcüməçilər var. Bu olduqca ağıllıdır və geniş alqoritmlər sinfini aparat səviyyəsinə tərcümə etməyə imkan verir.

Bu yanaşmanın RTL dilləri ilə müqayisədə əsas üstünlüyü inkişaf sürəti və xüsusilə alqoritm testidir: C++ kodu kompüterdə işlədilə və yoxlana bilər və bu, RTL səviyyəsində alqoritm dəyişikliklərinin sınaqdan keçirilməsindən çox daha sürətli olacaqdır. Əlbəttə ki, rahatlıq üçün pul ödəməli olacaqsınız - dövrə o qədər də sürətli olmaya bilər və daha çox aparat resursları götürə bilər.

Çox vaxt biz bu qiyməti ödəməyə hazırıq: əgər tərcüməçidən düzgün istifadə etsəniz, o zaman səmərəlilik çox zərər çəkməyəcək və müasir FPGA-larda kifayət qədər resurslar var. Bazar üçün kritik vaxt göstəricisi olan dünyamızda bunun əsaslı olduğu ortaya çıxır.

Tez-tez hər üç inkişaf üslubu bir dizaynda birləşdirilməlidir. Tutaq ki, biz robota çevirə biləcəyimiz bir cihaz hazırlamalıyıq və ona video axınındakı obyektləri - məsələn, yol nişanlarını tanımaq imkanı verməliyik. Gəlin bir video sensor çipi götürək və onu birbaşa FPGA-ya birləşdirək. Sazlama üçün biz FPGA-ya qoşulmuş HDMI monitorundan istifadə edə bilərik.

Kameradan olan çərçivələr sensor istehsalçısı tərəfindən əvvəlcədən müəyyən edilmiş (USB burada işləmir), işlənib monitorda göstərilən interfeys vasitəsilə FPGA-ya ötürüləcək. Çərçivələri emal etmək üçün sizə adətən FPGA çipinin yanında çap edilmiş elektron lövhədə quraşdırılmış xarici DDR yaddaşında yerləşən çərçivə buferinə ehtiyacınız olacaq.


Tipik FPGA dizayn blok diaqramı

Video sensor istehsalçısı FPGA çipimiz üçün Interface IP təmin etmirsə, məlumat ötürmə protokolunun spesifikasiyasına uyğun olaraq saatları, bitləri və baytları hesablayaraq onu RTL dilində özümüz yazmalı olacağıq. Preprocess, DDR Controller və HDMI IP blokları, biz çox güman ki, hazır olanları götürəcəyik və sadəcə onların interfeyslərini birləşdirəcəyik. Daxil olan məlumatların axtarışını və işlənməsini həyata keçirən HLS bloku isə biz C++ dilində yaza və Vivado HLS-dən istifadə edərək yayımlaya bilərik.

Çox güman ki, bizə hələ də FPGA-da istifadə üçün uyğunlaşdırılmış bir növ hazır yol nişanı detektoru və təsnifat kitabxanasına ehtiyacımız var. Bu misalda, əlbəttə ki, çox sadələşdirilmiş dizayn sxemini verirəm, amma işin məntiqini düzgün əks etdirir.

RTL kodunun yazılmasından FPGA-ya yükləmək üçün konfiqurasiya faylının alınmasına qədər dizayn yolunu nəzərdən keçirin.

Dizayn yolu

Beləliklə, sizə lazım olan sxemi həyata keçirən RTL kodu yazırsınız. Onu real aparatda sınaqdan keçirməzdən əvvəl onun düzgün olduğundan və tələb olunan problemi düzgün həll etdiyinə əmin olmalısınız. Bunun üçün RTL modelləşdirməsi kompüterdə simulyatorda istifadə olunur.

Siz indiyə qədər yalnız RTL kodu ilə təmsil olunan dövrənizi götürüb virtual skamyaya qoyursunuz, burada dövrə girişlərinə rəqəmsal siqnalların ardıcıllığını tətbiq edirsiniz, çıxış diaqramlarını, çıxış siqnallarının zamandan asılılığını qeyd edirsiniz və gözlənilən nəticələrlə müqayisə edirsiniz. . Adətən səhvləri tapıb RTL yazmağa qayıdırsınız.

Bundan əlavə, məntiqi olaraq təsdiqlənmiş kod sintezator proqramının girişinə verilir. O, dövrənin mətn təsvirini verilmiş FPGA çipi üçün mövcud olan kitabxanadan rəqəmsal elementlərin əlaqəli siyahısına çevirir. Bu siyahıda LUT-lar, tetikleyiciler və onlar arasındakı keçidlər kimi elementlər göstərilir. Bu mərhələdə elementlər hələ konkret aparat resurslarına bağlı deyil. Bunu etmək üçün dövrəyə məhdudiyyətlər (məhdudiyyətlər) tətbiq etməlisiniz - xüsusən də FPGA çipinin hansı fiziki I / O pinlərinin dövrənizin məntiqi giriş və çıxışlarına qoşulduğunu göstərin.

Bu məhdudiyyətlər həmçinin dövrənin hansı saat sürətlərində işləməli olduğunu müəyyən etməyi tələb edir. Sintezatorun çıxışı və məhdudiyyət faylı digər şeylər arasında Yer və Marşrutu idarə edən Implementation prosessoruna verilir.

Yerləşdirmə prosesi şəbəkə siyahısındakı hər bir şəxsi olmayan elementi FPGA çipinin içərisindəki xüsusi elementə bağlayır. Sonra, FPGA keçid matrisinin müvafiq konfiqurasiyası üçün bu elementlərin optimal əlaqəsini tapmağa çalışan Marşrut prosesi işə başlayır.

Yer və Marşrut dövrəyə qoyduğumuz məhdudiyyətlərə əsasən işləyir: I/O sancaqları və saat sürəti. Saat periyodu İcraya çox güclü təsir göstərir: o, iki ardıcıl flip-flop arasında kritik dövrədə məntiq qapılarında gecikmə müddətindən az olmamalıdır.

Çox vaxt bu tələb dərhal yerinə yetirilə bilməz və sonra ilkin mərhələyə qayıtmaq və RTL kodunu dəyişdirmək lazımdır: məsələn, kritik zəncirdə məntiqi azaltmağa çalışın. İcra müvəffəqiyyətlə başa çatdıqdan sonra biz hansı elementlərin harada və necə bağlı olduğunu bilirik.

Yalnız bundan sonra ikili FPGA firmware faylının yaradılması prosesi başlayır. Onu real aparata yükləmək və gözlənildiyi kimi işlədiyini yoxlamaq qalır. Əgər bu mərhələdə problemlər yaranarsa, bu o deməkdir ki, modelləşdirmə natamam olub və bu mərhələdə bütün səhvlər və çatışmazlıqlar aradan qaldırılmayıb.

Simulyasiya mərhələsinə qayıdıb anormal bir vəziyyəti simulyasiya edə bilərsiniz və bu işləmirsə, ekstremal hallarda, işləyən aparatda birbaşa ayıklama mexanizmi təmin edilir. Zamanla hansı siqnalları izləmək istədiyinizi təyin edə bilərsiniz və inkişaf mühiti dizayn dövrənizin yanında çipdə yerləşdirilən, maraq siqnallarına qoşulan və zamanla onların dəyərlərini saxlayan əlavə məntiq analizatoru dövrəsi yaradacaq. İstənilən siqnalların saxlanmış vaxt diaqramlarını kompüterə yükləmək və təhlil etmək olar.

Məqalə proqramlaşdırıla bilən məntiq inteqral sxemləri (FPGA) üçün hazırlanmış rəqəmsal modullar üçün müşayiət olunan sənədlərin tərkibini müəyyən etməyə çalışır. Bu müşayiət olunan sənədlər FPGA-da rəqəmsal cihazların layihələndirilməsi mərhələsində işlənmiş rəqəmsal moduldan öz layihələrində uğurla istifadə etmək üçün tərtibatçılar tərəfindən istehlakçıya/müştəriyə təqdim edilməlidir.

Giriş

Beləliklə, şirkət və ya sifarişçi müəssisə və ya başqa bir tərtibatçı gələcəkdə öz layihələrində "xarici" hazırlanmış cihazdan istifadə edərsə, tərtibatçıdan hansı dizayn sənədlərini soruşmaq lazımdır? Bu məqalə əvvəlcə FPGA-lar üçün rəqəmsal cihazın inkişafı üçün texniki tapşırığı düzgün tərtib etmək üçün "fırıldaqçı vərəq" rolunu oynaya bilər, sonra isə tərtibatçıdan artıq hazırlanmış rəqəmsal cihaz üçün dizayn sənədlərini soruşun. Layihə sənədləri ilə bağlı əvvəlki təcrübəyə əsasən, müəssisə və ya firma adətən aşağıdakı standart və qaydalardan istifadə edir:

  • GOST 2.102-68 ESKD. Dizayn sənədlərinin növləri və tamlığı.
  • GOST 15.101-98. Məhsulların inkişafı və istehsalı üçün sistem. Tədqiqat işinin yerinə yetirilməsi qaydası.
  • GOST R 15.201-20-00. Məhsulların inkişafı və istehsalı üçün sistem. Sənaye və texniki məqsədlər üçün məhsullar. Məhsulların işlənib hazırlanması və istehsalı proseduru.

Bir qayda olaraq, bunlar bir proqram faylı və proqram (VHDL / Verilog-da rəqəmsal cihazın təsviri və ya flip-floplar, registrlər, sayğaclar kimi rəqəmsal məntiq kitabxanası elementlərindən istifadə edərək dövrə redaktorunda hazırlanmış rəqəmsal sxemlər toplusu) idi. dekoderlər və s.) CD və ya DVD və proqramlaşdırma təlimatları. Və bu qədər.

Müəllif, məsələn, aşağıdakı problemlə üzləşdi. İşçilərdən biri mürəkkəb multimodullu rəqəmsal cihaz hazırlayıb. Mən VHDL-də bütün modulları təsvir etdim və yaxşı və bahalı bir osiloskopda bu modulların və bütövlükdə rəqəmsal cihazın işinin sikloqramlarına baxdım. O, Test Bench faylları və simulyasiyaların aparılması imkanları haqqında bilmirdi və ya onları necə yazacağını bilmirdi, yeri gəlmişkən, layihə və modulların təsviri ilə bağlı şərhlər də yox idi. Modullar kitabxana elementlərindən istifadə edərək sxematik redaktorda hazırlanmış rəqəmsal sxemlərlə təmsil olunarsa, vəziyyət daha da pis ola bilər. Əsas çatışmazlıqlardan biri də buradadır: tərtibatçının özündən başqa, çətin ki, başqası bu rəqəmsal cihazı başa düşsün, xüsusən də layihə çox modulludursa və hər modulun təsviri 100 sətirdən və ya daha çox olarsa. bir monitor ekranından daha çox. Beləliklə, başqa bir tərtibatçı FPGA üçün artıq hazırlanmış belə bir rəqəmsal cihazı yeni bir inkişaf və ya layihəyə təqdim etmək istəyirsə, o, yenidən bu rəqəmsal cihazın hazırlanmasına vaxt sərf etməlidir.

FPGA-lar üçün dizayn probleminin tarixi

Hazırda FPGA bazarı ən dinamik inkişaf edənlərdən biridir. FPGA-lar texnologiyanın bir çox sahələrində istifadə olunur. Hal-hazırda, sistem səviyyəsində cihazın funksional modelindən FPGA konfiqurasiyasını əldə etmək üçün bütün aparat tərtibatçılarını qane edən birmənalı metodologiya yoxdur. Bu problemi həll etmək üçün ən populyar yanaşma IP-nüvə texnologiyasının (Əqli Mülkiyyət Nüvələri) istifadəsidir. IP nüvələri daha mürəkkəb sistem yaratmaq üçün onları asanlıqla öz layihənizə daxil etməyə imkan verən hazır komponentlərdir. Bu yanaşmanın bir əhəmiyyətli çatışmazlığı var - İP-nüvələrin elementar bazaya bağlanması. Hər bir IP nüvəsi müəyyən bir istehsalçının müəyyən bir çip seriyası üçün optimallaşdırılmışdır ki, bu da artıq yaradılmış cihazları bir elementdən digərinə ötürmə imkanını əhəmiyyətli dərəcədə azaldır. Kommersiya CAD arxitekturalarının qapalı təbiəti onların əsasında registr ötürülməsi səviyyəsində (RTL) cihaz modellərini əldə etmək üçün sistem səviyyəsində öz funksional cihaz modellərinizi əlavə etməyi qeyri-mümkün edir. Rəqəmsal modulun inkişafı istehsalçının əsas dövrə elementlərinin, məsələn, flip-floplar, dekoderlər, sayğaclar, toplayıcılar və s.-dən ibarət daxili CAD kitabxanasından istifadə edərək sxem redaktorunda tərtib edilmiş rəqəmsal sxem şəklində həyata keçirilir.

Sistem səviyyəsində funksional modeldən registr köçürmələri səviyyəsində cihaz modelinə keçidə imkan verən başqa bir məşhur yanaşma sistem səviyyəsində dizayn dillərinin (SLDL) istifadəsidir. Belə dillərə SystemC, Handel-C, VHDL, Verilog, System Verilog daxildir. Əsas üstünlük, cihazın həyata keçiriləcəyi aparat bazasından müstəqillikdir.

Beləliklə, bir tərəfdən, IP-core texnologiyasından istifadə edərkən, aparat tərtibatçısı yüksək keyfiyyətli bir həll alır, lakin cihazın həyata keçirildiyi hardware bazasına ciddi şəkildə bağlıdır. Digər tərəfdən, sistem səviyyəsində hardware təsviri dillərindən istifadə edərkən, cihazın tətbiqi aparatdan müstəqildir. Yuxarıda göstərilənlərdən belə nəticə çıxır ki, hazırda sürətləndirmək üçün istehsalçının (Xilinx, Altera, Actel və s.) və üçüncü tərəf tərtibatçılarının aparat təsviri dilində və IP nüvələrində rəqəmsal modulların birgə istifadəsindən istifadə etmək vacibdir. rəqəmsal modulların layihələndirilməsi prosesi. Üçüncü tərəf istehsalçılarının rəqəmsal modullarından istifadə edərkən, bəzən müşayiət olunan sənədlərdə məlumat çatışmazlığı olur.

FPGA üçün hazırlanmış rəqəmsal modul haqqında məlumatın verilməsi

Sistem səviyyəsində cihazın funksional modelinə uyğun olaraq FPGA konfiqurasiyasının əldə edilməsi metodologiyasından asılı olaraq, tərtibatçı FPGA üçün aşağıdakı rəqəmsal modul növlərini ayırd edə bilər:

  • Proqram təminatı - təchizat təsviri dilində (VHDL, Verilog) və ya / və məntiq sxemlərinin avtomatlaşdırılmış sintezi proqramlarında daha sonra istifadə etmək üçün Sxematik Redaktorda hazırlanmış və baxımından optimallaşdırılmış bir təsvir şəklində istehlakçıya ötürülən işlənmiş rəqəmsal modul. funksional parametrlər.
  • Mikroproqram - üçüncü tərəf tərtibatçı şirkəti tərəfindən hazırlanmış, İP nüvəsi adlanan, FPGA istehsalçısının məntiq elementləri kitabxanasına əsaslanan məntiq sxemi (netlist) şəklində istehlakçıya ötürülən və funksional baxımından optimallaşdırılmış rəqəmsal modul. və elektrik parametrləri.

Şəxsi təcrübəyə əsaslanaraq sənədlərin hazırlanması mərhələsində, GOST 15.101, GOST 15.201, QOST 2.102, QOST 2.114, bütün növ modellər üçün sənədlərə uyğun olaraq yerinə yetirilən adi dizayn sənədləri və spesifikasiyalara əlavə olaraq vermək lazımdır. FPGA-larda rəqəmsal cihazların layihələndirilməsi mərhələlərində yaradılmış (sistem, məntiq, sxem).

Başqa sözlə, FPGA-lar üçün rəqəmsal cihaz üçün dizayn sənədləri dəsti, proqram təminatı faylına, proqramlaşdırma təlimatlarına və CD / DVD-də yazılmış layihəyə əlavə olaraq müşayiət olunan sənədləri də əhatə etməlidir.

Cədvəl. Dəstəkləyici Sənəd Bölmələrinin Siyahısı

Bölmə adı Baxın
Proqram təminatı Mikroproqram
Ümumi məlumat
Məqsəd və əhatə dairəsi HAQQINDA R
Spesifikasiyalar HAQQINDA HAQQINDA
Sıfırlama siqnallarının təsviri HAQQINDA HAQQINDA
Sinxronizasiya siqnallarının təsviri HAQQINDA HAQQINDA
İnterfeyslərin təsviri HAQQINDA R
Zamanlama diaqramları R HAQQINDA
Nəzarət registrlərinin təsviri HAQQINDA HAQQINDA
Struktur (funksional) diaqram R R
Proqramlaşdırma bələdçisi HAQQINDA HAQQINDA
FPGA modeli və ya ailəsi,
şirkət istehsalçısı
R HAQQINDA
Rəqəmsal modulun təqdimatı
FPGA-da məntiq dizaynı üçün
RTL modeli HAQQINDA Yox
Məntiq modeli Yox HAQQINDA
Dizayn Limitləri HAQQINDA HAQQINDA

Budur, FPGA-lar üçün rəqəmsal modul layihəsinin müşayiət olunan sənədlərinə daxil edilməli olan bölmələrin (cədvəl) siyahısı. Hər bir bölmə üçün bölmənin sənədlər dəstinə daxil edilməsi zərurətinin əlamətləri göstərilir:

  • "O" - məcburi təchiz olunmuş bölmə;
  • "R" - çatdırılma üçün tövsiyə olunan bölmə.

Dəstəkləyici sənədləri təqdim etmək üçün tövsiyə olunan fayl formatları MS Word, PDF (ən yaxşı format), HTML-dir. Aparat təsviri dilində (VHDL, Verilog) və/yaxud Sxematik Redaktorda işlənmiş təsvir faylları CAD dizayn proqramı tərəfindən tələb olunduğu kimi təmin edilir. İstisna, Sxematik Redaktorda hazırlanmış rəqəmsal dövrə fayllarının qrafik formatında (JPEG, BMP) əlavə təmin edilməsi ola bilər.

Ümumi məlumat

Bu bölmə təsvir şəklində hazırlanmış rəqəmsal modul haqqında ümumi məlumatı təsvir edir:

  • funksional diaqram və onun tərkib blokları/hissələri;
  • siqnalların sıfırlanması, sinxronizasiya;
  • tətbiq olunan interfeyslər;
  • nəzarət registrləri;
  • vaxt diaqramı;
  • proqramlaşdırma.

Məqsəd və əhatə dairəsi

Rəqəmsal modulun məqsədi, onun tətbiq dairəsi müəyyən edilir.

Spesifikasiyalar

Onun əsas texniki xüsusiyyətlərinin təsviri verilir, məsələn, performans, müəyyən bir FPGA çipi üçün enerji istehlakı, işğal edilmiş qapıların sayı, istifadə olunan FPGA çipinin növü. Bundan əlavə, rəqəmsal CAD modulunun hazırlanmasında istifadə edilən FPGA istehsalçısı və modelləşdirmə və yoxlama üçün istifadə olunan proqram təminatı göstərilir. İstifadə olunan bütün proqramlar üçün versiya və quraşdırılmış yeniləmələr göstərilir. Xarici giriş/çıxışların təyinatı ilə rəqəmsal modulun “qara qutu” şəklində qrafik təsviri verilmiş və onların məqsədinin qısa təsviri verilmişdir.

Sıfırlama siqnallarının təsviri

Sıfırlama siqnalları haqqında ətraflı məlumat verilir:

  • Xarici və daxili sıfırlama siqnallarının siyahısı.
  • Zamanlama parametrləri və sıfırlama siqnallarının vaxt diaqramları.
  • Daxili sıfırlama siqnallarını yaratmaq üçün sxemlər, əgər varsa, rəqəmsal modula daxildir.
  • Digər siqnallarla əlaqələr (xüsusilə sinxronizasiya siqnalları).

Sinxronizasiya siqnallarının təsviri

Sinxronizasiya siqnalları haqqında ətraflı məlumat verilir:

  • xarici sinxronizasiya siqnallarının təsviri;
  • sinxronizasiya siqnallarının vaxt parametrlərini;
  • daxili sinxronizasiya siqnallarının təsvirini və onların formalaşması sxemlərini;
  • müxtəlif mənbələrdən sinxronizasiya siqnalları arasında vaxt əlaqələri;

İnterfeyslərin təsviri

İşlənmiş rəqəmsal modulun bir hissəsi olan, sistemin digər qovşaqları ilə çipdə qarşılıqlı əlaqəni təşkil etmək üçün üstünlük təşkil edən bütün interfeyslərdən istifadə xüsusiyyətləri verilmişdir. Bundan əlavə, standart interfeysin tam təsvirinə İnternet bağlantısı verilir və ya interfeysin özünün təsviri verilir. Hazırda AMBA, PLB, Wishbone avtobusuna interfeyslər rəqəmsal modullar üçün vahid interfeys kimi qəbul edilir.

Zamanlama diaqramları

Rəqəmsal modulun interfeysləri və digər giriş/çıxışları vasitəsilə məlumat mübadiləsinin təşkili üçün zəruri məlumatlar verilir: vaxt diaqramlarının qrafik təsviri, məlumat ötürmə protokollarının təsviri, rəqəmsal modula tətbiq olunan xarici siqnallara tələblər (müddət, tezlik və s.) , və digər məlumatlar.

Nəzarət registrlərinin təsviri

Rəqəmsal modulun bütün idarəetmə registrlərinin təsviri verilmişdir. Nəzarət registrinin tipik təsvirində reyestrin adı, daxili ünvan məkanında reyestrin ünvanı, sıfırlama siqnalı çıxarıldıqdan sonra ilkin dəyər, giriş növü (oxu/yazma), daxili registr təsviri var. sahələr.

Struktur (funksional) diaqram

Rəqəmsal modulun əsas daxili qovşaqlarının / bloklarının birləşmələrinin daxili strukturunun təsviri, eləcə də onların qısa mətn təsviri verilmişdir. Bundan əlavə, rəqəmsal modulun əsas daxili bloklarının təsviri verilir. Bu sənədin məqsədi istehlakçıya rəqəmsal modulun iş prinsiplərini başa düşmək üçün lazım olan məlumatları verməkdir.

Təsvir edilən blokların sayı və təsvirin əhatə dairəsi rəqəmsal modulun tərtibçisi tərəfindən müəyyən edilir. Tercihen təsvir olunan modulların minimum sayı rəqəmsal modulun struktur (funksional) diaqramının elementlərinin sayına uyğun gəlir.

Daxili blokun tipik təsvirinə aşağıdakılar daxildir:

  • blok təyinatı;
  • struktur (funksional) blok-sxem (lazım olduqda);
  • iş rejimləri və alqoritmləri;
  • iş qrafiki;
  • bölmənin idarə edilməsinin təşkili;
  • digər bölmələrlə əlaqənin təşkili;
  • hər hansı digər məlumat.

Proqramlaşdırma bələdçisi

FPGA-da rəqəmsal modulun istehsalçısının CAD proqramından, proqram təminatının işlənib hazırlanması və sazlanması üçün lazım olan alətlərdən və proqram kitabxanalarından istifadə edərək proqramlaşdırma prosesi haqqında bütün zəruri məlumatları təmin edir.

FPGA modeli və ya ailə, istehsalçı

Rəqəmsal modulun proqram təminatı üçün FPGA istehsalçısı, FPGA modeli və ya ailəsi və onun sürət xüsusiyyətləri göstərilir. Proqram təminatının rəqəmsal modulu üçün işğal edilmiş resursların miqdarı, tətbiq olunan FPGA tələbləri haqqında məlumat verilir.

Məntiq dizaynı üçün rəqəmsal modulun təqdimatı

Məqalədə VHDL-də "xarici" layihənin istifadəsində çətinliklər - proqramların adlandırılması və yazılması üçün uyğun təlimatların olmaması müzakirə edildi. Həmçinin adlar, proqramların yazılması üçün gözəl davranış qaydaları və sintez üçün göstərişlər haqqında ümumi göstərişlər verilmişdir. Gələcəkdə FPGA-da rəqəmsal modulun RTL modelini inkişaf etdirməyə başlamazdan əvvəl inkişaf etdirməyə və ya təkmilləşdirməyə davam etməyi planlaşdırırsınızsa, bu məsələlər tərtibatçı ilə mümkün qədər ətraflı müzakirə edilməlidir. Bu, xüsusilə FPGA-da proqram rəqəmsal modulunun növü üçün doğrudur. Məqalənin eyni hissəsində FPGA-da hazırlanmış rəqəmsal modulun bütün layihəsi üçün ümumi tələblər təsvir edilmişdir. FPGA-da rəqəmsal modulun inkişafı üçün texniki tapşırıqlar tərtib edərkən diqqət etməli olduğunuz məsələlər bunlardır və bu, xüsusilə iş nəticələrinin ötürülməsinə aiddir.

RTL modeli

Verilog və ya VHDL dilinin sintez edilmiş alt dəstində təsvir edilmiş və ya Sxematik Redaktorda işlənmiş rəqəmsal modul FPGA məntiq sintezi mərhələsində istifadə üçün nəzərdə tutulub. FPGA istehsalçısının CAD sistemində rəqəmsal modulun yığılmış layihəsi şəklində proqram təminatı üçün verilir. Firmware rəqəmsal modulu üçün RTL modeli ayrıca müqavilə əsasında təmin edilir.

RTL model fayllarına əlavə olaraq, aşağıdakılar ötürülür:

  • Modeldən istifadə üçün göstərişlər.
  • Modelə daxil olan yaddaş bloklarının təsviri, o cümlədən yaddaşın növü, ölçüsü, yaddaş bloklarının sayı, yaddaş blokunun iyerarxik adı.
  • Onları yaratmaq üçün proqramlardan istifadə edərkən əvvəlcədən qurulmuş nüvələrin necə yaradılacağını təsvir edir (məsələn, Xilinx ISE üçün CoreGenerator). Təsvirlər olmadıqda, texnologiya və istehsalçıdan asılılıq səbəbindən yenidən dizayn və tətbiqdə məhdudiyyətlər ola bilər.
  • İstehsalçının mikroprosessorundan istifadə edildiyi təqdirdə (məsələn, Altera-dan - Nios prosessorundan; Xilinx-dən - Microblaze, PowerPC mikroprosessorlarından) prosessor nüvəsinin və onun periferiyasının konfiqurasiya prosesinin təsviri tələb olunur.
  • Verilog və/və ya VHDL və/və ya Sistem Verilog-da yazılmış rəqəmsal modulun yoxlanması və simulyasiyası üçün testlər toplusu (Test Bench faylları).
  • Hər hansı digər əlavə məlumat.

Məntiq modeli

Model, FPGA istehsalçısının kitabxanası əsasında Verilog və ya VHDL dillərindən istifadə etməklə təsvir edilmiş şəbəkə siyahısıdır və Rəqəmsal Modul Mikro Proqramı üçün təchiz edilmişdir.

Məntiqi model fayllarına əlavə olaraq, aşağıdakılar ötürülür:

  • Bu modeldən istifadə üçün təlimatlar.
  • Verilog və/və ya VHDL və/və ya Sistem Verilog-da yazılmış rəqəmsal modulun yoxlanması və simulyasiyası üçün testlər toplusu (Test Bench faylları).
  • Rəqəmsal modulun modelləşdirilməsi və yoxlanılması üçün bir sıra testlərlə işləmək üçün təlimat.
  • Hər hansı digər əlavə məlumat.

Dizayn Limitləri

Dizayn məhdudiyyətləri rəqəmsal modul sistem-on-chip məntiq modelinə daxil edildikdə ona qoyulan məhdudiyyətlər toplusunu təsvir edən fayl kimi təqdim olunur. Bu komplektə sinxronizasiya siqnalları üçün məhdudiyyətlər (saat məhdudiyyətləri), vaxt məhdudiyyətləri (vaxt məhdudiyyətləri), rəqəmsal modulun digər modullarla qarşılıqlı əlaqəsinə məhdudiyyətlər və rəqəmsal modulun iş şəraiti daxildir. Synopsis Design Constraints (SDC) və ya FPGA istehsalçısının CAD formatına üstünlük verilir.

Sinxronizasiya siqnalları üçün məhdudiyyətlərin nümunə siyahısı:

  • vaxt diaqramı (Saat dalğa forması);
  • saat tezliyinin qeyri-sabitliyi (Jitter);
  • saat fazasının dəyişməsi;
  • keçid vaxtlarının müddəti (Keçid vaxtları);
  • törəmə takt siqnallarının vaxt diaqramları (Generated clock waveforms);
  • hər hansı digər əlavə məlumat.

Sinxronizasiya siqnalları üçün məhdudiyyətlər toplusu rəqəmsal modulların Proqram təminatı və Mikroproqramı üçün məcburidir.

Vaxt məhdudiyyətlərinin nümunə siyahısı:

  • girişlərdə siqnalların baş vermə vaxtı (girişlərdə gəliş vaxtları);
  • çıxışlarda siqnalların görünmə vaxtı (Çıxışlarda tələb olunan vaxtlar);
  • çox dövrəli yollar;
  • yalançı yollar (yanlış yollar);
  • məlumat siqnalının keçid vaxtlarının müddəti;
  • hər hansı digər əlavə məlumat.

Nəticə

FPGA-lar üçün hazırlanmış rəqəmsal modullar üçün müşayiət olunan sənədlərin verilmiş tərkibi istehlakçı və tərtibatçı arasında razılaşma ilə təmin edilir. Çox vaxt tərtibatçı yalnız VHDL, Verilog, System Verilog-da təsvir olunan və / və ya sxematik redaktorda hazırlanmış rəqəmsal modul təqdim edir. Əlavə sənədlərlə bağlı tərtibatçının cavabı çox vaxt belə olur: “Rəqəmsal modul işləyir, ona görə də götür və istifadə et. Sxemi aparat dili ilə təsvir etməkdə çətin bir şey yoxdur: bunu özünüz başa düşəcəksiniz”.

Müəllifin fikrincə, hər şeyi başa düşə bilərsiniz, hamısı istəkdən və sərf olunan vaxtdan asılıdır və artıq hazırlanmış rəqəmsal modulda "xarici" bir layihəni başa düşməyə sərf olunan vaxt VHDL-də avadanlığın təsviri təcrübəsi ilə birbaşa mütənasibdir, Verilog və bilik rəqəmsal və mikroprosessor sxemləri. Əvvəlcədən tərtibatçı ilə müşayiət olunan sənədlərin tərkibi ilə razılaşsanız, bunun qarşısını almaq olar, sonra layihənizdə rəqəmsal modulun istifadəsi asanlaşacaq və onun həyata keçirilməsi daha sürətli olacaqdır.

Xülasə edərək, müəllif qeyd etmək istərdi ki, bir FPGA-da rəqəmsal cihazın inkişafı üçün bir tapşırıq tərtib edərkən məqalədə verilmiş tövsiyələrə əməl edilməlidir, sonra əvvəllər hazırlanmış rəqəmsalın təkrar istifadəsi və ya təkmilləşdirilməsi zamanı heç bir problem olmayacaqdır. qurğu.

Ədəbiyyat

  1. Denisov A. FPGA üçün VHDL-də rəqəmsal cihazların dizaynı üçün bir neçə məsləhət // Komponentlər və texnologiyalar. 2009. № 12.
  2. GOST 2.102-68 ESKD. Dizayn sənədlərinin növləri və tamlığı.
  3. GOST 2.114-95 ESKD. Spesifikasiyalar.
  4. GOST 15.101-98. Məhsulların inkişafı və istehsalı üçün sistem. Elmi tədqiqat işinin yerinə yetirilməsi qaydası.
  5. GOST R 15.201-20-00. Məhsulların inkişafı və istehsalı üçün sistem. Sənaye və texniki məqsədlər üçün məhsullar. Məhsulların işlənib hazırlanması və istehsalı proseduru.

MÜASİR CİHAZLARDA FPGA-NIN İSTİFADƏ EDİLMƏSİ

Tupikov Pavel Andreeviç

5-ci kurs tələbəsi, OmSTU İncəsənət fakültəsi, Rusiya Federasiyası, Omsk

Bu gün proqramlaşdırıla bilən məntiqli inteqral sxemlər (FPGAs) müxtəlif müasir cihazlarda getdikcə daha çox istifadə olunur, bu, FPGA-ların adi rəqəmsal mikrosxemlərdən əhəmiyyətli üstünlüklərə malik olması ilə əlaqədardır. Bu üstünlüklərə aşağıdakılar daxildir:

· Məhsulun təkmilləşdirilmiş performansı.

· Məhsulun qiyməti aşağı salınır.

Məhsulun azaldılmış ölçüləri.

Məhsulun etibarlılığı artır (diskret mikrosxemlərin sayı azalır)

Məhsulun elastikliyi artır (FPGA həmişə yenidən proqramlaşdırıla bilər)

FPGA arxitekturası mürəkkəb quruluşa malikdir (şək. 1)

Şəkil 1. FPGA-nın daxili strukturu

Şəkil 1-dən göründüyü kimi, FPGA-nın əsas hissəsi proqramlaşdırıla bilən məntiq bloklarından və proqramlaşdırıla bilən daxili əlaqələrdən ibarətdir.

FPGA-nın proqramlaşdırılması (firmware) prosesinin özü cihazın giriş və çıxışları arasında zəruri əlaqələrin formalaşmasından ibarətdir.

Bu günə qədər dünyada FPGA istehsalında iki dünya lideri var. Bunlar Amerikanın Xilinx və Altera firmalarıdır.

Hər bir şirkət FPGA-larla işləmək üçün öz CAD-ni təklif edir. Xilinx Xilinx Software Development Kit (SDK) təklif edir. Altera Max+Plus II və Quartus II, həmçinin ModelSim simulyasiya sistemini təklif edir.

Firmware proqramlarını yaratmaq üçün adətən avadanlıqların işini təsvir edən dillərdən istifadə olunur, bu gün aşağıdakı dillər ən çox yayılmışdır:

Verilog HDL.

VHDL dili öyrənmək üçün ən çətin dildir, lakin eyni zamanda abstraksiyanın funksional və davranış səviyyələrində ən böyük imkanlara malikdir, lakin Verilog HDL ilə müqayisədə abstraksiyanın struktur səviyyəsində daha az imkanlara malikdir, VITAL kitabxanası VHDL dilinin imkanlarını genişləndirmək üçün hazırlanmışdır (Şəkil 2) .


Şəkil 2. Abstraksiya qatları Verilog VHDL

Verilog HDL dilinin işləməsinə misal olaraq Mini-DiLab stendinin CYCLONE III EP3C5E1444C8N FPGA-da həyata keçirilən proqramın ümumi görünüşü Şəkil 1-də göstərilmişdir. 3.


Şəkil 3. Lövhənin ümumi görünüşü Mini - DiLab

Bu proqram pba və pbb düymələrindən istifadə edərək “işıq” hərəkətini əlavə etmək, həmçinin sw0, sw1 açarlarından istifadə edərək keçid sürətinə nəzarət etmək seçimi ilə led0-led7 LED-lərin ardıcıl keçidini həyata keçirir.

// Proqram mətni

modul layihə ( çıxış apardı, giriş clk_25mhz, giriş pba, giriş pbb,

giriş sw);

// Layihənin daxili əlaqələrinin təyinatı

tel s1;

tel s2;

tel s3;

// Layihəyə qoşulmuş digər faylların (alt proqramların) çağırılması

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

Sayğac sayğacı_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .yük(sw));

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

son modul// proqramın sonu

Alt proqram tr

modul tr (çıxdı, təyin etdi, res); // Proqram yaradın

// I/O tapşırığı

çıxışregçıxmaq;

giriş dəst;

giriş res;

// başlanğıc

ilkin

başlamaq

Out<= 1"d0;

// Əsas proqram kodu

həmişə @(inkar etmək təyin və ya inkar etmək res)

başlamaq

əgər(~(dəst))

Out<= 1"d1;

başqa

Out<= 1"d0;

son modul // Proqramın sonu

Alt proqram sayğacı

modul sayğac(con, q, clk, yuxarı); // Proqramın başlanğıcı

çıxışreg con;

çıxış q = con;

giriş yuxarı, clk;

// Əsas proqram kodu

həmişə @(poza clk)

başlamaq

əgər(clk)

əgər(yuxarı)

Con<= con - 1"d1;

başqa

Con<= con + 1"d1;

son modul// Proqramın sonu

Alt proqram mx (multipleksator)

modul mx( output.reg a, giriş içində, giriş yük);

// Əsas proqram kodu

həmişə @*

başlamaq

hal(yük)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

son qutu

son modul // Proqramın sonu

Alt proqram dc3_8 (multipleksator)

modul dc3_8(çıxış, daxil); // Proqramın başlanğıcı

// I/O tapşırığı

output.regçıxmaq;

giriş teli in;

// Əsas proqram kodu

həmişə @*

başlamaq

hal(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;

son qutu

son modul // Proqramın sonu

Proqram CAD Quartus II proqramında həyata keçirilib.

Proqramı tərtib etdikdən sonra tərtibçi proqramda proqramın təhlili və sintaksisi ilə bağlı heç bir səhv və ya qeyd yaratmamışdır (şək. 4).


Şəkil 4. Layihə mesajı pəncərəsi

Tərtibatçı tərəfindən edilən qeydlər Quartus II üçün lisenziyanın olmadığını (proqramın pulsuz versiyası təlim üçün istifadə edilmişdir) və layihənin modelləşdirilməsi üçün lazım olan faylların olmadığını göstərir.

RTL Bu layihənin strukturu Şəkildə göstərilmişdir. 5.


Şəkil 5. Layihənin icrası ( RTL struktur)

Şəkildə göstərildiyi kimi. 6 bu proqramda, bu FPGA-nın imkanlarının yalnız kiçik bir hissəsi istifadə olunur.

Şəkil 6. Layihədə iştirak edən FPGA-nın bir hissəsi

Nəticələr: Proqramlaşdırıla bilən məntiqli inteqral sxemlər bir çox cihazlarda istifadə olunur. Onlarla işləməyi öyrənmək üçün radioelektron avadanlığın dizaynı və qurulması ilə bağlı ixtisasların təhsil proqramına aparat təsviri dilləri (Verilog HDL və VHDL) ilə tanışlıq daxil etmək lazımdır.

Biblioqrafiya:

1. Qruşevitski R.İ. Proqram məntiqinin mikrosxemlərinə əsaslanan sistemlərin layihələndirilməsi / R.I. Qruşevitski, A.X. Mursayev, E.P. Tutqun. Sankt-Peterburq: BHV Peterburq, 2002. - 608 s.

2. Kolomov D.A. Altra MAX+plus II və Quartus II-dən kompüter dəstəkli dizayn sistemləri. Qısa təsvir və təlimat / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippov. M.: IP RadioSoft, 2002. - 126 s.

3. Maxfield K. FPGA dizaynı. Gənc döyüşçünün kursu. / K. Maksfild. M.: "Dodeka-XXI" nəşriyyatı, 2007. - 408 s. (ingilis dilindən tərcümə).