Кіріспе

Жабдықты сипаттау тілі
Verilog HDL

VHDL (VHSIC Hardware Description Language) – цифрлық жүйелердің мінез-құлқы мен құрылымын әртүрлі абстракция деңгейлерінде, жүйе деңгейінен бастап логикалық қақпаларға дейін модельдеуге мүмкіндік беретін жабдықты сипаттау тілі. Ол жобалау, құжаттама және тексеру мақсатында қолданылады. Тіл 1980-ші жылдары АҚШ әскери VHSIC бағдарламасы үшін жасалған және Электр және электроника инженерлері институты (IEEE) тарапынан IEEE Std 1076 ретінде стандартталған; оның ең соңғы нұсқасы IEEE Std 1076 2019 болып табылады. Аналогтық және аралас сигналды жүйелерді модельдеу үшін VHDL негізіндегі IEEE стандартталған VHDL AMS (ресми IEEE 1076.1) HDL әзірленді.

Тарих

1983 жылы VHDL бастапқыда АҚШ Қорғаныс министрлігінің тапсырысы бойынша, жеткізуші компаниялар жабдыққа енгізген ASIC-тің әрекетін сипаттау үшін жасалды. MIL STD 454N стандартының 64-талабындағы 4.5.1-бөліміндегі "VHDL-мен ASIC құжаттамасы" деген тақырыпта "Микроэлектрондық құрылғыларды" VHDL-мен құжаттау міндетті түрде талап етіледі. Осы құжаттамадағы ақпарат негізінде ASIC-терді модельдеу мүмкіндігі соншалықты тартымды болды, VHDL файлдарын оқи алатын логикалық симуляторлар жасалды. Келесі қадам – VHDL-ді оқып, тізбектің физикалық іске асырылуын анықтайтын логикалық синтез құралдарын әзірлеу болды. Қорғаныс министрлігінің синтаксистің барынша көп бөлігін Ada тіліне негіздеу талабының себебі, Ada тілін әзірлеу кезінде толық сынақтан өткен түсініктерді қайта ойлап табудан аулақ болу болды. Сондықтан VHDL, түсінік және синтаксис жағынан Ada бағдарламалау тілінен көп нәрсені қарыз алды. IEEE 1076 1987 стандартына сәйкес жасалған VHDL-дің бастапқы нұсқасында сандық (бүтін сан және нақты), логикалық (бит және логикалық), символ және уақыт, сондай-ақ бит массиві деп аталатын бит векторы және символ массиві деп аталатын жол сияқты көптеген дерек түрлері болды. Алайда, бұл басылымда шешілмеген мәселе – "көпмәнді логика" болды, онда сигналдың қуаты (жоқ, әлсіз немесе күшті) және белгісіз мәндер де ескеріледі. Бұл үшін IEEE 1164 стандарты қажет болды, ол 9 мәнді логикалық түрді анықтады: скалярлық std_logic және оның векторлық нұсқасы std_logic_vector. std_ulogic-тің шешілген субтипі болып табылатын std_logic типтес сигналдар, автобус құрылымдарын модельдеу үшін бірнеше драйверлерді қамтамасыз етеді, ал қосылған шешілу функциясы қарама-қайшы тапсырмаларды тиісті түрде басқарады. 1993 жылы жаңартылған IEEE 1076 синтаксисті біртекті етті, атауларда көбірек икемділікке мүмкіндік берді, ISO 8859-1 басып шығаруға болатын символдарды қолдау үшін символ түрін кеңейтті, xnor операторын қосты және т.б. Стандарттағы шағын өзгерістер (2000 және 2002 жылдары) C++ тіліндегі сынып түсінігіне ұқсас қорғалған типтер идеясын қосты және портты бейнелеу ережелерінің кейбір шектеулерін жойды. IEEE 1164 стандартынан басқа, тілдің функционалдығын кеңейту үшін бірнеше қосалқы стандарттар енгізілді. IEEE 1076.2 стандарты нақты және күрделі дерек түрлерін жақсырақ өңдеуді қосты. IEEE 1076.3 стандарты векторлармен арифметикалық операцияларды жеңілдету үшін қолтаңбалы және қолтаңбасыз типтерді енгізді. IEEE 1076.1 стандарты (VHDL AMS деп аталады) аналогты және аралас сигналдық тізбектерді жобалауға арналған кеңейтімдерді ұсынды. VHDL-дің кеңінен қолданылуын қолдайтын бірнеше басқа стандарттар да бар, атап айтқанда VITAL (VHDL Initiative Towards ASIC Libraries) және микротолқынды тізбектерді жобалауға арналған кеңейтімдер. 2006 жылдың маусым айында Accellera ұйымының VHDL техникалық комитеті (стандартты келесі жаңарту бойынша жұмыс істеуге IEEE уәкілеттік берген) VHDL 2006 3.0 нұсқасының жобасын мақұлдады. Бұрынғы нұсқалармен толық үйлесімділікті сақтай отырып, бұл ұсынылатын стандарт VHDL кодын жазу және басқаруды жеңілдететін көптеген кеңейтімдерді ұсынады. Негізгі өзгерістерге кіретіндер: негізгі 1076 стандартына қосалқы стандарттарды (1164, 1076.2, 1076.3) енгізу, операторлардың кеңейтілген жиынтығы, case және generate операторларының икемді синтаксисі, VHPI (VHDL Procedural Interface) (C/C++ тілдеріне интерфейс) және PSL (Property Specification Language) қосалқы жиынтығы. Бұл өзгерістер синтезделетін VHDL кодының сапасын жақсартады, сынақ стендтерін икемді етеді және жүйелік деңгейдегі сипаттамалар үшін VHDL-ді кеңінен қолдануға мүмкіндік береді. 2008 жылдың ақпан айында Accellera VHDL 4.0 нұсқасын, сондай-ақ бейресми түрде VHDL 2008 деп аталатын нұсқаны мақұлдады, ол 3.0 нұсқасының сынақ кезеңінде анықталған 90-нан астам мәселені шешті және кеңейтілген жалпы типтерді қамтиды. 2008 жылы Accellera VHDL 4.0 нұсқасын IEEE ұйымына IEEE 1076 2008 стандартына енгізу үшін дауыс беруге жіберді. VHDL стандарты IEEE 1076 2008 2009 жылдың қаңтар айында жарияланды.

