ARMCPUS3C44B0X与C54XDSP的接口设计精.docx

上传人:b****6 文档编号:4686465 上传时间:2022-12-07 格式:DOCX 页数:9 大小:18.72KB
下载 相关 举报
ARMCPUS3C44B0X与C54XDSP的接口设计精.docx_第1页
第1页 / 共9页
ARMCPUS3C44B0X与C54XDSP的接口设计精.docx_第2页
第2页 / 共9页
ARMCPUS3C44B0X与C54XDSP的接口设计精.docx_第3页
第3页 / 共9页
ARMCPUS3C44B0X与C54XDSP的接口设计精.docx_第4页
第4页 / 共9页
ARMCPUS3C44B0X与C54XDSP的接口设计精.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

ARMCPUS3C44B0X与C54XDSP的接口设计精.docx

《ARMCPUS3C44B0X与C54XDSP的接口设计精.docx》由会员分享,可在线阅读,更多相关《ARMCPUS3C44B0X与C54XDSP的接口设计精.docx(9页珍藏版)》请在冰豆网上搜索。

ARMCPUS3C44B0X与C54XDSP的接口设计精.docx

ARMCPUS3C44B0X与C54XDSP的接口设计精

ARMCPUS3C44B0X与C54XDSP的接口设计

    

    

    

    

    摘要:

以SAMSUNG公司的ARMSOC芯片S3C44B0X和TI公司的TMS320C5416DSP为例,讲述了ARM与DSP的数据接口技术,并结出了硬件连接图和软件代码。

    

   关键词:

ARMS3C44B0X主机接口(HPI)TMS320C5416

    

后PC时代,嵌入式产品逐渐占领市场。

而这些嵌入式产品的核心——处理器决定了产品的市场和性能。

高性能、低功耗、低成本是嵌入式处理器的主要特点。

在32位嵌入式处理器市场中,ARM占有78.6%的份额。

而TI而占有DSP市场的绝大部分份额。

通常的嵌入式系统设计中,由微控制器实现整个系统的控制,由DSP来执行计算密集型操作,然后通过一定的手段实现微控制器与DSP之间的通信和数据交换。

因此,如何高效地设计控制器(ARM)与DSP之间的接口以满足嵌入式系统的实时性要求,在嵌入式系统设计中显得尤为重要。

    

1ARMCPUS3C44B0X的特点

    

ARM是一款32位的精简指令集(RISC)处理器架构,以其高性能、低功耗、低成本占有市场。

由于ARM公司采用IP授权的方式经营,全球几乎所有的大半导体公司都有基于ARM的SOC芯片。

   S3C44B0X是SAMSUNG(三星)公司一款基于ARM7TDMI的SOC芯片。

它一方面具有ARM处理器的所有优点:

低功耗、高性能;同时又具有非常丰富的片上资源,非常适合嵌入式产品的开发。

其特点如下:

    

·采用ARM7TDMI内核,I/O电压3.3V,内核电压2.5V;

    

·内置锁相环(PLL),系统主频最高达66MHz;

    

·4种工作模式,可以实现电源管理以降低系统功耗;

    

·8KB的系统高速缓存(CACHE),极大地提高了系统运行速度;

    

·支持8个MEMORYBANK,最大外部存储空间达256MB,并支持SDRAM;

    

·内置彩色LCD控制器;

    

·2路异步串口(UART);

    

·71个通用I/O口;

    

·8通路模/数转换器(ADC);

    

·实时时钟(RTC)和看门狗电路(WATCHDOG)。

    

2C54XDSP及其HPI接口

    

2.1C54XDSP的特点

    

以高速、低功耗为特征的C54X系列DSP采用先进的改进型哈佛结构,具有分离的数据总线和程序总线,片内集成了ROM、RAM和多个外设,如通用I/O口、定时器、时钟发生器、软件可编程等待状态发生器、可编程块切换逻辑、串行口、直接存储器存取控制器(DMA)和与外部处理器通信用的主机接口(HPI)。

    

2.2C54X的主机接口(HPI)

    

C54X中的主机接口(HPI)主要有三种:

标准8位HPI8接口、增强型8位HPI8接口和16位HPI16接口。

其中C542~C549内含标准型HPI8;C5402、C5410内含增强型HPI8;C5410以上为HPI16;C5409、C5416的HPI可以由用户设置为增强型HPI8或HPI16。

增强型比标准型更优越之处主要在于:

增强型允许主机访问DSP内部的所有片内RAM,而标准只能访问RAM区中指定的2K字。

    

以TMS320C5416(简称C5416)包含的增强型HPI8接口为例,它与外部主机或微处理器的连接具有单独的8根数据线HD0~HD7和10根控制器。

主机主动通过HPI口访问DSP的内部RAM以及其它资源。

除了对主机发中断(通过置HPIC寄存器的HINT位,可以使HINT线有效)或清除主机发来的中断(通过清HPIC寄存器的DSPINT标志)需要DSP干涉外,C5416几乎不用进行其他操作,片内的DMA通道会自动辅助完成RAM区与HPI数据寄存器的数据传输。

主机由HCNTL0/1线来选择HPI的某个控制寄存器,如表1所列。

通过对这4个寄存器的访问,就可以在所设安全机制的允许范围下读/写DSP的所有或部分片内RAM。

表1HCNTL0/1的选择功能描述

    HCNTL1

    HCNTL0

    说       明

    0

    0

    主机读/写HPI控制寄存器--HPIC。

    0

    1

    主机以地址自动增的模式读/写HPI数据锁存器--HPID。

若为读操作,则HPI地址寄存器HPIA自动读后增1;若为写操作,则HPIA自动写后增1。

    1

    0

    主机读/写HPI地址寄存器--HPIA,该地址指向C54X的片内RAM。

    1

    1

    主机读/写HPI数据锁存器--HPID,HPIA不变。

    

由于DSP最小的存储单位是字(16bit),因此对于HPI8,每个传递必须要有2个传递周期才能完成。

HBIL信号用于区分传递的字节是当前字的第一字节还是第二字节。

通过设置HPIC寄存器的BOB位,可以决定第一字节是这个字的高字节还是低字节。

    

2.3时序图

    

C54XHPI8的时序如图1所示,该时序可满足市场上大多数微控制器的时序特片。

因此,C54X可以通过HPI8很方便地与微控制器接口,S3C44B0X也不例外。

    

3S3C44B0X与C54XDSP的接口设计

    

3.1硬件连线

    

TMS320C5416与S3C44B0X连接的接口电路如图2所示。

由图2可见,C54X通过HPI8与主机设备相连时,除了8位HPI数据总线及控制信号线外,不需要附加其它的逻辑电路,非常方便。

    

从HPI寄存器的编址方式可以看出,主机只需两根地址线(A3、A2)便可寻址到HPI接口的所有控制寄存器、地址寄存器和数据寄存器。

同时,将HPI8接口安排在S3C44B0X的BANK2(即地址范围0X04000000~0X05FFFFFF),而且S3C44B0X具有内部译码器,直接产生片选信号nGCS2。

由于C54XHPI8是一个8位的并行端口,而C5416的内部结构为16位,因而主机必须读/写两个连续的8位字节,而且主机还应该提供HBIL信号指示当然传输的是第一字节还是第二字节。

在S3C44B0X中,可以直接使用址线A1来完成此功能:

当向A1=0的地址写入数据时,表示为第一字节;向A1=1的地址写入数据表示第二字节。

    

另外,还有几个关键的控制信号线需要连接。

一个就是HR/W信号,由于S3C44B0X没有此信号,使用地址线A4来代替。

当A4=1时,代表读操作,反之为写操作。

在HPI8的操作中,所有的地址线和控制线在HDS1/2的下降沿采样,用S3C44B0X的读/写信号nOE和nWE来完成此功能。

    

