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 应用程序。