I2S采集卡&播放器 Verilog实现

1. 杜老师的建议
  1. 购买采集卡播放器
  • 使用采集卡可以验证生成的i2s时序是否正确
  • 使用播放器可以观察正确的i2s时序
  1. 带使能的计数器
  2. 自己能播自己能录
2. 几个音频的专业术语
  1. 音调
    实际上就是频率

  2. 音色
    音调的决定因素:

    1. 谐波的结构:声音中的谐波极其相对强度和分布是音色的主要决定因素
    2. 瞬态特性:声音开始和结束时的瞬态变化,如攻击Attack,衰减Decay,持续Sustain,释放Release过程(统称ADSR包络)
    3. 基频决定了音调,谐波影响音色
      在这里插入图片描述

各次谐波的能量分布有什么特点?
-具体问题具体分析

  1. 泛音
    1. 泛音介绍
      泛音(Overtone)是指除了基音(Fundamental Frequency)之外的其他频率成分。这些频率成分可以是基音频率的整数倍(称为谐波,Harmonics)或非整数倍(称为非谐波,Inharmonics)。
    2. 泛音的作用
      音色(Timbre):泛音的分布和强度决定了声源的音色,使得同一个音高的声音可以有不同的听感。例如,小提琴和钢琴演奏相同音高的音符,但听起来音色不同。
3. 理论分析

1 频谱泄露

  1. 泄露介绍
    发生频谱泄露是频谱发生了展宽或者拖尾造成了对临近的频率造成了干扰
    在这里插入图片描述

  2. 泄露的原因
    理论的信号可以通过傅里叶变换得到,但是现实的很多信号是不能通过傅里叶变换得到的
    对于频谱分析,因为使用计算机,所以使用DFT代替FFT,使用DFT就需要对信号进行截断,会造成频谱的泄露

  3. 窗口函数和频谱泄露
    窗口函数用于减少FFT计算时边界效应引起的频谱泄露。不同的窗口函数(如矩形窗口、汉宁窗口、汉明窗口等)对频谱泄露的影响不同。较短的FFT窗口长度使得窗口函数对信号的截断更为明显,从而增加频谱泄露。

  4. FFT的频率分辨率
    FFT的频率分辨率由窗口长度决定:
    Δ f = f s N \Delta f = \frac{f_s}{N} Δf=Nfs
    其中 ( \Delta f ) 为频率间隔, ( f_s ) 为采样频率, ( N ) 为FFT长度。调小FFT长度 ( N ),会增加 ( \Delta f ),即每个频率点代表的频率范围增大,从而降低频谱的分辨率。

  5. 总结
    调小FFT长度会降低频谱的频率分辨率,增加频谱泄露效应。在波形交界处,这些效应更为显著,可能导致出现两个谱峰。为了减少这些影响,可以适当增加FFT长度,或者使用合适的窗口函数以减少频谱泄露现象。

4. 我的AU实验1
  1. 频谱和有什么联系?有什么区别?

    • 为什么频谱中生成的1k是一个有宽度的?不应该是一条直线吗?
    • 频率分析图好像类似于幅频响应的东西,频谱是看频率的分布情况
      • 对的

    在这里插入图片描述

  2. 频谱图和频谱分析图对比

特点频谱图 (Spectrogram)频谱分析图 (Spectrum Analysis Plot)
定义频谱图是一种三维图表,展示了信号的频率成分随时间变化的情况。频谱分析图是一种二维图表,展示了信号在某一时刻或整体上的频率成分。
维度三维:时间、频率、幅度(通常通过颜色或灰度表示,定性)二维:频率、幅度(定量)
用途用于观察信号频率成分随时间的动态变化,常用于分析非平稳信号用于查看信号的总体频率成分,适用于平稳信号的频谱分析
表示方式x轴表示时间,y轴表示频率,颜色或灰度表示幅度。x轴表示频率,y轴表示幅度。
应用场景声音信号分析、语音处理、音乐信号处理等。电磁波信号分析、机械振动分析、声学分析等。
分析方法通过短时傅里叶变换(STFT)或其他时频分析方法生成。通过傅里叶变换(FFT)或功率谱密度(PSD)等方法生成。
  1. 傅里叶变换(FFT)和功率谱密度(PSD)对比
