Silicon ChipDual-Channel Audio Delay For PA Systems - November 2013 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: Hybrid cars might not endure
  4. Feature: Raspberry Pi XBMC Solution For Multimedia by Ross Tester
  5. Feature: DRM Digital Radio: What It’s All About by Jim Rowe
  6. Project: Build A GPS Tracker & Record Your Journeys by Geoff Graham
  7. Project: Dual-Channel Audio Delay For PA Systems by Nicholas Vinen
  8. Feature: Using the SiDRADIO to receive DRM30 broadcasts by Jim Rowe
  9. Project: Alscolyser: For Accurate Alcohol Analysis by Allan Linton-Smith
  10. Project: SiDRADIO: Integrated SDR With DVB-T Dongle, Pt.2 by Jim Rowe
  11. Product Showcase
  12. Review: Gratten Spectrum Analyser & Signal Generator by Jim Rowe
  13. Vintage Radio: The Australian 123 & Dutch 283A "twin" receivers by Rodney Champness
  14. Order Form
  15. Subscriptions
  16. Advertising Index
  17. Outer Back Cover

This is only a preview of the November 2013 issue of Silicon Chip.

You can view 23 of the 104 pages in the full issue, including the advertisments.

For full access, purchase the issue for $10.00 or subscribe for access to the latest issues.

Items relevant to "Build A GPS Tracker & Record Your Journeys":
  • GPS Tracker PCB [05112131] (AUD $12.50)
  • PIC32MX270F256B-I/SP programmed for the GPS Tracker [0511213A.HEX] (Programmed Microcontroller, AUD $15.00)
  • VK2828U7G5LF TTL GPS/GLONASS/GALILEO module with antenna and cable (Component, AUD $25.00)
  • Firmware (C and HEX) files for the GPS Tracker [0511213A.HEX] (Software, Free)
  • GPS Tracker PCB pattern (PDF download) [05112131] (Free)
  • GPS Tracker panel artwork (PDF download) (Free)
Items relevant to "Dual-Channel Audio Delay For PA Systems":
  • Dual-Channel Audio Delay / Stereo Echo & Reverb / Digital Effects Processor PCB [01110131] (AUD $15.00)
  • PIC32MX470F512H-I/PT programmed for the Stereo Echo & Reverb Unit / Dual-Channel Audio Delay [0111013B.HEX] (Programmed Microcontroller, AUD $20.00)
  • Extra parts for the Dual-Channel Audio Delay / Stereo Echo & Reverb / Digital Effects Processor (Component, AUD $20.00)
  • Firmware (C and HEX) files for the Dual-Channel Audio Delay [0111013A.HEX] (Software, Free)
  • Dual-Channel Audio Delay / Stereo Echo & Reverb / Digital Effects Processor PCB pattern (PDF download) [01110131] (Free)
  • Dual-Channel Audio Delay panel artwork (PDF download) (Free)
Items relevant to "SiDRADIO: Integrated SDR With DVB-T Dongle, Pt.2":
  • SiDRADIO main PCB [06109131] (AUD $20.00)
  • SMD parts for SiDRADIO (Component, AUD $27.50)
  • SiDRADIO front & rear panels [06109132/3] (PCB, AUD $20.00)
  • SiDRADIO PCB pattern (PDF download) [06109131] (Free)
  • SiDRADIO panel artwork (PDF download) (Free)
Articles in this series:
  • SiDRADIO: An Integrated SDR Using A DVB-T Dongle, Pt.1 (October 2013)
  • SiDRADIO: An Integrated SDR Using A DVB-T Dongle, Pt.1 (October 2013)
  • SiDRADIO: Integrated SDR With DVB-T Dongle, Pt.2 (November 2013)
  • SiDRADIO: Integrated SDR With DVB-T Dongle, Pt.2 (November 2013)

Purchase a printed copy of this issue for $10.00.

