ARM CPU S3C44B0X与C54X DSP的接口设计
- 格式:pdf
- 大小:187.13 KB
- 文档页数:6
TMS320C54xx DSP的USB接口实现通用串行(Universal Serial Bus)应用由三部分组成:具有USB接口的PC系统、能够支持USB的系统软件和用法USB接口的设备。
USB应用采纳通用衔接技术,实现外设的容易迅速衔接,借以达到便利用户、降低成本、扩展PC机衔接外设范围的目的。
USB的特点如下:(1)衔接灵便、用法便利现在计算机系统衔接外围设备的接口并无统一的标准,如键盘用PS/2接口,打印机用25针的并行接口等。
USB则将这些不同的接口统一起来,由一组极小的矩型插座和软件构成。
用户插入外设后,计算机系统能够自动识别接入的外设,而不需要重新启动系统,用户可以带电插拔;为USB设计的驱动程序和应用软件可以自动启动,无需用户干预USB设备,也不涉及IRQ矛盾等问题;USB单独用法自己的保留中断,不会同其它设备争用PC机的有限资源。
(2)为外设提供电源 USB能自动识别外设所需的电源,并通过USB电缆向该设备供电(最高可达500mA)。
(3)速度快 USB的最高传输率可达12Mbit/s,比串口速度快100倍,比并口速度快近10倍。
USB端口的传输速率比目前PC机平台上的任何其它类型端口的传输速率都快。
预计今后USB的速度将会提高到100Mbit/s以上。
(4)支持多媒体 USB提供了对电话的两路数据支持,它可支持异步及等时数据传输,使电话可与PC机集成,分享语音邮件及其它功能。
因为USB音频信息生成于计算机外,因而削减了噪音干扰声音质量的机会,从而使音频系统具有更高的保真度。
1 USB接口芯片AN2131Q目前市场上USB接口芯片无数,用法较为广泛的是Crypress公司的AN2131系列的USB接口芯片AN2131Q。
AN2131Q具有以下优点:(1)基于RAM的"软"系统解决计划(SOFT,RAM BASED),不需要ROM或其它的固化存储器,而只用法片内的程序/数据RAM。
ARM开发板S3C44B0使用指南
一、关于开发板
S3C44B0是一款功能齐全的高性能ARM处理器开发板,采用ARM9内核,主频为80MHz,具备有256KBROM、32KBIRAM、128KBSRAM,其中
32KBIRAM处理器内部维持缓存,128KBSRAM处理器外部维持缓存。
它可以
简化开发过程,使用户易于掌握和熟悉该处理器的硬件结构,支持快速实
现功能。
二、开发板资源
1、主要开发板资源:
1.1、主处理器:ARM9处理器,主频80MHz。
1.2、存储器:256KBROM,32KBIRAM,128KBSRAM。
1.3、外设接口:UART,SPI,I2C,ADC,PWM,GPIO。
1.4、数字I/O端口:2个数字I/O口。
1.5、系统接口:JTAG系统接口支持调试,主频输入/输出(SIO),
复位输入/输出(RST),电源输入/输出(VIN),使能输入/输出(EN)。
1.6、外设接口:摄像头接口,LCD接口,USB,PS/2,SD卡接口,串
口打印机接口,外部存储器接口,外部中断接口,外部接口
(EINT0/EINT1/I2S)。
2、典型应用:
2.1、工业控制:采用S3C44B0的工业控制系统,可方便地实现复杂
的控制逻辑,实现连续的控制,获得快速、可靠的控制效果;
2.2、消息控制:采用S3C44B0的消息控制系统,可实现信息的广播、多用户聊天等;
2.3、办公设备:采用S3C44B0的设备。
ARM7之S3C44B0X的电路设计初体验:关于其存储器控制器2009年04月19日星期日03:18 P.M.1.S3C44B0X地址空间划分其分为8个BANK,每一BANK最多有32MB空间。
为什么?S3C44B0X的地址总线范围为ADDR【24:0】,那就是说一共有25根地址线咯,这里的寻址范围就达到了32MB 空间,再加上S3C它自身有的片选信号线NGCS[7:0],那就是一共32MB*8=256MB空间。
2.S3C44B0X存储控制器功能大小端模式的选择:ENDIAN INPUT。
我们实验箱为小端模式。
Bank0总线宽度设置:主要还是取决于OM0和OM1,在我们实验箱的电路设计中已经固定好是1:0模式,即BANK0的总线宽度为16位。
本实验箱中的SDRAM的地址范围是存在于第7个BANK中。
3. S3C44B0X存储控制器寄存器BWSCON寄存器:决定每个BANK的总线宽度,决定每个BANK的等待时间,以及小端和大端模式选择。
BANKCON[5:0]寄存器:主要功能为时钟等待的选择。
需要特别注意BANKCON6和BANKCON7,他们的16.15位决定了存储器类型,REFRESH寄存器:决定是否启动自动重刷以及重刷时钟。
BANKSIZE寄存器:决定BANK6/7的大小。
MRSRB寄存器:决定SDRAM的模式。
4.S3C44B0X存储控制器寄存器初始化其对存储器的初始化时在文件“44binit.s”文件中,这是不是就是传说中的BOOTLOADER呢?探究中?看了看它对存储器初始化这一部分代码:设置寄存器#****************************************************#* Set memory control registers *#****************************************************ldr r0,=SMRDATAldmia r0,{r1-r13}ldr r0,=0x01c80000 /* BWSCON Address */stmia r0,{r1-r13}设置每个BANK的使用#bank0 16bit BOOT ROM#bank1 NandFlash(8bit)/IDE/USB/rtl8019as/LCD#bank2 No use#bank3 Keyboard#bank4 No use#bank5 No use#bank6 16bit SDRAM#bank7 No use.ifeq BUSWIDTH-16.long 0x11110102 /* Bank0=16bit BootRom(AT29C010A*2) :0x0 */.else.long 0x22222220 /* Bank0=OM[1:0], Bank1~Bank7=32bit */.endif.long((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+ (B0_PMC)) /* GCS0 */.long((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+ (B1_PMC)) /* GCS1 */.long((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+ (B2_PMC)) /* GCS2 */.long((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+ (B3_PMC)) /* GCS3 */.long((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+ (B4_PMC)) /* GCS4 */.long((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+ (B5_PMC)) /* GCS5 */.ifc "DRAM",BDRAMTYPE.long ((B6_MT<<15)+(B6_Trcd<<4)+(B6_Tcas<<3)+(B6_Tcp<<2)+(B6_CAN)) /* GCS6 check the MT value in parameter.a */.long ((B7_MT<<15)+(B7_Trcd<<4)+(B7_Tcas<<3)+(B7_Tcp<<2)+(B7_CAN)) /* GCS7 */.else.long ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) /* GCS6 */.long ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) /* GCS7 */.endif.long ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) /* REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019 */ .long 0x10 /* SCLK power down mode, BANKSIZE 32M/32M */.long 0x20 /* MRSR6 CL=2clk */.long 0x20 /* MRSR7虽然说的那么简单,认真看看上面的汇编还是不懂它每一行是什么意思。
ARM CPU S3C44B0X与C54X DSP的接口设计作者:陈猛赵继敏摘要:以SAMSUNG公司的ARM SOC芯片S3C44B0X和TI公司的TMS320C5416 DSP为例,讲述了ARM与DSP的数据接口技术,并结出了硬件连接图和软件代码。
关键词:ARM S3C44B0X 主机接口(HPI) TMS320C5416后PC时代,嵌入式产品逐渐占领市场。
而这些嵌入式产品的核心——处理器决定了产品的市场和性能。
高性能、低功耗、低成本是嵌入式处理器的主要特点。
在32位嵌入式处理器市场中,ARM占有78.6%的份额。
而TI而占有DSP市场的绝大部分份额。
通常的嵌入式系统设计中,由微控制器实现整个系统的控制,由DSP来执行计算密集型操作,然后通过一定的手段实现微控制器与DSP之间的通信和数据交换。
因此,如何高效地设计控制器(ARM)与DSP之间的接口以满足嵌入式系统的实时性要求,在嵌入式系统设计中显得尤为重要。
1 ARM CPU S3C44B0X的特点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个MEMORY BANK,最大外部存储空间达256MB,并支持SDRAM;· 内置彩色LCD控制器;· 2路异步串口(UART);· 71个通用I/O口;· 8通路模/数转换器(ADC);· 实时时钟(RTC)和看门狗电路(WATCHDOG)。
2 C54X DSP及其HPI接口2.1 C54X DSP的特点以高速、低功耗为特征的C54X系列DSP采用先进的改进型哈佛结构,具有分离的数据总线和程序总线,片内集成了ROM、RAM和多个外设,如通用I/O口、定时器、时钟发生器、软件可编程等待状态发生器、可编程块切换逻辑、串行口、直接存储器存取控制器(DMA)和与外部处理器通信用的主机接口(HPI)。
2.2 C54X的主机接口(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 干操作,片内的DMA 通道会自动辅助完成RAM 区与HPI 数据寄说 明涉外,C5416几乎不用进行其他存器的数据传输。
主机由HCNTL0/1线来选择HPI 的某个控制寄存器,如表1所列。
通过对这4个寄存器的访问,就可以在所设安全机制的允许范围下读/写DSP 的所有或部分片内RAM 。
表1 HCNTL0/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 最小的存储单位是个传递必须要有2个传递成。
HB 于区分传当前字的第一字节还是第二字节。
通过设HPIC 寄存器的B 位,可以决定第一字节是这个字的高字节还是低字节。
2.3 时序图C54X HPI8的时序如图1所示,该时序可满足市场上大多数微控制器的时序特片。
因此,C54X 可以通过HPI8很方便地与微控制器接口,S3C44B0X 也不例外。
3C44B0X 与C5 DSP 的接口设计3.1 硬件连线TMS320C541S3C44B0X 连接PI8与主字(16bit ),因此对于HPI8,每周期才能完IL 信号用递的字节是置BO 3 S 4X 6与的接口电路如图2所示。
由图2可见,C54X 通过H 机设备相连时,除了8位HPI 数据总线及控制信号线外,不需要附加其它的逻辑电路,非常方便。
从HPI 寄存器的编址方式可以看出,主机只需两根地址线(A3、A2)便可寻址到HPI 制寄存器、地址寄存器和数据寄存器。
同时,将HPI8接口安排在S3C44B0X C5416的内部结构16位,因而主机必须读/写两个连续的8位字节,而且主机还应该提供HBIL 信号指示当中,可以直接使用址线A1来完成此功能:址写入数据时,表示为第一字节;向A1=1的地址写入数据表示第二字节。
有的地址线和控制线在HDS1/2的下降沿采样,用S3C44B0X 的读/写信号nOE 和nWE 修改这一位,C54X 对它既不能读存取DSP 内部RAM 的数据了。
接口的所有控的BANK2(即地址范围0X04000000~0X05FFFFFF ),而且S3C44B0X 具有内部译码器,直接产生片选信号nGCS2。
由于C54X HPI8是一个8位的并行端口,而为然传输的是第一字节还是第二字节。
在S3C44B0X 当向A1=0的地另外,还有几个关键的控制信号线需要连接。
一个就是HR/W 信号,由于S3C44B0X 没有此信号,使用地址线A4来代替。
当A4=1时,代表读操作,反之为写操作。
在HPI8的操作中,所来完成此功能。
由于S3C44B0X 和C5416 HPI 接口的控制逻辑不尽相同,需要使用其它的一些信号线来进行模拟,此时要严格遵循HPI 的读写时序(如图1所示)。
3.2 软件设计由于主机接口(HPI )传送8位数据字节,而HPIC 寄存器(通常是S3C44B0X 首先要寻址的寄存器)是一个16位寄存器,在S3C44B0X 这一边可以相同内容的高字节与低字节来管理HPIC 寄存器(尽管某些位的寻址受到一定的限制),在C54X 这一边高位不用。
当主机开始存取DSP 的数据时,首先要执行以下两步操作:· HPIC 寄存器的BOB 位置1(高字节与低字节必须相同)。
BOB 位为字节选择位。
BOB 位置1,表示第一字节为低字节。
BOB 位影响数据和地址的传送。
只有主机可以也不能写。
· 将起始地址写入HPIA 寄存器。
此后可正常结合硬件设计和HPI 的操作步骤,便可以在S3C44B0X 上编写程序实现C5416的数据通信。
程序主要分为两个部分:一部分是地址及数据的定义;一部分是实现代码。
具体程序如下:#defi S *(UINR8 *)(HPI_BASE +0x2) //000 1 0#defi E + 0x10) //110 #defi 10 1 0/*de 0 00x6) //001 1 0#defi 0 0E + 0x16) //101 1 0_F *(UINT8 *)(HPI_BASE + 0x8) //010 0 044B0X 来说,HPI8占用其内存的和HBIL 信号用S3C44B0X 的j=HP ne HPI_BASE 0x4000000/* HPIC reg */#define HPIC_W_F *(UINT8*)(HPI_BASE+0x0) //000 0 0#define HPIC_W_ne HPIC_R_F *(UINT8 *) (HPI_BAS 0 0ne HPIC_R_S *(UNIT8 *)(HPI_BASE+0x12) //1fine HPID_W_A_F *(UINT8 *)(HPI_BASE +0x4) //001#define HPID_W_A_S *(UINT8 *)(HPI_BASE +ne HPID_R_A_F *(UINT8 *) (HPI_BASE+0x14) //101#define HPID_R_A_S *(UINT8 *)(HPI_BAS /* HPIA reg */#define HPIA_W #define HPIA_W_S *(UINT8 *)(HPI_BASE +0xA) //010 1 0#define HPIA_R_F *(UINT8 *)(HPI_BASE +0x18) //110 0 0#define HPIA_R_S *(UINT8 *)(HPI_BASE + 0x1A) //110 1 0上述这些宏定义了HPI8接口寄存器的地址。
对S3C BANK2,即起始地址为0X04000000。
又由于HPI8的HR/W 地址线实现,因此对同一个寄存器而言,其读写地址不同。
以下代码从DSP 读出数据:UINT16 read_dsp (UINT16 addr ){INT16 i;INT8 j;set_hpia(addr); //设置起始地址i=HPID_R_A_F; //读出第一字节ID_R_A_S ; //读出第二字节return (i<<8)|(j&0xff);}以下 dat)ddr-1); //设置起始地址_A_F=(UINT8)((dat>>8)& 0xff ); //写入第一字节& 0xff ); //写入第二字节4B0X 作为主控制器,用TMS320C5416进行运算,然后交换数据。
事实证明,用HPI 接口在ARM 和DSP 间通信满足嵌式系统的实时性要求。
代码向DSP 写入数据:void write_dsp(UINT16 addr,UINT16{set_hpia(a HPID_W HPID_W_A_S=(UINT8)(dat }在嵌入式系统设计中,用S3C4通过HPI 接口进行通信和入。