EmbDev.net

Forum: FPGA, VHDL & Verilog Findign max value in continuous data stream


von Macellan M. (Company: ITU) (macellan)


Rate this post
useful
not useful
Hi everybody

I want to build an analog signal sampler system on a spartan 3A fpga 
(AES220B fpga board). The critical part is how to identify the max/peak 
values. The signal has random behaviour. I mean there are random peaks 
and I want to "detect" them. Can anoyone make some suggestions how to 
achieve to find them in a continuous signal stream.

Thanks in advance

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
In VHDL to find the maximum value may look like this:
1
if akt_value > max_value then
2
   max_value <= akt_value;
3
end if;

What HDL do you use?
Is your value signed or unsigned?
What speed do you get samples?

Macellan M. wrote:
> I mean there are random peaks and I want to "detect" them.
Define "detect them". You must know the time/position of all those 
values with the very same value as the maximum value?
Best would be to show a picture of that signal and point to the "peaks" 
to be detected.

> The critical part is how to identify the max/peak values.
What happens to those peaks aftwerwards?

von Macellan M. (Company: ITU) (macellan)


Rate this post
useful
not useful
Dear IkMiller

I have a similar idea as you stated but this continuous data stream made 
me some confused.

Data comes from an analog digital converter chip connected to a 5 us 
width analog signal. By means of peak, it is the heighest voltage level 
or biggest value coming out of ADC chip.

I'm new at fpga design so does (un)signed or std_logic_vector make any 
difference?

I'm planning to sample the signal at 5 MHz speed using a VHDL design.

When I got the peak values I want to count and order the numbers for 
256/512 different channels. This is called pulse height analysis.

What I thought before is store some part of the continuous stream (1000 
values)  find the peak and do other stuff. This is a time window. But 
what if the peak appears on the edge of the window? So this doesn't look 
reasonable to me. Searching for a method to do this...

Thanks in advance

von Gustl B. (-gb-)


Rate this post
useful
not useful
We are doing this with radioactivity pulses. The Task is to detect a 
local maximum as i guess you want as well. So like in school math you 
could calculate the numerical derivation, and check if it changes in 
sign. To suppress noise you should also build in some kind of threshold.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.