基于LPC2378的数字音频设计.docx
- 文档编号:23562817
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:39
- 大小:850.30KB
基于LPC2378的数字音频设计.docx
《基于LPC2378的数字音频设计.docx》由会员分享,可在线阅读,更多相关《基于LPC2378的数字音频设计.docx(39页珍藏版)》请在冰豆网上搜索。
基于LPC2378的数字音频设计
1绪论
1.1技术背景
嵌入式设备不仅可以单独使用,还可以网络连接方式使用。
为实现网络信息的高速处理,由于8/16位微处理器工作速度较难满足要求,所以嵌入式设备往往采用32位RISC嵌入式处理器作为核心部件。
然而其中ARM核嵌入式处理器的应用独占鳌头,它在32位RISC处理器市场上的占有率已经超过75%,使用ARM芯片构造嵌入式系统正成为嵌入式系统设计的一个非常重要的分支部分。
ARM公司是知识产权供应商,其本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片,世界著名半导体公司Intel、Philips、Atmel、ST、AnalogDevice、TI、Samsung、OKI等都在生产ARM核嵌入式处理器,为嵌入式系统设计提供了丰富的选择余地。
近年来,随着微电子技术、计算机科学技术、通信技术以及网络技术的发展,嵌入式系统应用技术已经渗透到了各个领域。
由于被嵌入对象的复杂度有非常大的变化范围,及对嵌入式系统本身在其性能、体系结构等方面的多样化要求,导致了嵌入式系统应用的多样性。
作为嵌入式系统核心的嵌入式微处理器必须应对嵌入式应用面临的挑战,而ARM(AdvancedRISCMachines)嵌入式微处理器,以其完整的体系结构发展系列,以及耗电少,成本低,功能强,16位(Thumb)/32位(ARM)指令集等优点,在网络、通讯、信息家电、工业控制、航空航天等高端领域得到广泛应用,如我们身边的汽车电子、保安设备、无线通信、便携式产品、数字机顶盒、游戏机、数码相机、数字电视、GPS、智能手机等产品,就是嵌入式系统的典型应用。
PHILIPS公司生产的32位ARM微控制器LPC2300系列微控制器,支持10/100Ethernet、全速(12Mbps)USB2.0和CAN2.0B;具有高达512KB的ISP/IAPFlash、58KB的SRAM\10位A/D、D/A转换器、IRC振荡器、丰富的外设接口等,特别是SD存储卡接口和I2S接口,在信息产品中得到广泛应用。
1.2选题意义
目前,嵌入式系统的应用日益普及,遍及各个应用领域,国际上形成了ARM公司领军,为了进一步改善实验教学手段,提高教学水平和科研创新能力,从08年开始,学院专门成立嵌入式系统研发小组,开发用于教学、工程应用的Ⅰ型多功能用户板。
09年3月,针对Ⅰ型用户板存在的问题,本着“完善设计、扩展功能”的设计思路,又开发设计了Ⅱ型多功能用户板,包括:
8位、16位、32位多功能用户板;从2010年又承担了省教育厅的嵌入式系统培训基地项目,开发功能更多、更高端的嵌入式系统教学设备。
I2S总线是飞利浦公司为数字音频设备数据传输而制定的一种总线标准,广泛应用于各种多媒体系统。
在各种声卡中,大部分声卡的AD、DA芯片使用的都是这种总线,能方便的实现与带有I2S总线的AD、DA芯片相连接。
声卡既可以用来播放声音,也可以用来录音,这相当于我们的DA和AD,事实上,直接利用I2S我们能做的工作远不止这些,包括可以进行数据通讯的操作等。
我选择基于ARM的数字音频处理与播放系统的设计的题目,希望通过对嵌入式的学习,能为日后的运用打下良好的基础。
1.3本课题的设计思路
本题目是基于ARM的LPC2378多功能用户板进行设计开发的。
在IAR开发环境中,将主机与JTAG相连,通过传输线接到目标板上,在I2S接口的连接下,直接将数据信号传输到音频外设中。
连接方式如图1-1所示:
图1-1整体连接方式
2各功能模块的介绍
2.1LPC2378的介绍
LPC2378芯片是飞利浦公司生产的的32位ARM核芯片,是目前广泛应用的主流芯片之一。
2.1.1技术特性
具有512KB片内Flash和58KB的SRAM存储器,工作主频72MHz;具有在系统编程(ISP)和在应用编程(IAP)功能,每256字节编程仅需1ms,整片擦除只需400ms。
LPC2378包含1个10/100EthernetMAC接口、1个USB2.0全速(12Mbps)设备、2路CAN2.0B通道、1个通用DMA控制器、8个通用10位A/D转换器和1个10位的D/A转换器。
EthernetMAC在独立的AHB总线上有16KB的SRAM和一个相关的DMA控制器。
USB控制器含有4KB的USBSRAM和可存取的DMA,并支持32个端点的控制、中断、批量和同步数据传输模式。
因此丰富的串行通信接口增强了设计的灵活性,提供了更大的缓冲区,以及具有更高的处理能力。
LPC2378有4个UART(1个带有IrDA)端口、3个I2C总线接口、3个SPI/SSP接口和1个I2S接口。
此外,LPC2378还含有1个SD/MMC存储卡接口。
LPC2378具有4个32位捕获/比较定时器。
1个用于三相电机控制的PWM单元;1个带有2KB电池SRAM的低功耗实时时钟;1个看门狗定时器和1个可用作主系统时钟的4MHz内部RC振荡器。
LPC2378的每个外设都具有一个独立的时钟分频器,可实现低功耗设计;并且,P0口和P2口的每个管脚都可用作外部中断管脚;微控制器中有104个通用I/O口线,每个口线可在高达18MHz的速率下触发。
LPC2378支持实时仿真和嵌入式跟踪支持,采用标准的ARM测试/调试JTAG接口,可方便实现芯片开发。
2.1.2LPC2378芯片结构
在本次的设计中,用到LPC2378这个芯片,其芯片结构如图2-1所示:
图2-1LPC2378整机结构图
LPC2378芯片结构如上图所示,它包含一个支持仿真的ARM7TDMI-SCPU,片内存储器控制器接口的ARM7局部总线,中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的外设总线(VPB,ARMAMBA总线的兼容超集)。
LPC2378将ARM7TDMI-S处理器配置为小端(little-endian)字节顺序。
AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。
每个AHB外设都分配了16k字节的地址空间。
LPC2378的外设功能(中断控制器除外)都连接到VPB总线。
AHB到VPB的桥将VPB总线与AHB总线相连。
VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。
每个VPB外设在VPB地址空间内都分配了16k字节地址空间。
2.2I2S的介绍
2.2.1I2S总线规范
音响数据的采集、处理和传输是多媒体技术的重要组成部分。
众多的数字音频系统已经进入消费市场,例如数字音频录音带、数字声音处理器。
对于设备和生产厂家来说,标准化的信息传输结构可以提高系统的适应性。
I2S(Inter—ICSound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,用于音频设备之间的数据传输,广泛应用于各种多媒体系统。
它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。
I2S总线拥有三条数据线进行数据传输:
一条双向数据传输线,一条命令(声道)选择线和一条时钟线。
在数据传输过程中,发送端(transmitter)和接收端(receiver)具有相同的时钟信号,发送端作为主机(Master)时,产生位时钟信号,命令(声道)选择信号和数据。
2.2.2I2S总线的信号
I2S总线具有3个信号,分别是SCK、WS和SD信号:
1.串行时钟SCK信号,也叫位时钟(BCK),即每发送1位数字音频数据,SCK上都有1个脉冲。
SCK的频率=2×采样频率×采样位数。
在数据传输过程中,I2S总线上的发送器和接收器都可以作为系统的主机来提供系统的时钟频率;
2.帧时钟WS信号,即命令(声道)选择,用来切换左右声道的数据。
WS的频率为采样频率,由系统主机提供。
WS为“0”表示传输左声道的数据,WS为“1”表示传输右声道的数据;
3.串行数据信号SD信号,用来传输二进制补码表示的音频数据。
I2S传输格式规定:
数据最高位(MSB)总是被最先传输,而1次能够发送的数据取决于I2S格式的有效位数。
2.2.3I2S信号时序
图2-2信号时序图
1.SCK是模块内的同步信号,从模式时由外部提供,主模式时由模块内部自己产生。
在I2S总线中,任何设备都能通过提供必需的时钟信号成为系统的主导装置,但是从属装置通过外部时钟信号来得到它的内部时钟信号,这也就是表明必须重视主导装置和数据以及命令选择信号之间的传播信号延迟,总的延迟主要由两部分组成:
●外部时钟和从属装置的内部时钟之间的延迟;
●内部时钟和数据信号以及命令选择信号之间的延迟。
对于数据和命令信号的输入,外部时钟和内部时钟的延迟不在占主导地位,它只是延长了有效的建立时间(set—uptime)。
延迟的主要部分是由发送端的传输延迟和设置接收端需要的时间。
T是时钟周期,Tr是允许最小时钟周期,T>Tr只有这样发送端和接收端才能满足数据传输速率的要求。
对所有的数据速率来说,发送端和接收端都能发出一个具有固定的传号空号比(mark—spaceratio)的时钟信号,所以tLC和tHC是由T所定义的。
tLC和tHC必须大于0.35T,这样信号在从属装置端就可以被检测到。
延迟(tdtr)和最快的传输速度(由Ttr定义)是相关的,快的发送端信号在慢的时钟上升沿可能导致tdtr不能超过tRC而使thtr为零或者负。
只有tRC不大于tRCmax的时候(tRCmax>0.15T),发送端才能保证thtr大于等于0。
为了允许数据能够在下降沿被记录,时钟信号上升沿及T相关的时间延迟应该给接收端充分的建立时间(set-uptime)。
数据建立时间(set-uptime)和保持时间(holdtime)不能小于指定接收端的建立时间和保持时间。
2.WS是声道选择信号,表明了数据发送端所选择的声道,当:
●WS=0,表示选择左声道;
●WS=1,表示选择右声道。
WS可以在串行时钟的上升沿或者下降沿发生改变,在从机端,WS在时钟信号的上升沿发生改变。
SD是串行数据,在I2S中以二进制补码的形式在数据线中传输,首先传输最高位(MSB)。
不管I2S格式的信号有多少位有效数据,数据的最高位一直出现在LRCK变化(也就是一帧开始)之后的第2个SCLK脉冲处。
因此可以使得接收端与发送端的有效位数可以不同。
假如接收端能处理的有效位数少于发送端,那么可以放弃数据帧中多余的低位数据;假如接收端能处理的有效位数多于发送端,则可以自行补足剩余的位。
这种同步机制能够使得数字音频设备的互连更加方便,也不会造成数据之间错位。
I2S具有不同的数据传输格式。
根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(很少使用)、I2S格式和右对齐(也叫日本格式、普通格式)。
为了保证数字音频信号的正确传输,发送端和接收端应该采用相同的数据格式和长度,I2S格式的数据长度可以不同。
当系统字长比数据发送端字长长的时,数据传输的时候就会出现截取的现象,也就是说:
如果接收端接收的数据位大于规定字长的话,则规定字长最低位(LSB)以后的所有位将会被忽略;另一方面,假如接收的字长比它规定的字长短的话,则空余出来的位将会以0填补。
通过这种方式可以使音频信号的最有效位得到传输进而能保证正确的听觉效果。
2.2.4工作模式
I2S总线的工作模式,可根据数据流向和控制时钟源分类:
从数据的接收和发送的角度来说,它可以分为接收端(Transmitter)和发送端(Receiver)。
根据时钟信号和声道选择信号源模式,的产生的角度来说,它又可以分为主机(Master)和从机(Slaver)。
I2S就存在以下三种不同的模式,其中产生时钟信号和声道选择信号的是主机。
数据接收端产生SCK、WS信号的为主机,从而数据传输端成为从机,可以进行录音,如图2-3所示:
图2-3I2S的工作模式一
当有多个数据接收端和多个数据传输端的时候,很难确定谁是主机,因此就出现了另一种模式,即一个控制器专门负责产生时钟和声道选择信号。
如图2-4所示:
图2-4I2S的工作模式二
●在I2S传输协议中,其数据信号、时钟信号以及控制信号是分开传输的;
●使用三条传输线:
串行数据线(SD)、左右声道选择线(WS)、同步时钟信号线(SCK)。
2.2.5I2S的传输模式
I2S总线接口有3种传输模式:
正常传输模式、DMA传输模式和传输/接收模式。
1.正常传输模式
I2S控制寄存器中有一个FIFO预备标志位(readyflagbite)用于FIFO发送和接收,当FIFO准备好发送数据,如果发送FIFO非空,FIFO状态(准备好)标志将被设置为1;如果发送FIFO为空,FIFO状态标志设为0;当FIFO接收满,接收FIFO状态标志被设置为0,这些标志可以决定CPU读写FIFO的时间。
串行数据就是通过这种方式被发送或接收的。
2.DMA传输模式
当DMA传输模式中,I2S的发送和接收FIFO操作都是由DMA控制器完成,在发送和接收模式中,由FIFO准备好标志来自动产生DMA服务请求。
3.传输/接收模式
这种模式下,I2S数据可以同时发送和接收音频数据。
2.3音频模块
2.3.1音频模块的介绍
音频模块采用的是硬件平台中的SSI接口控制CS4340,进行音频的播放。
SSI接口是同步串行接口,它有独立的发送器、时钟发生器和桢同步功能的接收器。
24位高质量立体声CODEC芯片CS4340用于音频的DAC。
文件数据由同步串行接口读入芯片CS4340,芯片按组(包含左右声道)进行数据的转换,再由左右声道输出,其输出在音频运算放大器的作用下,可以提供立体声驱动输出。
在此次设计中,把整个设计分成3个模块:
控制模块;数据发送模块;数据接收模块。
数据发送和接收模块都工作于从模式,分别可以独立工作,通过控制模块的控制处于不同的状态。
2.3.2模块的连接关系
整个设计中,控制模块、数据发送模块、数据接收模块的连接关系如下图2-5所示。
图2-5各模块的连接模式图
2.3.3控制模块的设计
控制部分主要是通过TX_RX_SEL和MA_SL_SEL信号来决定是自己产生SCK和WS,还是接收总线上的SCK和WS。
外部时钟信号(CLK)、复位信号(RESET)用来控制整个系统所处状态和实现系统复位。
从外部引入的系统时钟信号(CLK)由晶振产生,本设计中使用的晶振频率是18.432MHz,故系统时钟频率为18.432MHz。
主模式中,系统时钟经过分频处理后,生成I2S的内部传输时钟SCK和声道选择信号WS。
本次设计中使用的声音的采样频率为48kHz,则声道选择信号WS的频率必须也为48kHz。
由于传输左右2个声道的数据为16bit,故SCK的频率为:
48kHz×16×2=1.536MHz。
如果需要传输20bit、24bit或32bit的左右声道的数据,可以提高SCK的频率,由上式可以计算出需要的SCK的频率。
根据WS、SCK与系统时钟频率的关系,可以得出由系统时钟频率产生WS和SCK的分频系数。
2.3.4控制模块中双向端口的设计
在控制模块中SCK、WS、SD信号都是输入输出双向端口,根据外部信号TX_RX_SEL、MA_SL_SEL信号的控制,决定端口的输入输出方向。
如下图2-6所示:
图2-6TX_SD向外发送数据图
当TX_SD向外发送数据时,TX_RX_SEL为高电平,输出缓冲打开,去驱动外部的SD,而另一端则关闭输入缓冲,令缓冲输入到内部RX_SD上的电平为高阻态。
图2-7RX_SD接收外部数据图
当RX_SD接收外部数据时,TX_RX_SEL为低电平,输入缓冲打开,接收外部SD的数据,另一端则关闭输出缓冲,令输出到外部SD上的电平为高阻态。
通过上面的设计,就可以保证在某一时刻只有一端在驱动总线,而不会造成数据冲突。
2.3.5数据发送模块的设计
在这个设计中,数据的发送模块是一个非常重要的模块,模块图如下图2-8所示。
图2-8数据的发送模块图
2.3.6各信号的时序关系
SCK是时钟信号,WS是片选信号,SD是数据信号,它们的时序关系如图2-9所示。
图2-9信号的时序关系图
2.3.7数据接收模块的设计
与数据发送模块相对应的是数据接收模块。
其设计如图2-10所示。
图2-10数据的接收模块图
WS信号的产生方式与发送模块一样。
计数模块的计数值在本设计中为模16,当计数达到16时,EN信号变成低电平,使计数器停止计数,同时也使串并转换模块停止接收数据。
WS、SCK、SD信号的进入同样需要经过RX_EN信号的使能来决定与控制模块的连接或断开。
3开发环境及工具
3.1开发环境IAREWARM
3.1.1简介
IAR公司是全球领先的嵌入式系统开发工具的公司,其中完全集成了开发嵌入式系统所需要的C/C++编译器、汇编器、链接器、文件管理器、文本编辑器、工程管理器。
IAR公司独具特色的C-SPY调试器,不仅可以在系统开发初期进行无目标硬件的纯软件仿真,而且可以结合IAR公司推出的J-Link硬件仿真器,实现用户系统的实时在线仿真调试。
IAR的EmbeddedWorkbench系列源级浏览器(SourceBrowser)功能利用符号数据库使用户能快速浏览源文件,也可以通过详细的符号信息来优化变量存储器。
文件查找功能可以在指定的某些种文件中进行全局文件的搜索。
并且提供了对第三方工具软件的接口,允许用户启动指定的应用程序。
IAR无缝集成了所有必要组件,确保开发的流程流畅而不间断。
开发环境的界面如下图3-1所示:
图3-1IAR开发环境界面图
上图中是对程序编译成功后,进行下载和调试后产生的界面。
展现的窗口分别是:
工程窗口、反汇编窗口、寄存器窗口、符号寄存器、局域窗口、存储器窗口。
3.1.2IAR的主要特性
1.顶目管理特性
IAREW是一个能够支持多种微处理器开发的集成开发环境,针对用户特定的目标系统,用创建项目的方式来进行管理和开发,其项目管理功能强大,用户只要创建一个工作区(Workspace),就可以在其中开发一个或多个项目。
各个项目中可以包含不同的组(Group)和文件(File)模块,并且可以为每个项目进行选项设置。
在项目开发过程中任何修改都会被记录,从而保证修改设计时可以获得所有需要的模块。
通过目标创建(Make)选项可以很方便地实现对一个IAREW项目进行完整的编译和链接,直接产生最终的应用目标文件,而且可执行文件中不包含已过期的模块。
2.调试器特性
IARC-SPY调试器是IAR公司专门为嵌入式系统应用开发的一种高级语言调试器。
IARC-SPY调试器使用户能进行C/C++和汇编语言源代码调试、反汇编调试或二者混合调试。
采用源代码调试是验证用户应用程序逻辑性正确与否的最快捷、最便利的方式;而反汇编调试则针对应用程序的错误段,并对硬件进行精确控制。
在混合显示模式中,调试器显示相应的C/C++源代码及其它对应的反汇编代码清单。
3.C/C++编译器特性。
IARC/C++编译器提供灵活的变量分配能力,可直接采用C/C++语言编写中断函数,具有针对不同CPU保持可移性的“#pragma”编译命令,支持IAR扩展嵌入式C++特性,例如模板、名称空间、多重虚拟外设、固定操作符(static_cast、const_cast和reinterpret_cast)以及标准模板库(STL)等。
支持特殊目标语言的扩展,例如特殊函数的输入、扩展关键字、指示、预设标志、同步函数等。
IARC/C++编译器运行速度快,采用面向存储器的设计避免了暂存文件及覆盖技术。
编译时进行严格的扩展类型检查,链接时进行严格的模块接口类型检查。
IARC/C++编译器采用最优化技术产生高效的目标代码,可选择以代码大小或速度快慢进行目标代码优化。
多种输出格式选择,有重定位二进制、汇编源代码和可选的汇编器列表文件等。
提供容易理解的错误和警告信息。
生成与C-SPY高级调试兼容的扩展调试信息。
4.汇编器特性
IAR汇编器是一种功能强大的可重定位的宏汇编器,支持Intel/Motorola格式的宏,并且含有多种指示符和表达式。
它具备一个内部C语言预处理器,支持条件汇编,与其他IAR系统软件一起集成在IAREW环境之中。
3.1.3集成开发环境的界面特色
1.分层次的工程组织;
2.同一工作空间中允许存放多个工程;
3.可停靠的窗口和多视图;
4.源代码浏览;
5.创建和维护库的工具;
6.可以和源代码控制系统相集成;
7.文本编辑器。
3.2JTAG的基本原理
3.2.1JTAG简介
H-JTAG是一款简单易用的的调试代理软件,功能和流行的MULTI-ICE类似。
H-JTAG包括两个工具软件:
H-JTAGSERVER和H-FLASHER。
其中,H-JTAGSERVER实现调试代理的功能,而H-FLASHER则实现了FLASH烧写的功能。
常见的JTAG有:
H-JTAG、J-LINK、FTDI等。
H-JTAG的基本结构图和实物图如下图3-2所示:
图3-2H-JTAG软件结构
图3-3H-JTAG实物图
3.2.2性能介绍
JTAG是一种很先进的嵌入式系统开发设备,遵从国际标准测试协议。
主要用于芯片内部测试及对系统进行仿真、调试。
JTAG的主要功能可以分为两大类:
一类用于测试芯片的电气特性,用来检测芯片是否有问题;另外一类用于Debug,起到对各类芯片以及其外围设备进行调试的作用。
其中一个含有JTAGDebug接口模块的CPU,若时钟正常,则可以通过JTAG接口访问CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器。
JTAG的工作原理为:
在器件内部定义一个TAP,通过专用的JTAG测试工具对内部节点进行测试和调试。
H-JTAG支持所有基于ARM7和ARM9的芯片的调试,而且支持大多数主流的ARM调试软件,如ADS、RVDS、IAR和KEIL。
通过这些灵活的接口配置,H-JTAG可以支持WIGGLER,SDT-JTAG和用户自定义的各种JTAG调试小板。
而且,附带的H-FLASHER烧写软件还支持常用片内片外FLASH的烧写。
使用H-JTAG,用户能够方便的搭建一个简单易用的ARM调试开发平台。
3.2.3H-JTAG调试/烧写结构
H-JTAG支持ARM公司的RDI接口。
通过RDI接口,H-JTAG能够支持大多数主流的ARM调试软件。
调试的结构如图3-4所示:
图3-4H-JTAG调试结构图
调试软件(AXD/RVDS/IAR/KEIL)通过RDI接口与H-JTAGSERVER进行交互。
H-JTAGSERVER通过与并口相连的JTAG调试板控制目标调试板。
H-JTAG还提供了灵活的JTAG接口设置。
通过设置,H-JTAG能支持不同类型的JTAG调试板,例如流行的WIGGLER和SDT-JTAG,用户也可以根据自己的需要使用自定义的JTAG调试板。
除了调试,用户还可以通过H-FLASHER将程序和数据烧写/下载到FLASH芯片中去。
目前,H-FLASHER支持的常见的片内和片外FLASH芯片。
由于软件的更新和升级,H-FLASHER支持的芯片类型也会不断的增加。
在进行FLASH烧写时,H-FLASHER与H-JTAGSERVER的连接如下图3-5所示:
图3-5H-FLASHER与H-JTA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LPC2378 数字音频 设计