Page 1 of 1

подсмотреть hdl код, возможно ли ?

PostPosted: 30 May 2014, 11:25
by toshas
Добрый день!

Иногда возникает вопрос насколько оптимально Labview преобразует ту или иную часть vi в HDL код.
В частности есть ощущение, что для достижения высокой тактовой частоты регистры ставятся куда надо и не надо.
Для общей производительности это некритично, а вот латентность сильно страдает.
Чтобы проверить когда и куда эти регистры подставляются очень желательно было бы посмотреть итоговый HDL код (verilog или vhdl).

Есть ли способы это сделать ?

Спасибо!

Re: подсмотреть hdl код, возможно ли ?

PostPosted: 30 May 2014, 12:44
by Borjomy_1
Пример в студию.

Re: подсмотреть hdl код, возможно ли ?

PostPosted: 30 May 2014, 13:17
by dadreamer
Если только ассемблерный код: http://www.labview-rus.blogspot.ru/2010/01/3.html В настоящее время даже DFIR-граф не посмотреть толком, NI не предоставляет средств для тонкой отладки, кроме тех, что в меню программы. Посмотрите также тему viewtopic.php?f=87&t=5877&p=48682 , может чем-то поможет.

Re: подсмотреть hdl код, возможно ли ?

PostPosted: 30 May 2014, 15:23
by Konstantin Sumenko
dadreamer, к FPGA модулю это имеет опосредованное отношение. За то куда ставятся регистры отвечает не LabVIEW, а маппер xilinx, соответственно нужен map report. Вообще один и тот же vhdl код может трассироваться в кристалле по-разному, пока укладывается в рамки заданных констрейнов или пока явно не указано куда ставить примитивы. Может быть зайти с другой стороны: в чем возникают проблемы?

Re: подсмотреть hdl код, возможно ли ?

PostPosted: 31 May 2014, 12:54
by toshas
Не совсем так, mapper только расставляет регистры, а вот есть они или нет, определяется в исходном коде.

А задача, которая у нас возникла, вполне конкретная, нужно захватить сигнал, выполнить ряд вычислений и вывести сигнал наружу.
При этом важна латентность, а т.к. fpga умеют делать несколько вещей одновременно выбран модуль на базе ПЛИС.
Функции ввода, обработки и вывода занимают много тактов и не позволяют тем самым использовать Timed Loop.
А при применении обычного Loop латентность неоправданно увеличивается на сдвиговом регистре на один период выполнения цикла.
Как нам кажется, это получается из-за дополнительной конвеирезации кода.
Вот поясняющие картинки:

1) в случае последовательного кода, время выполнения всего цикла 4 мкс (должно быть 5 мкс т.к. на нашем модуле myRio 2 мкс - ввод, 2.8 мкс - вывод, но это отдельный вопрос откуда 4)
и латентность сравнима ~ 5 мкс, что корректно

2) в случае параллельного кода, время выполнения всего цикла 2.5 мкс (соответствует времени вывода, как самого длительного процесса в цикле) это правильно.
а вот латентность стала 7 мкс, что больше, чем в случае последовательного кода и это странно, т.к. сам цикл выполняется быстрее.
фактически получается в данный момент идет вывод N-2 значения, N-1 хранится где-то в промежуточном регистре, а N измеряется.

Как с этим боротся пока неясно, на форуме NI тоже пока молчат.

За любые подсказки буду весьма благодарен!

Re: подсмотреть hdl код, возможно ли ?

PostPosted: 01 Jun 2014, 08:57
by Borjomy_1
проблемы могут быть с тактированием выполнения операций ввода- вывода, а не с регистрами программы. работа с модулем производится по spi интерфейсу + на борту модуля стоит своя fpga. поэтому на железную реализацию "записал-выдал" рассчитывать не стоит... может быть на ацп и цап стоят разные тактовые генераторы.