Страница 1 из 1

Error 61499 при компиляции FPGA

Добавлено: 12 окт 2021, 14:54
K0sinus
Не могу разобраться, из-за чего возникает данная ошибка при компиляции FPGA на cRIO.
Иногда ошибки нет, но часто - возникает. Пробовал чистить битфайлы, пересоздавать билд - не помогает.
В какую сторону копать?
Что за skew такой?
FPGA_error.jpg

Re: Error 61499 при компиляции FPGA

Добавлено: 12 окт 2021, 15:13
Vasiliy Baev
Модуль жалуется на тайминг. Займитесь оптимизацией кода. Или возьмите cRio с "более жирной" ПЛИС.

Re: Error 61499 при компиляции FPGA

Добавлено: 12 окт 2021, 16:02
K0sinus
т.е. ему 6 массивов по 10элементов - многовато?

Re: Error 61499 при компиляции FPGA

Добавлено: 12 окт 2021, 16:26
Artem.spb
Дело может быть не в штуках, а в методе работы с ними.
Попробуйте вместо массивов регистры и прочие "механизмы" попробовать. 60 элементов всё же не много.

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 16:53
K0sinus
Не понимаю, почему ошибка возникает не всегда. И наоборот, чтобы скомпилировать приходится с бубном плясать - дисэйблить участки кода, компилировать, потом обратно энейблить и снова компилировать- и тогда компилируется, хотя особо ничего не поменялось. И что это за параметр такой? Может, его где-то можно задать?

Насчёт, регистров, можно пример? В timeloop пихать значение в регистр или фифо и потом в отдельном цикле его вытаскивать и в массив? Я так пробовал, та же ошибка.
Или имеется ввиду вытаскивать фифо в RT модуль?

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 20:12
Artem.spb
K0sinus писал(а): 16 окт 2021, 16:53 В timeloop пихать значение в регистр или фифо и потом в отдельном цикле его вытаскивать и в массив?
Зачем массив собирать? Скорее всего можно обойтись без него.
Вообще, Хранение данных в контролах/индикаторах - плохая привычка. Провода - наше всё
FPGAmemory.png

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 20:45
K0sinus
Спасибо, попробую с Memory. Но массивы все равно нужны - для отображения, надо видеть все 60 значений.

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 21:00
Artem.spb
K0sinus писал(а): 16 окт 2021, 20:45 Но массивы все равно нужны - для отображения, надо видеть все 60 значений.
Но вы же не на уровне FPGA их смотрите

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 21:06
K0sinus
А если я буду считывать Memory из RT - я же обязательно что-нибудь потеряю?

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 21:19
Artem.spb
K0sinus писал(а): 16 окт 2021, 21:06 А если я буду считывать Memory из RT - я же обязательно что-нибудь потеряю?
А вы её не сможете прочитать :)
Для передачи между уровнями FIFO (если быстро и без потерь)

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 21:33
K0sinus
Вот, собственно, мы и вернулись к вопросу. Если массивы не стоит смотреть на уровне FPGA, эти массивы надо формировать в RT. Memory тогда не годится, а количество FIFO ограничено пятью для этого cRio… а у нас 6 каналов по 10 сигналов и нам их нельзя мешать.

Re: Error 61499 при компиляции FPGA

Добавлено: 16 окт 2021, 23:23
Artem.spb
K0sinus писал(а): 16 окт 2021, 21:33 6 каналов по 10 сигналов и нам их нельзя мешать.
Что значит "нельзя мешать"? Скорость чтения одинаковая? Или хотя бы кратная?

Re: Error 61499 при компиляции FPGA

Добавлено: 17 окт 2021, 16:59
Andrew Lunev
K0sinus писал(а): 16 окт 2021, 21:33 а количество FIFO ограничено пятью для этого cRio… а у нас 6 каналов по 10 сигналов и нам их нельзя мешать.
Вы сами решаете как данные добавлять в FIFO и как их извлекать. Можно сначала номер канала посылать, потом данные. И так для каждой точки. На уровне RT потом их разбирать. Или по одному каналу DMA посылать данные со всех каналов вперемешку, а по другому номера каналов. Тогда можно будет каждому измерению сопоставить канал.
Если данные не более 24 бит, то можно преобразовать их к 32 битам и в лишнем байте хранить номер канала. Потом разделять на уровне RT.
Придумать можно десятки вариантов.

Re: Error 61499 при компиляции FPGA

Добавлено: 19 окт 2021, 15:05
K0sinus
Спасибо за помощь!
Действительно, дело было в обработке массивов в tomeloop.
Решил проблему через Memory, а во внешнем цикле уже формировал массивы.
Наружу пока не передавал.