FPGA音频录音,WM8731音频采集存储DDR3,基于米联客FDMA实现
開發板:Kintex7-410T開發板;
開發環境:vivado2019.1;
輸入:WM8731轉換的ad數據;
輸出:WM8731轉換的da數據;
實驗概述:
手機播放音樂,通過3.5mm耳機線接入Kintex7開發板,WM8731將手機播放音樂轉換為I2S協議的數字信號送入FPGA,FPGA做串并轉換,處理為32bit并行數據,并將數據送入DDR3緩存,同時從DDR3讀出音頻數據做并串轉換,再送回WM8731耳機輸出,效果就是通過耳機實時聽到存儲的音頻。
工程代碼架構如下:
工程BD部分如下:
1 音頻采集和輸出部分
音頻phy芯片選擇WM8731,通過iic總線配置為從機模式,之所以配置為從機模式是為了數據同步,WM8731配置為從機模式、I2S、32位、48K采樣率,具體看代碼,此部分代碼結構如下:
該部分頂層如下:
音頻采集、發送、wm8731配置均在100M時鐘同步下完成,解決了數據跨時鐘域問題;
2 音頻緩存
這部分是核心,利用米聯客的FDMA實現,這里重點介紹FDMA控制器部分的設計思路,
首先頂層參數如下:
音頻數據操作時鐘100M;
DDR3讀寫時鐘200M;
FDMA突發長度設置為128,可修改;
FDMA讀寫數據位寬都設為32,與音頻輸出位寬一致;
音頻采樣率設置為48K,與wm8731設置的一致;
音頻通道設為2,左右聲道;
音頻錄音時長設為20,單位是秒,可修改;
那么,FDMA一次傳輸的總數據量=音頻采樣率X音頻通道X音頻錄音時長;
所以,FDMA一次傳輸需要突發的次數=FDMA一次傳輸的總數據量÷FDMA突發長度;
同理,FDMA讀寫一次的地址增量(字節數)=32÷8XFDMA突發長度;
先來看看FDMA寫時序,在代碼中以注釋形式給出,方便理解代碼,如下:
具體關于FDMA的介紹可以去米聯客看,也可以私信聯系我;
寫操作邏輯十分簡單,如下:
寫操作部分的fifo操作如下:
如果你不知道FDMA操作時序,可能看不懂代碼;
FDMA讀時序如下:
讀操作部分與寫同理,不再粘貼代碼;
最后:需要源碼的兄弟可以私信聯系我,也可接受私人訂制。
總結
以上是生活随笔為你收集整理的FPGA音频录音,WM8731音频采集存储DDR3,基于米联客FDMA实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑计算机为什么不是有效程序,电脑提示“
- 下一篇: %1 不是有效的 Win32 应用程序。