610 likes | 781 Views
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
E N D
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 break-out 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) • Problem: New environments require changes in audio distribution and filtering • 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.
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 Four EQ bands (Choose: Parametric, LPF, HPF) Three topologies (Bessel, Butterworth, Linkwitz-Riley) Dynamic Range Compression Dante Audio-over-Ethernet I/O Web-based monitoring and controls View break-out box status and channel selections Change equalization, routing, and compression Check channel clip status 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) 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) 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)
Software Diagram UART
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 Dante Brooklyn II
A/D and D/A Cirrus Logic Codec P/N CS42448 • Purpose: • Analog to Digital • Digital to Analog • Volume Control • Advantage: • Eliminates the need for separate A/D and D/A. • 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
Digital Routing • DIX 9211 (Digital Audio Interface Transceiver) • Function: • Route the digital audio signal between the CODEC and Brooklyn II • 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.
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 • LM3S8962: • 5-42 GPIO • UART • I2C and SSI capable • CAN and Ethernet capable • 256KB memory • Inexpensive • Functions: • Monitor temperature and amplifier status • Control CODEC and DIX • Control user interface • Web Server • Screen • Requirements: • Support Ethernet • I2C and SPI capable • Large memory • >32KB Flash • Over 10 GPIO
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: CU16025ECPB -W6J • Changed to: NHD-0216B3Z-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 • Reserve network bandwidth for streaming media • Shape traffic around streaming media • Duties: • Provide Brooklyn II module with Ethernet (audio) • Provide Stellaris with Ethernet • 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 • Master Clock -- Driven by Brooklyn II Module • Derive LM26003 switching frequency (384KHz) • Derive 24.576MHz for DIX9211 • Send to CODEC, DIX9211 auxiliary inputs • Bit Clock -- Driven by Brooklyn II Module • Send to Blackfin SPORT0, SPORT1 Primary+Secondary • Send to CODEC, DIX9211 auxiliary inputs • LR/Frame Clock -- Driven by Brooklyn II Module • Send to Blackfin SPORT0, SPORT1 Primary+Secondary • Send to CODEC, DIX9211 auxiliary inputs
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 Supply AC -> DC Conversion 5V Switching Regulator
Power Supply 3.3V Switching Regulator LDO Regulators
User Interface • Required Tasks • Modify DSP settings (EQ, Compression) • Modify matrix routing • Assign/modify channel names • Check clip/overflow status • Monitor break-out box status on network • Create great mobile device experience • Write web apps using jQuery Mobile • "Native" app feel • Considerably less programming time
User Interface Web API • Create communication interface between web interface and C code • Required actions: • Get channel listing (name, status, numerical identifier) • Get equalization parameters (band, type, q, center freq, gain) • Get compressor parameters (threshold, ratio, attack, release, gain) • Get matrix routing (indexed by output number) • Get breakout box status • Get overflow/clip status • Rename channel (pass numerical identifier and new name) • Change matrix routing (pass output identifier, input identifier) • Change EQ params (pass channel identifier, all band params) • 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: • Compressor Parameters: ipaddress/a/o/3/compparams {"gain":2.0000,"threshold":10.0000,"ratio":1.5000, "attack":10.0000,"release":500.0000,"enable":1.0000} • Channel List: ipaddress/a/i/chanlist [{"name":"ch01","active":1,"io":0,"num":2},{"name":"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
ST-BF API Difficulties Need to verify that a filter or routing change actually occurred Created Acknowledge command type Need ability to carry out wide array of actions based on a command type Implement function callbacks using void pointers (function pointers) Create code that works on both compilers Use C99 standard integer types & conventions Create transmit and receive specific functions for each microcontroller