Страница 1 из 1
Error 61499 при компиляции FPGA
Добавлено: 12 окт 2021, 14:54
K0sinus
Не могу разобраться, из-за чего возникает данная ошибка при компиляции FPGA на cRIO.
Иногда ошибки нет, но часто - возникает. Пробовал чистить битфайлы, пересоздавать билд - не помогает.
В какую сторону копать?
Что за skew такой?
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 пихать значение в регистр или фифо и потом в отдельном цикле его вытаскивать и в массив?
Зачем массив собирать? Скорее всего можно обойтись без него.
Вообще, Хранение данных в контролах/индикаторах - плохая привычка. Провода - наше всё
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, а во внешнем цикле уже формировал массивы.
Наружу пока не передавал.