Login / Signup

Getting started with FPGA DSP designs

  • user warning: Table './devemc/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1422533435 AND uid = 0 in /home/devemc/public_html/dev/includes/session.inc on line 157.
  • user warning: Table './devemc/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1422533435 AND s.uid > 0 in /home/devemc/public_html/dev/modules/user/user.module on line 790.
FPGA DSP design

Getting started with FPGA DSP designs is simple!
Normal computer systems use microprocessors which execute software instructions to perform a wide variety of tasks. However, embedded systems typically take advantage of microcontrollers, field programmable (FPGA) or application specific (ASIC) technologies to become more efficient at executing their specific functions. In the FPGA space there are a few companies like Altera and Xilinx that produce development packages that allow designers to bring their ideas to life. Designs can be rapidly prototyped on FPGA’s and if desired, hardcopies which have some benefits over reprogrammable chips can be created.

Typical Embedded System

This paper will explore a development package from Xilinx and one from Altera. A quick introduction to the design tools included within each package will be presented and general starting instructions will be given. Often, embedded systems are mass produced so cost is a major concern. Usually there is no need for high performance hardware.

Design Flow

Processing speed or memory size can be sacrificed for cost. There are many new devices that deliver a wide range of performance. For example, the Xilinx Virtex-II FPGA which has up to 8 million system gates is extremely powerful and can be used in applications like DSP or real time control. On the other hand an Altera Cyclone-II FPGA delivers 1000 logic elements for just $0.64 and can be used for less demanding applications. Embedded systems are usually light and small in size and due to their simpler architecture are safer and more reliable. Also, since embedded systems are fully customized they are more efficient meaning less electrical power is needed to perform their tasks. This also means that it is easier and sometimes not even necessary to provide cooling to the system. From the business point of view, a good solution is one that is developed quickly and inexpensively, as well it should be upgradeable. In many cases the marketing department sells an idea before it’s even developed. Fortunately, Xilinx and Altera have created software tools and hardware devices that drastically reduce the time to market as well as the design costs. With these tools, one can quickly design a processor, add peripheral cores, interconnect them using a bus, debug the whole system and finally implement it on hardware. Some argue that CAD programs can produce inefficient and unnecessarily large code. This may be true for basic applications, however when it comes to larger and more complicated designs even a superior engineer is incapable of dealing with all the complexities. Therefore using software like the Altera Quartus-II or Xilinx EDK and Platform Studio, designs can be developed with little time and effort at minimal non-recurring engineering costs. Typically embedded systems are used to implement signal processing algorithms or control laws and therefore are perfect for applications such as automotive, consumer electronics, test equipment, or real-time control systems. It is very common that these systems are implemented or at least developed on FPGA’s and soft processors. For any multimedia applications, Xilinx has come up with a great development package that can be purchased for $1400.

Xilinx Multimedia Board

