Кездейсоқ сандар генераторлары



Жұмыс түрі:  Дипломдық жұмыс
Тегін:  Антиплагиат
Көлемі: 43 бет
Таңдаулыға:   
МАЗМҰНЫ

Белгілер мен қысқартулар
Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
1. Сандар генераторлары және оларды қолдану аясы ... ... ... ... ... ... ... ... ... ... .
1.1 Кездейсоқ сандар генераторлары ... ... ... ... ... .. ... ... ... ... ... ... ..
1.2 Жалған кездейсоқ сандар генераторлары ... ... ... ... ... .. ... ... ... ... .
2. FPGA құрылғылары және оларды қолдану салаларын талдау ... ... ... ... ... ...
2.1 FPGA түрлері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2.2 FPGA іске асыратын және бағдарламалайтын бағдарламалық өнімдер ... ...
2.2.1 Icarus Verilog бағдарламасына шолу ... ... ... ... ... ... ... ... ... ... ... ... ..
2.2.2 FPGA Quartus Prime модельдеу бағдарламасына шолу ... ... ... ..
3. Кездейсоқ сандар генераторын FPGA-да әзірлеу ... ... ... ... ... ..
3.1 Генератордың құрылымы және оның құрамы ... ... ... ... ... ... ... . ... ... ... ... ...
3.2 Аппараттық бағдарламалаудың бірінші кезеңі: Visual Code ортасында дербес компьютерде кіріктірілген БЛИС үшін бағдарламалау ... ... ... ... ...
3.3 Аппараттық бағдарламалаудың екінші кезеңі: GTKwave сигналдарын визуализациялау бағдарламасында жалған кездейсоқ сандар генераторының графигін шығару ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ...
3.4 Үшінші кезең: Quartus Prime ортасында FPGA модельдеу
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1. Пайдаланылған әдебиеттер тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... .
1.1
1.2
2.
2.1
2.2
2.2.1
2.2.2
3.
3.1




Белгілер мен қысқартулар

Жұмыста келесі белгілер мен қысқартулар қолданылды:

КСГ - кездейсоқ сандар генераторы (RNG)
FPGA, БЛИС - бағдарламаланатын логикалық интегралды схема
ЖКСГ - жалған кездейсоқ сандар генераторы (GPSCH, ағылш. Pseudorandom number generator, PRNG)
КСГ - кездейсоқ сандар генераторы
КСАГ - кездейсоқ сандардың аппараттық генераторлары (ағылш. Hardware Random Number generator-HRNG)
TLS -транспорттык деңгейінің қорғаныс протоколы (ағылшын. Transport layer security -- TLS).
Гбитс - секундына гигабайт (1 секунд)
DNF - дисжункционалды қалыпты форма
IMS - Логикалық импульсінің генераторлары
ASIC - арнайы мақсаттағы интегралдық схема
OpenCL - гетерогенді есептеу платформалары
HDL - Аппаратураны сипаттау тілі
DSP - Сандық сигнал процессоры
USB, VGA немесе PCI - порттар түрі
CPLD - бағдарламаланатын логикалық интегралды схема
C ++ - бағдарламалау тілі
GNU GPL - бағдарламалау тіл кітапханасы
VHDL - интегралды схемалардың аппаратурасын сипаттау тілі.
ОЖ - Операциялық жүйе
РСЛОС - сызықтық кері байланыспен ығысу регистрі (РСЛОС, ағылш. Linear Feedback Shift Register, LFSR)

Кіріспе

