Перейти к содержанию
    

Как моделировать/отлаживать?

Всем привет.

 

Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами.

 

Как реализовать и промоделировать модель устройства только на ПЛИС - понятно: описал на verilog/VHDL, создал тест, промоделировал, например, в ModelSim.

 

А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.)

 

Несколько сумбурно, но надеюсь вопрос понятен.

 

Из того, что уже нашёл - склоняюсь к тому, что, видимо, можно попробовать использовать интерфейс PLI verilog и действие внешнего устройства описывать в виде программы на С. В правильную сторону смотрю или есть что-то ещё?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами.

 

В тестбенче описывать поведение внешнего устройства. Вся прошивка ПЛИС - UUT.

 

Собственно непонятно с чем проблемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами.

...

А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.)

...

тут зависит от сложности внешнего устройства/устройств. вообще говоря, языки xHDL - это языки описания и моделирования аппаратуры, т.е. среда полностью замкнутая (можно описать и свое устройство и смоделировать внешнее воздействие на него). причем никто не заставляет детально описывать внешнее устройство - вполне достаточно простого поведенческого (синтезировать-то не надо). так что описывайте внешнее устройство на том языке, которым лучше владеете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.). Не представляю как можно это описать на verilog (но реализация на С проблем не вызывает).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.).

 

Для моделирования можно в сети найти функции реализующие тригонометрию. Фильтрация выполняется довольно очевидно. Главное достоинство - все останется в рамках одного языка.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.). Не представляю как можно это описать на verilog (но реализация на С проблем не вызывает).

а что тут сложного? смысл в том, что синтезируемый фильтр делать не надо, напишите просто свертку типа c=sum(a(i)*b(i)). можно даже с вещ. числами работать, если это удобнее. я не помню, есть ли арктангенс в библиотеке math, но даже если нет - сляпать cordic - дело 15 минут. еще раз : возможностей xHDL языков для этих задач хватит с лихвой, C - лишняя сущность, отсекается бритвой Оккама.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

верилог позволяет вызывать Сишную функтию как любую верилоговскую функцию через интерфейс DPI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.)

 

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

Но можно конечно освоить и более навороченные способы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...