Как найти амплитуду и частоту входящего синусоидального сигнала (аналогового) в VHDL - PullRequest
0 голосов
/ 25 октября 2019

В моем приложении есть входящий синусоидальный сигнал, и мне нужно найти его частоту и амплитуду с помощью VHDL-кодирования. Это невозможно синтезировать, поскольку мы не реализуем его на ПЛИС.

До сих пор я использовал функцию "MAXIMUM" VHDL для нахождения амплитуды. В тестовом стенде я успешно генерирую синусоидальную волну, и поэтому в своем исходном коде я использую функцию максимума. Но проблема в том, что я получаю не одно значение, а несколько.

Вот пример моего кода:

--in the entity 
(input_sine : real;
    Amp_out : real;
    frq_out : real);
end entity;

--in the architecture,

signal S_amp : real := 0.0;

process

begin 

  Amp_out <= MAXIMUM(input_sine, S_amp);

  wait for 1 us;

end process; 

Я ожидаю, что на выходе будет только одно значение, то есть максимальная амплитудазначение входной синусоидальной волны. А также найти его частоту. Я не уверен, как поступить, и я не с этой максимальной функцией. Итак, кто-то, пожалуйста, помогите мне с этим.

Заранее спасибо.

1 Ответ

4 голосов
/ 25 октября 2019

Функция VHDL MAXIMUM возвращает максимальное (то есть большее) значение своих двух входов. Ваши два входа - input_sine и S_amp, что всегда равно 0,0. Таким образом, Amp_out будет равно input_sine, когда input_sine положительно, и 0,0, когда оно отрицательно.

https://www.edaplayground.com/x/4nsb

Найти максимальное значение input_sine (то есть егоамплитуду) и ее частоту, вам придется написать некоторый код. Это язык описания оборудования, а не Matlab.

...