Бұл бітіру біліктілік жұмысында бағдарламаланатын логикалық интегралды схемада (FPGA) жалған кездейсоқ сандар генераторы жүзеге асырылады.
Әлемдегі барлық процестер кездейсоқ немесе алдын-ала белгіленген жоспар немесе үлгі бойынша жүреді.
Шын мәнінде, біздің өміріміздің кез-келген саласында кездейсоқ сандарды қолданамыз. Монетаны лақтыру, покер немесе лотерея ойнау, сандық пароль ойлап табу немесе ойын құру арқылы сіз кездейсоқ сандарды немесе арнайы ойлап табылған кездейсоқ сандар генераторын қолданасыз.
Кездейсоқ сандар генераторы (RNG) - бұл бір-бірінен тәуелсіз сандарды бірізділікке шығаратын алгоритм. Оларды тек берілген үлестіріммен біріктіреді.
RNG жұмысы алдын-ала жазылған алгоритмге байланысты. Осыған сүйене отырып, осы сандардың жалған кездейсоқтығы туралы айтуға болады. Сондықтан, біздің әлемде кездейсоқ болып көрінгендей ештеңе кездейсоқ емес деген сөз бар.
Барлық ғылыми мақалаларға сәйкес кездейсоқ сандар генераторының дұрыс атауы бар - жалған кездейсоқ сандар генераторы. Ыңғайлы болу үшін "жалған" сөзін қолдану қабылданбайды.
Іс жүзінде барлық RNG алгоритмдері бағдарламалау тілі мен есептеу платформасына қатты тәуелді.
Генераторлардың барлық түрлерінің жұмыс принципі өте қарапайым-Ішкі функция қолданылады, ол белгіленген диапазонда кездейсоқ мәндерді таңдайды.
Бірақ мұндай алгоритмдер қолданылатын тағы бір қызмет саласы бар - криптография. Мүлдем жаңа және қол жетімді емес парольдерді және көптеген функцияларды жасау үшін кездейсоқ сандар генераторлары өте пайдалы.
Жалған кездейсоқ сандар генераторы (GPSCH, ағылш. Pseudorandom number generator, PRNG) - элементтері бір-бірінен тәуелсіз және берілген үлестірімге (әдетте біркелкі) бағынатын сандар тізбегін құратын алгоритм.
Қазіргі информатика жалған кездейсоқ сандарды әртүрлі қосымшаларда кеңінен қолданады - Монте-Карло әдісі мен имитациялық модельдеуден бастап криптографияға дейін. Сонымен қатар, алынған нәтижелердің сапасы қолданылатын GPA сапасына тікелей байланысты.

1. Сандар генераторлары және оларды қолдану аясы

1. 1.1 Кездейсоқ сандар генераторлары

1.1 1.2

Жұмыстың мақсаты сандар генераторын құру болғандықтан, біз осы Ережеге талдау жасаймыз.
Кездейсоқ сандар генераторы КСГ- (ағылш. Random Number generator, көбінесе RNG, RNG деп қысқартылады) - бұл мәнді болжау мүмкін емес сандар немесе таңбалар тізбегін құруға арналған құрылғы. Өндірілген нәтижелердің нақты бірізділігі генерация процесінде көрінетін, бірақ алдын-ала болжауға болмайтын белгілі бір үлгіні қамтуы мүмкін.
Кездейсоқ сандарды құру үшін кездейсоқ сандардың аппараттық генераторлары қолданылады (ағылш. Hardware Random Number generator-HRNG) немесе оларды кездейсоқ сандар генераторлары деп те атайды (ағылш. True random number generator-TRNG) - физикалық процестердің ретсіз өзгеретін қасиеттеріне негізделген кездейсоқ мәндерді құратын құрылғылар.
Мұндай жүйелерді макроскопиялық кездейсоқ процестерді қолдануға, яғни масштабты өлшеуге және бақылауға мүмкіндік беретін масштабта құруға болады, мысалы, монета, сүйек немесе лототрон лақтыру.
Механиканың Ньютон заңдары бойынша микроскопиялық процесті толығымен анықтауға болатынына қарамастан, американдық рулетка дөңгелегі сияқты жақсы ойластырылған механизм болжанбайтын нәтиже береді, оны Хаос теориясы мен динамикалық жүйелердің тұрақсыздығы әр жаңа әрекеттің бастапқы жағдайындағы айырмашылыққа байланысты түсіндіруге болады.

Сурет 1.1.1- КСГ аппараттық құрылғысы (КСГ алгоритмін іске асыратын бағдарламалық қамтылымы бар USB-жинақтауыш)

