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

Vivado 16.1 + System Generator

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

Пытаюсь создать floating-point умножитель с накоплением, пользуясь system generator'ом и набором блоков Floating Point.
Схема такая:


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

An error occurred while running the simulation and the simulation was terminated
Caused by:
Error in 'acctst/A' while executing C MEX S-function 'sysgen', (mdlUpdate), at time 0.0.
FatalException


Если убираю импульс со входа rst, сообщение об ошибке не появляется, но устройство все равно работает некорректно.

Если поменять формат входов A и B с floating-point на fixed-point, схема начинает работать:


Кто с такой проблемой сталкивался, поделитесь решением, пожалуйста!
На форуме и в базе вопросов Xilinx ничего полезного не обнаружено(


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


Ссылка на сообщение
Поделиться на другие сайты
Reset для аккумулятора с плавающей запятой - два такта.

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


Ссылка на сообщение
Поделиться на другие сайты
litv, спасибо за ответ! Я ставила и два такта, и три, и больше - результат один и тот же.

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


Ссылка на сообщение
Поделиться на другие сайты
Я работаю только с фиксированной точкой (и все отлично).
Попытки работать с плавающей пока показывают многочисленные проблемы.
Вашу с resetom как то можно обойти другой схемой с регистром и сумматором.
Все равно Вас ждут многочисленные неприятности smile3046.gif , обычно просто вылетает Matlab.
Пишите в тех поддержку Xilinx. laughing.gif
Так Вы пионер и безумству храбрых как говорится ....

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


Ссылка на сообщение
Поделиться на другие сайты
Да я тоже работала с фиксированной точкой, и без особых проблем.
Сейчас нужна повышенная точность. Пришлось пересесть на Sysgen и Floating-Point.
Подозреваю, что у Xilinx Floating-Point блоки еще не отработаны толком.
Написала на их форум тоже, пока все глухо.
А что за проблемы у вас были, почему MATLAB вылетал?

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


Ссылка на сообщение
Поделиться на другие сайты
Повышенная точность возможна и без плавающей точки.
Главное знать ее размеры.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(litv @ May 21 2016, 14:26) <{POST_SNAPBACK}>
Так Вы пионер и безумству храбрых как говорится ....

Добавлю...
А с opencores взять исходники блока с плавучкой, чтобы было понятно, что там внутри делается?

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


Ссылка на сообщение
Поделиться на другие сайты
iosifk, на opencores, если я правильно понимаю, можно найти VHDL-исходники
арифметических блоков с плавающей точкой. Их еще к своему проекту приспособить надо.

Мне сейчас важнее оценить возможности будущего устройства в целом - объем ресурсов,
производительность, точность вычислений. Для этого и хотелось бы воспользоваться
средствами Sysgen и Simulink. Но при этом, чтобы оценивалось все-таки работающее устройство)
Изменено пользователем kivl

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(litv @ May 21 2016, 10:10) <{POST_SNAPBACK}>
Reset для аккумулятора с плавающей запятой - два такта.

На картинке внизу написано - "латентность = 1"...
А за сколько тактов срабатывают узлы на схеме? Может быть этим узлам надо больше тактов?
Вообще, если говорить глобально о бОльшей точности, то надо сказать на какой частоте приходят данные не обработку и как эта частота соотносится с системной тактовой...
Потому как если есть резерв по частоте, то можно быстренько сделать автомат для обработки арифметики в плавучке.... Либо делать арифметику по-байтно для многоразрядных данных....

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата
А за сколько тактов срабатывают узлы на схеме? Может быть этим узлам надо больше тактов?

Я держала длительность сброса до 35 тактов, это максимальная латентность при выбранной разрядности аккумулятора.
Результат тот же.
Самое интересное, что если убрать умножитель, аккумулятор реагирует на сигнал сброса вполне нормально.
Подставляла вместо умножителя и другие блоки, ошибка снова появлялась.

Цитата
можно быстренько сделать автомат для обработки арифметики в плавучке

Можно здесь поподробнее? Возможно, небольшой запас по частоте будет.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(kivl @ May 22 2016, 13:52) <{POST_SNAPBACK}>
Я держала длительность сброса до 35 тактов, это максимальная латентность при выбранной разрядности аккумулятора.
Результат тот же.
Самое интересное, что если убрать умножитель, аккумулятор реагирует на сигнал сброса вполне нормально.
Подставляла вместо умножителя и другие блоки, ошибка снова появлялась.


Можно здесь поподробнее? Возможно, небольшой запас по частоте будет.

Говоря про латентность я имел в виду не сброс, а работу умножителя и аккумулятора. Вы уверены, что они умножают и складывают за 1 такт, а не за 2 или более???

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


Ссылка на сообщение
Поделиться на другие сайты
Тут зависит от настроек латентности. У умножителя - от 0 до 9, у аккумулятора - от 1. Максимальная латентность аккумулятора зависит от
его разрядности. Судя по результатам моделирования, работают они в соответствии с заданной латентностью.

Попробовала reset вообще убрать. Результат тот же(
Изменено пользователем kivl

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


Ссылка на сообщение
Поделиться на другие сайты
Здравствуйте!
Нашли ли Вы решение проблемы с аккумулятором с плавающей точкой?
У меня весь дизайн с плавающей точкой, и в одном месте есть аккумулятор. Что бы я ни пробовал, проект из Sysgen не просчитывается и дает ошибку. Как только я сделал аккумулятор с фиксированной точкой, все стало прекрасно работать. Удалось ли кому-нибудь заставить работать аккумулятор с плавающей точкой из-под Системного генератора?

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


Ссылка на сообщение
Поделиться на другие сайты
Подскажите, плиз, где можно взять (скачать) проверенную версию Vivado +System Generator, чтобы гарантированно работала эта связка. Заранее благодарен!

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(vetspace @ Feb 15 2018, 16:24) <{POST_SNAPBACK}>
Подскажите, плиз, где можно взять (скачать) проверенную версию Vivado +System Generator, чтобы гарантированно работала эта связка. Заранее благодарен!

Все версии Vivado можно "найти" на сайте Xilinx - это по поводу "где".
По теме "гарантировано" качать по очереди и проверять, начиная с крайней свежей.
Это при условии гарантировано "правильного исходного текста проекта".

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация