Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

DSP slices in FPGA

engr_joni_ee

Advanced Member level 3
Advanced Member level 3
Joined
Nov 3, 2018
Messages
822
Helped
2
Reputation
4
Reaction score
7
Trophy points
18
Activity points
6,875
Hi, I am familiar with using dual port Block RAMs in Xilinx FPGAs. We usually generate the Block RAM IP Core in Xilinx Vivado and configure their ports, size and memory width etc. Then we instantiate the digital design to perform read/write operations between the digital design and the Block RAMs.

How do we work with DSP slices ? and do we also need to intentionally add in our design ? Do we also configure each DSP slice we need to add in our design and in what application we need to use DSP slices ?
 
Similarly to BRAM, you have two choices:
  • Instantiate via primitive/IP, and configure your DSP ports, pipelines and functions manually.
  • Instantiate via code/templates, and let the tool to instantiate the DSP for you.
Instantiating via IP is a bit more complicating than BRAM, you have to read and understand the DSP48 application note for your device, there are a lot of details to configure. But you may reach better performance/high frequencies if you do the correct configuration.

Instantiating via code is easier and more portable to other FPGAs. Basically, if you use a single multiply, the tool tends to use a DSP for integer multiplication. It is possible to describe pipelining and some constructs only by coding it, and the tool will probably recognize it, specially if you follow Xilinx templates. However, if your description is too complex, perhaps the tool cannot infer the DSP on the best way (for example, cascated DSPs with sum/multiplication/logic operation selected dinamically may be difficult to describe in a optimal way)

I suggest to look at DSP application note for yout specific FPGA (as example, for spartan 7: https://docs.amd.com/v/u/en-US/ug479_7Series_DSP48E1) and consult Vivado language templates on Tools/Language Templates.
 
Hi, I am familiar with using dual port Block RAMs in Xilinx FPGAs. We usually generate the Block RAM IP Core in Xilinx Vivado and configure their ports, size and memory width etc. Then we instantiate the digital design to perform read/write operations between the digital design and the Block RAMs.

How do we work with DSP slices ? and do we also need to intentionally add in our design ? Do we also configure each DSP slice we need to add in our design and in what application we need to use DSP slices ?
Working with DSP slices in Xilinx FPGAs is similar to using Block RAM. You set up them in Vivado, setting parameters such as operating mode and precision, and then use them in your HDL code. DSP slices are ideal for high-speed mathematical calculations. You'll find them extremely useful in digital signal processing, communications, image processing, control systems, and machine learning. They help to speed up your design by processing difficult computations efficiently.
 

LaTeX Commands Quick-Menu:

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top