Макроскопиялық процестерді қолданатын генераторлардың басты кемшілігі әрқашан олардың баяу жұмыс жылдамдығы болды, нәтижесінде белгілі бір уақыт аралығында көптеген мәндер пайда бола алмады. Бүгінгі таңда кездейсоқ сандардың аппараттық генераторлары әдетте микроскопиялық құбылыстарға негізделген құрылғыларды қолданады, кездейсоқ сандардың аппараттық генераторы, олар әр түрлі шу (бөлшек, жылу, атмосфералық), фотоэлектрлік эффект және басқа кванттық құбылыстар сияқты кездейсоқ төмен деңгейлі сигналдарды шығарады. Мұндай процестер энтропияның жақсы көзі болып табылады, өйткені теорияда олардың нәтижесін болжау мүмкін емес, бірақ іске асырудың күрделілігіне және жұмыстың салыстырмалы баяулығына байланысты мұндай генераторларды қолдану аясы белгілі бір талаптарға ие тақырыптық аймақтармен шектеледі.
Негізінен, кездейсоқ сандардың аппараттық генераторлары деректердің қауіпсіз берілуін қамтамасыз ету үшін кездейсоқ криптографиялық кілттерді құру үшін криптографияда қолданылады, мысалы, транспорттык деңгейінің қорғаныс протоколы (ағылшын. Transport layer security -- TLS).
Тағы бір мысал, Intel компаниясының танымал заманауи және кең таралған процессорлары.
2008 жылы Intel инженерлері тек сандық негізде жұмыс істейтін кездейсоқ сандар генераторының жаңа нұсқасын жасауды бастады. Олар ұсынған шешім сандық дизайнның негізгі ережесін бұзады: схема әрқашан екі белгілі бір күйдің бірінде болуы керек (логикалық төмен және логикалық жоғары сигнал деңгейлері).

Сурет 1.1.2 - Қазіргі Intel генераторы

КСГ схемасы екі инвертордан тұрады, олардың әрқайсысының шығыс ы екіншісінің кірісіне қосылған. Егер бірінші инвертордың шығуында логикалық төмен сигнал болса, онда екінші инвертор бұл деңгейді кірістен алады және сәйкесінше шығуда жоғары сигнал шығарады және керісінше.
Сонымен қатар, тізбекке екі транзистор қосылды, олардың қосылуы екі инвертордың кірісі мен шығуында логикалық жоғары сигнал береді. Тактильді сигналдың әр кезеңі, транзисторлар ажыратылған кезде, екі инвертор да қарама-қарсы позицияны алуға тырысады, яғни. бір кездейсоқ бит тудыратын екі тұрақты күйдің бірі. Бұл әзірлеме КСГ алдыңғы нұсқасының аналогты компоненттерінің қолайсыздығынан құтылуға, энергия тұтынуды едәуір азайтуға және генерация жылдамдығын 30 мың еседен астамға арттыруға мүмкіндік берді.
КСГ -де кездейсоқ сандардың осындай көзі негізінде, әдетте, төмен кернеуге байланысты биполярлы NPN транзисторының эмиттер базасы қолданылады. Ауысудан алынған шу күшейтіліп, сандық сигналға айналады. Мұндай RNG бар кездейсоқ сандар барлық статистикалық сынақтардан өтеді, бірақ олардың генерация жылдамдығы өте аз - 10 Кбитс-тан аз.
Сақиналы генераторлардағы фазалық дірілдеу сандық деректер сигналының фазалық дірілдеуі (ағылш. jitter) - берілетін сигналдың жағымсыз фазалық жәненемесе жиіліктік кездейсоқ ауытқулары. Салдарынан туындайды тұрақсыздық задающего генератордың өзгерістер параметрлерін беру желісі уақыт пен әр түрлі таралу жылдамдығын жиілікті құраушыларының бір сигнал. Фазалық діріл әртүрлі факторларға байланысты, олардың кейбіреулері кездейсоқ болғандықтан, оны кездейсоқ сандардың көзі ретінде пайдалануға болады.

Сурет 1.1.3 - Сақиналы генераторларға салынған КСГ

КСГ -де, осы құбылыстың негізінде, әдетте, сигналдың сақиналы генераторлар арқылы өтуінің кездейсоқ кідірістері салыстырылады. Қарапайым сақина генераторы тізбектелген инверторлардың тақ санынан тұрады, ал соңғысының шығыс ы кері байланыс сызығын құрайтын бірінші инвертордың кірісіне қосылады. Мұндай генератордың тербеліс жиілігі оның барлық инверторларының кідірістерінің қосындысымен анықталады, бұл уақыт өткізгіштер мен жартылай өткізгіштердегі жылу шуын және қуат көздеріндегі кедергілерді қамтитын көптеген параметрлерге байланысты.
Арасында кемшіліктері мұндай КСГ бөлуге болады салыстырмалы түрде аз жылдамдығы генерация және үлкен энергия тұтыну.
Олардың ішінде ең заманауи және прогрессивті әдістердің бірі - Intel инженерлері жасаған және шығыс ағынының ең жоғары жылдамдығына (3 Гбитс дейін) және төмен қуат тұтынуына ие белгісіз күйлерге негізделген кездейсоқ сандар генераторы.

1.3 1.1 Кездейсоқ сандар генераторлары

