Forum Discussion
Altera_Forum
Honored Contributor
15 years agoBeamforming
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.12 Replies
- Altera_Forum
Honored Contributor
--- 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 - Altera_Forum
Honored Contributor
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?
- Altera_Forum
Honored Contributor
--- 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 - Altera_Forum
Honored Contributor
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. - Altera_Forum
Honored Contributor
--- 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 - Altera_Forum
Honored Contributor
--- 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. - Altera_Forum
Honored Contributor
--- 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 - Altera_Forum
Honored Contributor
--- 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. - Altera_Forum
Honored Contributor
--- 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 - Altera_Forum
Honored Contributor
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