数字音频芯片--Digilent 公司PmodI2S芯片控制

Digulter PMODE2S 是一个立体声音频模块,接受所有主要音频数据接口格式和采样率。
特点包括:

        1.立体声24位D/A转换器。
        2.通过标准耳机插孔输出音频转换信号。
        3.支持所有主要音频数据接口格式。
        4.接受16-24 位音频数据。
        5.用于灵活设计的小型PCB尺寸1×0.8 英寸(2.5 厘米×2 厘米)。
        6.具有GPIO接口的6引脚PMOD 端口。

 PMOD2S 利用Cirrus Logic CS4344立体声D/A 转换器来获取数字音频数据,并通过标准立
体声耳机插孔输出相应的模拟信号。它的主时钟范围可以从512kHZ 到50MHZ。

 

 I2s 协议要求数据在位时钟的下降沿上计时。第一位数据(MSB)不在下降沿上计时,直
到LRCK 改变状态后第一个完整的位时钟周期已经过去。位时钟的上升沿通知板上芯片可
以读取下一位数据。在每个LRCK 改变之前传送数据的一个比特时钟周期的延迟也意味着
在LRCK 改变发生之后,数据的最低有效位(LSB)将被转移。这种板上的芯片必须遵循特
定的相位关系,尽管相位关系必须在整个音频会话中保持一致。I2s 的一个实例时序图如下
所示:

 i2s 芯片共有三个时钟:

        首先串行数据输入的时钟,也叫位时钟,用来对应数字音频的每一位数据。

        还有左右声道时钟LRclk 用于选择左右声道。LRclk 值为“0”表示正在传输的是左声道的数据, 为“1”表示正在传输的是右声道的数据。

        最后是主时钟,用来保持信号所有的同步。由于串行速率使用的时钟是20M,根据i2s 协议串行速率=采样率x 采样位数,采样率等于左右声道时钟。

        本模块采取建立两个16bit 的左右声道寄存器用来存放串行数据,然后通过计数器左右声道计数器L_count 与R_count 来实现移位寄存,当左右声道计数器小于16 时,左右声道的寄存器开始进行移位寄存数据的功能。

其程序实现如下:

reg [4:0] L_count;
reg [4:0] R_count;
reg [15:0] L_data;
reg [15:0] R_data;

reg finish_flag; //完成一次左右声道数据接收标志

always @ (negedge Bclk , posedge rst)begin
    if(rst==1'b1)begin
        L_count <= 5'd0;
        R_count <= 5'd0;
        L_data <= 16'd0;
        R_data <= 16'd0;
        finish_flag <= 1'b0;
    end else begin
        if(LRclk==1'b0)begin
            R_count <= 5'd0;
            if(L_count< 5'd16)begin
                L_count <= L_count+1'b1;
                L_data <= {L_data[14:0],sdata};
            end
        end else begin
            L_count <= 5'd0;
            if(R_count< 5'd16)begin
                R_count <= R_count+1'b1;
                R_data <= {R_data[14:0],sdata};
            end

            if(R_count==5'd15)begin
                finish_flag <= 1'b1;
            end else begin
                finish_flag <= 1'b0;
            end
       
        end
    end
end

本模块最终目的是生成左右声道时钟便于输入i2s芯片,随机选取上千次数据进行观测后没有发现误码,选取其中一组数据为例,例如由下图可以看出,左右声道时钟LRclk已经生成,LRclk 频率根据i2s协议:串行速率=采样率 x 采样位数得出,

LRclk 等于62.5kHz。

当LRclk为低时可以看到下面对应的是左声道数据,当LRclk为高时,可以看到下面对应的是右声道数据,与i2s的时序图一致。而每当左右声道数据完整记录一次的时候,可以看到标致寄存器finish_flag置高。由此可见,i2s芯片模块功能实现成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚怀若水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值