Аппараттық (физикалық) генераторларға балама - алгоритмдерге негізделген генераторлар-жалған кездейсоқ сандардың генераторлары (GPA, ағылш. Pseudorandom number generator-PRNG) кездейсоқ реттілікке ұқсас қасиеттері бар сандар тізбегін жасайды. GPA-мен құрылған сандарды шынымен кездейсоқ деп санауға болмайды, өйткені олар кездейсоқ емес бастапқы мәнге байланысты, бірақ физикалық генераторларға қарағанда бірқатар артықшылықтар, олардың ішінде жылдамдық, қарапайымдылық және іске асырудың салыстырмалы арзандығы мұндай генераторларды көптеген салаларда кеңінен қолдануға мүмкіндік береді.
Көптеген әдістерін құру псевдослучайной реттілігі, соның ішінде, олардың арасында атап өтуге болады вихрь Мерсенна (ағыл. Mersenne twister, MT), сызықтық сәйкес әдіс (ағылш. linear congruential generator-LCG), Xorshift немесе ығысу регистрлерінің генераторлары (ағылш. shift-register generator), WELL (ағылш. Well Equidistributed Long-period Linear) және басқалар.
ХХ ғасырдың 40-жылдарының ортасында американдық Rand аналитикалық орталығы импульс генераторының көмегімен кездейсоқ сандарды шығара алатын машина жасады. Біраз уақыттан кейін олар миллиондаған кездейсоқ сандар тізбегі бар кітап шығарды.

Сурет 1.2.1 - "A Million Random Digits with 100,000 Normal Deviates" кітабы

Кейінірек кездейсоқ сандар генераторы болуы керек деген түсінік пайда болды ғылыми Электронды журнал Меридиан детерминистік функция ретінде ұсынылған. Содан кейін пайда болған сандар кездейсоқ белгілерге ие болады және генератордың бірдей инициализациясымен реттілік деректері әрдайым бірдей болады.
Осылайша жалған кездейсоқ сандар генераторлары пайда болды. 1951 жылы алғашқы компьютер пайда болды, ол бөлшек шуылға негізделген кездейсоқ деректер генераторымен - Ferranti Mark 1-мен бірге келді. 1997 жылы Silicon Graphics бағдарламашылары LavaRand құрды. Бұл қондырғы үстелдің жанында тұрған лава шамына бағытталған веб-камерадан тұрды. Бұл камерадағы сурет энтропияның көзі болды-генерация жылдамдығы секундына 165 Килобаит кездейсоқ сандарға тең.

Сурет 1.2.2 - LavaRand

Криптографиялық мақсаттар үшін қолданылатын кездейсоқ және жалған кездейсоқ сандар алдын-ала болжанбауы керек. ЖКСГ жағдайында, егер бастапқы Сан белгісіз болса, тізбектегі келесі Сан алдыңғы сандарға тәуелсіз болуы керек. Бұл қасиет тікелей болжау мүмкін еместігі ретінде белгілі.
Сондай-ақ, кез-келген құрылған мәндер негізінде бастапқы мәнді анықтау мүмкіндігі болмауы керек. Бастапқы мән мен осы бастапқы мәннен алынған кез-келген реттік сан арасында айқын байланыс болмауы керек. Әрбір реттілік элементі ықтималдығы 12 болатын тәуелсіз кездейсоқ оқиғаның нәтижесі ретінде көрінуі керек.
Кездейсоқ сандар белсенді қолданылатын бірнеше саланы тізімдейміз: 1. Модельдеу. Физикалық құбылыстарды компьютерлік модельдеу.
2. Криптография және ақпараттық қауіпсіздік. Кездейсоқ сандар көбінесе алгоритмдер мен бағдарламалардың дұрыстығын немесе тиімділігін тексеруде қолданылады, сонымен қатар олар ақпараттың кіріс ағыны бола алады. Көптеген Алгоритмдер қолданбалы есептерді шешу үшін жалған кездейсоқ сандарды генерациялауды қолданады (мысалы, криптографиялық шифрлау алгоритмдері, бірегей идентификаторларды құру, хэш функциялары үшін "тұз" және т.б.).
3. Компьютерлік ойындар. Ойындардағы кездейсоқтық маңызды рөл атқарады. Компьютерлік немесе үстел ойындарында кездейсоқтық ойынды сұйылтуға және әр түрлі деңгейдегі ойыншылардың мүмкіндіктерін теңестіруге көмектеседі.
Кездейсоқ сандар екі санатқа бөлінеді:
1. Физикалық кездейсоқ сан (шынайы кездейсоқ) - болжанбайтын физикалық құбылыс негізінде құрылған сандар тізбегі.
2. Жалған кездейсоқ сан - берілген үлестірімге бағынатын сандар тізбегі. Басқаша айтқанда, сандардың кездейсоқ реттілігі физикалық процестен алынады және оны алдын-ала болжау немесе қалпына келтіру мүмкін емес. Жалған кездейсоқ сандар белгілі бір алгоритмдерге негізделген, оларды біле отырып, сандардың шығу тізбегін дәл болжауға болады. Шынайы кездейсоқ сандарды құру процесі сенімді энтропия генераторы негізінде құрылуы керек.
Шынайы кездейсоқ сандар генераторларының мысалдары:
1. Бөлшек шу-электр тізбектеріндегі шу.
2. Жылу шуы-резисторларды "тыңдау".
3. Атмосфералық шу-бұл эфирде шу мен шуды шығаратын радио.
4. Фотоэлектрлік эффект.
5. Кванттық құбылыстар-атомдардың радиоактивті ыдырауы. "Меридиан" ғылыми электронды журналы.
Кемшіліктері:
1. Қолданудың қымбаттығы.
2. Құрылыстың күрделілігі.
3. Бірізділіктің баяу генерациясы.
Жоғарыда келтірілген кемшіліктерді ескере отырып, кездейсоқ сандарды құруға аралас тәсіл жиі қолданылады: КСГ үшін бастапқы мән кездейсоқ көзден алынады, ал реттілік одан кездейсоқ емес функция арқылы жасалады.
Бір қарағанда, кездейсоқ сандарды алу қарапайым міндет болып көрінуі мүмкін және оларды қолдану аясы өте аз. Шындығында, олай емес, нақты кездейсоқ сандарды алу-бұл криптография алгоритмдерінің көп бөлігінде қолданылатын күрделі процесс.

