alex1985 0 18 мая, 2018 Опубликовано 18 мая, 2018 (изменено) · Жалоба Доброго всем времени суток! Решил отложить стандартный квартус-симулятор и изучить ModelSim. Отлаживаю модуль SPI, но картинка не та, которую я вижу в квартус-симуляторе, сигналы addr, data, miso в неопределенном состоянии. В чем может быть дело? Не заданы начальные условия или код модуля кривой? Картинка такая: Исходный файл и тестбенч к нему во вложении. Заранее спасибо. SPI_slave2.vSPI_slave2_tb.v Изменено 18 мая, 2018 пользователем Sprite Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nieve 0 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Здравствуйте! У вас в TestBench переменная "addr" задана как "wire" + присваивается значение константы - "0". В самом модуле "spi_slave" вы начинаете с этой переменной работать. Получается что с одной стороны вы переменной "addr" присваиваете присваиваете постоянное значение, а с другой, меняете его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Доброго всем времени суток! Решил отложить стандартный квартус-симулятор и изучить ModelSim. Отлаживаю модуль SPI, но картинка не та, которую я вижу в квартус-симуляторе, сигналы addr, data, miso в неопределенном состоянии. В чем может быть дело? Не заданы начальные условия или код модуля кривой? Картинка такая: Насколько я помню, Вы не любите сигнал "Сброс". Квартус "знает", что по исходному все триггера в проекте грузятся в 0. А Моделсим этого не знает... А вот те, которые были зеленые, а стали красные - это значит скорее всего, что на сигнал пытаются воздействовать два драйвера... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex1985 0 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Nieve, Иосиф Григорьевич, спасибо! Проглядел). А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Nieve, Иосиф Григорьевич, спасибо! Проглядел). А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем? Пишем файл паттерна с этими двумя параметрами. И в тесбенче вычитываем их из файла. Результаты приема можно тоже писать в файл... Или в консоль.... А потом исходный и полученный программным инструментом сравнить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем? Мне понятен этот вопрос, вспоминаю как я был нубасом по части тестбенчей в HDL-симуляторах, и кажется представляю что хочется. Краткий ответ может быть таким банальным: Verilog состоит не только из конструкций, которые могут быть синтезированы в ПЛИС, но и несинтезируемых конструкций, которые по сути не уступают по гибкости классическим языкам программирования (особенно System Verilog). Поэтому да, можно действительно сделать так, чтобы была очень сложная логика взаимодействия с тестируемым устройством, причем делать ее на порядок проще и "халявнее" чем изобретать ответную часть на синтезируемых конструкциях Verilog. В том числе и функция имитации SPI с двумя входными параметрами. Пишем файл паттерна с этими двумя параметрами. И в тесбенче вычитываем их из файла. Результаты приема можно тоже писать в файл... Или в консоль.... А потом исходный и полученный программным инструментом сравнить... Прошу прощения, но совет странный :) Файл? Зачем там. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Прошу прощения, но совет странный :) Файл? Зачем там. Затем, что тестбенч будет один и тот же, и его не потребуется переписывать под новый массив данных, если их нужно будет изменить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем? Я обычно делаю так: 1. У меня есть отдельная папочка, которая называется SIM_MODELS. 2. В этой папочке хранятся, как ,наверное, легко догадаться - модели для симуляции. Эти модели я специально написал на несентизируемом подмножестве языка HDL. Обычно в качестве моделей я создаю распространенную периферию - источники сигнала, такие как UART, SPI, I2C, и пр. Недавно пришлось написать VGA источник, где в качестве параметра - генерируемое разрешение. 3. В модели у меня есть возможность задать необходимые параметры. Одним из таких параметров является возможность выбора файла откуда читаются внешние воздействия. 4. Когда я начинаю моделировать в Modelsim я просто подключаю к тестбенчу мою модель, в которой указываю файл откуда читать внешние воздействия. 5. В случае если модель не удовлетворяет необходимому функционалу - я её улучшаю. В итоге имеем - крайне простую генерацию внешних воздействий. Постоянно улучшающуюся модель источника. И самое главное возможность повторного использования ранее написанного, что ускорит создание проектов в будущем. Основная цель - по-максимуму применять то, что было написано и отлажено раньше, что уменьшит вероятность ошибок, и ускорит разработку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Решил отложить стандартный квартус-симулятор и изучить ModelSim. Сказали а, говорите сразу и б: управляйте ModelSim-ом с помощью tcl. Потратите время на изучение, зато потом будете сильно экономить на отладке. Не претендую на непогрешимость, но вот (в скрепке) пример: вдруг, чего себе возьмёте? Любые вопросы и замечания приветствуются. ARINC_TX_sim.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Вроде как неплохо еще прогонять на случайных выборках сигналов. Т.е. задаете случайные данные, ставите передающий модуль, с приемного считываете и сравниваете с переданными. Это довольно легко поддается автоматизации и можно гонять случайные слова данных нужное количество раз. Еще попробуйте посмотреть в сторону Altera'ских bfm модулей для верификации. Из их исходников можно много интересного понадергать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Altera'ских bfm модулей для верификации. Из их исходников можно много интересного понадергать А где их взять ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 18 мая, 2018 Опубликовано 18 мая, 2018 · Жалоба Можно создать *.qsys проект в который добавить нужные BFM корки, потом выбрать пунккт Generate->Generate TestBench systems . После генерации в директории synthesis появятся *.sv файлы. Собственно это они и есть:) Еще у альтеры есть экземплы: https://www.altera.com/support/support-reso...ication-ip.html Там же и ссылка на документацию. Правда от последней, как по мне, не сильно много толку Сейчас, как раз, занялся этим. Есть желание наковырять оттуда кода, и сделать для себя боле-менее обощенный пакет который можно былоб использовать в разных проектах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 18 мая, 2018 Опубликовано 18 мая, 2018 (изменено) · Жалоба Отлаживаю модуль SPI Кстати, вдруг ещё не видели - ИМО там есть, что принять к сведению: SPI Verilog Master & Slave modules :: Overview. Да и, вообще, там погуляйте. И я вместе с Вами ) И ещё одна ссылка, как введение к первой: https://marsohod.org/projects/marsohod2/amb...c/215-opencores Изменено 18 мая, 2018 пользователем Marat Zuev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex1985 0 19 мая, 2018 Опубликовано 19 мая, 2018 · Жалоба Не претендую на непогрешимость, но вот (в скрепке) пример: вдруг, чего себе возьмёте? Пантово..! Очень пантово!) Прямо все как я люблю: нажал одну кнопку и ПЭМС! - файл симуляции готов! Особенно мне понравились строчки "ThisPCLocationIsWORK" и "ThisPCLocationIsHOME" батника simulate :biggrin: Браво! Реально круто! :disco: Благодаря Вашему коду наткнулся на интересную статью, может кому пригодится. Кстати, вдруг ещё не видели - ИМО там есть, что принять к сведению: SPI Verilog Master & Slave modules :: Overview. Да и, вообще, там погуляйте. И я вместе с Вами ) И ещё одна ссылка, как введение к первой: https://marsohod.org/projects/marsohod2/amb...c/215-opencores Спасибо за инфу! Обязательно ознакомлюсь! Еще один вопрос: verilog начал изучать совсем недавно, и мне привычнее представлять top_level в виде bdf-схемы, куда я далее вставляю veriog-модули и компилирую. ModelSim насколько мне известно может принимать только verilog. Как быть в этом случае? Описывать всю схему, связи в верилоге или есть еще какие варианты? И как в этом случае привязывать входы-выходы к конкретным пинам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 19 мая, 2018 Опубликовано 19 мая, 2018 (изменено) · Жалоба наткнулся на интересную статью Всё, чем Вы восторгались, написано, в том числе после прочтения статей, подобных этой ) Еще один вопрос: verilog начал изучать совсем недавно, и мне привычнее представлять top_level в виде bdf-схемы, куда я далее вставляю veriog-модули и компилирую. ModelSim насколько мне известно может принимать только verilog. Как быть в этом случае? Описывать всю схему, связи в верилоге или есть еще какие варианты? И как в этом случае привязывать входы-выходы к конкретным пинам? Как раз для Вас с того же сайта: https://marsohod.org/11-blog/251-sch-or-txt Изменено 19 мая, 2018 пользователем Marat Zuev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться