topic convolution in Welcome & Join
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/628642#M27922
<P>Hello everybody,</P>
<P> </P>
<P>I am trying to convolve a 16-bit input data stream with a Dirac Delta on a Xilinx Virtex 7.</P>
<P> </P>
<P>More specifically, instead of multiplying my input stream by a cosine in the time domain, I would like to convolve it with the following expression in the frequency domain:</P>
<P>F(f) = 0.5 * (delta(f - f0) + delta(f + f0))</P>
<P> </P>
<P>Does anybody have any idea about how to implement that ? Indeed, the only possibly interesting Xilinx IP core for my problem is the FIR Complier but I don't know how to represent my function F(f) as the 'coefficient' input of this IP core.</P>
<P> </P>
<P> </P>
<P>Thank you in advance</P>Mon, 25 May 2015 13:53:54 GMTueema2015-05-25T13:53:54Zconvolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/628642#M27922
<P>Hello everybody,</P>
<P> </P>
<P>I am trying to convolve a 16-bit input data stream with a Dirac Delta on a Xilinx Virtex 7.</P>
<P> </P>
<P>More specifically, instead of multiplying my input stream by a cosine in the time domain, I would like to convolve it with the following expression in the frequency domain:</P>
<P>F(f) = 0.5 * (delta(f - f0) + delta(f + f0))</P>
<P> </P>
<P>Does anybody have any idea about how to implement that ? Indeed, the only possibly interesting Xilinx IP core for my problem is the FIR Complier but I don't know how to represent my function F(f) as the 'coefficient' input of this IP core.</P>
<P> </P>
<P> </P>
<P>Thank you in advance</P>Mon, 25 May 2015 13:53:54 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/628642#M27922ueema2015-05-25T13:53:54ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/628894#M27940
If you want to implement convolution in frequency domain where it turns to an element wise multiplication you need to convert your input stream to frequency domain too (ie take DFT of the input) . Then implement an element by element multiplication and take IDFT of the result. You don't convolve F(f), you need to multiply with it. So<BR />y(t) = h(t) (*) x(t) where (*) is the convolution operator is the same thing as<BR />Y(f) = H(f) * X(f) where * is the element-wise multiplication operator and H(f) = F(f). Then time domain y(t) = IDFT(Y). Of course convolution of a length m data stream with a length n h gives you a length (m+n) data output but Y(f) is the same size as H and X so you need to run this through overlapping data streams. Read this for more info: <A href="http://en.wikipedia.org/wiki/Overlap%E2%80%93add_method" target="_blank">http://en.wikipedia.org/wiki/Overlap%E2%80%93add_method</A>Tue, 26 May 2015 06:40:46 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/628894#M27940muzaffer2015-05-26T06:40:46ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629086#M27990
<P><FONT color="#000000">Hello muzzaffer,</FONT></P>
<P> </P>
<P><FONT color="#000000">Thank you for your answer.</FONT></P>
<P> </P>
<P><FONT color="#000000">My input stream is already in frequeny domain (it went throught the FFT core v7.1). That's why I need to convolve it with F(f) and not simply multiply it by a cosine function.</FONT></P>
<P> </P>
<P><FONT color="#000000">I noticed that, mathematically, <SPAN>since the target convolution involves only Dirac Deltas, there may exist a shorter way to avoid the convolution by simply evaluating the input function at the point f0. But I have no idea about how to implement that neither ..</SPAN></FONT></P>
<P> </P>
<P><FONT color="#000000">Thank you in advance</FONT></P>Tue, 26 May 2015 10:25:10 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629086#M27990ueema2015-05-26T10:25:10ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629327#M28061
what is the actual linear operation you are trying to do on your raw data (before it goes through fft) ? <BR />Tue, 26 May 2015 15:38:25 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629327#M28061muzaffer2015-05-26T15:38:25ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629404#M28066
<P><SPAN>Actually my project is about the implementation of a QAM modulator in frequency domain. </SPAN></P>
<P> </P>
<P><SPAN>Therefore, I start receiving an input data stream and I map it using a QAM constallation. After rescaling, I have two 16-bit streams (I and Q components) which both go through the FFT 7.1 IP Core. </SPAN>Then, I filter it (I simply multipfy the output of the FFT with the filter coefficents).</P>
<P>At his point, I need to convolve my I and Q components with the Frourier transform of a cos and sin, respectively.</P>
<P> </P>
<P>I hope my explanation is clear but if it is not, feel free to ask any other specifications.</P>Tue, 26 May 2015 17:59:16 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/629404#M28066ueema2015-05-26T17:59:16ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/630097#M28165
<PRE> I would like to convolve it with the following expression in the frequency domain:
F(f) = 0.5 * (delta(f - f0) + delta(f + f0))</PRE>
<P>All you need is the FIR Compiler with this expression as your coefficients. This expression gives you a sequence of the form:</P>
<P> </P>
<P>{0.5, 0, 0, 0, 0, ... 0.5} where the number of zeros are dependent on the value of f0 and the frequency resolution of your independent variable, f.</P>
<P> </P>
<P>So that sequence will be what you use for the 'coefficient' channel. If you need to change 'f' at run-time, you can use the coefficient-reload capability of the core.</P>Wed, 27 May 2015 20:47:54 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/630097#M28165bwiec2015-05-27T20:47:54ZRe: convolution
https://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/630986#M28261
<P>Dear,</P>
<P> </P>
<P>I thank you for your answer. This should be solve my problem.</P>Fri, 29 May 2015 12:32:47 GMThttps://forums.xilinx.com/t5/Welcome-Join/convolution/m-p/630986#M28261ueema2015-05-29T12:32:47Z