2. FPGA құрылғылары және оларды қолдану салаларын талдау

1.

БЛИС (бағдарламаланатын логикалық интегралдық схемалар) - цифрлық интегралдық схемаларды жасау үшін пайдаланылатын электрондық компонент. Айырмашылығы әдеттегі сандық микросхемалар, логика жұмыс БЛИС емес анықталады дайындау кезінде, ал пернетақта арқылы бағдарламалау.
FPGA құрылымы логикалық алгебраға негізделген және келесі логикалық элементтерден тұрады:
- логикалық "және" (коньюнкторлар);
- логикалық "немесе" (дизъюнкторлар);
- логикалық" жоқ " (инверторлар);
- Тікелей, кері және тристабильді шығулары бар буферлік элементтер;
- "Болдырмайтын НЕМЕСЕ";
- D-және T-типті триггерлер;
- конфигурация мультиплексорлары.

Сурет 2.1 - БЛИС схемылары мысалы
Кез - келген логикалық функция көбейтінділердің қосындысы ретінде ұсынылуы мүмкін-дисжункционалды қалыпты форма (DNF), FPGA-ның негізгі құрылымдық компоненттері - "және"және "немесе"элементтерінің матрицалары.
Матрицалардың шығыс ында конфигурациясы FPGA түріне байланысты макро ұяшықтар (Macrocells) орналасқан.
Макро ұяшықтарда әртүрлі триггерлер, тристабильді буферлер, сигнал полярлығын басқару элементтері және т.б. болуы мүмкін.
Логикалық матрицалардың өлшемі және макро ұяшықтардың конфигурациясы FPGA интеграция дәрежесін және функционалдығын анықтайды. Сондай-ақ, FPGA-да көптеген кері байланыс бар, бұл сізге ағымдағы күйлерді қолдануға және әртүрлі класстағы сериялық машиналарды құруға мүмкіндік береді.

Сурет 2.2 - БЛИС жалпыланған құрылымдық сұлбасы

FPGA негізгі бағдарламаланатын компоненті логикалық матрицалар болып табылады. Бастапқыда ол кез-келген сигналдың кіріс немесе ОЖ-мен кез-келген байланыс немесе ажыратқышпен байланысын қамтамасыз етеді. Қажетті логикалық функцияларға байланысты бұл қосылыстардың кейбіреулері үзіліп, кейбіреулері қалады және сигналдарды ауыстыруға қызмет етеді. Үзу мүмкіндігі сигналдық желілердің қосылу орындарында бағдарламаланатын элементтің (маңдайшаның) болуымен қамтамасыз етіледі. FPGA жасау технологиясына байланысты секіргіш-бұл жалпақ металл секіргіш немесе жад ұяшығы.

