已绑定手机
|
本帖最后由 Hokkien 于 2022-9-5 13:58 编辑
一个软件定义的 S/PDIF 库,允许您通过 xCORE 端口传输或接收 S/PDIF 数据。 S/PDIF 是一种数字数据流接口。 库中的组件通过 C 语言使用 XMOS 多核扩展 (xC) 进行控制,并提供 S/PDIF 接收器和发送器。
特征
• 支持高达 96KHz 采样率的立体声 S/PDIF 接收
• 支持高达 192KHz 的立体声 S/PDIF 传输
典型的资源使用
下表显示了一些不同配置中的典型资源使用情况。 确切的资源使用将取决于应用程序对库的特定使用。
Configuration | Pins | Ports | Clocks | Ram | Logical cores | Transmit | 1 | 1(1-bit) | 1 | ~3.8K | 1 | Receive | 1 | 1(1-bit) | 1 | 3.9K | 1 |
相关应用笔记
以下应用笔记使用此库:
• AN00231 - 使用异步采样率转换的 SPDIF 接收到 I2S 输出
1 外部信号说明
该库实现了 S/PDIF(索尼/飞利浦数字接口格式)协议,用于传输未压缩的 24 位立体声 PCM 数据。
支持的精确传输频率取决于外部时钟(例如,PLL 或晶体振荡器)的可用性,该时钟以通道频率 * sampleRate * 64 或 2 倍数的频率运行。例如,对于 2 个通道 192 Khz 外部时钟必须以 24.576 MHz 的频率运行。 此相同频率还支持 2 个 48 KHz 的通道(要求最低频率为 6.144 MHz)。如果要同时支持 44,1 和 48 Khz 频率,则需要同时支持 24.576 MHz 和 22.579 MHz 主控时钟是必需的。
接收器可以接收高达 96 Khz 的立体声 PCM 信号。
1.1 作为发射器连接到 xCORE
S/PDIF 传输线与 xCORE 的连接如图 1 所示
图 1:连接 S/PDIF 传输
输出信号应使用 D 型触发器与外部时钟重新同步。 输入时钟信号用于驱动内部时钟,并可与使用该时钟的其他软件功能(例如 S/PDIF 接收或 I2S)共享。
为获得最佳的输出抖动容限,建议使用 500 Mhz 器件。
1.2 作为接收器连接到 xCORE
S/PDIF 接收器线路与 xCORE 的连接如图 2 所示。
图 2:连接 S/PDIF 接收器
仅连接一根电线。 时钟从输入数据信号中恢复。
2 用法
所有 S/PDIF 函数都可以通过 spdif.h 头文件访问:
您还必须将 lib_spdif 添加到应用程序 Makefile 的 USED_MODULES 字段。
2.1 S/PDIF 发射机
S/PDIF 组件被实例化为在 par 语句中运行的并行任务。 应用程序可以通过通道连接进行连接。
图 3:S/PDIF 传输任务图
图 3:S/PDIF 传输任务图
例如,以下代码实例化一个 S/PDIF 发送器组件并连接到它:
- out port p_spdif_tx = XS1_PORT_1K;
- in port p_mclk_in = XS1_PORT_1L;
- clock clk_audio = XS1_CLKBLK_1;
- int main(void) {
- chanend c_spdif;
- par {
- on tile[0]: {
- configure_clock_src(clk_audio, p_mclk_in);
- spdif_tx_set_clock_delay(clk_audio);
- start_clock(clk_audio);
- spdif_tx(c_spdif, p_spdif_tx, clk_audio);
- }
- on tile[0]: my_application(c_spdif);
- }
- return 0;
- }
复制代码
更多内容请下载附件查看
|
|