特点傅里叶变换(FFT)功率谱密度(PSD)
用途将时间域信号转换为频域信号分析信号在不同频率上的功率分布
适用场景信号频率成分分析随机信号的能量分布分析
结果表示频谱图,显示频率和振幅PSD图,显示频率和功率
主要应用音频处理、通信信号、振动分析噪声分析、震动测试、雷达信号
计算方法通过FFT计算离散傅里叶变换自相关函数的傅里叶变换
  1. 根据采样点和采样率计算实际信号的频率
    在这里插入图片描述

一个周期12个点 48kHz的采样率
分析:1s采样48K个点 12个点对应的时间是1/4k 对应的频率就是4kHz

  1. 在adobe audition中调小FFT长度,在波形交界处的谱线会有怎样的变化?为什么?
    调小FFT长度会对波形交界处的谱线的变化

    1. 频谱泄露增加:由于较短的窗口无法完全包含信号的完整周期信息,信号在频域内的能量分布会更加扩散,频谱泄露现
  2. 产生两个谱峰的原因

    1. 频谱泄露:由于窗口长度较短,信号在时域的截断效应导致频域上的泄露增加。在波形交界处,这种泄露效应会更加明显,从而出现两个谱峰。
    2. 边界效应信号在波形交界处的不连续性或突变在频域中表现为多个频率成分的叠加,从而导致频谱上出现多个峰值。
    3. 信号成分重叠:在交界处,不同频率成分的信号可能存在重叠,由于短窗口的频谱分辨率低,频率成分不能被准确区分,从而导致多个谱峰。
5. 我的AU实验2
  1. 实验任务
    使用Audition进行音频信号滤波

  2. AU软件的使用

    1. 频谱图的颜色代表电平/音量的大小
    2. 在时域容易直观调节音响,在频域容易直观调节噪声,两者互为补充
    3. AU处理音频的时候,视觉为辅助,最重要的还是耳朵的听觉
6. 我的I2S时序生成Verilog代码设计
  1. 程序设计的几个关键点
    在这里插入图片描述

    1. I2S规定BCLK的下降沿和LRCK的下降沿对齐
    2. MSB(数据的最高位)在BCLK的下降沿进行修改,在BCLK的上升沿进行传输
    3. 32bit是BCLK=64fs的一种极端情况,BCLK布满LRCK所有时序空间,所以理论上在BCLK=64fs的情况下最大的传输位数就是32bit(不是64bit,因为有左右声道)
    4. 注意一个重要问题:MSB的是在LRCLK的跳变沿后的第二个BCLK的上升沿进行传输的,这是一个历史的原因
  2. 出现的问题

    1. FIFO在输入输出的带宽一样的,输出速率略小于输入速率的情况下,在隔一段时间后FIFO就会爆满,在爆满的情况下再写入就会出现错误!!所以最后播放出现的声音就会出现低频的噪声
    2. 目前针对1的解决办法是尽量增大FIFO的深度,在检测到FIFO快满的时候对FIFO进行复位清空,这不是最优的处理办法,因为肯定会丢失很长的一部分数据
      在这里,我举一个例子:FIFO的深度是81XX,采样率fs=48k,那么对于丢一次数据的时间就是4000/48 000 = 4/48 = 1/12s
      在这里插入图片描述

    在这里插入图片描述

    1. FIFO偶尔读出的数据有问题也不太影响音质,一个数据进一个数据出FIFO的音质不好,不知道怎么解决
  3. 改进方法

  • 1. 让输出到DAC的LRCK时钟对齐ADC的LRCK时钟,不经过FIFO直接输出
  • 2. 让读取FIFO的速度比写FIFO的速度快一点,但是在FIFO的数量在大于200的时候才开始读
  • 3. 使用一个计数器跟踪误差偏差,如果发现数据的偏差就少写入一个FIFO的数据
7. I2S的主从模式介绍

在这里插入图片描述

8. PCM1820-ADC模块驱动
  1. 各个引脚介绍
    在这里插入图片描述

里面的FSYNC就是LRCLK

  1. 系统方框图
    在这里插入图片描述

  2. 硬件功能引脚配置

    1. MSZ接高,表示PCM1820作为主模式使用,输出LRCLK和MCLK
      在这里插入图片描述

    2. FMT0接低表示使用I2S模式
      在这里插入图片描述

    3. MD0接高表示输出的MCLK的频率是fs的512倍,并且MCLK从MD1端口进行输出
      在这里插入图片描述

  3. 模块连接图
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值