Сурет 2.3 - Логикалық матрицалар "немесе"
Логикалық матрицалар "немесе" FPGA-да екі түрлі болады: бағдарламаланатын және бекітілген. Бағдарламаланатын матрицалар "немесе" матрицаға ұқсас "және" бастапқыда кез-келген терминді кез-келген ажыратқышпен ауыстырады.
Индустрияда ғарыш аппараттарын басқарудан бастап қаржы модельдері бойынша есептеулерге дейінгі мамандандырылған микросхемаларға (ASIC, application-specific integrated circuit, "арнайы мақсаттағы интегралдық схема") қажеттілік бар.
Алайда, FPGA пайда болғанға дейін мамандандырылған IC-нің күшті және әлсіз тұсы чипке салынған қатаң функционалдылық, сонымен қатар дизайнның жоғары күрделілігі және өндіріске кіру құны болды. Егер функционалдылықты сәл өзгерту қажет болса немесе жобалау кезеңінде қателер болса, онда шын мәнінде жаңа IMS құру қажет болды.

Сурет 2.4 - FPGA-ACTEL Altera Arria 10 және 2х10ge порттары бар үдеткіш, Алмаз СП өндірісі

Нарықта FPGA-үдеткіштердің пайда болуы, олар қаншалықты сәтті бірнеше рет қайта бағдарламалануы мүмкін және С типінің жоғары деңгейінде жоғары өнімді есептеулер тауашасында нақты серпіліс болды. Бұл даму уақытын, өнімнің нарыққа шығу уақытын тездетуге мүмкіндік берді. Аппараттық құралдарды жасаушылар үшін, соның ішінде ASIC сияқты мамандандырылған интегралды схемаларды бағдарламалау бойынша жұмыс істейтін жаңа мүмкіндіктер пайда болды.
FPGA процессорлары осы технологияның қол жетімділігі тұрғысынан 2 кезеңнен өтті және бүгінде үшінші кезеңге белсенді кіреді. Алғашқы FPGA 1985 жылы пайда болды, бірақ оларды бағдарламалау әлі де төмен деңгейлі құрастыру тілін білуді қажет етті. 2013 жылы басталған екінші кезеңде және Altera компаниясының күш-жігерінің арқасында жоғары деңгейлі С-тәрізді тілде бағдарламалау мүмкіндігі пайда болды. Бұл FPGA-ның қолданылуын түбегейлі кеңейтті, бірақ чиптердің жоғары құны әлі де осы технологияны қолдана алатын тұтынушылар шеңберін кеңейтуге мүмкіндік берді.
Дәстүр бойынша, FPGA жобалау және тексеру бағыты өте көп уақытты қажет етеді және жоғары мамандандыруды қажет етеді, күрделілігі бойынша маршрут ASIC дизайнына жақындады. Бұл әзірлеушілердің FPGA қолдануды шектейді. Әсіресе, бұл есептеу қосымшаларына қатысты, онда процеске қатысушылар - бағдарламашы, математик, алгоритмші -- оны аппараттық іске асыруға емес, өз міндеттеріне назар аударғысы келеді.
Бұл мәселені шеше отырып, Altera 2013 жылы нарыққа OpenCL гетерогенді есептеу платформаларын бағдарламалаудың ашық стандартына қолдау көрсетті, бұл FPGA құрылғыларымен, HDL тілдерімен, жобалау және тексеру бағытымен таныс емес (таныс емес) есептеу қосымшаларын жасаушылардың пайдалану мүмкіндігін кеңейтті. Бірақ мәселе қалды - қымбат жабдықтар мен дизайн құралдары.
Сонымен, 2016 жылдан бастап кез-келген жерде ең үлкен деректер орталықтарының бұлттарындағы FPGA процессорлары бар толық дайын серверлердің (физикалық және виртуалды) көптеген клиенттері үшін қол жетімді болатын үшінші кезең туралы айтуға болады-MS Azure, Amazon Web Services (AWS), Cloud Alibaba және Huawei Cloud.
Сұрақ: FPGA үдеткіштері не үшін қажет болуы мүмкін? Қорытынды біліктілік жұмысының осы бөлігінде біз пайдалану мысалдарын келтіреміз. Деректер ағындары бір жағынан өсіп келеді, ал екінші жағынан есептеу жүйесінің мөлшері мен тұтынылуын арттырмай есептеу қуатын арттыруда қиындықтар байқалады. Әдетте, қосымшада ресурстарды көп қажет ететін деректерді басқару және өңдеу міндеттері бар. Тапсырмаға арналған "ұшу конфигурациясы" да өте пайдалы қасиет болып көрінеді.
Синтездеу есептеу ресурсты БЛИС астында нақты міндет, сондай-ақ беруге тиіс ұтыс ретінде өсуіне өнімділігін және азайту тұтыну. Сондай-ақ, FPGA-да ішкі жылдам жады және дамыған (және қайта конфигурацияланатын) байланыс бөлігі бар, бұл барлық белгілі кіріс-шығыс хаттамаларын ұйымдастыруға мүмкіндік береді. Мысалы, хэш жадын, аппараттық DSP блоктарын, жад контроллерлерін және т.б. басқаша айтқанда, бұл әр тапсырма үшін белгілі бір есептеу ядросын синтездеу қасиеті бар кристаллдағы дамыған жүйе.

