EmbDev.net

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


Author: Macellan Macellan (Company: ITU) (macellan)
Posted on:

Rate this post
0 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

Author: Lothar Miller (lkmiller) (Moderator)
Posted on:

Rate this post
0 useful
not useful
In VHDL to find the maximum value may look like this:
if akt_value > max_value then
   max_value <= akt_value;
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?

Author: Macellan Macellan (Company: ITU) (macellan)
Posted on:

Rate this post
0 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

Author: Gustl Buheitel (-gb-)
Posted on:

Rate this post
0 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.

Reply

Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [vhdl]VHDL code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]




Bild automatisch verkleinern, falls nötig