:-) 0 28 февраля, 2009 Опубликовано 28 февраля, 2009 · Жалоба Всем привет. Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами. Как реализовать и промоделировать модель устройства только на ПЛИС - понятно: описал на verilog/VHDL, создал тест, промоделировал, например, в ModelSim. А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.) Несколько сумбурно, но надеюсь вопрос понятен. Из того, что уже нашёл - склоняюсь к тому, что, видимо, можно попробовать использовать интерфейс PLI verilog и действие внешнего устройства описывать в виде программы на С. В правильную сторону смотрю или есть что-то ещё? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 28 февраля, 2009 Опубликовано 28 февраля, 2009 · Жалоба Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами. В тестбенче описывать поведение внешнего устройства. Вся прошивка ПЛИС - UUT. Собственно непонятно с чем проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 28 февраля, 2009 Опубликовано 28 февраля, 2009 · Жалоба Есть у меня обобщенный вопрос. Как моделировать цифровое устройство на ПЛИС, если оно в процессе работы должно взаимодействовать с внешними устройствами. ... А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.) ... тут зависит от сложности внешнего устройства/устройств. вообще говоря, языки xHDL - это языки описания и моделирования аппаратуры, т.е. среда полностью замкнутая (можно описать и свое устройство и смоделировать внешнее воздействие на него). причем никто не заставляет детально описывать внешнее устройство - вполне достаточно простого поведенческого (синтезировать-то не надо). так что описывайте внешнее устройство на том языке, которым лучше владеете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
:-) 0 28 февраля, 2009 Опубликовано 28 февраля, 2009 · Жалоба Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.). Не представляю как можно это описать на verilog (но реализация на С проблем не вызывает). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 28 февраля, 2009 Опубликовано 28 февраля, 2009 · Жалоба Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.). Для моделирования можно в сети найти функции реализующие тригонометрию. Фильтрация выполняется довольно очевидно. Главное достоинство - все останется в рамках одного языка. На Си конечно можно, но думаю, можно убить тучу времени на отладку всего этого. И не факт, что при желании перейти на другие средства разработки не придется все переделывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 1 марта, 2009 Опубликовано 1 марта, 2009 · Жалоба Для себя проблему вижу в следующем: внешнее устройство должно производить довольно сложные манипуляции над данными, полученными из ПЛИС (вычислять арктангенс, выполнять цифровую фильтрацию и т.д.). Не представляю как можно это описать на verilog (но реализация на С проблем не вызывает). а что тут сложного? смысл в том, что синтезируемый фильтр делать не надо, напишите просто свертку типа c=sum(a(i)*b(i)). можно даже с вещ. числами работать, если это удобнее. я не помню, есть ли арктангенс в библиотеке math, но даже если нет - сляпать cordic - дело 15 минут. еще раз : возможностей xHDL языков для этих задач хватит с лихвой, C - лишняя сущность, отсекается бритвой Оккама. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 1 марта, 2009 Опубликовано 1 марта, 2009 · Жалоба верилог позволяет вызывать Сишную функтию как любую верилоговскую функцию через интерфейс DPI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tims 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Можно функции таблично в файл. Потом оттуда читать-писать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба А как проверять модель, если она постоянно должна общаться в внешним устройством? (Модель, реализованная в ПЛИС постоянно что-то вычисляет и выдает результат внешнему устройству и в ответ получает сигнал управления от внешнего устройства.) Все что нужно уже было сказано. Самое простое и быстрое в освоении - общаться через файлы. Входной файл данных, выходной файл данных. На С делаете программку, которая генерит входной для ПЛИС файл, и программку, которая обрабатывает результаты выходного файла. И если есть возможность, то так же на С делаете модель Вашей ПЛИС. Прогоняете через нее входной файл и смотрите разницу между выходными файлами... Потом, после корректировки проекта подгоняете ПЛИС под С модель... Но можно конечно освоить и более навороченные способы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться