element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Open Source Hardware
  • Technologies
  • More
Open Source Hardware
Blog First Steps with Digital Signal Processing (DSP) Chips
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Open Source Hardware to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 17 Jul 2021 4:36 PM Date Created
  • Views 18372 views
  • Likes 11 likes
  • Comments 14 comments
  • audio digital
  • ad
  • adau1701
  • adau1401
  • digital signal processing
  • analog devices
  • dsp
  • digital_audio_effects_processors
  • digital audio signal processing
  • digital audio
Related
Recommended

First Steps with Digital Signal Processing (DSP) Chips

shabaz
shabaz
17 Jul 2021

  • Introduction
  • What is DSP?
  • Installing the Software
  • USBI Board ( EVAL-ADUSB2EBZEVAL-ADUSB2EBZ )
  • Turning an LED on and off
  • A Simple Audio Effect
  • Summary

 

Introduction

This blog post relates to a simple digital signal processing setup, as demonstrated in this two-minute video. No actual coding is needed for these experiments, everything is drag-and-drop, and only a few jumper wires need connecting to off-the-shelf boards.

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

 

What is DSP?

A huge part of electronics, and software in general too, is all concerned about manipulating signals. Signals could be speech, music, the temperature in a room, vibrations and so on. Often these analog signals are filtered or amplified or modified using resistors, capacitors, inductors and op-amps for instance. Another way is to convert the analog signal into digital (using an Analog to Digital Converter or ADC) and then perform mathematic operations on the stream of binary data, and then convert back to analog using DACs. One way to do this could be to attach an ADC and a DAC to a microprocessor or microcontroller and write code to perform the mathematical operations. Many processors contain built-in hardware acceleration features to make this digital signal processing more efficient. Another way could be to use a dedicated digital signal processing (DSP) chip. Such chips can be very similar to typical microprocessors or microcontrollers but have memory and functionality organized in a way that helps perform popular mathematics operations. One of the key operations is the Discrete Fourier Transform (DFT), which can be achieved by taking a chunk of the sequence of values, multiplying with specific values, and adding the results. It is broken down into many of these Multiply-Accumulate (accumulate just means to add) or MAC operations. A DSP chip, and any hardware accelerators for DSP in processors, will have digital logic to extract data from memory busses and perform MAC operations at high speed. Without this special hardware acceleration, it could take a hundred times as long (or longer) to do it in software using conventional microprocessor central processing units (CPUs).

 

Programming such DSP functionality partially involves being able to direct incoming data streams, or RAM or Flash tables of data, into the hardware accelerators to perform the MAC operations. Any other operations required to perform the end algorithm to meet the end requirement will also need to be coded. A typical end requirement could be as simple as amplification (in other words multiplying each sample by a fixed value) or as complex as audio compression (this could involve performing Fourier transform operations and storing the results efficiently in memory). Since hardware accelerators can be used to perform multiple operations simultaneously, expressing that in a normal programming language like C can become difficult. Some developers would learn the assembly language for the DSP chip and code with that as a result.

 

Another approach to the programming dilemma is to abstract it all and allow the programmer to use a blocks-based system to describe the flow of data and the operations that should be performed. It is a complex thing to do, but Analog Devices has managed to create software called Sigma Studio which will do exactly that. It can be considered to be a tool that allows coding using blocks, and the result is compiled into an executable binary file that can be programmed into Analog Devices DSP chips. This blog post describes how to do that. I'm just a beginner with such DSP chips, so this blog post merely describes how to get started, and to use Sigma Studio to design and program one audio effect.

image

 

I used this equipment (the diagram below shows how it will be all connected):

 

  • ADAU14/1701-DSP board from Aliexpress
  • EVAL-ADUSB2EBZEVAL-ADUSB2EBZ programmer board
  • Two 3.5mm audio jack plug connectors
  • Audio source (for example a mobile phone with 3.5mm jack socket)
  • Audio amplifier/speaker (I used a low-cost portable powered speaker)
  • PC running Windows 10 (the software only supports Windows 7 and Windows 10, although it should be possible to use a virtual machine if (say) Linux or Mac is being used, but I have not tested this).

 

 

Installing the Software

From the Analog Devices website, I downloaded SigmaStudio Automotive and Generic Release SigmaStudio 64 Bit-OS Rev 4.6.

 

Install it, clicking through to install with the default settings and any drivers.

image

 

USBI Board ( EVAL-ADUSB2EBZEVAL-ADUSB2EBZ )

The manufacturer-recommended programmer for the DSP chips is the EVAL-ADUSB2EBZEVAL-ADUSB2EBZ board (also known as USBi Board). It is however $100. On the Internet there are suggestions about how to use a $15 board containing a Cypress chip, however, to use it, at least on Windows 10 is difficult because it entails disabling secure boot or other procedures, to get around an incorrect driver signature. I was unwilling to do that, so ended up deciding to pay for the manufacturer's tool. Another possibility which I have not tried is to obtain a clone of the USBi device from Aliexpress; that costs about $35.

 

Anyway, the official programmer has quite poor documentation, so I decided to document it here. It comes with a 10-way ribbon cable, and the pinout is shown below.

image

 

The programmer board has a tiny single DIP slide switch on the underside, to select either 3.3V or 1.8V logic. By default, mine was set to 3.3V and I left it there. Check your board and make sure it's set to 3.3V.

 

From the ribbon cable, the programmer needs four wires to be connected to the DSP board; SDA, SCL, +5V_USB, and GND. By doing this, the programmer will power the DSP board, and will control the I2C functions on the DSP board (the DSP chip and an EEPROM chip can be programmed this way).

 

The wiring summary is below, and this is enough to test the board to turn an LED on and off on the board, as will be discussed further below.

image

 

 

Turning an LED on and off

I found this useful tutorial which I pretty much followed with little changes. Basically, I ran SigmaStudio, created a New Project (select File -> New Project), and dragged USBi, ADAU1401 and E2Prom objects onto the Hardware Configuration pane, and connected them up as shown in the screenshot below. The main pane here is called Hardware Configuration and it contains several tabs at the bottom. At the top of the pane, you can see that there is also a Schematic pane, but that is not currently selected.

image

 

By default the Config tab is visible in the Hardware pane. I clicked on the 'IC1 – 170x\140x Register Control' tab and set MP2 to Output GPIO.

image

 

Next, I went back to the Config tab, and then I plugged in the USB connection to the programmer board and various LEDs on the programmer board lit up, eventually settling to red and yellow LEDs lit.

 

Looking at SigmaStudio, the USBi symbol that had been previously dragged into the pane had changed from red to green, indicating that the programmer had been detected.

image

 

Incidentally an LED on the DSP board was blinking; I think it has a default program to do that perhaps. Anyway, I next clicked on the Schematic pane and dragged a switch and a General Purpose Output object onto the pane and connected them together. The screenshot below shows what to drag and connect. The GPO1 object that was dragged has a drop-down, and I used that to change it from GPIO_0 to GPIO_2.

image

 

There is a 'Link Compile Download' button in the top toolbar in SigmaStudio (you can also find it in the Action menu, or you can just press F7). When I pressed it, the LED on the DSP board stopped blinking. Now, I could control it by clicking on the top or bottom part of the Switch object in the Schematic pane, as if I was really pressing on the top or bottom part of a physical rocker switch!

image

 

To make the code persistent so that it will run automatically after a reboot, you can write it to the EEPROM that is on the DSP board. That will be explored some other time.

 

A Simple Audio Effect

For this experiment, an audio source and output (audio amplifier connected to a speaker) are required. Connect up as shown below. Note that there are subtle variations of the ADAU14/1701-DSP board, so check carefully that the pinouts are the same, otherwise modify the connections accordingly. In particular, one variant of the board has slightly different pin numbering around header J1 pins 0-6, and around J2 pins 9-10. The diagram below shows the pinout for a board purchased recently (June 2021) so perhaps the older variants are no longer available.