It includes a fully loaded development board, ISE (evaluation version) and EDK development software, Power Supply, Ethernet Cables (Straight & Cross over), RS 232 Cable, Xilinx Parallel-4 Cable, SVGA Cable, and Compact Flash. It also comes with excellent documentation, user guides and design examples. The board itself is equipped with a Virtex-II XCV2000-FF896 FPGA, SVGA output, onboard network connection ,10/100 Ethernet, with a unique MAC address assigned to each board, RS232 port, button cell battery to support FPGA configuration data encryption, embedded SystemACE controller for high-speed FPGA configuration, keyboard and mouse, integrated power supplies, audio CODEC compliant with AC97 and stereo amplifier with 18-bit sigma-delta A/Ds and D/As, speaker output with adjustable volume, headphone and microphone, 10 pushbuttons as user inputs to the board, and two DIP switches with two LEDs for visual feedback. It supports a single channel of real time PAL or NTSC video output composite S-Video (Y/C) format and RGB simultaneously, and a single channel of real time PAL or NTSC video input in either composite or S-video (Y/C) format, as well five independent banks of 512K x 36bit 130MHz ZBT RAM with byte write capability. The board can also act as the processing engine for the Xilinx MicroBlaze 32-bit soft processor which can run at 150 MHz and delivers 102 D-MIPS. After acquiring this development package a great first step would be to run through the EDK MicroBlaze tutorial which can be accessed from the Help menu under EDK Examples in Xilinx Platform Studio (XPS). This tutorial runs through the process of how to use the base system builder wizard to create MHS files which define the systems hardware specification, create NGC files that represent the processor system, implement the design and add the software, compile the code, download it to the board, debug the design, and finally how to simulate it. Also, there is a great online demo which demonstrates how to build a simple webserver application. This demo is available at the demos on demand web site.
Lastly, you can find great multimedia examples on the Xilinx web site located at Xilinx By now, one should be familiar with the basic concepts of EDK and how it is structured. Next, an important skill in embedded system design is to know how to add more complex peripherals that may use interrupts. Moreover, even though EDK comes with a huge peripherals library most embedded designs will need a custom peripheral. Therefore it is important to know the process of adding and interfacing user designed peripheral to a system. In order for XPS to recognize a user defined core it has to be properly structured, a “pcores” directory needs to be present in the root directory of the system. Within the “pcores” directory, a “data” subdirectory has to contain the Peripheral Analyze Order (PAO) file and the Microprocessor Peripheral Definition (MPD) file. In some cases it may also contain a Black Box Definition (BBD) file. The PAO file contains a list of HDL files that are needed for synthesis and it defines their order to resolve component architectures. The MPD file defines the interface of the peripheral, which includes properties such as connectivity for bus interfaces. Finally, if your peripheral uses a black box design, the BBD file manages the locations of optimized hardware netlists for the black box. The “pcores” directory also needs to include a “HDL” subdirectory, this is where the peripheral’s user logic is located. The logic can be defined in either Verilog or VHDL. If this structure is followed, the core should now be visible in the Add/Edit Hardware Platform Specifications window under the peripherals tab. The window can be accessed from the Project menu under Add/Edit Cores. There are two ways to approach the construction of all the necessary files for a custom core, using a reference design or the Create and Import Peripheral Wizard. Xilinx provides user core reference designs, which can be used as templates. The reference designs can be found in the “hw” subdirectory at the location where EDK was installed. Each design has its own documentation, so it is easy to find a design that best matches the required features and services of the custom core. All one needs to do is fill in the template with user defined code and copy it into the “pcores” directory of the system. The only precaution is with the naming of the new core and its files, it is essential that the version names are consistent with the names defined in the MHS file. If this is not true, errors like missing MPD will appear when trying to compile the system. By using the wizard, one can create their own peripheral template without searching through the reference designs.
The wizard can be run either before or after a project is started. If the project is not started, the wizard can be accessed from XPS or even directly from the window start menu. In XPS it is located under the file menu. If the project already exists, the wizard is invoked from the tools menu under Import Peripheral Wizard. The wizard is quite easy to follow and well documented, step by step instructions are also found in the embedded systems tools guide which is included in EDK. This wizard helps optimize a system by allowing the user defined peripheral to have exactly the required configuration without any extra properties. Some of the software and hardware development tools that are included in the EDK package are a C/C++ compiler for MicroBlaze and PowerPC, Xilinx Microprocessor Debug engine for MicroBlaze and PowerPC, Graphical memory map manager, Platform Debug' support via integrated software (GNU GDB), and hardware debuggers (ChipScope Pro). Once the processor system is created and application software written for the system, users can debug their system using any of the tools mentioned or simulate the system using Platform Studio’s simulation options. There are two main design types, structural design and behavioral design. Behavioral design has a much higher level of abstraction but both designs end up generating a netlist description of connections and gate structures. XPS supplies simulation opportunities for both types of designs. HDL is the preferred design language and the most popular languages are Verilog and VHDL (take a look VHDL (I) or VHDL (II)), both are supported. Once the system is debugged and simulated one can download it to the FPGA. There is a parallel cable included in the EDK package, and it can be used to connect to the board. To start the download, go to the tools menu in XPS and selecting download. The program will automatically connect to the board and download all necessary files. Once this is done one can use any of the tools to run and debug the system, however the most powerful tool is XMD. It can be accessed from the tools menu in XPS. Once this tool is selected one can write to memory, check specific register values, and perform other important debugging actions. The way you connect to the system is by typing “mbconnect stub” in XMD. For a detailed list of available commands type “help”, from this list one should get an idea of what XMD can do. Altera also came up with an excellent development package that is comparable to the Xilinx development kit.

Altera DSP Development Board (Stratix Edition)

Although it is not specifically designed for multimedia applications it is still a great development package for multimedia projects. The Altera DSP development kit comes with a development board, an evaluation version of the Quartus-II design software, all necessary cables, and various other useful software such as MathWorks. Just like the Xilinx package it comes with great documentation and reference designs that are very useful and insure a quick start for a novice user. The professional version of this package costs $4,995 while the normal version is priced at $1,995. The development board comes with either a Stratix EP1S80 FPGA or EP1S25F780 FPGA depending on the package version, two 12-Bit 125-MSPS A/D converters, two 14-Bit 165-MSPS D/A converters, 2-Mbytes Synchronous SRAM memory, and 64-Mbites of flash memory. The Quartus-II design software has basically three stages in a design. First the “New Project Wizard” which lets you specify things like the top-level entity, project design files, target device information, and EDA tools for the project. The second step is the “Timing Wizard” which lets you pick clock signals, overall circuit frequency, set-up time, hold time, clock to output time, pin to pin time, all external delays, and settings for the timing analysis and timing driven compilation. The final step is to compile the design. This can be done by choosing “start compilation” in the “processing” menu. There are excellent design examples posted at Altera. Also, Altera offers free online classes that take about an hour each to complete. They cover topics like VHDL basics, Verilog HDL basics, Quartus-II an introduction, timing analysis, logiclock regions, scripting, chip editor, debugging, power and thermal management, the Nios-|| processor, SOPC builder DSP builder and using the Stratix high speed design features. These classes can be found at Altera and are an excellent resource for even experienced designers. Software solutions such as Quartus-II or Platform Studio drastically shorten design cycles and enable faster time to market of embedded systems. Along with increasingly sophisticated hardware like FPGA’s, designs are becoming more flexible and are able to keep up with rapid technological progress and demand. Embedded systems are becoming more complex, high density chips with intelligent peripherals are allowing for embedded designs to stay efficient and small in size. One can integrate all digital functions into a single chip. Designs can be reprogrammed with ease on FPGA’s or frozen on ASIC’s allowing for higher performance. In either case, it is very important to be able to take advantage of these great tools and stay up to date with advancing technology. Theoretical background and experience cannot be replaced by software or hardware, but when used correctly these tools can significantly simplify the overall design process.

FPGA - DSP design

I once tried to use a Xilinx - Spartan starter kit, I still have nightmares.
I used an Actel starter kit, I could run the demos with a few clicks...


Xilinx and Altera are the giants on fpga domain. I used a lot Cyclone2 from Altera with QuartusII software (a complete solution from Altera, but can be used in connection with ModelSim also). I prefer Lattice also; from Lattice I used some free open source cores for usb, pci, memory controllers - very good implementation and easy to integrate into any project.

Who's online

There are currently users and guests online.

Recent comments