USB声卡XU316的硬件设计(数字部分)
概要
本文针对USB 声卡的数字部分设计进 行描述,包含了USB的电路,XU316主控的外围启动电路,音频时钟电路,不涉及模拟部分的硬件设计。为了更加实例化,本文以XU316-1024-QF60B-PP24的作为整个方案的主控,进行讲述USB声卡的硬件设计,读者需要结合其datasheet和PXUA-XU316-KIT的原理设计,便可基本确定USB声卡数字部分的电路设计。
XU316主控电路
根据XU316-1024-QF60B-PP24的datasheet详细描述 , XU316的最小系统需要简单的外围器件,需要3路电源供应(3V3,1V8和0V9),QSPI Flash(存储固件)和晶振便可启动工作。
电源设计
主控XU316的电源设计共需要3路电源供应,分别为3V3 ,1V8和0V9供应部分。其要求如下表,需要注意以下事项:
- 3V3推荐使用LDO,并且这可使得3V3的上电时序较快于1V8,0V9。
- 每个XU316电源pin脚都需要加至少100nF的去耦电容。
- PLL需要一个非常干净的电源,以及一个低通滤波器(例如,一个1μF的多层陶瓷电容和一个在100MHz时为600Ω、DCR<1Ω的铁氧体)
| 电源 | 最小值 | 典型值 | 最大值 | 选型推 荐 | 工作电流值 | 描述 |
|---|---|---|---|---|---|---|
| 0V9 | 0.855V | 0.900V | 0.945V | DC-DC | 约300mA | 属于XU316核心电源,电流较大,推荐使用DC-DC |
| 1V8 | 1.620V | 1.800V | 1.980V | DC-DC | 约30mA | GPIO 电流小,涉及USB模拟电源,推荐使用DC-DC |
| 3V3 | 3.000V | 3.300V | 3.600V | LDO | 约33mA | 主要是GPIO电源,电流小,涉及USB模拟电源,推荐使用LDO |
启动设计
- XU316外部需要24MHz无源晶振接入作为启动晶振,接入到XIN、XOUT引脚
- XU316需要外置 Flash,其主要是存储XU316的固件,需要预先烧录固件才能才能运行USB声卡程序。
- XTAG 选用2x5 1.27mm母座,作为XU316烧录Flash、调试和打印使用
USB 设计
XU316芯片集成了USB 2.0 PHY收发芯片,将XU316的USB_DP和USB_DM引脚和USB端子(Type-A,Micro-B,Type-C)连接就可以。需要简单注意一下:
-
如果使用USB_VBUS作为整个设备供电的话,其最大电流通常限制在500mA及以下(受限于USB2.0供电标准)。
-
如果不是使用USB_VBUS电路作为XU316供电的话,需要加入如下图所示的VBUS检测电路。

使用外置电源,VBUS需要接到XnDnn
时钟设计
XMOS平台的专业USB声卡使用异步传输协议,为实现异步传输模式,USB声卡设备中是需要设计音频时钟的。这音频时钟可以由以下4种方式提供:
- 有源晶振
- 外置的PLL
- XU316内置的PLL
- 其他处理器提供的音频时钟
音频采样率对应的44.1kHz和48kHz,他们的所需要的时钟频率不同,以I2S音频接口(此处链接I2S协议)为例。
BCLK=Sample Rate*32 bit*2ch
而BCLK为MCLK整数分频得到,LRCLK为音频采样率的SampleRate。根据公式,得到下表,当需要达到705.6kHz,768kHz的音频采样率时,例如HiFi声卡应用,我们需要选择45.1584MHz和49.152MHz作为音频时钟的MCLK。对于常规的专业录音声卡应用,通常采样率最高只需要192kHz,则使用12.288MHz和11.2896MHz的音频时钟即可。
| 采样率(KHz) | 44.1 | 48 | 88.2 | 96 | 176.4 | 192 | 352.8 | 384 | 705.6 | 768 |
|---|---|---|---|---|---|---|---|---|---|---|
| BCLK(MHz) | 2.8224 | 3.072 | 5.644.8 | 6.144 | 11.2896 | 12.288 | 22.5792 | 24.576 | 45.1584 | 49.152 |
| 最小MCLK(MHz) | 2.8224 | 3.072 | 5.644.8 | 6.144 | 11.2896 | 12.288 | 22.5792 | 24.576 | 45.1584 | 49.152 |
一般使用XU316作为I2S主模式的时候,我们选用有源晶振或者XU316内置的PLL作为音频主时钟。其设计如图,其中:
- 在UAC协议获取采样率信息后,XU316能够通过441_EN或者48_EN来选择45.1584和49.152MHz其中一个作为MCLK。
- XU316有两个tile, 需要MCLK需要同时进入的tile0和tile1, 所以才会分别输入到X0D35和X1D11, 同时MCLK也需要分出给到ADC/DAC/Codec。
- 或者,使用XU316内部的PLL,在X1D11输出等同两个晶振的时钟,如需要可以去掉中间的电阻。

IO分配
对于XU316-1024-QF60B-PP24,可供分配的引脚是有限的,因此在设计阶段,您应当有计划地分配各引脚的功能。除了音频时钟和Flash,XU316剩余的I/O(即til0和tile1的X0Dnn和X1Dnn)可具备以下3种使用方式:
- 连接音频ADC/DAC/Codec芯片所需数字音频接口(I2S,TDM,DSD),及其I2C配置,RST复位等
- 其他数字音频接口如S/PDIF,ADAT,MIDI等
- 用于输入输出控制的GPIO,如UART,LED,和按键输入等等
结合XU316的I/O特性,并且结合产品中的数字音频接口时序协议,我们将剩下XU316的I/O针对几种不同的应用,做了以下的port_map。设计硬件原理图之后,需要在XU316的软件中进行代码定义对应的port_map便可。
| HIFI 声卡 | 专业录音声卡 | 专业录音声卡 | 专业录音声卡 | 麦克风阵列 | ||||
|---|---|---|---|---|---|---|---|---|
| signal | pin | 1bit | 4 /8 bit | I2S/DSD/SPDIF | 2进2出 | 4进4出 | 8进8出 | 8路PDM |
| X0D00 | 6 | 1A | SPDIF Out | SPDIF Out | I2S_ADC0 | I2S_DAC2 | ||
| X0D11 | 7 | 1D | XMOS_UART_TX | XMOS_UART_TX | I2S_ADC1 | I2S_DAC3 | MIC_CLK | |
| X0D29 | 40 | 4F1 | 441_ENABLE | 441_ENABLE | 441_ENABLE | 441_ENABLE | RST_DAC/ADC | |
| X0D30 | 54 | 4F2 | 48_ENABLE | 48_ENABLE | 48_ENABLE | 48_ENABLE | ||
| X0D31 | 55 | 4F3 | ||||||
| X0D32 | 56 | 4E2 | I2C_SCL | I2C_SCL | I2C_SCL | I2C_SCL | I2C_SCL | |
| X0D33 | 58 | 4E3 | I2C_SDA | I2C_SDA | I2C_SDA | I2C_SDA | I2C_SDA | |
| X0D35 | 41 | 1L | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | |
| X0D36 | 43 | 1M | BCLK_OUT | BCLK_OUT | BCLK_OUT | BCLK_OUT | MIC_DATA0 | |
| X0D37 | 44 | 1N | LRCLK_OUT | LRCLK_OUT | LRCLK_OUT | LRCLK_OUT | MIC_DATA1 | |
| X0D38 | 45 | 1O | I2S_DAC0 | I2S_DAC0 | I2S_DAC0 | I2S_DAC0 | MIC_DATA2 | |
| X0D39 | 47 | 1P | RST_DAC | I2S_ADC0 | I2S_DAC1 | I2S_DAC1 | MIC_DATA3 | |
| X0D40 | 46 | 8D4 | RST_DAC/ADC | RST_DAC/ADC | MIC_DATA4 | |||
| X0D41 | 50 | 8D5 | MIC_DATA5 | |||||
| X0D42 | 48 | 8D6 | MIC_DATA6 | |||||
| X0D43 | 51 | 8D7 | MIC_DATA7 | |||||
| X1D00 | 9 | 1A | USB_STATE | MIDI OUT | MIDI OUT | I2S_ADC0 | I2S_DAC0 | |
| X1D01 | 10 | 1B | MIDI IN | MIDI IN | I2S_ADC1 | BCLK_OUT | ||
| X1D10 | 13 | 1C | usb_VBUS_Set | I2S_ADC2 | LRCLK_OUT | |||
| X1D11 | 14 | 1D | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | MCLK_XCORE | |
| X1D22 | 39 | 1G | I2S_ADC3 | I2S_ADC0 | ||||
| X1D13 | 32 | 1F | X | X | X | BCLK_OUT | ||
| X1D34 | 53 | 1K | X | X | X | LRCLK_OUT |
- "X"表示改IO 被其他内容占用,不可做通用IO使用
- PLL Out代表XU316可以软件配置输出50MHz以内的时钟信号,可用于配置24.576MHz等音频时钟在XU316的X1D11输出。
应用示例
以下实例是根据IO分配进行项目和应用的示例,示例中仅涉及到数字音频接口的说明,如其他GPIO,UART等没有列举出来,读者可以根据XU316的I/O(主要是1bit和4bit的特性)进行分配I/O使用。I/O分配之后,也需要在软件代码上进行配置和Coding才能正常工作。
HIFI 声卡
功能:USB HiFi声卡,PCM和DSD输出,支持S/PDIF输出
参数:最高支持PCM786kHz,DSD512,S/PDIF输出高达192kHz

2进2出
功能:USB专业录音声卡,支持2路(麦克风/乐器)输入,2路输出(侦听/背景音),支持S/PDIF输出,支持MIDI输入输出
参数:PCM采样率支持高达384kHz,S/PDIF输出高达192kHz
原理说明:ADC/DAC的I2S的MCLK,LRCLK和BCLK时钟线是复用的

4进4出
功能:USB专业录音声卡,支持4路(麦克风/乐器)输入,4路输出和2路侦听,支持S/PDIF输出,支持MIDI输入输出
参数:PCM采样率支持高达192kHz,SPDIF输出高达192kHz
原理说明:ADC/DAC的I2S的MCLK,LRCLK和BCLK时钟线是复用的
