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

    

Vivado 16.1 + System Generator

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

 

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

Схема такая:

MACC.jpg

 

Аккумулятор сбрасывается единицей. Когда формирую единичный импульс на входе 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, схема начинает работать:

image.jpg

 

Кто с такой проблемой сталкивался, поделитесь решением, пожалуйста!

На форуме и в базе вопросов Xilinx ничего полезного не обнаружено(

 

 

 

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


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

Reset для аккумулятора с плавающей запятой - два такта.

reset.jpg

 

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


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

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


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

Я работаю только с фиксированной точкой (и все отлично).

Попытки работать с плавающей пока показывают многочисленные проблемы.

Вашу с resetom как то можно обойти другой схемой с регистром и сумматором.

Все равно Вас ждут многочисленные неприятности :smile3046: , обычно просто вылетает Matlab.

Пишите в тех поддержку Xilinx. :laughing:

Так Вы пионер и безумству храбрых как говорится ....

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


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

Да я тоже работала с фиксированной точкой, и без особых проблем.

Сейчас нужна повышенная точность. Пришлось пересесть на Sysgen и Floating-Point.

Подозреваю, что у Xilinx Floating-Point блоки еще не отработаны толком.

Написала на их форум тоже, пока все глухо.

А что за проблемы у вас были, почему MATLAB вылетал?

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


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

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

Главное знать ее размеры.

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


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

Добавлю...

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

 

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


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

iosifk, на opencores, если я правильно понимаю, можно найти VHDL-исходники

арифметических блоков с плавающей точкой. Их еще к своему проекту приспособить надо.

 

Мне сейчас важнее оценить возможности будущего устройства в целом - объем ресурсов,

производительность, точность вычислений. Для этого и хотелось бы воспользоваться

средствами Sysgen и Simulink. Но при этом, чтобы оценивалось все-таки работающее устройство)

Изменено пользователем kivl

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


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

reset.jpg

На картинке внизу написано - "латентность = 1"...

А за сколько тактов срабатывают узлы на схеме? Может быть этим узлам надо больше тактов?

Вообще, если говорить глобально о бОльшей точности, то надо сказать на какой частоте приходят данные не обработку и как эта частота соотносится с системной тактовой...

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

 

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


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

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

Результат тот же.

Самое интересное, что если убрать умножитель, аккумулятор реагирует на сигнал сброса вполне нормально.

Подставляла вместо умножителя и другие блоки, ошибка снова появлялась.

 

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

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

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


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

Результат тот же.

Самое интересное, что если убрать умножитель, аккумулятор реагирует на сигнал сброса вполне нормально.

Подставляла вместо умножителя и другие блоки, ошибка снова появлялась.

 

 

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

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

 

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


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

Тут зависит от настроек латентности. У умножителя - от 0 до 9, у аккумулятора - от 1. Максимальная латентность аккумулятора зависит от

его разрядности. Судя по результатам моделирования, работают они в соответствии с заданной латентностью.

 

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

Изменено пользователем kivl

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


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

Здравствуйте!

Нашли ли Вы решение проблемы с аккумулятором с плавающей точкой?

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

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


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

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

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


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

Все версии Vivado можно "найти" на сайте Xilinx - это по поводу "где".

По теме "гарантировано" качать по очереди и проверять, начиная с крайней свежей.

Это при условии гарантировано "правильного исходного текста проекта".

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


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

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

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

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

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

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

Войти

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

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