реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> ModelSim, вопросы новичка
Sprite
сообщение May 18 2018, 11:26
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Доброго всем времени суток!

Решил отложить стандартный квартус-симулятор и изучить ModelSim. Отлаживаю модуль SPI, но картинка не та, которую я вижу в квартус-симуляторе, сигналы addr, data, miso в неопределенном состоянии. В чем может быть дело? Не заданы начальные условия или код модуля кривой? Картинка такая:



Исходный файл и тестбенч к нему во вложении. Заранее спасибо.
Прикрепленный файл  SPI_slave2.v ( 4.49 килобайт ) Кол-во скачиваний: 31
Прикрепленный файл  SPI_slave2_tb.v ( 1.15 килобайт ) Кол-во скачиваний: 36


Сообщение отредактировал Sprite - May 18 2018, 11:27
Go to the top of the page
 
+Quote Post
Nieve
сообщение May 18 2018, 11:43
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 29-04-18
Из: Москва
Пользователь №: 103 558



Здравствуйте!
У вас в TestBench переменная "addr" задана как "wire" + присваивается значение константы - "0".
В самом модуле "spi_slave" вы начинаете с этой переменной работать.
Получается что с одной стороны вы переменной "addr" присваиваете присваиваете постоянное значение, а с другой, меняете его.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 18 2018, 11:45
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Sprite @ May 18 2018, 14:26) *
Доброго всем времени суток!

Решил отложить стандартный квартус-симулятор и изучить ModelSim. Отлаживаю модуль SPI, но картинка не та, которую я вижу в квартус-симуляторе, сигналы addr, data, miso в неопределенном состоянии. В чем может быть дело? Не заданы начальные условия или код модуля кривой? Картинка такая:

Насколько я помню, Вы не любите сигнал "Сброс".
Квартус "знает", что по исходному все триггера в проекте грузятся в 0. А Моделсим этого не знает...
А вот те, которые были зеленые, а стали красные - это значит скорее всего, что на сигнал пытаются воздействовать два драйвера...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Sprite
сообщение May 18 2018, 12:15
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Nieve, Иосиф Григорьевич, спасибо!
Проглядел).
А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем?
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 18 2018, 12:38
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Sprite @ May 18 2018, 15:15) *
Nieve, Иосиф Григорьевич, спасибо!
Проглядел).
А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем?

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
AVR
сообщение May 18 2018, 12:56
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Sprite @ May 18 2018, 15:15) *
А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем?

Мне понятен этот вопрос, вспоминаю как я был нубасом по части тестбенчей в HDL-симуляторах, и кажется представляю что хочется.
Краткий ответ может быть таким банальным: Verilog состоит не только из конструкций, которые могут быть синтезированы в ПЛИС, но и несинтезируемых конструкций, которые по сути не уступают по гибкости классическим языкам программирования (особенно System Verilog).
Поэтому да, можно действительно сделать так, чтобы была очень сложная логика взаимодействия с тестируемым устройством, причем делать ее на порядок проще и "халявнее" чем изобретать ответную часть на синтезируемых конструкциях Verilog. В том числе и функция имитации SPI с двумя входными параметрами.


Цитата(iosifk @ May 18 2018, 15:38) *
Пишем файл паттерна с этими двумя параметрами. И в тесбенче вычитываем их из файла. Результаты приема можно тоже писать в файл... Или в консоль.... А потом исходный и полученный программным инструментом сравнить...

Прошу прощения, но совет странный sm.gif Файл? Зачем там.


--------------------
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение May 18 2018, 15:59
Сообщение #7


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(AVR @ May 18 2018, 15:56) *
Прошу прощения, но совет странный sm.gif Файл? Зачем там.

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


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 18 2018, 17:47
Сообщение #8


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Код
А можно как-нибудь автоматизировать посылку разных значений по SPI? В идеале хочется иметь тестбенч такого формата, чтобы в нем задавались только 2 параметра: значение данных и время в которые они посылаются, а сама колбаса из 32-х битов проходила автоматом. Как решить эту задачку? Ставить внешний цикл for над всем тестбенчем?

Я обычно делаю так:
1. У меня есть отдельная папочка, которая называется SIM_MODELS.
2. В этой папочке хранятся, как ,наверное, легко догадаться - модели для симуляции. Эти модели я специально написал на несентизируемом подмножестве языка HDL. Обычно в качестве моделей я создаю распространенную периферию - источники сигнала, такие как UART, SPI, I2C, и пр. Недавно пришлось написать VGA источник, где в качестве параметра - генерируемое разрешение.
3. В модели у меня есть возможность задать необходимые параметры. Одним из таких параметров является возможность выбора файла откуда читаются внешние воздействия.
4. Когда я начинаю моделировать в Modelsim я просто подключаю к тестбенчу мою модель, в которой указываю файл откуда читать внешние воздействия.
5. В случае если модель не удовлетворяет необходимому функционалу - я её улучшаю.
В итоге имеем - крайне простую генерацию внешних воздействий. Постоянно улучшающуюся модель источника. И самое главное возможность повторного использования ранее написанного, что ускорит создание проектов в будущем. Основная цель - по-максимуму применять то, что было написано и отлажено раньше, что уменьшит вероятность ошибок, и ускорит разработку.
Go to the top of the page
 
+Quote Post
AnatolySh
сообщение May 18 2018, 18:03
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 20-01-06
Из: Зеленоград
Пользователь №: 13 407



Цитата(Sprite @ May 18 2018, 14:26) *
Решил отложить стандартный квартус-симулятор и изучить ModelSim.
Сказали а, говорите сразу и б: управляйте ModelSim-ом с помощью tcl.
Потратите время на изучение, зато потом будете сильно экономить на отладке.
Не претендую на непогрешимость, но вот (в скрепке) пример: вдруг, чего себе возьмёте?
Любые вопросы и замечания приветствуются.


Прикрепленные файлы
Прикрепленный файл  ARINC_TX_sim.rar ( 4.1 килобайт ) Кол-во скачиваний: 26
 


--------------------
WMBR
Go to the top of the page
 
+Quote Post
R6L-025
сообщение May 18 2018, 19:02
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Вроде как неплохо еще прогонять на случайных выборках сигналов. Т.е. задаете случайные данные, ставите передающий модуль, с приемного считываете и сравниваете с переданными. Это довольно легко поддается автоматизации и можно гонять случайные слова данных нужное количество раз. Еще попробуйте посмотреть в сторону Altera'ских bfm модулей для верификации. Из их исходников можно много интересного понадергать
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 18 2018, 19:11
Сообщение #11


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(R6L-025 @ May 18 2018, 22:02) *
Altera'ских bfm модулей для верификации. Из их исходников можно много интересного понадергать

А где их взять ?
Go to the top of the page
 
+Quote Post
R6L-025
сообщение May 18 2018, 19:21
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Можно создать *.qsys проект в который добавить нужные BFM корки, потом выбрать пунккт Generate->Generate TestBench systems . После генерации в директории synthesis появятся *.sv файлы. Собственно это они и естьsm.gif Еще у альтеры есть экземплы:
https://www.altera.com/support/support-reso...ication-ip.html
Там же и ссылка на документацию. Правда от последней, как по мне, не сильно много толку

Сейчас, как раз, занялся этим. Есть желание наковырять оттуда кода, и сделать для себя боле-менее обощенный пакет который можно былоб использовать в разных проектах
Go to the top of the page
 
+Quote Post
Marat Zuev
сообщение May 18 2018, 20:30
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 8-05-18
Пользователь №: 103 834



Цитата(Sprite @ May 18 2018, 12:26) *
Отлаживаю модуль SPI
Кстати, вдруг ещё не видели - ИМО там есть, что принять к сведению: SPI Verilog Master & Slave modules :: Overview. Да и, вообще, там погуляйте. И я вместе с Вами )
И ещё одна ссылка, как введение к первой: https://marsohod.org/projects/marsohod2/amb...c/215-opencores

Сообщение отредактировал Marat Zuev - May 18 2018, 21:02


--------------------
--
С наилучшими пожеланиями, Marat.
Go to the top of the page
 
+Quote Post
Sprite
сообщение May 19 2018, 13:35
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414



Цитата(AnatolySh @ May 19 2018, 01:03) *
Не претендую на непогрешимость, но вот (в скрепке) пример: вдруг, чего себе возьмёте?

Пантово..! Очень пантово!) Прямо все как я люблю: нажал одну кнопку и ПЭМС! - файл симуляции готов!
Особенно мне понравились строчки "ThisPCLocationIsWORK" и "ThisPCLocationIsHOME" батника simulate biggrin.gif Браво! Реально круто! disco.gif Благодаря Вашему коду наткнулся на интересную статью, может кому пригодится.

Цитата(Marat Zuev @ May 19 2018, 03:30) *
Кстати, вдруг ещё не видели - ИМО там есть, что принять к сведению: SPI Verilog Master & Slave modules :: Overview. Да и, вообще, там погуляйте. И я вместе с Вами )
И ещё одна ссылка, как введение к первой: https://marsohod.org/projects/marsohod2/amb...c/215-opencores

Спасибо за инфу! Обязательно ознакомлюсь!

Еще один вопрос: verilog начал изучать совсем недавно, и мне привычнее представлять top_level в виде bdf-схемы, куда я далее вставляю veriog-модули и компилирую. ModelSim насколько мне известно может принимать только verilog. Как быть в этом случае? Описывать всю схему, связи в верилоге или есть еще какие варианты? И как в этом случае привязывать входы-выходы к конкретным пинам?
Go to the top of the page
 
+Quote Post
Marat Zuev
сообщение May 19 2018, 13:52
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 8-05-18
Пользователь №: 103 834



Цитата(Sprite @ May 19 2018, 14:35) *
наткнулся на интересную статью
Всё, чем Вы восторгались, написано, в том числе после прочтения статей, подобных этой )
Цитата(Sprite @ May 19 2018, 14:35) *
Еще один вопрос: verilog начал изучать совсем недавно, и мне привычнее представлять top_level в виде bdf-схемы, куда я далее вставляю veriog-модули и компилирую. ModelSim насколько мне известно может принимать только verilog. Как быть в этом случае? Описывать всю схему, связи в верилоге или есть еще какие варианты? И как в этом случае привязывать входы-выходы к конкретным пинам?
Как раз для Вас с того же сайта: https://marsohod.org/11-blog/251-sch-or-txt

Сообщение отредактировал Marat Zuev - May 19 2018, 13:56


--------------------
--
С наилучшими пожеланиями, Marat.
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 05:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01513 секунд с 7
ELECTRONIX ©2004-2016