Dimitar H. Marinov
Dimitar H. Marinov
  • Видео 4
  • Просмотров 39 405
FPGA and DSP Ep. 4: Polyphase Filters
#fpga #vhdl #xilinx #digitalsignalprocessing
Designing a multiplier-efficient Polyphase filter in VHDL
Timestamps
00:00 Introduction
00:33 Sampling Rate Conversion overview
00:53 Sampling Rate Conversion example
01:58 Sampling Rate Conversion application
02:24 Polyphase Interpolation
05:08 Polyphase Decimation
07:15 Interpolator Optimization
08:28 Decimator Optimization
09:27 The code
11:06 Testing
13:31 Conclusion
Sources and References
[1] VHDLwhiz
vhdlwhiz.com/
[2] This is just a theoretical example. In reality, you would like the sampling frequency to exceed the maximal input frequency by more than 2 times. Hence, it would be more realistic to reduce the bandwidth 3 times at most. Nevertheless, it a...
Просмотров: 4 544

Видео

FPGA and DSP ep. 3: Halfband FIR Filters
Просмотров 4,2 тыс.3 года назад
#Xilinx #FPGA #DSP Implementation and testing of a halfband FIR filter. References: [1] Richard G. Lyons, “ 10.12 Sample Rate Conversion with Half-band Filters” in Understanding Digital Signal Processing [2] Xilinx, “UG479 7 Series DSP48E1 Slice” Code: github.com/DHMarinov/Parallel_Halfband_FIR_Filter Coefficient translator: github.com/DHMarinov/Coefficient-Translator Ep. 1 Parallel FIR: ruclip...
FPGA and DSP ep. 2: Implementing a folded FIR filter on FPGA
Просмотров 6 тыс.3 года назад
#Xilinx #FPGA #DSP #FIR This video is meant to improve the previously discussed filter that uses one multiplication per coefficient. The result is almost double reduction in the amount of multiplier used. Hence the previously discussed 60-tap filter can now be implemented with only 30 multipliers. Episode 1: ruclips.net/video/_1LlX-V5yCA/видео.html [1] www.xilinx.com/support/documentation/selec...
FPGA and DSP ep. 1:Efficient parallel FIR filter implementation on FPGA
Просмотров 24 тыс.3 года назад
#FPGA #DSP #Xilinx #FIR Description Implementing an efficient parallel FIR filter in VHDL. The implementation is aimed at the Xilinx 7 families. References [1]Xilinx, “UG479 7 Series DSP48E1 Slice” [2] Udo Zӧlzer, ”1.3.3 Digital systems” in DAFX: Digital Audio Effects [3] R.Woods, J.McAllister ,G.Lightbody, “8.4 Pipelining DSP System ” in FPGA-based Implementation of Signal Processing Systems [...