image

 

I used a mobile phone with 3.5mm jack as the audio source, to play music. For the output, I used a portable amplified speaker.

 

Start up Sigma Studio, and then as before follow these steps:

 

  • Create a new project (File->New Project)
  • Drag USBi, ADAU1401 and E2Prom objects onto the main Hardware Configuration pane
  • Drag connection lines between the USBi object to the ADAU1401 and E2Prom

 

Next, click on the Schematic pane as shown below, and drag three items as shown in the screenshot below, and connect them up by dragging two connections between them as shown too:

image

 

Plug in the programmer into your PC USB port, and in the Hardware Configuration pane you'll see that USB is green. Click back on the Schematic pane now since you'll be using that again soon.

 

Now click on the Link Compile Download icon as before (or find it in the Action menu, or just press F7):

image

 

You should hear music egressing out of the speaker. If you don't, then it's most likely because the volume on the mobile phone needs to be set to quite loud. I had to crank it up to almost max volume.

 

Now, to make use of the effect, in the Schematic Pane, drag the blue slider left or right. Notice the change in the audio : )

image

There is functionality in SigmaStudio to connect actual buttons or rotary encoders to manipulate functionality too, but I have not explored this so far.

 

 

Summary

This short blog post contains my initial findings on how easy it can be to get going with DSP chips. Although it was used to demonstrate just a single audio effect, of course, the possibilities are endless (and it doesn't need to be processing audio either). Although I'm a beginner with such devices, I hope to make more use of them.

Thanks for reading!

  • Sign in to reply

Top Comments

  • DAB
    DAB over 4 years ago +6
    Nice simple introduction to DSP. I have been involved with many projects where we took DSP to the limit of its capability and then some. When you need one, they are indispensable, though they tend to be…
  • shabaz
    shabaz over 4 years ago +6
    I had an hour to experiment with it today, and tried to build a lock-in amplifier (synchronous demodulator) with it. Here's the first experiment with it, perhaps it could be useful for ground measurements…
  • navadeepganeshu
    navadeepganeshu over 4 years ago +4
    Interesting walkaround! The blockset based configuration is nice just like PSoC. In PSoC a bltsetram file is loaded to the chip with all configurations encoded. Here, its good to see only I2C interface…
  • Former Member
    Former Member over 2 years ago

    Can you use Sigma Studio to direct the dsp to stream the bits from the ADC over i2c?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • phoenixcomm
    phoenixcomm over 3 years ago in reply to shabaz

    shabaz thanks for the lead on the board. I will have to look at the specs.

    ~~Cris

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 3 years ago

    Another interesting board, called ADAU1466 DSP Core Board, contains a far more powerful DSP chip. At least six times the throughput, higher accuracy, and 40 times more data memory and approximately 8 times the space for programs. It is twice as expensive (approx $55 from Aliexpress) but still a reasonable cost to experiment with. Designing the code with SigmaStudio, and programming it, should be identical. This board needs external ADC/DAC though.

    image

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • DAB
    DAB over 4 years ago in reply to navadeepganeshu

    Not alien, but definitely not for the feint of heart.

     

    DAB

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • phoenixcomm
    phoenixcomm over 4 years ago in reply to shabaz

    shabaz man that is a great idea to use GPUs!! here is a little primer https://www.weizmann.ac.il/sci-tea/benari/sites/sci-tea.benari/files/uploads/softwareAndLearningMaterials/quaternion-tutorial-2-0-1.pdf one thing they use is Euler angles. which are not nice as anything in degrees is well messy. ie what's 360 + 1 = 361 degrees. Buy using BAMS is a neet tool so consider that a BAM is less than a circle, some fraction.  So if you had 270 deg in bams (16bit) + 90 deg in bams (16but) you end up with 90 deg in bams (16 bit) Most things can be either 8 or 16-bit bams but there is a special case to use 32-bit BAMS this will resolve to about the size of 1 sq in.

    ~~Cris

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube