引 言
EP7209是世界上第一片既支持流行的MP3标准也支持诸如Microsoft Audio等快速涌现的互联网音频压缩标准的数字音频解码器片上系统
EP7209在74MHz下运行时其性能与基于100MHz英特尔奔腾芯片的个人计算机相同
且消耗的功率特别小:在2.5V电压下
功耗不足170mW
它的ARM核提供了一个优秀的数字信号处理器所能够提供的处理能力
因此
互联网音频处理仅占用了该芯片50%的处理能力
这给嵌入式系统的设计人员留下了高达25MIPS(百万条指令每秒)的处理能力用于实现其它功能
本文着重讨论EP7209的结构、功能、接口特性等及其在嵌入式系统中的应用
一、功能框图及功能块描述
图1是EP7209的功能框图由图1可知EP7209含有如下功能块
(1)ARM720T处理器含有如下功能子块:
① ARM7TDMI CPU核该CPU核支持Thumb指令集、核调试、增强的乘法器、JTAG以及嵌入式ICE
它的时钟速率可编程为18MHz、36MHz、49MHz、74MHz
② 内存管理单元(MMU)与ARM710核兼容并增加了对Windows CE的支持
该内存管理单元提供了地址转换和一个有64个项的转换旁路缓冲器
③ 提供了8KB的单一的指令和数据高速缓冲存储器以及一个四路相联高速缓冲存储器控制器
④ 写缓冲器
(2)38400字节的片上SRAM可以在LCD控制器和通用应用之间共享
(3)内存可以和高达6个独立的扩展段接口每个扩展段有256MB
且等待状态可编程
(4)27位的通用I/O可以多路复用
以在需要时提供额外的功能
(5)数字音频接口(DAI)可以直接与CD音质的DAC和编解码器相连
(6)中断控制器
(7)先进的系统状态控制及电源管理
(8)2个16550A兼容的全双工UART含16字节的发送及接收FIFO
(9)SIR协议红外线数据编解码器速率最高达115.2kbps
(10)LCD控制器16级灰度
可编程为1、2或4位每像素
(11)片上的启动ROM已固化了用于串行加载的启动代码
(12)2个16位的通用定时计数器
(13)1个32位的实时时钟(RTC)和比较器
(14)2个同步串行接口用于诸如ADC等Microwire或SPI外围器件
一个接口支持主模式和从模式
另一个仅支持主模式
(15)完全的JTAG边界扫描和嵌入式ICE支持
(16)2个可编程的脉冲宽度调制接口
(17)1个用于和1或2个Cirrus Logic CL-PS6700 PC卡控制器器件相连的接口可支持2个PC卡插槽
(18)振荡器和锁相环用于由外部的3.6864 MHz的晶振产生内核所需要的18.432MHz、36.864 MHz、 49.152MHz或73.728MHz的时钟
此外还有一个外部时钟输入端(在13MHz模式下使用)
(19)一个低功耗的32.768kHz的振荡器用于产生实时时钟所需要的1Hz时钟
所有的外部存储器和外围器件都应连接到32位的数据总线D[0:31]上并应使用28位的地址总线A[0:27]和其它控制信号
3.复 位
EP7209有三个异步复位信号:nPOR、nPWRFL和nURESET如它们中的任一个有效
系统复位将由内部产生
除了RTC数据和匹配寄存器外
所有的EP7209内部寄存器都将被复位
为了使系统时间在用户复位或电源失败的状况下得以保持
RTC数据和匹配寄存器仅由nPOR引起的复位所清除
任何复位都将复位CPU并在EP7209返回操作状态时使CPU从复位矢量处开始执行程序
4. 时 钟
EP7209有两个时钟模式:外部时钟输入和片上PLL时钟源的选取是由端口E的第2脚(PE[2])的一个陷阱选项来实现的
如果PE[2]在nPOR的上升沿处为高(例如上电时)
外部时钟模式被选取;如果PE[2]为低
那么
片上PLL模式被选取
上电以后
PE[2]可用作通用输入输出端口
EP7209器件有几个独立的逻辑部分每一个都有自己的时钟频率要求
当EP7209处于外部时钟模式时
外围器件的真实频率将不同于PLL模式时的频率
5. 中断处理
在程序的执行期间当一个不可预测事件 (如中断或存储器错误) 发生时
通常要产生一个例外
当这些例外在同一时间发生时
将由固定优先权服务体系决定其被处理的次序
表1显示了所有例外的优先权次序
EP7209中断控制器有两个中断类型:中断请求(IRQ)和快速中断请求(FIQ)中断控制器有能力控制来自22个不同的FIQ和IRQ中断源的中断
这22个之中
有17个被映射为IRQ输入
而另5个源被映射为FIQ输入
FIQ较IRQ有较高的优先级
如果来自于同一个组(IRQ或FIQ)的两个中断被接收到的话
其服务次序必须由软件来解决
所有中断均为电平敏感
也就是说
它们必须与下列的次序一致
(1)中断器件(内部或者外部)产生适当的中断
(2)如果中断屏蔽寄存器中适当的位已被设置那么一个FIQ或IRQ将由中断控制器产生
(3)如中断被使能的话处理器将跳转到适当的地址
(4)中断调度软件读中断状态寄存器以确定中断源并调用相应的中断服务例程
(5)中断服务例程中的软件将清除中断源这是通过对申请中断的器件采取一些由该器件特定的行动来实施的(如
读UART RX寄存器)
然后中断服务例程可以重新使能中断
任何其它未处理的中断都将以相同的方法被服务
或者
它可以返回到中断调度软件
此软件能检查任何其它的未处理中断并能相应地调度它们
"End of Interrupt"类型的中断将被锁存
所有其它的中断源(如外部中断源)必须保持有效
直到相应的服务例程开始执行为止
6. EP7209的启动方式
片上启动ROM的128字节中包含有一个指令序列此指令序列能够初始化器件
然后配置UART1以接收2048字节的串行数据
这些数据接收后将置于片上的SRAM中
一旦下载传送完成
执行将跳转到片上SRAM的起始处
这将允许诸如在产品的制造过程中将代码下载并编程到系统Flash中这样的操作
是否从片上启动ROM启动系统是由nMEDCHG引脚在电源复位期间的状态决定的如果nPOR有效时
nMEDCHG为高
那么
EP7209将从连接到CS[0]的外部存储器器件启动(正常启动模式);如果nMEDCHG为低
那么
启动将从片上ROM处开始
注意:在两种情形下
上电复位结束后
EP7209将处于后备态
而且为了真正地开始执行启动序列
需要在WAKEUP引脚上有一个由低到高的跳变
片上ROM启动的结果是对所有片选的解码都翻转了控制启动选项的信号由nPOR锁存
这意味着地址和总线宽度的重新映射将继续应用
直到nPOR的再一次有效为止
从ROM启动后
启动ROM的内容可从地址0x0000000处读回来;而在正常操作状态下
启动ROM的内容可从地址范围0x70000000中读回
7. 存储器和I/O扩展接口
EP7209能够解码6个分立的线性存储器或扩展段其中的两个可为PC Card卡预留
每一个接口连接到一个独立的单个CL-PS6700器件
每一个段的大小为256MB
两个附加段(除了这6个段以外的)被用于片上SRAM和片上ROM
片上ROM空间被完全解码
SRAM空间也被完全解码到编程在LCDCON寄存器中的视频帧缓冲器的最大容量中(128KB)
超出此地址范围的SRAM空间不被完全解码(即超出128KB范围的任何存取将绕回到128KB范围内)
6个段中的任一个可配置成与传统SRAM接口一致的接口相连接
而且能单独地被编程为8、16或32位宽
支持页模式存取
并且在执行非连续存取时可插入1~8个等待状态
执行触发模式存取时可插入0~3个等待状态
零等待状态连续存取特性被设计成支持触发模式的ROM
对使用nMWE引脚的可写存储器件
不允许零等待状态连续存取
至少应插入一个等待状态(等待状态数应编程到适当的MEMCFG寄存器的连续域中)
总线周期也可以通过使用EXPRDY输入信号来进行扩展
8. 大端配置与小端配置
EP7209对内部寄存器使用小端(little endian)配置然而
连结器件到用大端(big endian)配置的外部存储器系统上是可能的
ARM720T控制寄存器中的大端/小端位设置了EP7209在处理存储器中的字时是按大端格式还是小端格式进行
存储器被认为是从0开始向前编号的字节的线性组合
字节0~3容纳第1个被存储的字
字节4~7容纳第2个字
等等
在小端规划中
字中编号最低的字节认为是字的最低位字节
而编号最高的字节被认为是字的最高位字节
存储系统的Byte0在这个规划中应当连到数据线7到0(D[7:0])
在大端规划中
字的最高位字节被存储于编号最低的字节中
而最低字节存储于编号最高的字节中
因此
存储器系统的Byte0应当连到数据线31到24(D[31:24])
装载和存储指令是被大小端配置影响的唯一指令
9. 支持片上帧缓冲器的LCD控制器
LCD控制器提供了所有需要的控制信号以便直接与一个单面板复合LCD接口面板的大小是可编程的
可以是以16像素为增量
从32到1024像素的任何宽度(线长度)
总的视频帧缓冲大小可编程为高达128KB
这等同于理论上最大的面板大小1024×256像素(每像素4个位 )
视频帧缓冲器可定位于任何一个片选所控制的存储器中
在任何一个片选所控制的存储器中
它的起始地址固定于地址0X00000000
LCD视频帧缓冲器的起始地址定义在寄存器FBADDR[3:0]中
这些位将成为外部地址总线的最重要nibble(半字节)
缺省起始地址为0XC0000000(FBADDR=0XC)
一个使用片上SRAM(OCSR)建立的系统将把片上SRAM用于LCD视频帧缓冲以及用于各种数据的存储
LCD视频帧缓冲器起始地址在这个系统中应当设置为0X6
三、内存映射
地址空间的低2GB分配给了存储器在EP7209中
恰好在2GB下的8KB的空间是为内部寄存器所准备的且不可存取
EP7209的MMU应被编程为在访问这一区域时产生一个中断例外
通过从十六进制地址8000.0000到8000.3FFF的一组内部存储器位置来寻址内部外围部件这些内存位置在EP7209中被认为是内部寄存器
从0x8000.0000到0x8000.1FFF含有与CL-PS7111兼容的寄存器
包含了这些寄存器是为了向下兼容并称它们为旧的内部寄存器
表2显示了ARM720T处理器的4GB地址空间范围在EP7209中是如何被映射的(当从片上启动ROM启动时将有不同的内存映射)所显示的内存映射假定两个CL-PS6700卡控制器连结上了
如果此功能不需要的话
那么nCS[4]和nCS[5]存储器空间是可用的
外部启动ROM没有被完全解码(即:启动代码在0x7000.0000到0x8000.0000的256MB字节空间内将重复)
SRAM可被完全解码至最大的大小
即128KB
对超出此范围的任何位置的存取将绕回到这个范围内
四、基于EP7209的最大系统
基于EP7209的最大配置系统如图3所示此系统假定ROM为16位宽的器件
键盘可以连接到比图3所示更多的通用输入输出端口位
以支持多于64个键;然而
这些额外引脚将不能引线到WAKEUP引脚
需要注意的是三个串行接口(DAI、CODEC和SSI2)的输入/输出是多路复用同一组外部接口引脚的
因此
在任一时刻
系统只能使用这三个外围器件接口中的一个
结束语
本文介绍了一种基于ARM核的音频解码器单芯片系统EP7209描述了EP7209的整体结构、各功能块以及ARM处理器的地址空间在EP7209中是如何映射的
对EP7209的基本工作原理进行了讲解
最后给出了基于EP7209所能够构建的最大系统
希望本文能够使嵌入式系统的开发人员了解EP7209并加深对ARM核的理解