aic23的配置程序,已经在FPGA板子上验证通过
根据给定的文件信息,我们可以深入探讨AIC23配置程序在FPGA板上的实现细节,这涉及到硬件接口、SPI通信协议以及AIC23音频编解码器的具体配置命令。 ### AIC23配置程序概述 AIC23配置程序是针对AIC23音频编解码芯片的一套配置流程,旨在通过SPI(Serial Peripheral Interface)总线与FPGA交互,以设定AIC23的工作模式、采样频率等关键参数。该程序已在FPGA板上验证通过,确保了其正确性和有效性。 ### SPI通信细节 在程序中,AIC23通过SPI总线与FPGA进行数据交换。SPI是一种全双工同步串行通信协议,通常包含四条信号线:主时钟(SCLK)、主机输入/从机输出(MISO)、主机输出/从机输入(MOSI)和从机选择(CS)。在这个配置程序中,AIC23_SPICLK作为主时钟信号,AIC23_DATA作为MOSI信号,而AIC23_CS作为从机选择信号,用于控制AIC23是否接收数据。 ### AIC23工作模式及采样频率设定 AIC23的工作模式被设置为主模式(Master mode),这意味着AIC23将生成内部时钟信号,并通过其内部的数字音频接口与其他设备通信。此外,采样频率被设定为8kHz,这是典型的语音通信场景中的标准采样率。SPICLK的频率则被设定为3MHz,即系统时钟的1/4,确保了数据传输的稳定性和准确性。 ### 配置命令解析 程序中列出了多个配置命令,用于控制AIC23的各项功能: 1. **AIC_Command1**:重置寄存器,代码值为`0001111000000000`。 2. **AIC_Command2**:左声道线路输入音量控制,代码值为`0000000100010111`。 3. **AIC_Command3**:右声道线路输入音量控制,代码值为`0000001100010111`。 4. **AIC_Command4**:左声道耳机音量控制(未使用),代码值为`0000010011111001`。 5. **AIC_Command5**:右声道耳机音量控制(未使用),代码值为`0000011011111001`。 6. **AIC_Command6**:模拟音频路径控制,代码值为`0000100000010000`。 7. **AIC_Command7**:数字音频路径控制,代码值为`0000101000000001`。 8. **AIC_Command8**:电源管理控制,代码值为`0000110000000010`。 9. **AIC_Command9**:数字音频接口格式(主模式),代码值为`0000111001000010`。 10. **AIC_Command10**:采样率控制,代码值为`0001000000001100`。 11. **AIC_Command11**:数字接口激活,代码值为`0001001000000001`。 这些命令通过SPI总线发送到AIC23,以实现对其各项功能的精确控制,从而满足特定的音频处理需求。 ### FSM状态机分析 程序中还包含了一个有限状态机(FSM),用于控制配置过程的不同阶段。状态机的定义包括但不限于: - `FSM_AIC_Rst`:初始化状态。 - `FSM_AIC_Left_Line`:左声道线路输入配置状态。 - `FSM_AIC_Right_Line`:右声道线路输入配置状态。 - `FSM_AIC_Left_Headph`:左声道耳机输出配置状态。 - `FSM_AIC_Right_Headph`:右声道耳机输出配置状态。 - `FSM_AIC_Ala_audio_pat`:模拟音频路径配置状态。 - `FSM_AIC_Dig_audio_pat`:数字音频路径配置状态。 - `FSM_AIC_Power_Down`:电源管理配置状态。 每个状态都对应着一个或多个配置命令的执行,确保了AIC23的全面配置。 AIC23配置程序在FPGA板上的成功实现,不仅展示了SPI通信的有效性,也凸显了有限状态机在复杂配置流程中的重要性。通过这一程序,用户能够灵活地调整AIC23的各项参数,以满足不同的音频处理需求。
/*
function :AIC23 configure programm
AIC23 work mode : master mode
AIC23 sample frequency : 8KHz
AIC23_SPICLK : 1/4 MClk==3MHz
the problem of this programm is assign dato to aic is not in the second edge of SPICLK
*/
//----------------------------------------------------------------------------//
module AIC23_Configure(FPGA_Sys_Clk,
FPGA_Sys_Rst,
AIC23_CS,
AIC23_SPICLK,
AIC23_DATA,
Configure_Finish);
input FPGA_Sys_Clk;
input FPGA_Sys_Rst;
output AIC23_CS;
output AIC23_SPICLK;
output AIC23_DATA;
output Configure_Finish;
reg AIC_CsFlag;
//reg [15:0] AIC_Configure_DATA;
reg [3:0] AIC_Configure_Addr;
reg [4:0] AIC_ByteIndex ;
reg Configure_Finish;
initial AIC_ByteIndex = 1'b0;
parameter AIC_Command1=16'b0001111000000000; //4'h1E00; //Reset register
parameter AIC_Command2=16'b0000000100010111; //4'h0117; //Left line input channel volume control
parameter AIC_Command3=16'b0000001100010111; //4'h0317; //Right line input channel volume control
parameter AIC_Command4=16'b0000010011111001; //4'h04F9; //Left channel headphone volume control(no use)
parameter AIC_Command5=16'b0000011011111001; //4'h06F9; //Right channel headphone volume control(no use)
parameter AIC_Command6=16'b0000100000010000; //4'h0810; //Analog Audio path control
parameter AIC_Command7=16'b0000101000000001; //4'h0A01; //Digital Audio path control
parameter AIC_Command8=16'b0000110000000010; //4'h0C02; //Power down control
parameter AIC_Command9=16'b0000111001000010; //4'h0E42; //Digital audio interface format (Master)
parameter AIC_Command10=16'b0001000000001100; //4'h100C; //Sample rate control
parameter AIC_Command11=16'b0001001000000001; //4'h1201; //Digital interface activation
reg [11:0] State ;
parameter FSM_AIC_Rst = 12'b0000_0000_0001,
FSM_AIC_Left_Line = 12'b0000_0000_0010,
FSM_AIC_Right_Line = 12'b0000_0000_0100,
FSM_AIC_Left_Headph = 12'b0000_0000_1000,
FSM_AIC_Right_Headph = 12'b0000_0001_0000,
FSM_AIC_Ala_audio_pat= 12'b0000_0010_0000,
FSM_AIC_Dig_audio_pat= 12'b0000_0100_0000,
FSM_AIC_Power_Down = 12'b0000_1000_0000,
FSM_AIC_Dig_audio_Fmt= 12'b0001_0000_0000,
FSM_AIC_Sample_Rat_Ctr=12'b0010_0000_0000,
FSM_AIC_Dig_Activation=12'b0100_0000_0000,
剩余11页未读,继续阅读
- 粉丝: 1
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页