Комментарии

  • @patrickcs
    @patrickcs 3 месяца назад

    Thank you, most interesting and inspiring. Will have to watch again to get all the details. Then try a simple filter. 👍👍👍👍

  • @emielv7677
    @emielv7677 6 месяцев назад

    I've got a dsp exam this friday and I actually understood everything you did here. Very cool, finally the implementation makes sense now too

  • @anishmgeorge207
    @anishmgeorge207 7 месяцев назад

    Can you please give me some applications where we can apply FIR filters of this kind(using the DSP48E1)?

  • @aaron-dsp-fpga3931
    @aaron-dsp-fpga3931 8 месяцев назад

    This is probably the best presented video on multirate processing I've seen. Concise and easy to understand. Great stuff

  • @nebaem
    @nebaem 9 месяцев назад

    cristal clear, short = great ... Thank You

  • @wangjack9641
    @wangjack9641 10 месяцев назад

    VERY GOOD

  • @ericksonramos4622
    @ericksonramos4622 Год назад

    Thank you for taking your time to create this series. This is GOLD.

  • @icekw
    @icekw Год назад

    Awesome video and great website!

  • @brajkishorrajput9238
    @brajkishorrajput9238 Год назад

    Design and Analysis High Throughput and efficient FIR Filter in dsp so please share your any Contact details sir

  • @nikolaykostishen6402
    @nikolaykostishen6402 Год назад

    Thanks!

  • @nikolaykostishen6402
    @nikolaykostishen6402 Год назад

    Thanks!

  • @nikolaykostishen6402
    @nikolaykostishen6402 Год назад

    Thanks!

  • @nikolaykostishen6402
    @nikolaykostishen6402 Год назад

    Thanks!

  • @georgetroulis
    @georgetroulis Год назад

    These videos are awesome! I'm studying DSP right now and I would like to try these examples on my FPGA. Would be interested in more such videos, and an explanation of your hardware setup :)

  • @bepositive3514
    @bepositive3514 2 года назад

    How can i convert my coefficients to fixed point binary?

    • @DimitarHMarinov
      @DimitarHMarinov 2 года назад

      Hi, if you're using my coefficient converter, you can select the binary option and the desired bit-width.

  • @adamfranklin3129
    @adamfranklin3129 2 года назад

    I believe something is wrong with the HDL. The A registers of the DSP slices are not being inferred (except areg[0], very apparent in your RTL schematic). Am I missing something here?

    • @DimitarHMarinov
      @DimitarHMarinov 2 года назад

      Yes, I just checked to be sure. What you have found is correct - the RTL will infer only the first areg. I guess Vivado decided the other registers are not needed. Nevertheless, you should get the correct result when you run the implementation.

  • @CazzClicks
    @CazzClicks 2 года назад

    Thanks for this video! Realization and Application of LPF Through FPGA, a webinar organised by DSD, Digital System Design: ruclips.net/video/OWwBluoseck/видео.html

  • @CazzClicks
    @CazzClicks 2 года назад

    Thanks for this video! Realization and Application of LPF Through FPGA, a webinar organised by DSD, Digital System Design: ruclips.net/video/OWwBluoseck/видео.html

  • @blue007Guitar
    @blue007Guitar 2 года назад

    Amazing work! I'm new to FPGA-based implementations, and I'm currently working on an FPGA Audio DSP for a university project. I would greatly appreciate it if you could tell me if using your approach would enable me to implement multiple FIR filters on Digilent's Zybo Z7 Development Board (it's based on Xilinx Series 7000 FPGA). Thank you very much!

    • @DimitarHMarinov
      @DimitarHMarinov 2 года назад

      Hi, yes you can use it, however, for audio, it's better to implement the filters sequentially. Otherwise, you're going to use too many resources. Hope that was helpful.

  • @jonoldroyd3885
    @jonoldroyd3885 2 года назад

    Nice series with good explanation. Can't wait to see your next content 🙂

  • @ms.rchitra9641
    @ms.rchitra9641 2 года назад

    can you plz tell how to install coefficient translator?

  • @m1geo
    @m1geo 3 года назад

    Useful. Thanks!

  • @m1geo
    @m1geo 3 года назад

    Useful. Thank you.

  • @madd1magnum
    @madd1magnum 3 года назад

    Very Understandable video! Thanks!

  • @weicheng5939
    @weicheng5939 3 года назад

    Thanks for the informative tutorial !

  • @SiyaDante
    @SiyaDante 3 года назад

    Hey, you can use this two functions to convert real values (in your case the coefficients) to fixed point values which makes the code easier to read later since you will have the real coefficient values written in the VHDL code instead of 2's complements. The first one gives you an unsigned output and the second one gives you a signed one, which ever you need. I think the functions are self explanatory but if there is any confusion, let me know. library IEEE_PROPOSED; use IEEE_PROPOSED.FIXED_PKG.ALL; function f_uFixDt ( i_Arg : real ; i_Total_Bits : integer ; i_Fractional_Bits : integer ) return Unsigned is begin return UNSIGNED(to_slv(to_ufixed(i_Arg, i_Total_Bits - i_Fractional_Bits - 1, -i_Fractional_Bits))) ; end function f_uFixDt ; function f_sFixDt ( i_Arg : real ; i_Total_Bits : integer ; i_Fractional_Bits : integer ) return Signed is begin return SIGNED(to_slv(to_sfixed(i_Arg, i_Total_Bits - i_Fractional_Bits - 1, -i_Fractional_Bits))) ; end function f_sFixDt ; Also for testing your system you might wanna simulate it which is a lot easier than real life implementation before you actually go to hardware. I always somehow generate an arbitrary input signal in matlab (also might be the record of a real life signal) and do the fixed point calculations there and when I'm satisfied with the results, I do the same thing on the VHDL side, which is basically giving the input signal we used in matlab (saved on a text file) to the VHDL code in simulation and watching the output or even better, saving the output to a text file and giving it to matlab to compare it to its own output of the first stage we did before. Almost always the output of the matlab and the VHDL should be exactly identical.

  • @andax2007
    @andax2007 3 года назад

    Thank you for a nice video. Have you looked into efficient filter structures where the samples are not presented each clock cycle but are presented in blocks of samples (such as 8 or 16 samples at a time), as normally when you have a high sample rate?

    • @DimitarHMarinov
      @DimitarHMarinov 3 года назад

      I haven't looked into this scenario in paricular, however, adding an enable signal to the design could help in this case i.e. you enable the filer only when there is data available. Unless these 8 or 16 samples arrive at each sampling clock - then you would need a slightly different solution :D

    • @andax2007
      @andax2007 3 года назад

      Hi, I was thinking in the case of 8 or 16 samples arriving at each sampling clock. The straight forward solution is to just have 8 or 16 parallel filters running (each filter shifted one sample), but it consumes quite a bit of DSP-blocks then. But the folded structure is nice, then you cut the needed DSPs in half.

    • @DimitarHMarinov
      @DimitarHMarinov 3 года назад

      @@andax2007 I see, the most obvious solution is to increase the filter Fs, but that's not always feasible. Otherwise I would probably go for a solution similar to yours. Nevertheless it would require a bit more thinking :D. I could look into that in the future.

    • @DimitarHMarinov
      @DimitarHMarinov 3 года назад

      @@andax2007 Actually, you can also use a polyphase filter, but that implies that you would have to decimate the data as well. You can check out Chapter 10 from Understanding DSP.

  • @hjups
    @hjups 3 года назад

    Very cool! Have you played around with the underflow / overflow detection? That was one thing that I could never quite wrap my head around. I have recently been playing around with squeezing as much logic out of the DSP48 slices as possible. For example, you could use a single DSP48 to implement most of the ALU functions on a 32-bit softcore CPU (addition, subtraction, logic ops, and result zero testing / comparison). You can also map the inputs to perform dual MACs {A*B+C, A*D+E} simultaneously, if A=7-bits and B,D = 8-bits. Similarly, you can perform true dual MACs {A*B+C, D*E+F} if you restrict A,B,D,E to 5-bits. Those configurations are for unsigned MACs though, I haven't looked at how signed maps (it might cause some weird results with 2's complement spilling over to the upper range).

    • @DimitarHMarinov
      @DimitarHMarinov 3 года назад

      Hi, yeah, I managed to make the underflow / overflow detection work but didn't find it very useful.

  • @aymen_dh2499
    @aymen_dh2499 3 года назад

    Thx for the tutorial. Can you please add the tb files to the github folder. Thank you again!

    • @DimitarHMarinov
      @DimitarHMarinov 3 года назад

      Hi, the tb is a work in progress and will take a while before being ready for the public.

  • @knki_95
    @knki_95 3 года назад

    Dimitar many thanks for your tutorials, it is very informative. The same should work with artix a35t right ?

  • @sandeepkumarravirala7028
    @sandeepkumarravirala7028 3 года назад

    How to do this in verilog

  • @43691000
    @43691000 3 года назад

    Great!