1.1 1.1 2.1 FPGA түрлері

FPGA құрылымы бойынша жіктелуі үлкен қызығушылық тудырады, өйткені ол тапсырмалар класы туралы ең толық түсінік береді. Мұндай жіктеудің негізгі критерийі-логикалық матрицалардың болуы, түрі және коммутация әдістері. Осы негізде FPGA келесі сыныптарын бөлуге болады:
- бағдарламаланатын логикалық матрицалар (ПЛМ);
- бағдарламаланатын матрицалық логика (ПМЛ);
- бағдарламаланатын макрология (ПМ);
- бағдарламаланатын коммутацияланатын матрицалық блоктар (ПКМБ);
- программаланатын деректер базасындағы объектілер (ПВМ).
Бағдарламаланатын логикалық матрицалар қазіргі уақытта моральдық тұрғыдан ескірген және орташа интеграцияның дайын чипі жоқ салыстырмалы түрде қарапайым құрылғыларды енгізу үшін қолданылады. Күрделі цифрлық схемаларды жүзеге асыру кезінде бағдарламаланатын логикалық интегралды схемалар (FPGA) қолданылады FPGA түрлерінің бірі күрделі бағдарламаланатын логикалық құрылғылар (cpld - Complex PLD) болып табылады.
Олар қуат өшірілген кезде микробағдарламаны сақтайтын кірістірілген, ұшпайтын жадты қамтиды. Олар дәстүрлі түрде макро матрицаға негізделген, бірақ қазір логикалық блоктарға негізделген. Әдетте элементтердің салыстырмалы түрде аз саны бар (жүздеген немесе мыңдаған). Олар арзан, пайдалану оңай, минималды байлауды қажет етеді, тез басталады. Оларды күрделі жұмыс логикасы қажет емес, бірақ қарапайым микроконтроллерде жылдамдық немесе аяқ жетіспейтін жерлерде қолдануға болады. Мысалы, USB, VGA немесе PCI автобус контроллері сияқты сигналдарды өңдеу үшін:

Сурет 2.5 - FPGA Альтера

Бағдарламаланатын CPLD логикалық интегралды схемасы бір кристалда орналасқан бірнеше макро ұяшықтардан тұрады. Әрбір макрос сыртқы схемалармен жұмыс істеу үшін кірістердің немесе шығулардың қажетті түрін қалыптастыруды жүзеге асыратын кіріс-шығыс блоктарына қосылған. Сонымен қатар, барлық макро ұяшықтар мен кіріс-шығыс блоктары ішкі параллель шиналармен өзара байланысты.

Сурет 2.6 - CPLD ішкі схемасының мысалы

Сурет 2.7 - CPLD микросхемасының ішкі схемасы

Мұндай FPGA стандартты емес схемалық шешімдерді қажет ететін түпнұсқа жабдықты жасау кезінде, сондай-ақ шағын құрылғыларды жобалау кезінде қолданылады.
FPGA - ны қолданудың жеке саласы, жоғарыда айтылғандай, көшіруден қорғауға арналған құрылғылар болып табылады. Әдетте, интеграцияның орташа дәрежесіндегі 1 немесе 2 FPGA қолдану ақпаратты сенімді "жабу" үшін жеткілікті.
Ең көп таралған FPGA микропроцессорлық және есептеу техникасында қолданылады. Олардың негізінде Шина контроллері, адрестік декодерлер, микропроцессорларды жақтаудың логикасы, басқару сигналдарын қалыптастырғыштар және т. б. FPGA-да микробағдарлама машиналары және басқа да мамандандырылған құрылғылар жиі жасалады, мысалы, сандық сүзгілер, сигналдарды өңдеу схемалары және суреттер:

Сурет 2.8 - Аналық платадағы FPGA

2.2 FPGA іске асыратын және бағдарламалайтын бағдарламалық өнімдер

1.2 1.3 2.2.1 Icarus Verilog бағдарламасына шолу

1.3.1 1.3.2

Icarus Verilog-бұл C ++ негізіндегі жеңіл, ақысыз, ашық бастапқы Verilog компиляторы. Әзірлеуші-Стивен Уильямс. GNU GPL лицензиясы, орнату файлында Verilog VHDL файлдарын құрастыруды және модельдеуді қолдау үшін GTKWave бар, gcc компиляторына ұқсас командалық жолдың жұмыс режимі, толқын пішінін модельдеудің тиісті деректер файлын сынақ ортасының файлымен жасауға болады, ал модельдеу толқынының пішінін кіріктірілген GTKWave арқылы көруге болады. сурет, Verilog түрлендіруді қолдайды, толқын пішінінің VHDL файлдарына.
Verilog орнатылған кезде, gtkwave құрылған сигналдарды көру үшін әдепкі бойынша орнатылады.
Verilog үш негізгі платформаны қолдайды: Windows, Linux және MacOS. 2021 жылғы 1 желтоқсандағы жағдай бойынша v11-20190809 соңғы нұсқасын жүктеңіз:

http:bleyer.orgicarusiverilog-v 11-20190809-x64_setup.exe [Электрондық ресурс 1].
Жоғарыда жүктелген windows орнату файлын бірден екі рет нұқыңыз. Орнату аяқталғаннан кейін орнату каталогы келесідей болады:

Сурет 3.2.1 - Windows ОЖ астында бағдарламаны орнату

Сәтті орнатылғаннан кейін сіз пәрмен терезесі арқылы команданың жолын көре аласыз.
Windows ортасы орнату жолын where пәрмені арқылы көре алады:

Сурет 3.2.2 - Бағдарламаны орнатудың дұрыстығын тексеру

Icarus Verilog компиляторы негізінен 2 құралды қамтиды:
* iverilog: verilog және vhdl файлдарын құрастыру, грамматиканы тексеру және орындалатын файлдарды жасау үшін қолданылады
* vvp: орындалатын файлдарға негізделген модельдеу сигналдарының файлдарын құру.
Iverilog терминалын енгізіп, Enter пернесін басыңыз, сіз жалпы параметрлерді пайдалану туралы қысқаша кіріспе көресіз:

*
*

$ iverilog
D:\iverilog\bin\iverilog.exe: no source files.
Usage: iverilog [-EiSuvV] [-B base] [-c cmdfile-f cmdfile]
[-g1995-g2001-g2005-g2005-sv-g2 009-g2012] [-gfeature]
[-D macro[=defn]] [-I includedir]
[-M [mode=]depfile] [-m module]
[-N file] [-o filename] [-p flag=value]
[-s topmodule] [-t target] [-T mintypmax]
[-W class] [-y dir] [-Y suf] [-l file] source_file(s)

Verilog сонымен қатар Verilog-tvhdl-o out_file сияқты Verilog файлдарын VHDL файлдарына түрлендіруді қолдайды.vhd in_file.V. мысалы, жарықдиодты жыпылықтайтын файл жасаңыз.
Жаңа бастапқы led_demo файлын жасаңыз.V келесі мазмұнмен:

module led_demo(
input clk,
input rst_n,
output reg led
);
reg [7:0] cnt;
always @ (posedge clk)
begin
if(!rst_n)
cnt = 0;
else if(cnt = 10)
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
КЕЗДЕЙСОҚ САНДАР ГЕНЕРАТОРЫМЕН БАҒДАРЛАМАЛАУ ЕРЕКШЕЛІКТЕРІ
Кездейсоқ сандар генераторы
Кілттерді басқару жүйелері
Тұрақты тоқ қозғалтқыштары мен генераторы
Жаппай қызмет көрсету жүйелері
Сұратудың станцияда болуының орта уақыты
Аккумулятор батареясындағы электролит тығыздығы
ГАРМОНИКАЛЫҚ ТЕРБЕЛІСТЕРДІҢ ГЕНЕРАТОРЛАРЫ
Мәтіндерді шифрлау
Радиотехникалық динамикалық хаос генераторларының энергетикалық тиімділігін анықтау
Пәндер