Critical Design Review - Department of Electrical Engineering and

advertisement
Senior Design Partnership:
AmpTraXX2
About Group 13
Matt Webb:
Electrical Engineering
Earl Maier:
Electrical Engineering
Minor in Mathematics
Talitha Rubio: Electrical Engineering
Computer Science Minor
Daren Ruben: Electrical Engineering
25 Years of Alcorn McBride Experience
Overview
Goal: Create a system that is capable of processing many channels of
audio and distributing them over standard Ethernet networks to breakout boxes providing audio channel selection, signal level audio
outputs, and a Class-D amplified output.
•
•
•
•
•
Reliable
Network Configurable
Easily Scalable
Zero Maintenance
Very Flexible
Application Example
• Annual events (Ex. Halloween Horror Nights)
o Problem: New environments require changes in audio
distribution and filtering
o Solution: Ethernet enables you to easily send signal to
anywhere within an existing network. Just plug in an
AmpTraXX2 unit to add a new speaker. For
environments that are being modified, select a different
channel for sound playback on AmpTraXX2.
Current Practice
Improved Practice
DSP Unit Specifications
• Input and output stage DSP for 8 channels at 96KHz/24-bit
• Input/Output routing matrix
• Digital signal processing capabilities per channel
o Four EQ bands (Choose: Parametric, LPF, HPF)
o Three topologies (Bessel, Butterworth, Linkwitz-Riley)
o Dynamic Range Compression
• Dante Audio-over-Ethernet I/O
• Web-based monitoring and controls
o View break-out box status and channel selections
o Change equalization, routing, and compression
o Check channel clip status
o Optimized for iOS, Android, Windows Phone, BB
• Numerous physical inputs and outputs, 96KHz ADC/DAC
• Integrated 4-port 1000Mbps Ethernet switch
• Front Panel Controls
• 1U Size
Break-out Box Specs
•
•
•
•
•
•
•
Output any eight channels via Dante Audio-over-Ethernet
Stereo Class-D Amplifier (2x90W RMS @ 4Ohms)
Stereo signal output (Balanced, Unbalanced, S/PDIF)
Simple human interface to modify settings
Network monitored and controlled
Integrated 4-port 1000Mbps Ethernet switch
Compact Size (mount on rear of small speaker)
Connector Summary
• Centralized Audio DSP (All rear connections)
o
o
o
o
o
o
o
Stereo Unbalanced Inputs -- 2x RCA
Stereo Balanced Inputs -- 2x XLR Female
S/PDIF Input -- 1x RCA
Stereo Balanced Outputs -- 2x XLR Male
S/PDIF Output -- 1x RCA
1Gbps Ethernet -- 4x RJ-45
Power (IEC 60320-1 C13)
• Amplified Break-Out Box (All rear connections)
o
o
o
o
o
o
o
Stereo Amplified Outputs -- 4x Binding Posts
Stereo Balanced Outputs -- 2x XLR Male
Stereo Unbalanced Outputs -- 2x RCA
S/PDIF Output -- 1x RCA
Eurocon GPIO Pin – 16x
1Gbps Ethernet -- 4x RJ-45
Power (IEC 60320-1 C13)
DSP Box
Breakout Box
DSP Signal Flow
BOB I/O Diagram
Software Diagram
UART
Dante Brooklyn II
•
•
•
•
•
•
•
•
•
NDA required
Supports up to 16 audio channels per TDM
Supports Gigabit and 100 Mbps Ethernet
At 96kHz Sampling frequency we can have 32
bidirectional channels of audio.
Simplified configuration management. (Plug and play
network).
All audio devices on the network must be Dante
enabled.
Works with existing LAN networks
Up to 32 bit audio words
Redundancy in Ethernet input
A/D and D/A
Cirrus Logic Codec
P/N CS42448
Features:
• Six (6) 24-bit A/Ds
• Eight (8) 24 bit D/As
• Compatible with TDM
• ADC/DAC 192 KHz
Sampling Rate
• Digital Volume Control
• I2C & SPI capable
Purpose:
• Analog to Digital
• Digital to Analog
• Volume Control
Advantage:
Eliminates the need for
separate A/D and D/A.
Digital Routing
DIX 9211 (Digital Audio Interface Transceiver)
• Function:
o Route the digital audio signal between the
CODEC and Brooklyn II
o Provide S/PDIF input and output
• DIX 9211 became a necessity when the decision
was made to use the same PCB layout for both
boxes.
Digital Routing
Class D-Amp
Abletec ALC0180 specifications:
• 2x90 Wrms/4ohm @ 1% THD
• 1x180 Wrms/8ohm bridged @
1% THD
• 2x50 Wrms/8ohm @ 1% THD
• Over current protection
• Over temperature protection
• Over voltage protection
Bridge Mono vs Stereo
User will control the amplifier stereo/bridge
configuration via the user interface. The speaker
connection to the amp will have to be changed
manually.
Blackfin DSP Chip
•
•
•
•
•
•
•
•
•
132KB of on chip full speed SRAM
CPU: up to 600 MHz
Core voltage: 0.8-1.3V, DPM
Useful ports: SPI, SPORT, TWI
Up to 48 peripheral control lines
Extra features atypical of signal processors
Real-time OS
Capable 16/32 bit operations
Sponsor-recommended part
Real-Time OS
μCLinux – Linux alternative adapted for MCUs.
•Linux kernel: Built-in IP connectivity, reliability,
portability, filesystems, free software
•Under 300KB
•Full Linux 2.6 features: API, multi-tasking,
stability, drivers
•Robust
•Supports C/C++ applications
•Using a real-time OS relieves developer of control
coding
ALSA Driver
ALSA (Advance Linux Sound Architecture)
• ALSA drivers provide audio functionality to the
Linux OS.
• Supports all types of audio interfaces: consumer
sound cards to professional multi-channel
interfaces
• Simplifies application development and provides
higher level functionality
• Open-source
• Linux community provides useful tutorials for
driver development
Stellaris Microcontroller
Functions:
• Monitor temperature and
amplifier status
• Control CODEC and DIX
• Control user interface
o Web Server
o Screen
Requirements:
• Support Ethernet
• I2C and SPI capable
• Large memory
• >32KB Flash
• Over 10 GPIO
LM3S8962:
• 5-42 GPIO
• UART
• I2C and SSI capable
• CAN and Ethernet
capable
• 256KB memory
• Inexpensive
Front Panel
The front panel will consist of
• Newhaven Screen
• Rotary Encoder
• Select Button
• Red/Green LED array for status (DSP Box only)
• Blue LED for power
• I2C expanders
Screen Selection
NHD-0216B3Z-FL-GBW
Vs.
CU16025ECPB-W6J
• Originally: CU16025ECP
B -W6J
• Changed
to:
NHD0216B3Z-FL-GBW due to
I2C capabilities
• Couldn't find enough
GPIO for serial interface
• 2 lines x 16 characters
VFD display
Gigabit Ethernet Switching
• 1000Base-T Ethernet is required for maximum Dante channel
counts
• IEEE 802.1 Audio-Video Bridging (AVB) switches preferred
o Reserve network bandwidth for streaming media
o Shape traffic around streaming media
• Duties:
o Provide Brooklyn II module with Ethernet (audio)
o Provide Stellaris with Ethernet
o Provide two additional ports for daisy-chaining
Marvell 88E6350 Switch
• Very new Marvell part -- NDA required
• 5 PHY + 7 MAC w/ GMII for Brooklyn II
• AVB Compatible (802.1AS, 802.1Qat, 802.1Qav)
Dante Primary
Stellaris
Daisy-Chain
Dante Secondary
Daisy-Chain
Brooklyn II
Audio Clock Distribution
• Three audio clocks control ADC's, DAC's, and filtering
o Master Clock -- Driven by Brooklyn II Module
 Derive LM26003 switching frequency (384KHz)
 Derive 24.576MHz for DIX9211
 Send to CODEC, DIX9211 auxiliary inputs
