您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 2 讲课_录音芯片设计方案(4学时)
录音芯片设计设计需求不采用arm内核已有基于AMBA总线设计的SDIO控制器把PCM音频数据保存到外接的microSD卡中要有一个模拟APB总线接口把sdio控制信号转换成APB总线信号把PCM音频数据存储到FIFO中目录芯片总体框图芯片管脚说明芯片设计内容及具体实现方法芯片前端验证方法流程图SD卡初始化读取卡容量读取最后一次写地址主控状态机SDIO控制器8通道声音数据输入MICROSD卡控制逻辑128KHz时钟输入数据寄存总线接口电路总体框图把PCM音频数据保存到外接的microSD卡中管脚说明信号方向描述全局(3)ResetnI芯片Reset,低电平有效OSCII晶振管脚OSCOO晶振管脚SDIO(3)Inout_CMDI/OSD命令Inout_DATAI/OSD数据SDIO_CLKISD时钟POWER(4)VDD_IOPIO电源3.3VVSSGIO地VDDP芯片电源1.8VVSSAG芯片地PCMDATA(8)PCM_0----PCM_7I数据输入端录音芯片原理图RESETREAD_PCM32*256FIFO32bit移位寄存器Data_outOut_read_enData_fifo_readyData_fifo_writeFifo_read_enSDIO_CONTROLLERSDIOpselpenablepaddrpwdatapwriteSd_clk_enableprdataCmd_endCmd_end_responseFifo_data_reqData_trans_completeCMDDAT0CLKClkCLK128KHzCLKClkDATA0-7主控逻辑设计内容(1)主控逻辑1、主控逻辑在上电启动时ResetSDIO模块以及初始化MicroSD卡;2、初始化MicroSD卡完毕之后,控制逻辑内有一ADDR寄存器,用来记录写入MicroSD卡的数据地址,该地址时刻保持更新。若写入MicroSD卡的数据返回CRCError时,该ADDR寄存器提供下一个BLOCK数据的存储地址;设计内容(2)移位寄存器逻辑为了实现模拟APB的总线宽度,将输入的8bit数据持续写入一32bit的移位寄存器,移位寄存器一满即将数据全部写入一32bit位宽1024bytes大小FIFO中。设计内容(3)FIFO设置一1024bytes大小的双32bit端口的FIFO用来存储PCM码,每满一个BLOCK(512bytes)就发出DataReady脉冲信号,输出数据并存储至MicroSD卡。设计内容(4)模拟APB接口由于在本设计中不采用APB总线数据传输,设计模拟APB接口使得控制逻辑实现对SDIO模块的操作。该模拟接口接收FIFO和控制逻辑中传输过来的数据,输出信号为:PSEL、PWRITE、PWDATA、PADDR、PENABLE,用来实现和SDIO的连接。SDIOModuleAPB信号接口SD卡接口设计内容(5)SDIO模块SD控制器集成于芯片内部,用以与SD卡进行通信,实现系统的SD功能扩展,支持SD卡1/4位的传输模式。在本设计中选用1位传输模式,SDIO和MicroSD之间的通过CMD、DAT0、CLK三根信号线进行数据通信。设计实现主控逻辑移位寄存器逻辑FIFO模拟APB接口SDIOSD卡初始化读取卡容量等设计实现主控逻辑移位寄存器逻辑FIFO模拟APB接口SDIO移位寄存器逻辑移位寄存器是一种具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的移位寄存器称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位。根据存取信息的方式不同移位寄存器可分为:串入串出、串入并出、并入串出、并入并出四种形式。设计实现主控逻辑移位寄存器逻辑FIFO模拟APB接口SDIOFIFO该FIFO的大小设置考虑如下:当FIFO中满512bytes的时候,数据向SDIOModule传输,SDIO的工作频率为128KHz,接收512bytes的数据所用的时间为512×8/128000=0.032s,在这段时间内FIFO所接收的ADPCM码为32kbit/s*0.032=128bytes因此只要FIFO的大小大于128+512=640单位字节。为了仿真方便,选取两片512bytes的SRAM模型设计实现主控逻辑移位寄存器逻辑FIFO模拟APB接口SDIO模拟APB总线当depth=512bytes的时候,DataReady信号置1,FIFO中数据通过模拟APB传输至SDIO,同时设置一参数m用来计算读取的数据量,当从FIFO中传输的数据达到512bytes(512BYTES*8/32=128即m=128)的时候,DataReady置0(m清0),数据不再传输。FIFO中数据继续存储,当depth再次达到512bytes的时候,FIFO中数据再次进行传输;模拟APB接口控制逻辑中ADDR寄存器的值,当FIFO中每产生一个DataReady脉冲的时候加1,以随时更新数据存储地址。模拟APB接口采集的语音数据从MicroSD的第二个BLOCK开始存储,第一个BLOCK用来记录卡中最后记录数据的BLOCK地址POWERON的时候,由控制逻辑读取MicroSD卡中第一BLOCK中数据,如果为0,则表示此卡为空,在初始化MicroSD之前,置控制逻辑中的ADDR寄存器值为0;如果第一BLOCK内容不为0,则保持ADDR寄存器的值不变模拟APB接口StateTransform本设计中SDIO有Idle、Ready2Trans、StandBy以及DataTrans四种状态:Idle状态为SDIO最初始状态;Ready2Trans表示初始化MicroSD卡完毕,SDIO等待数据传输;StandBy表示CMD25命令发送完毕,SDIO等待FIFO中DataReady脉冲进行数据传输;DataTrans状态表示SDIO将传输过来的数据进行存储至MicroSD操作;模拟APB接口IdleStateCMD0cmd55+acmd41cmd2cmd3cmd7PowerOnDataTransStateNoCRCErrorReady2TransStateStandByStateCRC:CMD25DataReadyCLKCRCErrorPowerOFF准备开始数据传输NoDataReadyCLKPowerOFFSoftware_ResetPowerOFF模拟APB接口SDIO处于Idle状态,SDIO配置固定不变,故PowerOn以后不需要对SDIO进行配置操作;在Ready2Trans状态,计算CMD25中Argument将要设置的addr值。模拟APB接口当电源开启产生PowerOn信号,控制逻辑完成对SDIOModule的Reset操作以后即开始对MicroSD卡进行初始化操作。对MicroSD卡的初始化操作即为SDIO发送CMD0、CMD55、ACMD41、CMD2、CMD3、CMD7的过程,在每个CMD命令发送完毕后读取返回的RESPONSE寄存器值来判断上一个CMD命令是否正确执行,如果读取的RESPONSE值正确,则进行下一个CMD命令的发送,否则就重新发送该CMD命令,直至该CMD命令完成。模拟APB接口CMD25中设置的地址值从控制逻辑的ADDR寄存器中读取若CRC=101有校验错误返回,则CMD25命令中的地址设置为发生数据传输错误的地址。CMD命令结束后,SDIO进入StandBy状态,等待进行数据传输;模拟APB接口SDIO在StandBy状态,当FIFO中的数据满512bytes的时候,输出一DataReady脉冲信号,表示数据准备传输,SDIO在接收到DataReady脉冲信号的时候,转入DataTrans状态,进行数据传输。在数据传输完毕后,若有CRC校验错误,则转入Ready2Trans状态,等待CMD25的重新发送,若没有CRC校验错误,则转入StandBy状态,等待下一个DataReady脉冲信号,再进行数据传输;设计实现主控逻辑移位寄存器逻辑FIFO模拟APB接口SDIOSDIO概述SD存储卡的物理参数,引脚定义以及数据传输的协议兼容MMC卡。SD存储卡的通信是基于一个高级的九针接口(时钟线,命令线,四针数据线,三针电源线),这个接口可以工作在最大频率25MHz和低电压范围。本设计中出于低功耗的要求,采用1bit传输模式。SD控制器集成于芯片内部,用以与SD卡进行通信,实现系统的SD功能扩展。SDIO特性与SDMemoryCardSpecificationVersion1.01完全兼容支持SD卡1/4位传输模式支持单/多Block传输,Block的长度以及数目可以配置读写数据以及响应的CRC检查,CRC出错产生相应中断只支持一张MMC/SD卡用到的SDIO接口信号及其寄存器功能说明SignalNumofBitsI/ODescriptionsin_PENABLE1I使能信号,高电平使能,低电平禁止。in_PSEL1I模块选择信号,高电平选中。in_PWRITE1I写信号,低电平表示从数据寄存器读数据到总线,高电平表示将数据总线数据写入到数据寄存器。in_PADDR8I8位地址信号,输入地址。in_PWDATA32I写入数据,APB总线32位写数据。clk_pclk1I与总线时钟同步的时钟输入,本设计中由RC振荡器提供。rst_preset_n_a1I复位信号,可以硬件或软件复位SDIO。in_sd_data4ISDIO的数据输入端口。in_sd_cmd1ISDIO的命令输入端口(接收命令反馈)。out_sd_data4OSDIO的数据输出端口。out_sd_cmd1OSDIO的命令输出端口。out_sd_clk1O输出给外接SD卡的工作时钟。SDIO寄存器定义寄存器地址名称读/写宽度描述0x10009000CLOCK_CONTROLr/w32时钟控制寄存器0x10009004SOFTWARE_RESETr/w32软件复位寄存器0x10009008ARGUMENTr/w32命令参数寄存器0xCOMMANDr/w32命令控制寄存器0x10009010BLOCK_SIZEr/w32数据块长度寄存器0x10009014BLOCK_COUNTr/w32数据块数目寄存器0x10009018TRANSFER_MODEr/w32传输模式选择寄存器0xRESPONSE0r32响应寄存器00x10009020RESPONSE1r32响应寄存器10x10009024RESPONSE2r32响应寄存器20x10009028RESPONSE3r32响应寄存器3SDIO时钟控制寄存器数据位名称类型缺省值描述31:16Reserved-保留未用15:8SDCLK_PDRW0SD时钟的分频因子,0为二分频,ffH为512分频,公式为F=(N+1)*27:3Reserved-保留未用2SDCLKENRW0SD时钟开关,1为开启,0为关闭1:0Reserved-保留未用SDIO的软件复位控制寄存器数据位名称类型缺省值作用描述31:1Reserved-保留未用0SOFTRSTRW0x1软件复位触发位,0触发软复位,1不触发。SDIO命令参数寄存器数据位名称类型缺省值作用描述31:0ARGUMENTRW0x0设置SD的命令参数。SDIO的命令控制寄存器数据位名称类型缺省值描述31:11Reserved-保留未用10:5CMD_INDEXRW0SD命令代号(CMD0-63,ACMD0-63)4Reserved-保留未用3CMD_ENRW0命令发送使能控制2DATA_READYRW0设置有否数据传输,1有数据传输,0无数据传输。1:0RESPONSE_TYPERW0命令反馈类型,00无反馈,01为136位长反馈,10为48位短反馈,11为48位反馈带busy判断。SDIO的数据块长度寄存器数据位名称类型缺省值
本文标题:2 讲课_录音芯片设计方案(4学时)
链接地址:https://www.777doc.com/doc-3269239 .html