Стандарттау

IEEE 1076 стандарты VHSIC аппараттық сипаттама тілін, немесе VHDL-ді анықтайды. Ол бастапқыда 1983 жылы АҚШ Әскери-әуе күштерінің F33615 83 C 1003 шарты бойынша Intermetrics, Inc. тіл мамандары және бас мердігер ретінде, Texas Instruments чиптерді жобалау мамандары ретінде және IBM компьютерлік жүйелерді жобалау мамандары ретінде қатысқан командаға тапсырылды. Тіл көптеген өзгерістерге ұшырады және оны маңызды жайттар бойынша толықтыратын немесе кеңейтетін түрлі қосалқы стандарттар бар. 1076 электрондық жүйелерді жобалаудағы маңызды кезең болды және қазір де солай болып табылады.

Қайта қаралулары

IEEE 1076 1987 (осымен бірге жарияланған). Бірнеше жылдық кері байланыс нәтижесінде елеулі жақсартулар жасалды. Ең көп қолданылатын нұсқа, ең көп жеткізуші құралдармен қолдау көрсетеді. IEEE 1076 2000. Шағын түзету. Қорғалған типтерді енгізеді. IEEE 1076 2002. 1076 2000-дың шағын түзетуі. Буферлік порттарға қатысты талаптар жеңілдетілді. IEC 61691 1 1:2004. IEC IEEE 1076 2002 стандартын қабылдады. IEEE 1076c 2007. VHPI, VHDL процедуралық интерфейсі енгізілді, ол бағдарламалық жасақтамаға VHDL моделіне қол жеткізу құралдарын ұсынады. VHDL тілі VHPI-ге бейімделу үшін шағын өзгерістер қажет болды. IEEE 1076 2008 (бұрын 1076 200x деп аталған). 2009 жылғы 26 қаңтарда жарық көрген маңызды түзету. Басқа өзгерістермен қатар, бұл стандарт PSL-дің негізгі жиынтығын қамтиды, пакеттер мен кіші бағдарламалар үшін параметрлерді пайдалануға рұқсат береді және сыртқы атауларды енгізеді. IEC 61691 1 1:2011. IEC IEEE 1076 2008 стандартын қабылдады. IEEE 1076 2019. Маңызды түзету.

