Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Vivado 16.1 + System Generator
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Среды разработки - обсуждаем САПРы
kivl
Доброго всем времени суток!

Пытаюсь создать 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 ничего полезного не обнаружено(


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

kivl
litv, спасибо за ответ! Я ставила и два такта, и три, и больше - результат один и тот же.
litv
Я работаю только с фиксированной точкой (и все отлично).
Попытки работать с плавающей пока показывают многочисленные проблемы.
Вашу с resetom как то можно обойти другой схемой с регистром и сумматором.
Все равно Вас ждут многочисленные неприятности smile3046.gif , обычно просто вылетает Matlab.
Пишите в тех поддержку Xilinx. laughing.gif
Так Вы пионер и безумству храбрых как говорится ....
kivl
Да я тоже работала с фиксированной точкой, и без особых проблем.
Сейчас нужна повышенная точность. Пришлось пересесть на Sysgen и Floating-Point.
Подозреваю, что у Xilinx Floating-Point блоки еще не отработаны толком.
Написала на их форум тоже, пока все глухо.
А что за проблемы у вас были, почему MATLAB вылетал?
litv
Повышенная точность возможна и без плавающей точки.
Главное знать ее размеры.
iosifk
Цитата(litv @ May 21 2016, 14:26) *
Так Вы пионер и безумству храбрых как говорится ....

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

Мне сейчас важнее оценить возможности будущего устройства в целом - объем ресурсов,
производительность, точность вычислений. Для этого и хотелось бы воспользоваться
средствами Sysgen и Simulink. Но при этом, чтобы оценивалось все-таки работающее устройство)
iosifk
Цитата(litv @ May 21 2016, 10:10) *
Reset для аккумулятора с плавающей запятой - два такта.

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

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

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

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


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

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

Попробовала reset вообще убрать. Результат тот же(
goryn
Здравствуйте!
Нашли ли Вы решение проблемы с аккумулятором с плавающей точкой?
У меня весь дизайн с плавающей точкой, и в одном месте есть аккумулятор. Что бы я ни пробовал, проект из Sysgen не просчитывается и дает ошибку. Как только я сделал аккумулятор с фиксированной точкой, все стало прекрасно работать. Удалось ли кому-нибудь заставить работать аккумулятор с плавающей точкой из-под Системного генератора?
vetspace
Подскажите, плиз, где можно взять (скачать) проверенную версию Vivado +System Generator, чтобы гарантированно работала эта связка. Заранее благодарен!
Alex77
Цитата(vetspace @ Feb 15 2018, 16:24) *
Подскажите, плиз, где можно взять (скачать) проверенную версию Vivado +System Generator, чтобы гарантированно работала эта связка. Заранее благодарен!

Все версии Vivado можно "найти" на сайте Xilinx - это по поводу "где".
По теме "гарантировано" качать по очереди и проверять, начиная с крайней свежей.
Это при условии гарантировано "правильного исходного текста проекта".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.