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

Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 12 апр 2020, 22:20
K0sinus
Первый опыт с RealTime, формирую импульсы в fpga target sbRio, там же хочу на них посмотреть. Ожидание/реальность сильно отличается. Если запускать vi просто на компьютере, алгоритм работает как надо, импульсы ровные, синхронные. Почему на sbRio не так? Или я теряю по TCP?

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 00:28
Kosist
А как Вы их читаете с sbRIO? Цикл в FPGA исполняется с дефолтным таймингом (какая его частота?). И чтобы нормально видеть пульсы, нужно читать их с правильной частотой (10х большей чем генерируемый сигнал, если я не ошибаюсь). Если FPGA использует clock на 40 MHz, то красивый график Вы не увидите, насколько я понимаю...

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 07:58
K0sinus
Да, частота 40 МГц. То есть, на компьютере невозможно правильно считать импульсы с fpga? Нет никакого способа? Только осциллографом?

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 09:51
Kosist
А зачем считывать импульсы, которые Вы генерируете? Если бы было наоборот - если бы FPGA читало импульсы - то тогда более понятно... А так - какая цель, зачем эта информация нужна в приложении? Просто хочеться понять логику - может окажется, что читать все эти импульсы и не обязательно..
Предполагаю, что Вы читаете состояние DIO линий при помощи того кластера, т.е. используя Read/Write Control функцию. А это тоже чревато тем, что нельзя гарантировать, что Вы читаете все данные - ведь контрол постоянно перезаписывается, как написано здесь https://zone.ni.com/reference/en-XX/hel ... _transfer/. Для точного чтения нужно использовать FIFO DMA, чтобы все данные сохранялись. Но в Вашем случае данных будет очень много, нужно хорошенько оптимизировать код потом... Но все равно, даже если будете читать 40М данных за секунду (а нужно читать больше, по-сути), то Вам не нужно такое количество точек на чарте, Вы ничего не увидите потом. Плюс ко всему, и памяти это будет потреблять очень много. Просто проэкспериментируйте - на хосте создайте массив 40 миллионов точек, как Вы это делаете для генерации импульсов, и запишите их на чарт. Но при этом, установите Chart History Length на соотвествующее число, чтобы видеть все точки. Увидите, что произойдет... :crazy:

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 09:57
K0sinus
А зачем считывать импульсы, которые Вы генерируете?
Чтобы проверить работу контроллера и алгоритма на этом контроллере. Изначально программа была другая, с более сложным алгоритмом. Возникло подозрение, что sbRio даёт неправильные импульсы, поэтому и начал разбираться - смотреть их в программе. Дошло до того, что упростил код до данного примера, чтобы разобраться хотя бы с одним импульсом.
Как я понял, алгоритм лучше проверять на обычной vi или в режиме симуляции, а как оно работает на самом контроллере, так просто не проверить?

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 10:36
Kosist
Если хотите проверить, что действительно генерирует sbRIO - лучше используйте осциллограф. Т.к. алгоритм может быть правильный, но тестируя обычную виайку Вы не проверите реальный тайминг, который используется FPGA.

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 10:53
Artem.spb
[quote=="K0sinus"] так просто не проверить?[/quote]
что есть "просто"?
Правильный вариант проверки - внешним устройством. Осциллографы рулят :)
Ещё вариант - подключить выход ко входу и в параллельном цикле смотреть, что идёт. Но на предельных скоростях может таки сдвигаться. Ну и прочитанные данные, как уже верно сказано, надо через FIFO гнать

Re: Пропуск/задержка/поломка импульсов в sbRio

Добавлено: 13 апр 2020, 11:22
K0sinus
Понял, учту в будущем. Благодарю за своевременные ответы!
Просто во всех примерах про FPGA пихают всякие индикаторы и смотрят, всё ли работает - я без задней мысли и решил посмотреть графики....