Имитация дизайна ПЛИС без реального оборудования


9

Я новичок в FPGA и в настоящее время беру HDL (особенно Verilog) класс. У меня достаточно знаний в цифровом дизайне, таких как комбинационные и последовательные схемы.

Я хочу создать проект, похожий на тот, который показан в этом видео на YouTube .

Я также знаю, что Xilinx ISE может обрабатывать логические сигналы и моделировать сигналы. Есть ли у него дополнительные возможности, такие как получение входных сигналов через USB, камеру и т. Д. И вывод их на компьютер.

Возможно ли запустить этот проект (например, компьютерную симуляцию), не покупая реальную плату ПЛИС? Я имею в виду, могу ли я создать, кодировать и запустить этот проект на своем компьютере и просто подключить свою камеру через USB, а затем разрешить входящие видеосигналы обрабатывать HDL-симуляторы, такие как Xilinx ISE и т. Д. (Без реальной покупки Плата FPGA и синтезировать там свой проект, у меня в настоящее время нет бюджета, чтобы иметь один)

(То, что я на самом деле имею в виду, это объединение дизайна HDL1 с реальными исходными кодами, кодом C и т. Д.)


5
Я не знаю, сможете ли вы сделать это с симулятором Xilinx, но что-то вроде Icarus Verilog позволит вашему интерфейсу simluation взаимодействовать с кодом C, который может получать данные из реальных источников; однако, скорее всего, он будет работать на несколько порядков медленнее, чем в реальном времени, поэтому обработка источника живого видео будет затруднена.
Крис Страттон

1
о, вот фраза, которую я нахожу, взаимодействуя с реальными источниками
WantIt

2
@vvavepacket добавьте комментарий / пост, чтобы поблагодарить комментатора / постера.
Четан Бхаргава

1
ПЛИС в видео выглядит как Altera DE2. Это от 200 до 600 долларов США в зависимости от лицензии и чипа. На csc.kth.se/~emille/niisim
Никлас

2
Terasic DE0-nano стоит порядка 80 долларов и может взаимодействовать с камерами и ЖК-дисплеями; на самом деле у них есть демонстрации этого на своем сайте. Не связан с ними, но у DE0-nano есть довольно симпатичная FPGA на плате по приемлемой цене. Я всегда ненавидел, как дороже большинство плат разработчиков.
akohlsmith

Ответы:


5

Насколько мне известно, инструменты Xilinx не могут взаимодействовать в режиме реального времени, равно как и ModelSim (используется в Actel's Libero IDE).
Я не знаю об имитаторах с открытым исходным кодом, есть некоторые довольно экзотические проекты, так что возможно что-то, что могло бы сделать это.

Тем не менее, это может быть ответ, который вы не просили (я удалю его, если он не поможет), но я бы подумал о создании вашей собственной платы ПЛИС, чтобы сделать это или, по крайней мере, приступить к ней. Я вытравил свою первую плату ПЛИС, и хотя она была очень простой (плата не процесс ;-)), она довольно быстро научила меня очень многому.

Плюсы:

  • дешево
  • Перейдите прямо к глубокому концу и узнайте все, что вам нужно знать об аппаратных аспектах. Вынуждает вас сначала прочитать большинство таблиц данных и написать свой собственный стартовый код, который, IMHO, часто лучше, чем подход к обучению с использованием технологии plug and play.
  • Положите на доске только то, что вам нужно.
  • Вы сможете продвинуться дальше к цели реального рабочего проекта, возможно, с теми же усилиями / исследованиями, что и выяснение того, как имитировать все это в режиме реального времени.

Минусы:

  • Еще нужно купить программатор, хотя на eBay можно найти дешевые версии программаторов Xilinx / Altera.
  • Если дизайн и проблемы целостности печатной платы / сигнала не являются чем-то, на чем вы хотели бы сосредоточиться, то вам может быть неинтересна большая часть знаний, которые вы получите, делая это таким образом.

Я понимаю, что травление вашей собственной платы, вероятно, не нужно, я сделал это только потому, что у меня там были ПЛИС, я был нетерпелив и не хотел ждать 2 недели, пока появится печатная плата. Здесь есть очень дешевые предложения для двухслойных плат, которые, по крайней мере, позволят запустить ваш дизайн (возможно, на более низких скоростях, чем в конечном итоге желательно - обычно минимальное количество слоев для высокоскоростной конструкции FPGA будет 4, но это намного дороже)

В любом случае Spirit Circuits предлагает совершенно бесплатную двухслойную печатную плату «один на один» (один раз в месяц, один дизайн, без маски или шелкографии), которая пригодится для одного дизайна.
Кроме того, для правильных двух- и четырехслойных дешевых прототипов платы ITead и Seed Studio стоят всего 10 долларов за 10 плат (или, возможно, 5 по такой цене) услуг.


очень интересно взять на это! и ободряющий также
Давидбак

6

Стандартный Xilinx ISE Webpack (бесплатная версия, которую вы можете скачать с xilinx.com) включает в себя симулятор iSim. Это не отличный симулятор, но он полностью функционален и цена правильная.

Хотя я не использовал инструменты Altera, меня удивило бы, если бы не был включен симулятор.

Но ... Вы должны знать, что симулятор может и не может делать. Для начала, он не может имитировать работу FPGA на полной скорости. На самом деле они довольно медленные. В зависимости от сложности моделируемой ПЛИС, я не удивлюсь, если мне понадобится 1 минута, чтобы смоделировать 1 мс «смоделированного времени». Если вы хотите смоделировать час «смоделированного времени», это потребует 1000 часов реального времени.

Кроме того, симулированная FPGA не может напрямую связываться с такими вещами, как ваш USB-порт. Имитированная ПЛИС общается с «испытательным стендом». Testbench - это фрагмент кода VHDL или Verilog, который подает на входы ПЛИС (или части ПЛИС) и проверяет вывод вашей ПЛИС. В тестовом окружении вы можете делать довольно сложные вещи, такие как использование чисел с плавающей запятой, чтение и запись файлов и запуск логики, которую невозможно синтезировать.


1
У Altera есть бесплатные выпуски Quartus, которые включают ModelSim. Бесплатная версия ModelSim ограничивает вашу скорость моделирования, а бесплатная версия Quartus ограничивает количество ядер ЦП, используемых для синтеза, но в остальном они полностью функциональны.
akohlsmith

1
Altera ModelSim не поддерживает совместное моделирование VHDL и Verilog в одном дизайне.
Shuckc

3

Я не знаю ни одного симулятора, который бы напрямую взаимодействовал с сигналами, поступающими на USB-порт (или другое оборудование).

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


тогда лучший способ - получить низкопробную плату fpga начального уровня для n00bs, как я
WantIt

На самом деле вам не нужно проходить через файл тестового стенда, если у вас есть симулятор, который поддерживает интерфейс для пользовательского кода, такого как VPI, однако, учитывая, что симулятор будет работать на несколько порядков медленнее, чем в реальном времени, может быть легче разобраться с захваченными данными в файле, который можно прочитать со скоростью симуляции.
Крис Страттон

@ChrisStratton Меня интересует идея записанных данных в файл. Есть ресурсы для этого? Спасибо
WantIt

Это будет полностью зависеть от периферийных устройств, которые вы хотите использовать в качестве источников данных.
Крис Страттон

3

Вам нужно будет использовать интерфейсы совместного моделирования (DPI, VPI, VHPI, FLI), которые позволяют вам писать код, который подключается к симулятору и таким образом соединяет RTL, запущенный в симуляции, с реальным оборудованием на вашей машине.

Существенные проблемы, с которыми вы столкнетесь (кроме плохо документированных интерфейсов), связаны с синхронизацией и синхронизацией. RTL в симуляции работает намного медленнее, чем на реальном оборудовании - вам нужно будет пройти через взаимодействие с внешним интерфейсом, чтобы соответствовать скорости симуляции. Некоторым аппаратным интерфейсам это не понравится! Например, если вы используете TCP, вам, возможно, придется использовать таймеры в стеке ядра, чтобы избежать ложных повторных передач и т. Д.

Icarus поддерживает VPI и является бесплатным, поэтому вы можете экспериментировать, не тратя денег на лицензии. Возможно, вы захотите взглянуть на существующие фреймворки, которые выполняют некоторые тяжелые работы по совместной симуляции и обеспечивают более чистую абстракцию для симулятора. Одним из таких фреймворков является Cocotb , библиотека с открытым исходным кодом, которая предоставляет интерфейс Python для симулятора. ( Отказ от ответственности: я один из разработчиков cocotb.)

Пример, который может быть актуален: вчера я собрал некоторые RTL для ответа на запросы ping и создал тестовую среду, которая открывает интерфейс TUN. Затем вы можете пропинговать интерфейс, используя pingкоманду, и RTL, запущенный в симуляции, получает эхо-запрос и отвечает. Весь тестовый стенд составляет менее 50 строк Python! Исходный код для этого примера находится на Github, и он работает на Icarus под Linux.


0

В подавляющем большинстве случаев все, что вы делаете в симуляции, остается в симуляции. Вы не можете получить к нему доступ к реальному оборудованию - у вас должна быть имитационная модель реального оборудования.

Однако, если вы готовы приложить некоторые усилия, большинство симуляторов имеют интерфейс для произвольного кода. В Verilog это довольно стандартный интерфейс, насколько я понимаю, поэтому сторона Verilog будет портировать между симуляторами. В VHDL-ленте есть стандартный способ сделать это, но по крайней мере один из крупных поставщиков имеет свой собственный способ сделать это!

Также имейте в виду, что взаимодействие в режиме реального времени (т. Е. Со скоростью, с которой FPGA сделает это) очень маловероятно - и остальная часть вашего моделирования (HDL) также не будет работать в режиме реального времени. Как отмечается в комментариях, симуляция видео в реальном времени в этом случае невозможна.

Лично мне никогда не приходилось испытывать это, я считаю, что я более продуктивно пишу аппаратные модели и работаю на VHDL.

Но не стоит упускать из виду преимущества симуляции - это гораздо более быстрый способ выяснить, работает ли что-либо (компиляция занимает несколько секунд), чем создавать битовые потоки (компиляция занимает десятки минут или часов) и пробовать их на оборудовании.


Неверно, смотрите комментарии к вопросу.
Крис Страттон

Хорошо, я должен был быть более ясным - я ограничил свой ответ уровнем «Я новичок в FPGA» :) Ответ обновлен
Martin Thompson
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.