Благодаря высокой чувствительности и точности, средства контроля, основанные на применении корреляционно-акустического метода, находят применение в том числе и при поиске утечек на магистральных нефтепроводах. При этом такие течеискатели могут быть реализованы и как портативные устройства, и как стационарные системы для непрерывного контроля с обязательной цифровой обработкой. Последнее особенно актуально на подводных переходах нефтепроводов, а также переходах нефтепроводов через железные и автодороги.
В современном мире сложно представить выполнение цифровой обработки сигналов без использования быстрого преобразования Фурье (БПФ).
Преобразование Фурье позволяет выполнить переход от временной области сигнала к частотной, т. е. получить его спектр. Стоит отметить, что классическое преобразование Фурье предъявляет к колебанию требование о его непрерывности. В цифровых сигналах, представляющих собой набор отсчетов или же конечную последовательность, говорить о непрерывности не приходится. Поэтому, чтобы получить спектр дискретного сигнала, прибегают к дискретному преобразованию Фурье (ДПФ), а точнее, к более упрощенной его реализации БПФ или так называемой «бабочке».
БПФ представляет собой набор трех операций — сложение, вычитание и умножение. Имея на входе поток данных и правильно применяя перечисленные операции, можно с довольно большой точностью получить частотное представление сигнала.
В качестве программных функций будем использовать IP-функцию БПФ, функции ввода и вывода данных для языка Verilog, а также самостоятельно написанную функцию БПФ для C++:
fft (u0) — IP-функция БПФ в САПР Quartus;
fread — функция чтения потока данных из файла;
fwrite — функция записи выходных данных в файл;
FFT — функция, реализующая алгоритм БПФ в Visual Studio.
Также хотелось бы отметить, что для объективной оценки, а также для отображения физической сути алгоритма используется визуализация данных в виде графиков в программе Excel. На входе имеется поток данных, который следует разбить пополам. Сам алгоритм заключается, как уже было сказано, в складывании и вычитании их половин, одна из которых помножается на поворачивающий множитель. После такой обработки всех отсчетов последовательности (в данном случае их 1024) данные с выхода первой бабочки снова разделяются на две половины и отправляются на вход следующей.