By NICHOLAS VINEN Audio delay for PA systems If you have ever been in a hall or concert venue which has multiple speakers, you will know that intelligibility can be a real problem. This is caused by the different propagation times of the sounds from speakers near and far away from you. How do you fix it? By adding an audio delay. This unit does that by delaying the audio signal from the microphone by up to 640 milliseconds. But that’s just the beginning of its capabilities. It is actually a fully-fledged stereo DSP board with a 32-bit processor running at 80MHz and with appropriate software, is capable of providing other effects such as echo, reverb and compression. PA SYSTEMS IN HALLS and larger venues can often present a problem with intelligibility, especially if you are sitting up the back. Picture the situation in a large church, for example. There will typically be a pair of large column speakers up the front of the congregation but they cannot be 36  Silicon Chip turned up enough so that people up the back can hear the proceedings. So another pair of column speakers might be installed half way along or further back in the church. That should mean that people up the back can now hear what’s going on but now the sound becomes jumbled because while the sound from the speakers close to you may be loud enough, it is actually being muddied by the delayed sound from the speakers up the front. The solution is to delay the sound coming from the rear speakers and that is what this project does. In practice, siliconchip.com.au C IRCULAR STORAGE B UFFER (1MBYTE) IC3: 1MB SRAM (OPTIONAL) 8-BIT DATA BUS, 20-BIT ADDRESS BUS PARALLEL MASTER PORT (PMP) PIN 20 LEFT IN ADC OUT C IRCULAR STORAGE 2 I S DMA1 DELAY PIN 19 RIGHT IN ADC IC2 (CODEC ) DAC OUT IN DAC OUT PIN 12 LEFT 2 I S B UFFER (127KB) 65024 x 16-BIT SAMPLES OUT IN DMA2 IC1 (PIC 32 MICRO) PIN 13 RIGHT IC2 (CODEC ) Fig.1: the basic concept. The incoming audio signal is fed into the analog-to-digital converter (ADC) of CODEC IC2 and the resulting digital data then fed into a circular recording buffer which is 127kB of the static RAM on a PIC32 microcontroller (IC1). The delayed signal is then picked off from within this buffer and converted back to audio by IC2’s digital-to-analog converter (DAC) section. SRAM chip IC3 is added if you want a delay of more than 640ms. if the distance between the front and rear speakers is more than about 10 or 15 metres, an audio delay can be very worthwhile. Of course, this means that you need two separate PA systems: one for the rear speakers with the audio delay and one for the speakers at the front of the hall, church or whatever. But what if you have a much larger hall? In that case, you might need to break the PA installation into three, with two sets of audio delays. Guess what? This project can also cater for that. In the simple mode, with just one delay required, it can operate in stereo. If two audio delays are required, it can operate with two separate channels, each with their own delay. Now some PA systems can have pretty good fidelity, so we wanted to produce the audio delay(s) while adding very little distortion and noise to the signal. We also wanted the delay unit to be cheap and easy to build. The solution was to combine an all-in-one audio CODEC chip (digital COder/DECoder) with a PIC32 micro­ controller that has a digital audio interface. These two chips, plus a few support components, give a 24bit, 96kHz stereo analog-to-digital converter (ADC), a similar digital-toanalog converter (DAC) and enough siliconchip.com.au processing power and memory for quite a long delay. In fact, with its 128KB of internal RAM, the PIC32 we have chosen can provide a delay of up to 640 milliseconds. It also has a Parallel Master Port (PMP) which can interface directly with a standard static RAM (SRAM) chip. This allows us to have provision for up to 1MB of additional RAM to be used in case even longer delays are needed – up to six seconds, in fact. That could be useful in a very large venue such as a surf carnival, with speakers spread along several hundred metres of beach. We’re using a sampling rate of 48kHz and a 16-bit voltage resolution, as this gives near-optimal performance with the CODEC chip we are using while keeping memory storage requirements modest. The ADC performance is the limiting factor. By the way, the author has published two previous audio delay units but this one has features lacking in those. For example, the SportSync from May 2011 can be set for a long delay but it only has one channel (ie, mono) and its sound quality is not especially high, being intended for use with AM radio sports commentary. The second previous unit, the Digital Audio Delay from December 2011, only has digital audio inputs and outputs while this unit only has analog inputs and outputs, so they are suited for different purposes. Note that this is the first microcontroller-based audio delay we have published that does not require an external SRAM chip thanks to the large 128KB internal RAM in the PIC32. Delay concept The method of providing an audio delay is very similar to that employed in the abovementioned projects and Fig.1 shows the concept. The signal from the audio mixer is fed at line level into the analog-to-digital converter (ADC) of the CODEC. The digital data is then fed into a circular recording buffer which is 127 kilobytes of static RAM on the PIC32 microcontroller. We can then pick off the output signal from anywhere within this buffer. Depending on the sampling rate (in this case, 48kHz), the difference between when the data is written and read out determines the time delay. Of course, the delayed data signal must then be converted back to audio by the digital-to-analog converter (DAC) section of the CODEC. So in essence, only two chips are required: microcontroller IC1 (the justreleased PIC32MX470F512H) and the November 2013  37 Features & Specifications • • • • • • • • • • Adjustable stereo delay of 0-640ms (6s if optional SRAM chip fitted) THD+N <0.03% (typically <0.02%), 20Hz-20kHz (20Hz-22kHz bandwidth; see Fig.6) Signal-to-noise ratio typically >76dB Optimal input signal range 0.5-2V RMS Output signal 1V RMS Input impedance 6kΩ (DC), 4kΩ (20kHz) 7.5-12V DC plugpack supply, current drain 60-80mA Delay adjustment via internal trimpot or external control knob Uses the latest PIC32 microcontroller Future expansion can add extra modes such as echo, reverb and compression stereo audio CODEC, IC2 (WM8731). An optional static RAM (SRAM) chip (IC3)is only fitted if you want a delay of more than 640 milliseconds (see Fig.3). Circuit description Fig.2 shows the circuit with IC1 and IC2. If you look at the PCB for this project, you will notice that there is provision for many more components than are used in this circuit. One of those is IC3, which is shown in Fig.3. All the other “missing” components will be featured in future projects which will employ the same core circuit. So, referring to the top left-hand corner of the circuit, the unbalanced stereo audio signal is applied to 6.35mm jack socket CON1. If a mono plug is used, the signal will be applied to the right channel input while the left channel input will be shorted to ground. The left and right channel signals first pass through RC filters comprising 1kΩ resistors and 1nF capacitors, to remove ultrasonic and RF components which would interfere with the ADC’s operation. The signals then go into adjustable attenuators which consist of two 5kΩ trimpots, VR5 & VR6. While these can be individually adjusted, normally they would be set to give the same signal level for both channels. These attenuators are required because IC2 runs off 3.3V and thus it can only handle a signal of up to about 1V RMS (2.828V peak-to-peak) before clipping. For input signals below 1V RMS, VR5 & VR6 are set at maximum. The attenuated signals are AC-coupled to IC2’s inputs by 1µF non-polarised capacitors. In order for the signal handling to be maximised and for symmetrical clipping in the 38  Silicon Chip event of overload, the input signals are biased to half the supply voltage of 3.3V, ie 1.65V. This half-supply DC bias comes from IC2 and is fed to the line inputs at pins 19 & 20. This voltage also appears at pin 16 (VMID) where it is filtered by a pair of external capacitors for noise and ripple rejection. IC2 uses crystal X1 (12MHz) to generate an internal clock which is then divided down to produce the sampling rate for both its ADC and DAC. These dividers are configurable and are controlled by microcontroller IC1. Normally, a 12.288MHz crystal or similar would be required to get a sampling rate of 48kHz (by dividing by 256) but IC2 has a special “USB mode” designed to operate with a 12MHz clock, as used for USB communications. So we use a 12MHz crystal which is easier to get. IC2 continuously samples the two analog input signals at pins 20 & 19 and converts the voltage levels at these pins to one of 65,536 possible values (216) at 20.8μs intervals. These values are serially streamed out in digital format from pin 6. Pins 2, 3 & 5 provide the clock signals required to interpret this data. Respectively, these are the master clock (MCLK, 12MHz), bit clock (BCLK, 3.072MHz = 48kHz x 2 x 32 bits) and left/right sample clock (LRCK, 48kHz). The master clock is normally used to synchronise multiple digital audio devices in a system. In this case, we’re simply using it as a reference clock for IC1, as it has a more precise frequency than IC1’s internal oscillator. The bit clock (BCLK) is at 64 times the sampling rate because the audio data is padded to 32 bits per channel. We’re only using 16 bits per channel so half the time, this output will be zero (low) but the CODEC can be configured for 24-bit operation too, hence the higher clock rate. This clock is used by the micro to determine when a new data bit appears at the ADCDAT output. The left/right sample clock indicates the start of a new value being transmitted on ADCDAT, as well as allowing the micro to determine which channel this value is for (low = right, high = left). Since this changes twice for each sample, the frequency of this signal equals that of the sampling rate, ie, 48kHz. After receiving this data and delaying it for the appropriate amount of time, IC1 sends it back verbatim to IC2’s pin 4, the DAC input data pin. The same clocks (ie, BCLK and LRCK) are used to time this data and thus the DAC and ADC sampling rates are locked together. IC2’s internal DAC then converts the received data to voltages on pins 12 & 13 (LOUT and ROUT respectively). These signals are AC-coupled using 1µF capacitors and DC-biased to ground using 47kΩ resistors. The 100Ω series resistors isolate any cable or load capacitance from IC2’s internal op amp buffers. From there, the signals then pass to the output at 6.35mm jack socket CON2. As explained, IC2 runs off 3.3V so the maximum output signal level is limited to around 1V RMS (2.828V peak-to-peak). This is sufficient to drive virtually any amplifier or mixer. Note that the WM8731 codec has a “pass-through” mode whereby a direct analog connection is made from pin 20 (LLINEIN) to the analog buffer feeding pin 12 (LOUT) and similarly, from pin 19 (RLINEIN) to pin 13 (ROUT). We take advantage of this if the delay pot is set at minimum; in this case, there is essentially no delay and the distortion and noise from the unit drop too. Microcontroller As noted above, we chose the PIC32MX470F512H for a number of reasons. It is one of the latest PIC32 chips and as such it has two enhanced SPI peripherals which directly support all the common digital audio formats, including I2S, left-justified, right-justified and DSP modes. The WM8731 CODEC supports all these modes and we are using left-justified siliconchip.com.au 4.7Ω 2x 100 µF 1k 1000 µF 2x 100nF 1nF VR5 5k MMC 1 µF MMC 20 1 µF MMC 19 1k CON1 18 17 1nF 25 VR6 5k 26 7 6 3 2 X1 12MHz MMC 14 HPVdd AVdd LLINEIN 33pF 10k DBVdd DCVdd 21 MODE LHPOUT LOUT MICIN 9 100Ω 1 µF MMC 12 10 XTI/MCLK XTO 1 µF MMC ROUT DACLRC CODEC ADCLRC DACDAT ADCDAT SCLK BCLK SDIN CSB CLKOUT VMID HPGND AGND DGND 15 11 OUTPUT 100Ω RHPOUT IC2 WM8731 13 MICBIAS 16 33pF +3.3V 2x 100 µF 27 1 RLINEIN FB2 ANALOG GND 2x 100nF FB1 8 INPUT +3.3V CON2 5 47k 4 47k 24 23 22 28 100nF 22 µF MMC DIGITAL GND L1 100 µH +3.3V +3.3V 4x 100nF 100nF 19 DELAY 1 (VR3) VR1 10k (VR4) VR2 10k 39 40 50 51 42 55 54 48 53 52 21 49 POT1 AUX4 MCS AUX1 RD WR (OPTIONAL) DELAY 2 POT2 11 33 34 36 37 VBUSON USBID VBUS D– D+ 35 60 61 62 63 64 1 2 3 D7 D6 D5 D4 D3 D2 D1 D0 100nF 56 10 µF 26 10 AVdd Vdd CLKI/RC12 CLKO/RC15 SCK1/RD2 RPD3/RD3 RD8 RD7 RD6 RC14 PMRD/RD5 PMWR/RD4 AN8/RB8 AN24/RD1 VBUSON USBID VBUS D– D+ VUSB3V3 PMD0/RE0 PMD1/RE1 PMD2/RE2 PMD3/RE3 PMD4/RE4 PMD5/RE5 PMD6/RE6 PMD7/RE7 Vcap AVss Vdd 10k 57 38 Vdd Vdd MCLR RF1 PGED2 PGEC2 RD0 RC13 RF0/RPF0 RD9/RPD9 RB4 RB3 RB2 RB1 IC1 PIC32MX470PIC3 2 MX470- RB9/PMA7 RB10/PMA13 F512H RB11/PMA12 RB12/PMA11 RB13/PMA10 RB14/PMA1 RB15/PMA0 RD11/PMA14 RD10/PMA15 RF5/PMA8 RF4/PMA9 RB0/PMA6 RG9/PMA2 RG8/PMA3 RG7/PMA4 RG6/PMA5 Vss Vss Vss 20 9 25 7 1 2 59 18 17 46 47 58 43 12 13 14 15 22 23 24 27 28 29 30 45 44 32 31 16 8 6 5 4 3 7.5 – 12V DC INPUT K V+ D1 1N4004 A K IN LED1 5 PGED PGEC Fig.2: the basic Stereo Audio Delay circuit. The incoming stereo analog signal at CON1 is digitised by CODEC IC2 and then passed over a digital bus to IC1 which stores it in its 128KB internal SRAM. This data is later sent back across the same digital audio bus to IC2, where the DAC converts it back into a pair of analog signals which are fed to the output (CON2) 41 A OUT ADJ 10k POWER 4 REG1 LM317 3.3Ω S1 CON3 PGED PGEC CON7 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 D2 1N4004 POWER A K 120Ω LED1 A 1000 µF λ +3.3V D3 1N4004 200Ω 100 µF K A 100 µF K SC  2013 AUDIO DELAY FOR PA SYSTEMS siliconchip.com.au ICSP SKT LM317T 1N4004 A K OUT ADJ OUT IN November 2013  39 +3.3V 100 µF 100nF 100nF 11 18 19 20 21 22 A19 A18 A17 A16 A15 A19 A18 A17 A16 A15 23 A14 24 A13 25 A12 26 A11 27 A10 28 A9 39 A8 42 A7 43 A6 44 A5 1 A4 2 A3 3 A2 4 A1 5 A0 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vdd 33 Vdd IC3 R1LV0808ASB R1LV0 8 0 8 ASB GND 12 GND 34 40 6 CS1 41 OE 17 WE 38 NC 37 NC 30 NC 29 NC 16 NC 15 NC 8 NC 7 NC 36 DQ 7 35 DQ 6 32 DQ 5 31 DQ4 14 DQ 3 13 DQ 2 10 DQ 1 9 DQ 0 CS2 MCS RD WR D7 D6 D5 D4 D3 D2 D1 D0 OPTIONAL MEMORY EXPANSION Fig.3: adding a Renesas R1LV0808ASB 1MByte SRAM chip allows the delay to be increased from a maximum of 640ms up to a maximum of six seconds. It runs from the same 3.3V supply as IC1 and is driven by the Parallel Master Port (PMP) memory interface in the PIC32. mode as this allows us to set up the SPI peripheral to ignore the 16 trailing zeros for each sample. This PIC32 chip also has four very flexible DMA (direct memory access) units. These are used to copy data between other peripherals and/or RAM simultaneously while the processor is busy doing something else. In fact, they are so flexible that for a simple stereo delay, we just need to set up two DMA channels, one to read data from the CODEC and place it into a RAM buffer and another to read from a different location in that RAM buffer and send it back to the CODEC. The CPU can then go into idle mode while the DMA and SPI units do all the actual work! The processor core only needs to wake up periodically to check if the delay has been changed via the adjustment pot (using an interrupt request [IRQ]) and if necessary, adjust the DMA memory pointers to suit. The main delay adjustment pot is wired to analog input pin 21 of IC1 (AN8). Normally, this is a multi-turn trimpot so that the delay can be preset but in some cases, it may be desirable to have an externally accessible knob and so 9mm pot VR3 can be fitted instead. Provision has also been made for a 40  Silicon Chip second delay adjustment pot (VR2 or VR4). This allows the unit to provide two separate delays of the same mono signal and the delays can be set independently. This could be useful for a PA system where the speakers are placed far apart. IC1 can detect whether VR2 or VR4 is installed since it has weak pull-up and pull-down current sources/sinks on every I/O pin which can be individually enabled or disabled (+250/-50µA). IC1 turns on the pull-up and pull-down currents alternately and measures the change in voltage on that pin. Without VR2/VR4, the voltage difference will be nearly the supply voltage, ie, 3.3V. If either pot is installed, the change will be much less and so the unit knows to operate in dual mono delay mode. The MCLK signal from IC2 goes to pin 39 of IC1, which is the clock input (OSCI), while the digital audio data (BCLK, DACDAT, DACLRC & ADCDAT) connects to pins which are routed to IC1’s internal SPI/digital audio peripheral #1. This requires the bit clock to be connected to pin 50 but the other signals can go to one of several pins and are routed via its “Peripheral Pin Select” digital multiplexer. The rest of the components surrounding the microcontroller are various power supply bypass capacitors, including a 10µF capacitor at pin 56 (VCAP) which is required to filter the 2.5V core supply. This is derived from the 3.3V rail by a low-dropout regulator within IC1. There is also provision for CON7 which is a 5-pin in-circuit programming header (ICSP), with a 10kΩ pull-up resistor for MCLR-bar (pin 7) to prevent spurious resets. IC1 has a separate analog supply pin (pin 19, AVdd) for its ADC and a 100µH axial inductor is used to filter this supply. This ADC is used to sense the positions of VR1-VR4 by measuring the voltage at their wiper(s). At the time of writing, the PIC32MX470 is so new that it is only available as engineering samples but production chips should be available by the time you read this. As usual, pre-programmed chips will be available from the SILICON CHIP Online Shop. Optional memory expansion Virtually all of IC1’s 128KB internal RAM is dedicated for use as a delay buffer and should be sufficient for most applications. But if a longer delay is required, IC3 can be fitted as mentioned above (see Fig.3). This is a Renesas R1LV0808ASB 1MByte SRAM chip. It runs from the same 3.3V supply as IC1 and its memory is arranged as 8 bits x 1048576 (220). This is driven by the Parallel Master Port (PMP) memory interface in the PIC32. The PMP on this PIC32 has 16 address lines (PMA0-15), eight data lines (PMD0-7) and read/write strobe pins PMRD/PMWR. These are connected to IC3’s A0-15 address lines (in no particular order), DQ0-7 bidirectional data lines, OE-bar (output enable) and WE-bar (write enable) respectively. The PMP can be driven by one or more DMA channels to allow copying between internal and external RAM while the processor is otherwise occupied. Since a 1MB 8-bit SRAM requires 20 address lines and IC1 only has 16, the other four are driven by GPIO (generalpurpose input/output) pins 12-15 (RB1-RB4). Thus, the Parallel Master Port can read or write blocks of 64KB of memory (216), with the four GPIO pins selecting one of 16 different 64KB blocks to access at any given time. Besides the power supply pins siliconchip.com.au Parts List 1 double-sided PCB, coded 01110131, 148 x 80mm 1 ABS plastic instrument case, 155 x 86 x 30mm (Altronics H0377) 1 set front and rear panel labels 4 No.4 x 6mm self-tapping screws 1 12MHz HC-49 crystal (X1) 1 100µH axial RF inductor (L1) 1 10kΩ multi-turn vertical trimpot (VR1) OR 1 x 10kΩ 9mm horizontal potentiometer (VR3) 2 5kΩ horizontal mini trimpots (VR5,VR6) 2 6.35mm PCB-mount stereo switched jack sockets (CON1,CON2) (Jaycar PS0195, Altronics P0099 or P0073) 1 5-way pin header, 2.54mm pitch (CON7) 1 PCB-mount SPDT right-angle toggle switch (Altronics S1320) 1 DC plugpack, 7.5-12V, 100mA+ 2 4mm ferrite suppression beads (which are bypassed with one electrolytic and two ceramic capacitors), the only remaining pins on IC3 are two chip select lines, CS1-bar and CS2. With CS2 permanently tied to +3.3V, CS1-bar controls whether IC3’s interface is active and this is driven by GPIO pin 54 (RD6) of IC1 (active-low). IC1 can detect whether IC3 is present simply by attempting to use it. With weak internal pull-downs enabled on the data bus, it will simply read zeros if IC3 is absent so we just need to do a test write to verify that it is connected and operating normally. If so, the delay adjustment range is set as 0-6s rather than 0-645ms. Note that when using a RAM chip such as this, the order in which the data and address lines are connected doesn’t matter. All that really matters is that when you write data to a particular address and then read that same address later (ie, all the address lines are in the same state), you get the same data back. Any jumbling of the address or data lines in a write operation is automatically reversed during a read. This is in contrast to DRAM (dynamic RAM), where the memory is broken up into rows and columns, and it’s much faster to access data sequentially than at random. SRAM is more akin to a large register file and in general, siliconchip.com.au 1 PCB-mount switched DC socket to suit plugpack 1 M3 x 6mm machine screw and nut Semiconductors 1 PIC32MX470F512H-I/PT 32-bit microcontroller programmed with 0111013A.hex (IC1) (available from SILICON CHIP Online Shop) 1 WM8731SEDS or TLV320AIC23BIPW 24-bit 96kHz stereo CODEC (IC2) (element14 1776264) 1 LM317T adjustable regulator (REG1) 1 3mm blue LED (LED1) 3 1N4004 diodes (D1-D3) Capacitors 2 1000µF 25V electrolytic 6 100µF 16V electrolytic 1 22µF 16V electrolytic performance is identical regardless of the address pattern used during read or write operations. Power supply Toggle switch S1 switches power, while diode D1 provides reverse polarity protection. A 3.3Ω resistor limits the inrush current and REG1 provides a regulated output of 3.15-3.55V (nominally 3.35V), programmed with the 120Ω and 200Ω resistors. Diodes D2 & D3 protect REG1 against its input being suddenly shorted (however unlikely that is), while the capacitor at D3’s anode improves high-frequency supply ripple rejection. Blue LED1 is the power indicator and its current-limiting resistor is used to run it at 0.4-0.8mA, depending on the incoming supply voltage. As well as the aforementioned supply bypass capacitors for microcontroller IC1 and optional SRAM IC3, there are also a number of bypass capacitors for IC2. Each of its various supply pins has a 100nF ceramic and 100µF electrolytic capacitor to ground. There is also a low-pass filter for its analog supply pins, to reduce the amount of supply noise that might be coupled from the digital circuitry. This is necessary to get good analog performance, especially for the ADC. 1 10µF 6.3V 0805 SMD ceramic 4 1µF 50V monolithic ceramic 11 100nF 6.3V 0805 SMD ceramic 2 1nF MKT 2 33pF ceramic disc Resistors (0.25W, 1%) 2 47kΩ 1 120Ω 3 10kΩ 2 100Ω 2 1kΩ 1 4.7Ω 0.5W 5% 1 200Ω 1 3.3Ω 0.5W 5% Extra parts for longer delay 1 R1LV0808ASB-5SI 8MBit 3.3V SRAM (IC3) (element14 2068153) 1 100µF 16V electrolytic capacitor 2 100nF 6.3V 0805 SMD ceramic capacitors Extra parts for dual mono delay 1 10kΩ multi-turn vertical trimpot (VR2) OR 1 x 10kΩ 9mm horizontal potentiometer (VR4) This filter consists of a 4.7Ω resistor with a ferrite bead over one of its leads, in series between the digital and analog +3.3V supplies, with a 1000µF filter capacitor for the analog supply. There is also a ferrite bead on the wire connecting the analog and digital grounds together. Software While the software to implement the delay function is not overly complex, there is still quite a bit going on. As usual, the source code will be available for download from the SILICON CHIP website (free for subscribers, or for a small fee). Most of the complexity resides in the “drivers” which must stream digital data between the microcontroller and CODEC and between the microcontroller’s internal RAM and the external SRAM chip. Circular buffering is used to allow for continuous recording and playback – for details, see the article on the SportSync Audio Delay Module (May 2011). Construction All the parts mount on a doublesided PCB coded 01110131 and measuring 148 x 80mm. This fits into a snap-together ABS plastic instrument case measuring 155 x 86 x 30mm. November 2013  41 22 µF 100nF 100nF IC1 1nF D2 100nF + 1nF PIC32MX470F 1 + 4004 100 µF 1000 µF + 100 µF 10 µF 100nF CON3 DC 7.5–12V 1k INPUT VR5 5k D1 4004 120Ω 200Ω 1k CON1 4004 10k 3.3Ω CON7 ICSP D3 100 µH 33pF REG1 LM317 5k VR6 100nF IC2 WM8731L 47k 47k 100Ω 100Ω OUTPUT 100 µF POWER 100nF L1 100nF 100nF 2x 1 µF 33pF S1 + + + 1000 µF CON2 100nF 100 µF + X1 100 µF K A 1 4.7Ω FB2 100 µF + 100nF 100 µF+ FB1 + 100nF 10k 01110131 Stereo Audio Delay/ DSP Board 24bit/96kHz 10k VR1 VR2 LED1 POWER IC3 R1LV0808ASB DELAY 2 DELAY 1 100nF VR4 1 µF 1 µF VR3 SILICON CHIP © 2013 NOTE: PARTS LABELLED IN RED ARE OPTIONAL – SEE TEXT Fig.4: follow this parts layout diagram to build the PCB, starting with the SMD ICs and the SMD capacitors. The parts labelled in red are optional. Install SRAM chip IC3 only if you need a delay that’s longer than 640ms and install VR2 (or VR4) if you want a dual channel delay unit with independently adjustable delays. Fig.4 shows the parts layout on the PCB. Don’t worry about the unpopulated pads; as stated above, they are there to accept extra circuitry to be described in the future. Start the assembly by fitting the SMD ICs. IC1 and IC2 are required while IC3 (the SRAM chip) is optional. They are each fitted in more or less the same manner, as described below. Note that IC1 and IC2 have very closely spaced pins (about 0.5mm apart) but if you are careful, it’s possible to hand solder these parts reliably. Begin by placing the IC to be installed alongside its pads and identify pin 1. In each case, there should be a small dot or depression in one corner (you may need to view the part under a magnifying lens and a strong light to spot it). This must line up with the dot and pin 1 marking on the overlay diagram and this should also be shown on the PCB silkscreen printing. Check that the part is the right way around, then apply a very small amount of solder to one of the corner pads. If you are right-handed, it’s easiest to start with the top pad on the righthand side. If you are left-handed, start with the top pad on the left side. Avoid getting any solder on the adjacent pad. That done, pick up the IC with a fine-tipped pair of angled tweezers 42  Silicon Chip and while heating the solder pad, gently slide it into place. Don’t take too long doing this; if you heat the pad too much it could lift so after a few seconds, if it isn’t in place, lift off and wait for the PCB to cool down before trying again. Once you have placed it, check the part’s alignment under a magnification lamp or similar. All the pins must be accurately centred over their respective pads. If they aren’t, don’t panic; it’s just a matter of re-melting the solder on that one joint and carefully nudging the IC in the right direction. You might get it right first time or it may take several attempts to get it in place, the goal being to eventually get it properly aligned without spreading solder onto any other pins or pads and without heating the PCB or IC enough to damage them. If you do get some solder on the adjacent pin, it’s still possible to adjust the position but you will now need to heat both pins to get it to move. Take care though, because if three or more pins end up with solder on them, you will likely need to remove the part, clean up the pads using solder wick and then start again. Once the part is in place, solder the diagonally opposite pin, then re-check the alignment under magnification as it may have moved slightly. If it has, you can reheat this second pad and gently twist the IC back into alignment. Once you’re happy, solder the rest of the pins but don’t worry too much about bridging them with solder (it’s almost impossible to avoid). Remember to refresh that first pin you soldered. Once all the pins have been soldered, spread a thin layer of flux paste along all the pins and gently press down on them with solder wick to suck up the excess solder. If done correctly, this will leave you with neatly soldered pins and no solder bridges. Go over all the pins once with the solder wick, then check under a magnifier for any remaining bridges. If there are any, add a dab of flux paste, then go back over them with the solder wick. Once that IC is in place, you can repeat the above procedure until all the SMD ICs have been fitted. By the way, rather than hand-solder these parts, you could use a home reflow oven (as described in SILICON CHIP magazine in March 2008). However, we realise that most constructors won’t have such a set-up and hand soldering is quite straightforward provided you follow the above procedure and have a good magnifying lamp and a fine-tipped soldering iron. Once all the ICs are in place, follow with the SMD ceramic capacitors, using a similar procedure; ie, add solder siliconchip.com.au +3.3V VR3 (ALT TO VR1) POT1 VR4 (ALT TO VR2) POT2 REPLACING VR1 & VR2 WITH VR3, VR4 Fig.5: potentiometers VR3 & VR4 can be installed instead of VR1 & VR2 if you want the delays to be externally adjustable (refer to the text for the various options). Don’t install both VR1 & VR3 or both VR2 & VR4. This photo shows the completed PCB without the optional SRAM chip (IC3) and with just VR1 fitted so that the unit functions as a basic stereo audio delay. Capacitor Codes Value 1μF 1nF 33pF µF Value IEC Code EIA Code 1.0µF   1u 105 0.001µF   1n 102   NA 33p   33 frustrating trying to re-align capacitors when this happens. Take care also not to short any IC pins when soldering in the SMD capacitors. They are located close to the ICs for performance reasons. Through-hole parts to one pad, then heat this solder and slide the part into place before soldering the other pad and refreshing the initial joint. Be careful not to get the SMD capacitors mixed up. In each case, wait about 10 seconds after soldering the first side of the capacitor before applying solder to the other side. This is necessary because the solder joint can remain molten for quite some time. If you try to solder the opposite pad too early, the capacitor will move out of alignment and it’s Proceed now with the low-profile components such as the resistors and diodes. Be sure to slip a ferrite bead (FB1) over one of the 4.7Ω resistor’s leads before soldering it in place. It’s best to check each resistor value with a DMM before fitting it as the colour bands can be difficult to read. The diodes are all the same type and all have their cathode bands facing to the top or righthand edge of the board. In the case of FB2, slip the bead over a resistor lead off-cut and then solder it to the board as shown in Fig.4. You can also mount axial inductor L1 at this time. Follow with REG1; bend its leads down about 6mm from its body, feed them through the PCB holes, fasten its tab to the PCB using an M3 x 6mm machine screw & nut and then solder and trim the leads. The horizontal trimpots can go in next, followed by the MKT and ceramic capacitors (disc and monolithic multilayer) and then pin header CON7 (not required if you have a preprogrammed microcontroller). That done, solder DC socket CON3 in place, followed by either VR1 or VR3 (to externally adjust the delay) but not both. In addition, you can optionally fit VR2 or VR4 (but not both). As mentioned earlier, if either VR2 or VR4 is fitted, the unit will operate as two separate mono delay channels. Now fit crystal X1 and the electrolytic capacitors, taking care to ensure that the latter are correctly orientated. Follow with power switch S1 and the blue power LED (LED1). This LED should have its leads bent at right angles 4mm from the base of the lens and then soldered so that the centre of the lens (and thus this short lead section) is 6.5mm above the top surface of the PCB. This aligns the centre of the LED Resistor Colour Codes o o o o o o o o o siliconchip.com.au No.   2   3   2   1   1   2   1   1 Value 47kΩ 10kΩ 1kΩ 200Ω 120Ω 100Ω 4.7Ω 3.3Ω 4-Band Code (1%) yellow violet orange brown brown black orange brown brown black red brown red black brown brown brown red brown brown brown black brown brown yellow violet gold brown orange orange gold brown 5-Band Code (1%) yellow violet black red brown brown black black red brown brown black black brown brown red black black black brown brown red black black brown brown black black black brown yellow violet black silver brown orange orange black silver brown November 2013  43 1 Audio Delay THD vs Frequency 13/09/13 15:33:36 0.5 0.2 THD+N % 0.1 0.05 0.02 0.01 0.005 0.002 0.001 20 50 100 200 500 1k 2k Frequency (Hz) with the centre of the switch. When bending the LED’s leads, pay attention to the “A” and “K” markings on the PCB as the longer (anode) lead must be soldered to the anode pad. You can accurately set the height of the LED by cutting a 6.5mm wide cardboard spacer and pushing the leads down onto this. The assembly can now be completed by soldering jack sockets CON1 and CON2 in place. Note that if you are using the type with six pins, you will also have to file or cut down the tall, rounded pieces of plastic just behind the screw threads (see photos), to prevent them from later fouling the case. Checking it out If you purchased a blank PIC32 chip, program it now (or purchase a programmed chip from the SILICON CHIP Online Shop). Complete kits will also come with a programmed chip. The circuit can be powered from a PICkit3 programmer at 3.3V. In fact, the whole unit will operate normally from this supply so you can test the 5k Fig.6: this graph shows that the delay unit should have little impact on sound quality, even when used with high-quality PA system (input signal level is 1V RMS). The ‘oscillation’ between 0.01% and 0.02% is due to the beat products of the 48kHz sampling rate and the input signal frequency (this is a form of aliasing). 10k 20k audio signal path immediately after programming the chip. If you don’t have a PICkit3, you will need to power the unit from a 7.5-12V DC plugpack. In this case, connect a voltmeter across the 3.3Ω resistor next to D1. Small alligator clip leads (or other test probe clips) are very useful for this purpose, as you can switch the unit on while watching the meter reading and switch it off immediately should the voltage across this resistor rise too high. Expect a reading in the range of 0.2-0.3V, depending on the exact resistor value and how you have configured the unit. Much less than 0.2V indicates that there is an open circuit somewhere while much more than 0.3V indicates a likely short circuit. If the reading is outside the expected range, switch off immediately and check for faults. The most likely faults would be one or more pins on an SMD chip bridged to an adjacent pin or not properly soldered to the PCB pad. Other possible faults include incorrect device orientation (primarily ICs, diodes and electrolytic capacitors) or poor/ bridged through-hole solder joints. Assuming all is OK, feed a line level audio signal into the input and connect the output to an amplifier. You should hear clear, undistorted audio with no delay. You can then adjust the delay pot setting(s) and check that this operates as expected. A fully clockwise setting will give a delay of either 640ms (no SRAM fitted) or 6s (SRAM fitted). If you know what signal level will be applied to the input when the unit is in use, you can adjust trimpots VR5 & VR6 to suit now. To do this, feed in a sinewave of the expected amplitude, then adjust these pots so that the outputs measure just under 1VAC. Any higher will lead to clipping and distortion. Ideally, you should calibrate them separately. If you aren’t sure of the input signal amplitude, you can wait until you get the unit “in the field” to set the level pots. One method is to turn them clockwise until clipping and distortion start, then back them off slightly. However, this does risk setting the level high enough for slight clipping to occur which may not always be obvious. If the input signal is under 1V RMS (0dBu = 0.775V RMS), then you can simply set them both fully clockwise. If all else fails, simply set VR5 & VR6 half-way. The unit can then handle input signals up to about 2V RMS but if the signal level is significantly lower than this, the noise and distortion will be less than optimal. Case preparation The front panel of the case needs holes for the power switch and LED, while the rear panel requires holes for the two jack sockets and the DC power plug. The front and rear panel artworks (Fig.7) can be used as drilling tem- SILICON CHIP www.siliconchip.com.au . AUDIO OUTPUT 44  Silicon Chip AUDIO INPUT www.siliconchip.com.au + STEREO AUDIO DELAY POWER Fig.7: these two artworks can be copied and used as drilling templates for the front & rear panels. They can also be downloaded as a PDF file from the SILICON CHIP website. 7.5-12V DC siliconchip.com.au The PCB is fastened into the case using four self-tapping screws which go into integral pillars. Note that the front & rear panels are normally fitted after the lid has been fitted. plates. These can also be downloaded from the SILICON CHIP website in a single PDF file (free for subscribers). It’s simply a matter of printing (or copying) the labels, then accurately taping them to the panels, drilling a pilot hole in the centre of each location indicated and then enlarging each to size using a tapered reamer. That done, remove the templates and de-burr the holes using a counter-sinking tool or oversize drill bit. Any adhesive residue can normally be cleaned up with methylated spirits. Check that the holes are large enough by test fitting the panels to the bare PCB. A new set of panel labels can then be printed onto photographic paper, attached to the panels using silicone adhesive and the holes cut out using a sharp hobby knife. The assembly can now be completed by screwing the PCB to the bottom of the case using four No.4 x 6mm selftapping screws, then placing the lid on top and snapping the front and rear panels on. If you have trouble fitting siliconchip.com.au the panels over the connectors, enlarge the offending holes slightly. Note that the DC power socket is recessed; most DC power plugs are long enough to fit through the rear panel. Using it All that’s left is to install the unit in its intended application and set the required delay. For PA systems, this can be a simple trial-and-error process whereby you incrementally increase the delay to get the best overall intelligibility at various points in the hall (or venue). A similar procedure will be required where the unit is used to provide two separate delays. Once adjusted, you can determine what the delay is actually set to by measuring either the frequency or the duty cycle at pins 4 & 5 of CON7. Even if the pin header is not fitted, you can simply “poke” probes into the plated PCB holes. A PWM signal is provided at each of these pins and its frequency in Hz is equal to the set delay in milliseconds (DC = no delay). The duty cycle varies from 0-99%, with 99% indicating maximum delay (ie, 0.64s or 6s, depending on whether IC3 is fitted). If the unit is set up for dual mono delays, measure pin 4 to determine the left channel delay and pin 5 the right channel delay. Note that the accuracy of these readings depends on the exact frequency of crystal X1. What’s coming That’s all there is for the delay function. In the next instalment, we’ll show you how to use the same hardware for echo or reverb. These functions are especially useful when used in conjunction with a microphone (for vocalists) or an electric guitar. As such, we’ll show you how to wire the unit up to a pedal, so that the effect can be switched on and off easily. We’ll also show you how to reconfigure the unit to run from a 5V supply, in case you want to power it from a computer SC USB port or similar. November 2013  45