VHDL і Verilog - це ЛПВЩ сьогодні. Які переваги є для того, хто взагалі не має досвіду ЛПВЩ?
VHDL і Verilog - це ЛПВЩ сьогодні. Які переваги є для того, хто взагалі не має досвіду ЛПВЩ?
Відповіді:
Я не можу вам сказати, чому навчитися, але ось кілька контрастних моментів (від дуже орієнтованого на VHDL користувача, але я намагався бути максимально справедливим!), Що може допомогти вам зробити вибір, виходячи з власних уподобань з точки зору стилю розвитку:
І майте на увазі знамениту цитату, яка йде у відповідь на те, що "я віддаю перевагу тому, що з тих, кого я зараз не використовую" (вибачте, я не можу пригадати, хто насправді це написав - можливо, Дженік Бергерон?)
Багато помилок у компіляції для початку, але в основному працює так, як ви очікуєте. Це може призвести до дуже крутої кривої почуття (поряд із незнайомим синтаксисом)
Помилки виявляються пізніше в моделюванні - крива навчання "відчуття, як щось зробити" стає дрібніше, але триває довше (якщо це правильна метафора?)
Також на користь Verilog є те, що перевірка високого класу все більше схиляється до SystemVerilog, що є величезним розширенням до Verilog. Але інструменти високого класу можуть також комбінувати код синтезу VHDL з кодом підтвердження SystemVerilog.
Для іншого підходу цілком: MyHDL - ви отримуєте всю потужність Python як мови підтвердження з набором розширень синтезу, з яких можна генерувати або VHDL, або Verilog.
Або Cocotb - вся потужність Python як мови підтвердження. Ваш синтезуючий код все ще записується в той HDL, який ви вирішили вивчити (наприклад, VHDL або Verilog).
Я навчився обох того ж тижня. VHDL - це як ADA / Pascal, а Verilog - як C. VHDL - більш багатослівний і болючіший отримати компіляцію, але коли ви отримаєте компіляцію, ваші шанси на успіх краще. Принаймні, це я знайшов. Верилог, як і С, цілком задоволений тим, що дозволяє стріляти собі в ногу. Деякі галузі, наприклад, аерокосмічна / державна, нахиляються до VHDL, інші схиляються до Verilog. Проблема, яку я знаходжу в обох, полягає в можливостях тестового стенду, і коли я намагаюся навчитися і намагатися перейти від моделювання до написання кремнію / FPGA, що синтезується, лише код - це інший рівень освіти.
Є мова, яку мені дуже подобається називати CDL . Це суворо синтезується, ви пишете свої тестові стенди іншими способами, він створює синтезований Verilog, який ви можете взяти до інших інструментів. На жаль, документів CDL не вистачає, я сподіваюся отримати кілька зразків у світі, щоб показати, наскільки простіше використовувати, ніж Verilog або VHDL, але просто цього не зробили. Він оснащений власним сим / тестовим середовищем. За допомогою CDL та GTKWave ви можете виконати значну кількість роботи.
Інший інструмент під назвою Verilator - досить жорсткий у підтримці чистоти Verilog. Це безкоштовний симулятор Verilog з дуже простим способом приєднатися до sim або створити тестові стенди в C / C ++. Ви також можете використовувати Verilog, але це не обмежує вас. Також є Ікар Верилог , який є більшим і більш відомим, але я б рекомендував Verilator, якщо ви хочете вивчити Verilog. Для VHDL є GHDL , мій досвід роботи з ним був не таким хорошим, як Verilator , але принаймні є безкоштовний інструмент для спроб змочити ноги. Якщо у вас є досвід програмування програмного забезпечення, ви, швидше за все, отримаєте і користуєтеся Verilog швидше, ніж VHDL.
Я точно погоджуюся з Леоном, спробуйте і те, і інше. fpga4fun та інші веб-сторінки мають хорошу інформацію, а деякі з них дадуть вам як еквіваленти Verilog, так і VHDL для теми, яку вони обговорюють. Я вважаю такі сторінки, як найбільш корисні для порівняння двох мов. Якщо використання HDL - це те, що ви хочете зробити у своїй кар’єрі, я рекомендую мати принаймні деякі можливості з обома, можливо, з одним добре, але не можете повністю використовувати інший.
За це боролося багато святих воєн. Одним з особливих недоліків Verilog є його недетермінована поведінка. http://www.sigasi.com/content/verilogs-major-flaw
Обидва мають переваги та недоліки. VHDL є більш академічним, багатослівним та складним. Ви повинні написати більше коду, але суворість означає, що це швидше спрацює. Verilog простіший для типового цифрового дизайну, але полегшує створення складних помилок. ВГДЛ частіше зустрічається в університетах. Верилог частіше зустрічається у великих напівпровідникових компаніях.
Зазвичай вибір того чи іншого визначається інструментами, якими ви користуєтесь. Деякі з популярних FPGA-інструментів краще спрацьовують з VHDL. Деякі популярні засоби ASIC роблять краще з Verilog. Отже, що краще залежить від того, що ви хочете зробити з цим.
Скажімо, ви хочете створити невеликі проекти, використовуючи FPGA Altera, які популярні в школах EE. Безкоштовні інструменти підтримують обидва HDL. Але ви можете виявити, що спільнота користувачів в основному використовує VHDL. Буде більше прикладу коду, багаторазових модулів тощо, якщо ви виберете цю мову.
І навпаки, якщо ви маєте намір працювати у великій компанії, яка займається серйозними роботами з дизайну чіпів, майже всі вони користуються Verilog в наші дні. Інструменти синтезу, моделювання та перевірки важких режимів оптимізовані для Verilog. А останнім часом SystemVerilog - розширення для Verilog для підтримки дизайну та перевірки системи високого рівня.
Більше дискусій тут та корисних посилань тут:
Для початківця / любителя найкраща порада - визначити, з якими фішками ви хочете пограти, і подивіться, які приклади надає постачальник. Використовуйте це. Коли ви досвідчений цифровий дизайнер, вивчення іншої мови займе лише кілька днів.
Коротка відповідь : використовуйте SystemVerilog, але вивчіть також VHDL . Уникайте Verilog-2001, якщо можете.
Дуже довга відповідь : на даний момент я вважаю, що під Verilog ви маєте на увазі Verilog-2001, що, мабуть, припускає також більшість інших відповідей. Найкращою пропозицією було б, мабуть, навчитися обом, але не використовувати жодне (докладніше про це в кінці відповіді). Основні відмінності можна відновити в наступному:
wire
проти reg
)Однак, найважливіші поняття поділяються двома мовами, хоча і різними назвами (наприклад, always
vs process
), і в будь-якому випадку складність у вивченні ЛПВЩ більшою мірою пов'язана з поняттями, що стоять позаду (наприклад, одночасність усіх процесів, HW конвенції тощо), ніж до самої мови. Враховуючи відмінності, якщо вибір буде між Verilog 2001 та VHDL, я особисто звернувся до будь-якого новачка до VHDL.
Однак, як я вже говорив, моя пропозиція насправді не використовувати ні VHDL, ні Verilog-2001, якщо у вас є можливість вибрати. На противагу тому, що багато хто припускає, SystemVerilog не є мовою вищого рівня, корисною лише для проектування або перевірки на системному рівні, і має мало спільного з мовами, які можуть подаватися в інструмент синтезу високого рівня, як SystemC.
Натомість SystemVerilog - це повне оновлення мови Verilog (на основі Verilog-2005, див. Http://en.wikipedia.org/wiki/SystemVerilog ), що має повністю синтезований підмножина, що відповідає стислість Verilog з більш високою експресивністю, ніж обидві. Verilog-2001 та VHDL, що забезпечують, на мій погляд, найкращі з обох світів.
Приклади дуже значущих конструкцій / виразів, доступних у SystemVerilog, недоступних у Verilog-2001, VHDL або обох, включають:
always_ff
, always_latch
, always_comb
Блоки , які допомагають розробнику відрізнити відразу між блоками , що реалізують різні види логіки, і - always_comb
і always_latch
- (! Джерелом численних помилок в VHDL і Verilog, особливо для початківців) висновок автоматично сигнали , які повинні йти в списку чутливостіlogic
типи, що підміняють заплутані wire
та reg
типи Верилог-2001logic [N-1:0][M-1:0][P-1:0]
), тоді як Verilog-2001 підтримує лише двовимірні шини, а VHDL змушує дизайнера визначати нові типи для створення подібних структурstruct
(подібні до VHDL record
) і навіть більш високого рівня, interface
які можуть бути використані дуже ефективно для моделювання регулярних структур (наприклад, портів шини)Я перевірив усі ці відмінності «на своїй шкірі», працюючи над досить складною багатоядерною системою для наукових цілей. Зараз він підтримується багатьма інструментами, і я точно знаю (від використання їх майже щодня), що він підтримується інструментами Synopsys (як для потоків синтезу ASIC, так і для FPGA), Xilinx Vivado (для синтезу FPGA) та подібними інструментами моделювання як MentorGraphics Modelsim, Cadence NCsim та Synopsys VCS.
Щоб бути повністю повним, у панелі інструментів дизайнера апаратури є два інших значущих мови (хоча якість цих інструментів може сильно відрізнятися):
Моя кар'єра за останні 13 років складала 80% ASIC і 20% FPGA.
VHDL використовували протягом 1-го 3,5 року, решта - Verilog. Перемикання на Verilog мені не було складним, і сьогодні я лише кодуюсь у Verilog.
Крім того, я дуже багато інтерфейсів Async, засувок та напівпровідної конструкції на рівні воріт для продуктивності, тому VHDL зараз дуже мало використовує в моєму житті. Натомість я знайшов SystemVerilog та SystemC набагато кориснішими для підбору та використання для великих інженерних проектів.
На одному етапі такі інструменти, як Verilator (безкоштовно! Та швидкий), врятували мені дуже багато необхідного фонду для критичних симуляцій. У вас немає такої опції (поки що) для VHDL. І вам це може ніколи не знадобитися, якщо ви завжди купаєтесь у багатому басейні або не робите> 1-метрова конструкція воріт.
Незважаючи на це, VHDL краще для початківців, перш ніж вони розроблять міцні принципи проектування HW. Мої комунікації з людьми EDA тут свідчать про те, що вони зробили невеликі розробки VHDL протягом останніх 10 років, і сьогодні є великий привід за HLS. Тож навколо розробників інструментів VHDL не буде багато ...
Я пішов на VHDL, здебільшого тому, що я дуже добре знаю С і виявив, що спроби писати verilog, як правило, дозволяють мені писати так, ніби я орієнтувався на процесор, не описуючи апаратне забезпечення.
Дуже прикро писати сторінку коду і усвідомлювати те, що ви написали, фактично була послідовною програмою, а не апаратним дизайном, так що вона буде синтезуватися, але результат був некрасивим і повільним.
VHDL був досить різним, що мені було набагато простіше думати з точки зору логічного дизайну, а не контролювати потік.
Зрештою, мова рідко є жорстким бітом, майстерність полягає в дизайні системи, а не в наборі тексту.
З повагою, Ден.
Минулого року університет, який я вивчав, просунув два відкриті курси для початківців. Обидва охоплювали один і той же вміст, але один використовував VHDL, а інший Verilog.
Звичайно, я запитав обох професорів про відмінності VHDL та Verilog. Обидва не змогли обрати найкращих.
Тому мені довелося пройти обидва курси, щоб побачити, який із них міг би бути кращим для мене. Моє перше враження було VHDL більш Паскаль, як і Verilog більш C-подібний .
Після цього я вирішив займатися лише VHDL, оскільки на той час я працював з Delphi.
Але я ніколи не працював з FPGA після курсу. Тож це найкраще, що я можу вам допомогти.
Я VHDL використовую майже повністю. Мій досвід полягає в тому, що VHDL є більш поширеним у Європі, Verilog у США, але VHDL досягає стабільного прогресу і в США. Сильна типізація VHDL не турбує мене, тому що я використовую його як старомодний дизайн дизайну апаратних засобів, який використовується в невеликих програмованих логіках, таких як PALASM або AHDL Altera.
Великою проблемою для більшості людей, які використовують VHDL, є сильні типи. Вони хочуть робити завдання між std_logic_vector (який я вважаю сукупністю проводів у цілі) та "int" (що я вважаю числом, що зберігається в комп'ютері, що компілює дизайн). Найбільш дратівливе перетворення типу, яке я, як правило, наштовхуюсь на це між bit_vector (який я вважаю описом колекції проводів на комп'ютері, що складається з дизайну) та std_logic_vector. Насправді те, що перетягнуло мене на stackexchange зараз, шукало перетворення char (символьної змінної, що зберігається в комп’ютерному комп’ютері) до int.
У той час найвідомішим конфліктом між VHDL та Verilog був конкурс дизайну, організований журналом ASIC & EDA. Google "Неочікувані результати конкурсу дизайну обладнання: Verilog Won & VHDL програли? - Ти будеш суддею!", Наприклад: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Конкурс мав запровадити досить складний 9-розрядний реєстр. Це було підрахунок вгору / вниз, а також кілька інших речей. Результати полягали у тому, що у 8 із 9 дизайнерів Verilog код працював через 90 хвилин. Нуль з 5 хлопців VHDL мав що-небудь працювати.
Я не використовую VHDL, як ніхто інший. Те, як я його використовую, типи не заважають мені дуже часто. Я б реалізував вищезазначений проект так само, як я роблю все інше, цілком у std_logic та std_logic_vector, використовуючи (ще в той день) бібліотеку, що не підписала IEEE. Натомість я думаю, що дизайнери VHDL зробили свою роботу з int та загубилися в перетворенні типів.
Ви можете загубитися при перетворенні типів: (a) ваш дизайн та (b) ваш тестовий стенд. Для мене просто простіше написати тестовий стенд (майже) цілком в std_logic, тому сам тестовий стенд (майже) синтезується. Під "майже" я маю на увазі, що я визначу годинник із відкладеним призначенням, яке неможливо синтезувати. Але крім цього (та коментарів), ви не можете відрізнити мої тестові стенди від синтезованої логіки.
У будь-якому випадку, перш ніж визначитися з мовою вивчення першої мови (майже кожен має перевагу, але майже кожен користується обома), я б радив шукати цей конкурс і читати коментар до нього.
Однією з проблем, які я спостерігав із VHDL, є те, що оскільки це дуже багатослівна мова, схоже, існує тенденція (у думці дизайнерів) вважати, що вона не потребує коментарів. Не вірно, звичайно, слід писати коментарі перед кодом.
Я зважую свої два центи: я сам важкий користувач VHDL, але Verilog, безумовно, може так само добре виконати роботу. Ви завжди можете загортати одне в інше (хоча і з часом і набираючи вартість).
Що я виявив - це те, що сировинному VHDL бракує багато зручних функцій. (АБО ТА ТА: якщо на думку приходить цілий std_logic_vector). Таким чином, побудова собі набору інструментів з налагоджених, синтезованих функцій проходить довгий шлях підвищення вашої продуктивності при використанні VHDL.
Можливо, хтось міг би посилатися на хорошу бібліотеку з відкритим кодом, яка пропонує всі ці функції "доброго використання"?
Попередні відповіді в значній мірі висвітлювали контрасти між двома мовами, і ця стаття також досить добре висвітлює точки: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Я також хотів би зробити ще кілька моментів, про які не згадувалося.
Я б рекомендував спочатку вивчити VHDL з кількох причин. Сильне введення тексту допомагає легко увімкнути компілятор деякі помилки початківця. Я також чув, що VHDL важче підібрати після використання Verilog.
Чесно кажучи, ви не можете помилитися ні з однією мовою; і якщо ви дуже довго працюєте в цій галузі, з часом ви все одно будете вивчати обидві мови.