Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers

Beamforming

Altera_Forum
Honored Contributor II
2,562 Views

hi, 

 

I have a stream of 50 transducers and want to apply beamforming to the data coming from it. I have ADCs connected to each transducer. 

 

Q#1: DO i need to see for the ADC giving real and imaginary I and Q aprts or this is not important for the Beamforming? 

 

After the ADC, there are deserializers which give 8 bit output . Now i need to implement the beamforming. I want to design it for an aperture size of 8 and sampling frequency of 25Mhz. I want to apply simplest delay and sum beamforming. As far as i could study, the weights are same for the simplest kind. But i need to add delay which again i could understand is the phase delay or its the time delay?? 

 

Please if some one could help in implementing this basic beamformer using verilog.  

 

Also, I think i would need some kind of FIFO or registers at start of the beamformer to buffer all the data required, am i right? 

 

I shall be thankful for any basic implementation code or help.
0 Kudos
12 Replies
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

 

I have a stream of 50 transducers and want to apply beamforming to the data coming from it. I have ADCs connected to each transducer. 

 

--- Quote End ---  

What is a 'stream of 50 transducers'? I assume you mean you just have 50 transducers. 

 

 

--- Quote Start ---  

 

Q#1: DO i need to see for the ADC giving real and imaginary I and Q aprts or this is not important for the Beamforming? 

 

--- Quote End ---  

It depends on what you are sampling. If you are sampling the output of the transducer directly, then there are only real-valued samples. If your transducer includes a mixer, then the output of the mixer could be complex-valued, so then you would need real and imaginary samples. 

 

 

--- Quote Start ---  

 

After the ADC, there are deserializers which give 8 bit output . Now i need to implement the beamforming. I want to design it for an aperture size of 8 and sampling frequency of 25Mhz. I want to apply simplest delay and sum beamforming. As far as i could study, the weights are same for the simplest kind. But i need to add delay which again i could understand is the phase delay or its the time delay?? 

 

--- Quote End ---  

Your terminology is a little strange here. How many of the transducers do you want to phase up (usually it would be all of them)? How many beams do you want to form? 

 

 

--- Quote Start ---  

 

Please if some one could help in implementing this basic beamformer using verilog.  

 

--- Quote End ---  

Before you even start to code, you need to describe your system much better. 

 

What are your transducers? Ultrasonic, radio frequency? 

 

What frequency do they operate at? What is the transducer bandwidth? Eg., an ultrasonic device might have a 100kHz carrier with a 20kHz signal, whereas an array of radio receivers could have a 100MHz carrier and 20MHz bandwidth (or much higher). 

 

What is your ADC? 

 

Are you transmitting and receiving, eg., like a radar application, or is this a passive beamformer? 

 

Regarding whether the beamforming is a delay or phase-shift, it is a delay operation. If your bandwidth-to-carrier ratio (the Q of the system), is high, you might be able to treat delay (a phase slope in the spectral domain) as a phase-shift. This will cause a degradation in the result, but it might be acceptable. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

Please see the comments below: 

 

 

--- Quote Start ---  

What is a 'stream of 50 transducers'? I assume you mean you just have 50 transducers. 

 

Yes i have 50 transducers. 

 

It depends on what you are sampling. If you are sampling the output of the transducer directly, then there are only real-valued samples. If your transducer includes a mixer, then the output of the mixer could be complex-valued, so then you would need real and imaginary samples. 

 

I assume that system samples the direct output from the transducer, but i will confirm it again. 

 

Your terminology is a little strange here. How many of the transducers do you want to phase up (usually it would be all of them)? How many beams do you want to form? 

 

Yes i thnk all transducers need to be used and upsampled. I want to form beams i thnk it would be 42 as my aperture size is 8. 

 

Before you even start to code, you need to describe your system much better. 

 

What are your transducers? Ultrasonic, radio frequency? 

 

My transducer is ultrasonic. 

 

What frequency do they operate at? What is the transducer bandwidth? Eg., an ultrasonic device might have a 100kHz carrier with a 20kHz signal, whereas an array of radio receivers could have a 100MHz carrier and 20MHz bandwidth (or much higher). 

 

I need to fiz this as the sampling frequency is set to some 25Mhz. 

 

What is your ADC? 

 

Are you transmitting and receiving, eg., like a radar application, or is this a passive beamformer? 

 

I am receivign and i have to implement beamformer at the reception. 

 

Regarding whether the beamforming is a delay or phase-shift, it is a delay operation. If your bandwidth-to-carrier ratio (the Q of the system), is high, you might be able to treat delay (a phase slope in the spectral domain) as a phase-shift. This will cause a degradation in the result, but it might be acceptable. 

 

I don't get the above comment although i understand that i have to just delay the samples by certain amount. How do we select some algorithm for the delay calculation? I thnk once i have the delays, i just need to apply that on the input signals. I have data set which has 1024 samples from each transducer. So, i have a matric which has 1024 samples from each transducer. Now i just will move the aperture and apply delays and then form scan line from application of delay and sum beamforming to each aperture. 

 

Please correct me in any point i tried to explain above.  

 

Thankyou for the discussion and help. 

 

Cheers, 

Dave 

--- Quote End ---  

0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

You might want to go back and edit your last post. Its very difficult to read.  

 

You should put my comments in  

--- Quote Start ---  

and [ \QUOTE] blocks, and leave yours outside those blocks. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

 

I assume that system samples the direct output from the transducer, but i will confirm it again. 

 

--- Quote End ---  

 

Given they are ultrasonic transducers, then its likely they are sampled directly. In that case, you have real-valued samples. 

 

 

--- Quote Start ---  

Yes i thnk all transducers need to be used and upsampled. I want to form beams i thnk it would be 42 as my aperture size is 8. 

 

--- Quote End ---  

Again, you've got some strange terminology going on here; 'upsampled' usually refers to resampling of data, which in this case, you could use to implement delays (on the resampled data). 

 

The last comment 'it would be 42 as my aperture size is 8' is confusing. 

 

Your synthesized beamwidth will be determined by your physical arrangement of transducers and the weighting function you apply to the beam. For example, is it a linear array of 50 transducers, or is it a 2D array? If its a linear array, and you sum all the beams with equal weight, then you have a beam with a sinc-function like response in the angular domain. You can create 42 of those beams by inserting delays between the individual element outputs and the summing operation. 

 

If you can provide details on the signal carrier and bandwidth, I can comment on whether your 25MHz ADC is too fast; it likely is, but you can demodulate and digitally filter your signal without changing the ADC design. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

Again, you've got some strange terminology going on here; 'upsampled' usually refers to resampling of data, which in this case, you could use to implement delays (on the resampled data). 

--- Quote End ---  

 

 

Regarding the above comment.........if i have an aperture size of 8 and i have to apply them on 50 transducer elements, then i apply beamforming to 8 transducers and then shift my aperture by one and then apply Beamforming again and thus we keep on doing this till we shift aperture 42 times to cover whole 50 elements of the transducer. 

 

Yes i think i did mistake in writing upsampling, i meant phase shift or delay application. 

 

Please explain the sinc function like response thing again? I have a linear array of 50 transducers with 8 as my aperture size to calculate the beamforming. 

 

Also, does equal weight means no weight, or there is some weight calculation to be performed? If yes, how will i have to determine the algorithm for that? 

 

I have some issues regarding the DC offset removal, but i just thought to implement the beamformer in verilog first and then go for the filtering after the ADCs. 

 

0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

 

if i have an aperture size of 8 and i have to apply them on 50 transducer elements, then i apply beamforming to 8 transducers and then shift my aperture by one and then apply Beamforming again and thus we keep on doing this till we shift aperture 42 times to cover whole 50 elements of the transducer. 

 

--- Quote End ---  

Ah, so the confusion here is the use of the same term in two different applications; apertures (receiver elements) and apodization (windowing or weighting). 

 

If you are only applying your weighting function to 8 elements, then your windowing function has only 8 non-zero values. 

 

 

--- Quote Start ---  

 

Please explain the sinc function like response thing again? I have a linear array of 50 transducers with 8 as my aperture size to calculate the beamforming. 

 

--- Quote End ---  

The beampattern of a single receiver element is the Fourier transform of its illumination function. Assuming each receiver element receives sound uniformly across its surface, you can think of it as being a rect() function in units of distance. The Fourier transform of this rect() function is a sinc() function beam response. 

 

The beampattern or an array of receiver elements is the Fourier transform of its illumination function multiplied by that of the individual receiver response. So if you sum up all your receivers with equal weighting, you get a much narrower sinc function multiplied by the wide sunc function of the receiver element. You can steer the narrow beam within the large beam by delaying before summing. 

 

But you should know this already, right? 

 

 

--- Quote Start ---  

 

Also, does equal weight means no weight, or there is some weight calculation to be performed? If yes, how will i have to determine the algorithm for that? 

 

--- Quote End ---  

Equal weight means a weight of 1. In your 8 element case, you could model it as a window function with 50 weights (one for each receiver element), of which 42 are zero, and 8 are 1. 

 

The design algorithm you are looking for is a window design algorithm. The same algorithm you would design an FIR filter with. 

 

 

--- Quote Start ---  

 

I have some issues regarding the DC offset removal, but i just thought to implement the beamformer in verilog first and then go for the filtering after the ADCs. 

 

--- Quote End ---  

DC removal can be done in the FPGAs. However, since you are sampling so much higher than your ultrasonic signal bandwidth, your digital filters can be designed to remove DC. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

If you are only applying your weighting function to 8 elements, then your windowing function has only 8 non-zero values. 

--- Quote End ---  

 

 

Could you explain this again? 

 

I understand that why are we actually applying the window. As the narrower the window is the more we can capture the area. 

 

The FIR filter you discussed is the one that we would need for the DC removal, right? So we first have to apply the FIR filter and then the beamforming and both follows the same window based design. right? 

 

I think i am pretty much sure of the design. I should specify it exactly first. 

 

Thankyou dave.
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

Could you explain this again? 

 

--- Quote End ---  

 

Lets say the signal from receiver n, sample m is called r[n,m], then the output of your beam-former without any delay (no steering) is 

 

out[m] = sum_n w[n] r[n.m] 

 

which says that each receiver r has a weighting function w. This weighting function is exactly like a FIR filter coefficient response, but it is described in terms of spatial units, eg. 50 receivers of width D are used to create an array of receivers of width 50*D. If 8 of those receivers are summed to create a beam, then the synthesized receiver has a width 8*D. The beampattern of that 8 element response is the Fourier transform of the weighting function, eg., if all the weights are 1, then the beam is a sinc() function, or if all the weights are those of a Hanning window, then the beam is that of the Fourier transform of a Hanning window, with sidelobes down at the level of a Hanning window. 

 

 

--- Quote Start ---  

 

I understand that why are we actually applying the window. As the narrower the window is the more we can capture the area. 

 

--- Quote End ---  

The narrower the window or the fewer receivers you use, the wider the beam. You're better off to as as many receivers as you can, and control the beam shape using the window function. 

 

 

--- Quote Start ---  

 

The FIR filter you discussed is the one that we would need for the DC removal, right? So we first have to apply the FIR filter and then the beamforming and both follows the same window based design. right? 

 

--- Quote End ---  

Right, you can use the same window design software. For the receiver elements, you can indicate that you have 50 elements and that you want a specific radiation sidelobe level, and design a window function. For the samples you would design an FIR filter to preserve the signal spectrum of interest. 

 

 

--- Quote Start ---  

 

I think i am pretty much sure of the design. I should specify it exactly first. 

--- Quote End ---  

Yes. Document the design, and upload the PDF. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

Thankyou Dave , i think i need to sum up all the information and then lets see where i land.....also i will clear up about the signals bandwidth and the amount of side lobe reductions to get started and done with the filter specifications too. 

 

Thankx again.
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

 

i think i need to sum up all the information and then lets see where i land.....also i will clear up about the signals bandwidth and the amount of side lobe reductions to get started and done with the filter specifications too. 

 

--- Quote End ---  

OK. If you can post the material here to the group for everyone to read and review, that would be great. If you can't, just email it to the address given by my Altera forum name, and I'll take a look. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

could you please also explain apodization? We are doing beamforming to exagerate the main lobe and aren't the side lobes being supressed by it? or still we need apodization to reduce the side lobe? If yes, please explain in general terms what is it exactly?

0 Kudos
Altera_Forum
Honored Contributor II
1,524 Views

 

--- Quote Start ---  

could you please also explain apodization? We are doing beamforming to exagerate the main lobe and aren't the side lobes being supressed by it? or still we need apodization to reduce the side lobe? If yes, please explain in general terms what is it exactly? 

--- Quote End ---  

 

 

You aren't performing the apodization (windowing) of the receiver responses to exagerate the main lobe, you are applying the apodization to reduce the sidelobes, and that has the side-effect of increasing the main-lobe width. To compensate for this, you can obtain a narrower main-lobe, by adding more receiver elements. 

 

The relationship between the increase in mainlobe width relative to the window function can be calculated using tools like MATLAB. The paper by Harris 1978 has a number of standard windows. It looks like Wikipedia has an explanation as well as a link to the Harris paper: 

 

http://en.wikipedia.org/wiki/window_function 

 

http://web.mit.edu/xiphmont/public/windows.pdf 

 

Cheers, 

Dave
0 Kudos
Reply