o Bit Clock -- Driven by Brooklyn II Module
 Send to Blackfin SPORT0, SPORT1 Primary+Secondary
 Send to CODEC, DIX9211 auxiliary inputs
o LR/Frame Clock -- Driven by Brooklyn II Module
 Send to Blackfin SPORT0, SPORT1 Primary+Secondary
 Send to CODEC, DIX9211 auxiliary inputs
Audio Clock Distribution
Audio Clock Distribution
TDM Audio Routing
TDM Audio Routing
Resistor Mux
The Resistor Mux allows for the DSP box and break-out
box to be developed with the same PCB layout.
Connections
DSP Box
CODEC(A/D out) => BlackFin
BlackFin => CODEC(D/A in)
Breakout Box
CODEC(A/D out) => Brooklyn
Brooklyn(out) => CODEC(D/A in)
Power Consumption
Power Consumption
Power Supply
LM26003
LM2599
LMZ23608
Synchronizable to
an External Clock
X
X
Adjustable
Switching Freq.
X
X
Power Flags
X
X
Adjustable Output
Voltage
X
X
X
Price
$3.52
$2.16
$16.50
Power Supply
AC -> DC Conversion
5V Switching Regulator
Power Supply
3.3V Switching Regulator
LDO Regulators
User Interface
• Required Tasks
o Modify DSP settings (EQ, Compression)
o Modify matrix routing
o Assign/modify channel names
o Check clip/overflow status
o Monitor break-out box status on network
• Create great mobile device experience
o Write web apps using jQuery Mobile
o "Native" app feel
o Considerably less programming time
User Interface Cont.
User Interface Cont.
User Interface Cont.
User Interface Web API
• Create communication interface between web interface and C code
• Required actions:
o Get channel listing (name, status, numerical identifier)
o Get equalization parameters (band, type, q, center freq, gain)
o Get compressor parameters (threshold, ratio, attack, release, gain)
o Get matrix routing (indexed by output number)
o Get breakout box status
o Get overflow/clip status
o Rename channel (pass numerical identifier and new name)
o Change matrix routing (pass output identifier, input identifier)
o Change EQ params (pass channel identifier, all band params)
o Change compressor params (pass channel identifier, all params)
User Interface Web API
• Utilize JavaScript Object Notation (JSON) for
population of GUI data
• Requires JSON encoder in C -- had to write my own
• LOTS of code and a rather large sudden amount of
memory usage
• Examples:
o
Compressor Parameters:
ipaddress/a/o/3/compparams {"gain":2.0000,"threshold":10.0000,
"ratio":1.5000,
00}
o
"attack":10.0000,"release":500.0000,"enable":1.00
Channel List:
ipaddress/a/i/chanlist [{"name":"ch01","active":1,"io":0,"num":2},{"na
me":"Ch2!","active":1,"io":0,"num":2}]
Stellaris/Blackfin API
•
•
•
•
•
•
•
Create communication standard between Blackfin and Stellaris
Designed similar to instruction types for embedded processors
Multiple command types: Read, Write, Acknowledge, Notification
Read from BF: Investigate a DSP parameter or setting
Write to BF: Change a DSP parameter or setting
Acknowledge: Send a command back to Stellaris after write
Notification: Inform Stellaris of signal and clipping
Stellaris/Blackfin API
Read Value
Write Value
Acknowledgement
Notification
Stellaris/Blackfin API
ST-BF API Difficulties
• Need to verify that a filter or routing change
actually occurred
o Created Acknowledge command type
• Need ability to carry out wide array of actions
based on a command type
o Implement function callbacks using void pointers
(function pointers)
• Create code that works on both compilers
o Use C99 standard integer types & conventions
o Create transmit and receive specific functions
for each microcontroller
Audio Processing Flow
Filtering Types
• Bessel
o Create coefficient generator up to fourth order
• Butterworth
o Implement algorithm to figure out even and odd
Butterworth coefficients
o Allow for 1st, 2nd, 3rd, 4th order filters
o generate each section (multiple BIQUAD objects
• Linkwitz-Riley (defined by -6dB at cutoff frequency)
o 2nd order -- 2 first order filters in cascade
o 4th order -- 2 second order butterworth filters in
cascade
DSP Data Structures
Current Progress
Completion Plans
• Matt
o Integrate BF-ST API onto Stellaris EVM
o Verify cross-compilation onto Blackfin EVM
o Inject JSON into web page
o Integrate JSON code onto Stellaris EVM
o Redo equalization screens on GUI
o Write "glue" code to make all libraries work as a
system on Stellaris EVM
Completion Plans Cont.
• Earl
o Write Newhaven 2x16 VFD screen library
o Write code for Break-out Box menu system
o Codec Library
o DIX9211 Library
o Temperature sensor interaction
Completion Plans Cont.
• Talitha
o Write primary Blackfin code
o Implement matrix routing
o Implement compression and equalization
activation
o Implement hooks for BF-ST SPI API
Completion Plans Cont.
• Daren
o Write Dante Library
o Create filter algorithms (Butterworth, Bessel,
Linkwitz-Riley)
 LPF (1st-4th order)
 HPF (1st-4th order)
 Parametric (2nd order, variable width)
 High/Low Shelving (if time permits)
o Implement algorithms in C for Blackfin
o Troubleshoot possible power supply issues
Issues
•
•
•
•
Dante Library - NDA hurtles, Audinate issues
No Brooklyn II EVM -- $6000...
PCB production timeline -- Mid-March if lucky
GigE switch needs to be reprogrammed to provide
daisy-chain ability
• Combining everyone's code
• Cross-platform compilation unknowns (BF-ST API)
Budget
Project Budget
• Initial Production Run – 5 populated PCB’s
• Alcorn paying – $10k
• 8 layers
• Blackfin EVMs (2) provided by Alcorn
• Over 800 parts per PCB purchased by Alcorn
• Less than $1000 of WFCF money spent
Questions?
Download