Дизайн

VHDL әдетте логикалық схеманы сипаттайтын мәтіндік модельдерді жазу үшін қолданылады. Мұндай модель тек логикалық жобаның бөлігі болған жағдайда ғана синтез бағдарламасымен өңделеді. Симуляциялық бағдарлама логикалық жобаны сынау үшін пайдаланылады, жобамен байланысатын логикалық схемаларды бейнелейтін модельдерді қолданады. Симуляциялық модельдердің бұл жиынтығы әдетте тесттік орта деп аталады. VHDL симуляторы көбінесе оқиғаларға негізделген симулятор болып табылады. Бұл әрбір транзакция белгілі бір жоспарланған уақытқа оқиға кезегіне қосылады дегенді білдіреді. Мысалы, егер сигналдың тағайындалуы 1 наносекундтан кейін болуы керек болса, оқиға +1нс уақытқа кезеке қосылады. Нөлдік кешігуге де рұқсат етіледі, бірақ оны жоспарлау қажет: мұндай жағдайларда шексіз кішкентай уақыт қадамын көрсететін дельта кешігуі қолданылады. Моделеу екі режимнің арасында ауысады: белсендірілген операторларды бағалау жүзеге асырылатын операторларды орындау және кезектегі оқиғаларды өңдеу жүзеге асырылатын оқиғаларды өңдеу. VHDL аппараттық жобаларға тән параллелизмді басқару үшін құрылымдарды қамтиды, бірақ бұл құрылымдардың (процестердің) синтаксисі Ada-дағы параллель құрылымдардан (тапсырмалар) өзгеше. Ada сияқты, VHDL қатаң түрлендірілген және регистрге сезімтал емес. Аппараттық құралдарда жиі кездесетін операцияларды тікелей көрсету үшін VHDL-де Ada-да жоқ көптеген мүмкіндіктер бар, мысалы, nand және nor сияқты Буль операторларының кеңейтілген жиынтығы. VHDL файлдық кіріс-шығыс мүмкіндіктеріне ие және мәтінді өңдеу үшін жалпы мақсаттағы тіл ретінде қолданылуы мүмкін, бірақ файлдар көбінесе симуляциялық тесттік ортада ынталандыру немесе тексеру деректері үшін қолданылады. Орындалатын бинарлық файлдарды құратын кейбір VHDL компиляторлары бар. Бұл жағдайда VHDL-ді пайдалану арқылы жобаның функционалдығын тексеру үшін, хост компьютердегі файлдарды пайдалану арқылы ынталандыруларды анықтау, пайдаланушымен өзара әрекеттесу және нәтижелерді күтілетін нәтижелермен салыстыру үшін тесттік ортаны жазу мүмкін. Дегенмен, көптеген дизайнерлер бұл жұмысты симуляциялаушыға қалдырады. Тәжірибесіз әзірлеуші үшін сәтті симуляцияланатын, бірақ нақты құрылғыға синтездеуге болмайтын немесе практикалық болуы үшін тым үлкен кодты жасау оңай. Бір ерекше қауіп – сақтау элементтері ретінде D-типті триггерлердің орнына мөлдір құлыптардың кездейсоқ жасалуы. Қажетті схеманың RTL схемасын жасау үшін VHDL IDE-де (мысалы, Xilinx ISE, Altera Quartus, Synopsys Synplify немесе Mentor Graphics HDL Designer) аппараттық құралды жобалауға болады. Содан кейін жасалған схема тиісті тесттік орта жасалғаннан кейін схеманың кіріс және шығыстарының толқын пішіндерін көрсететін симуляциялық бағдарламалық қамтамасыз ету арқылы тексерілуі мүмкін. Белгілі бір схема немесе VHDL коды үшін тиісті тесттік ортаны жасау үшін кірістер дұрыс анықталуы керек. Мысалы, сағаттық кіріс үшін циклдық процесс немесе итеративті оператор қажет. Соңғысы, VHDL моделі CPLD немесе FPGA сияқты бағдарламаланатын логикалық құрылғыға карталанған «қақпалар мен сымдарға» аударылғанда, VHDL коды процессорлік чиптің қандай да бір түрінде «орындалған» сияқты емес, нақты конфигурацияланатын аппараттық құрал болып табылады.

Артықшылықтар

VHDL-дің негізгі артықшылығы, жүйелерді жобалау үшін қолданылғанда, ол синтез құралдары дизайнды нақты аппаратқа (қақпалар мен сымдарға) аударудан бұрын қажетті жүйенің мінез-құлқын сипаттауға (модельдеуге) және тексеруге (симуляциялауға) мүмкіндік береді. Тағы бір пайдасы – VHDL бір уақытта жұмыс істейтін жүйені сипаттауға мүмкіндік береді. VHDL – деректер ағыны тілі, онда әрбір оператор бір мезгілде орындалуы мүмкін, ал BASIC, C және ассамблер сияқты процедуралық бағдарламалау тілдерінде операторлар тізбегі біртіндеп, біреуден кейін біреу орындалады. VHDL жобасы көп мақсатты. Бір рет жасалған есептеу блогын көптеген басқа жобаларда пайдалануға болады. Дегенмен, көптеген құрылымдық және функционалдық блок параметрлерін (сыйымдылық параметрлері, жад көлемі, элементтік база, блок құрамы және байланыс құрылымы) реттеуге болады. VHDL жобасы көшпелі. Бір элементтік базаға арналған есептеу құрылғысы жобасын басқа элементтік базаға, мысалы, әртүрлі технологиялармен VLSI-ге ауыстыруға болады. VHDL-дің бастапқы Verilog-пен салыстырғандағы үлкен артықшылығы – VHDL толыққанды типтер жүйесіне ие. Дизайнерлер типтер жүйесін пайдаланып, әлдеқайда құрылымды код жаза алады (әсіресе жазба типтерін жариялау арқылы).

Синтезделетін конструкциялар және VHDL үлгілері

VHDL көбінесе екі мақсатта қолданылады: электрондық схемаларды модельдеу және осындай схемаларды синтездеу. Синтез – VHDL кодының компиляцияланып, FPGA немесе ASIC сияқты аппараттық платформаға түрлендірілу процесі. VHDL-дегі барлық конструкциялар синтездеуге жарамды емес. Мысалы, «10 нс күтіңіз» сияқты уақытты нақты анықтайтын көптеген конструкциялар, модельдеу үшін дұрыс болғанымен, синтездеуге жарамсыз. Әртүрлі синтез құралдарының мүмкіндіктері әртүрлі болғанымен, көптеген құралдар үшін ортақ аппараттық құрылымдарға қалай түрленетінін анықтайтын VHDL-дің ортақ синтезделетін бөлігі бар. IEEE 1076.6 тілдің ресми синтездік бөлігін анықтайды. Синтез үшін стандартты емес конструкциялар нәтижелердің қате немесе тиімсіз болуына себеп болғандықтан, әдетте өте түйсікті код жазу "жақсы тәжірибе" саналады.

Стандартты кітапханалар

Сондай-ақ стандартты жиынтықтар деп те аталады.