Hardware description language - язык описания аппаратуры

Список форумов Общий раздел Программирование

Описание: Обучение программированию, интересные задачи, полезные ресурсы

  • 1

#1 alman » 17.03.2014, 17:15

Мне кажется что тема электроники незаслуженно обделена вниманием. Когда речь идёт об электронике, большинство представляет себе коробочки с транзисторами, конденсаторами, дидоами и резисторами. Кто-то так же представляет лак, печатные платы и ванночки с раствором для травления. Казалось бы, какое это имеет отношение к программированию? Ну, если мы говорим об аналоговой электронике, то общего между ними не так уж и много. Но всё меняется если речь идёт о цифровой электронике - современные технологии достигли высот, когда для создания электронного устройства больше не нужны ни паяльник, ни радиодетали - цифровую электронную схему можно "запрограммировать"! Не верите?!! Тогда посмотрите в сторону языков описания аппаратуры.

Итак, языки описания аппаратуры (HDL), это языки высокого увроня, отдалённо напоминающие языки Паскаль и Си. В целом, человеку много лет пишущему на языках высокого уровня, будет не очень легко изучить HDL. В чём отличие традиционных языков программирования от HDL? Одним из отличий является результат, порождаемый из программы - в случае языков высокого уровня результатом является код, который впоследствии выполняет процессор или виртуальная машина. В случае HDL - результат это электронная схема, созданная программой-синтезатором, обычно оптсывающая комбинацию из множества логических элементов и их соединений между собой (netlist).

Интересный вопрос, что можно сделать с результатом работы синтезатора. Во первых, вы можете отнести его на фабрику, где инженеры произведут адапатцию программы под свой технический процесс и в результате запустят в производство новые микросхемы. Это очень сложный и дорогой процесс - он требует наличия дорогих специализированных САПР. Кроме того, каждая фабрика использует свою библиотеку элементов, поэтому проектирование на техпроцессе на одной фабрике не может быть просто передано на другую. Суммы запуска микросхемы в производство исчисляются десятками, сотнями миллионов рублей и даже больше.

Значит ли это, что нет смысла изучать HDL? Нет, не значит. В последнее десятилетие широкому кругу разработчиков стали доступны микросхемы ПЛИС (fpga и asic). Эти микросхемы представляют собой набор множества простейших логических элементов, от нескольких тысяч до миллионов логических элементов. Netlist, сгенерированный из HDL кода, описывает, каким образом соединяются эти элементы. С помощью компьютера информация о соединениии записывается в микросхему ПЛИС и как результат - мы получаем микросхему со свойствами, описываемыми языком HDL.

Современные среды разработки языков высокого уровня предоставляют великолепные средства для отладки программ. Но как отлиживать программы, описывающие электрические цепи? Для этого существует класс программ, называемый симуляторы. Любой желающий изучить один из языков HDL может это сделать даже не обладая доступом к ПЛИС, заменив его симулятором. Обычно симуляторы используются совместно со средствами визуализации. Помимо основного устройства, разработчики пишут тестбенчи - это такой же код на HDL, как и код, описывающий схему, но его основаня задача - сформировать правильные входные сигналы для тестируемой схемы. Результатом работы тестбенча и симулятора является файл, описывающий состояние схемы за некий, зараденее определённый, период времени. Именно эта информация используется визуализаторами, поэтому разработчик видит что происходит с устройством в любой момент времени и как схема реагирует на входные сигналы.

Надеюсь, эта тема побудит кого-нибудь занятся изучением HDL. Задавайте вопросы.
alman
Репутация: 4

#2 Cамурай » 17.03.2014, 20:31

Интересная тема! С помощью каких программных пакетов можно заниматься разработкой?
Cамурай
Аватара
Откуда: Р/н/Д
Репутация: 32

#3 alman » 18.03.2014, 00:09

Если нет доступа к FPGA, но хочется попробовать, то можно использовать симулятор $this->bbcode_second_pass_url('http://bleyer.org/icarus', 'Icarus Verilog (сборка для Windows)') и любой текстовый редактор, позволяющий редактировать простые текстовые файлы. Подойдет даже Notepad. С помощью этого комплекта вполне можно описывать и моделировать различные схемы.

Если хочется попробовать настоящую среду разработки, то могу порекомендовать $this->bbcode_second_pass_url('http://www.altera.com/products/software/quartus-ii/web-edition/qts-we-index.html', 'Altera Quartus II Web Edition') - бесплатная среда разработки для чипов компании Altera.

В Сети достаточно много обучающих статей по HDL, но для начала я бы порекомендовал следующие источники:

$this->bbcode_second_pass_url('http://ru-programming.livejournal.com/1271886.html', '"Введение в дизайн харвера микросхем для тех программистов, которые этим никогда не занимались"')

$this->bbcode_second_pass_url('http://habrahabr.ru/post/137643/', 'Проектирование синхронных схем. Быстрый старт с Verilog HDL')

$this->bbcode_second_pass_url('http://marsohod.org/index.php/verilog', 'Язык описания аппаратуры Verilog HDL')
alman
Репутация: 4

#4 alman » 01.05.2014, 16:39

Недавно познакомился с новой программой. Называется ModelSim - эту штуку можно сравнить с Visual Studio для микроэлектроники. Конечно, ModelSim не генерирует прошивки и нетлисты, но с его помощью можно ПОШАГОВО отладить почти любую схему. ModelSim - вещь со своими "тараканами", но чрезвычайно удобная. Например, режим просмотра "волн":

Изображение

Простым перемещением мышки можно увидеть состояние устройства в любой момент времени.
alman
Репутация: 4

  • -1

#5 _-Sp1R1T-_ » 02.05.2014, 21:01

$this->bbcode_second_pass_quote('', '')так, языки описания аппаратуры (HDL), это языки высокого увроня
Грамматическая ошибка, исправь!
_-Sp1R1T-_
Аватара
Откуда: Россия, Астрахань
Репутация: 2


Вернуться в Программирование

Кто сейчас на сайте (по активности за 60 минут)

Сейчас этот форум просматривают: 1 гость

cron