由于S3C44B0X和C5416HPI接口的控制逻辑不尽相同,需要使用其它的一些信号线来进行模拟,此时要严格遵循HPI的读写时序(如图1所示)。

    

3.2软件设计

    

由于主机接口(HPI)传送8位数据字节,而HPIC寄存器(通常是S3C44B0X首先要寻址的寄存器)是一个16位寄存器,在S3C44B0X这一边可以相同内容的高字节与低字节来管理HPIC寄存器(尽管某些位的寻址受到一定的限制),在C54X这一边高位不用。

   当主机开始存取DSP的数据时,首先要执行以下两步操作:

    

·HPIC寄存器的BOB位置1(高字节与低字节必须相同)。

BOB位为字节选择位。

BOB位置1,表示第一字节为低字节。

BOB位影响数据和地址的传送。

只有主机可以修改这一位,C54X对它既不能读也不能写。

    

·将起始地址写入HPIA寄存器。

    

此后可正常存取DSP内部RAM的数据了。

    

结合硬件设计和HPI的操作步骤,便可以在S3C44B0X上编写程序实现C5416的数据通信。

    

程序主要分为两个部分:

一部分是地址及数据的定义;一部分是实现代码。

具体程序如下:

    

#defineHPI_BASE0x4000000

    

/*HPICreg*/

    

#defineHPIC_W_F*(UINT8*)(HPI_BASE+0x0)//00000

    

#defineHPIC_W_S*(UINR8*)(HPI_BASE+0x2)//00010

    

#defineHPIC_R_F*(UINT8*)(HPI_BASE+0x10)//11000

    

#defineHPIC_R_S*(UNIT8*)(HPI_BASE+0x12)//11010

    

    

    

    

/*defineHPID_W_A_F*(UINT8*)(HPI_BASE+0x4)//00100

    

#defineHPID_W_A_S*(UINT8*)(HPI_BASE+0x6)//00110

    

#defineHPID_R_A_F*(UINT8*)(HPI_BASE+0x14)//10100

    

#defineHPID_R_A_S*(UINT8*)(HPI_BASE+0x16)//10110

    

/*HPIAreg*/

    

#defineHPIA_W_F*(UINT8*)(HPI_BASE+0x8)//01000

    

#defineHPIA_W_S*(UINT8*)(HPI_BASE+0xA)//01010

    

#defineHPIA_R_F*(UINT8*)(HPI_BASE+0x18)//11000

    

#defineHPIA_R_S*(UINT8*)(HPI_BASE+0x1A)//11010

    

上述这些宏定义了HPI8接口寄存器的地址。

对S3C44B0X来说,HPI8占用其内存的BANK2,即起始地址为0X04000000。

又由于HPI8的HR/W和HBIL信号用S3C44B0X的地址线实现,因此对同一个寄存器而言,其读写地址不同。

    

以下代码从DSP读出数据:

    

UINT16read_dsp(UINT16addr)

    

{

    

INT16i;

    

INT8j;

    

set_hpia(addr);//设置起始地址

    

i=HPID_R_A_F;//读出第一字节

    

j=HPID_R_A_S;//读出第二字节

    

return(i<<8)|(j&0xff);

    

}

    

以下代码向DSP写入数据:

    

voidwrite_dsp(UINT16addr,UINT16dat)

    

{

    

set_hpia(addr-1);//设置起始地址

    

HPID_W_A_F=(UINT8)((dat>>8)&0xff);//写入第一字节

    

HPID_W_A_S=(UINT8)(dat&0xff);//写入第二字节

    

}

    

在嵌入式系统设计中,用S3C44B0X作为主控制器,用TMS320C5416进行运算,然后通过HPI接口进行通信和交换数据。

事实证明,用HPI接口在ARM和DSP间通信满足嵌入式系统的实时性要求。

    

ARMCPUS3C44B0X与C54XDSP的接口设计

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1