MPC860T与DSP的HPI口通信设计

来源:本站
导读:目前正在解读《MPC860T与DSP的HPI口通信设计》的相关信息,《MPC860T与DSP的HPI口通信设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MPC860T与DSP的HPI口通信设计》的详细说明。
简介:处理器之间快速、正确的通信是构建多处理器系统的关键。本文以MPC860T与TMS320VC5402为例,讨论了双处理器系统通过DSP的HPI口进行通信连接的硬件和软件设计方案。

引言

目前,在各种网络安全产品中,往往需要对大量的通信数据进行快速加密运算处理,以提高网络和信息的安全性。这对系统的数据处理能力和通信控制能力提出了很高的要求。如果该系统仅用一个DSP来实现,那么实际应用中要求DSP处理的数据量可能很大,把包括数字信号处理和通信功能在内的所有任务都交给DSP来完成,会影响DSP对数据的加密速度。如果采用专门的通信处理器(如Motorola公司的MPC860T[1])与高性能的DSP(如TI公司的TMS320VC5402[23])构成双CPU处理器平台,则可以充分利用前者强大的通信处理能力,以及后者对大容量数据和复杂加密算法的处理能力。构建这种双CPU处理器系统[45]的关键是要保证通信处理器与DSP之间能快速、正确地通信。现在主要有双口RAM、串口或DSP的HPI口等几种连接方式来实现。本文以MPC860T为例,探讨了其与TMS320VC5402的HPI口通信设计方法。

1MPC860T芯片介绍

MPC860T PowerQUICC[1] (Quad Integrated Communication Controller)是Motorola公司生产的32位专用嵌入式通信处理器芯片。其内部集成了微处理器和一些控制领域的常用外围组件,具有强大的通信和网络协议处理能力。MPC860T按照功能结构可以划分为4个主要模块:嵌入式的PowerPC内核、系统接口单元模块、通信处理模块和快速以太网模块(FEC)。

PowerPC内核包括高速缓存和存储器管理单元(MMU),具有较高性能的数据处理能力,在66 MHz时钟时可达到87 MIPS的指令速度。

系统接口单元模块主要包括总线监视器、假中断监视器、软件看门狗、中断定时器、时钟合成器、存储器控制单元等。其主要功能是提供内部总线和外部总线的接口。

MPC860T与外部存储器的接口都是由SIU内部的存储器控制单元来管理的。存储器控制单元最多能控制8个存储器体,每个存储器体都有2个重要的寄存器BRx和ORx。通过对它们编程可以实现通用目的片选机构(GPCM)功能,或一对复杂的用户可编程机构(UPMA、UPMB)功能,从而支持与SRAM、EPROM、EEPROM、Flash、DRAM、SDRAM及其他外设之间的连接。还可以通过编程BRx和ORx,使每个功能灵活的存储器控制体满足不同类型存储器特殊时序的需求。

通信处理模块支持4个串行通信控制器(Serial Communication Controller, SCC)。实际上,包含8个串行通道: 4个SCC,2个串行管理控制器 (Serial Management Controller, SMC),1个串行外围接口(Serial Peripheral Interface, SPI)和1个I2C 接口。

快速以太网模块内部提供一个标准的MII接口,加上物理层芯片以及脉冲变压器就可以构造一个10M/100M自适应快速以太网口,可以方便与外部进行快速的数据通信。由于通信处理模块和快速以太网模块分担了PowerPC核的外围工作,这种多处理模块体系结构不仅使得芯片功能强大、速度快,而且功耗要低于传统体系结构的处理器。正是基于上述特点,所以MPC860T特别适用于数字通信和网络安全产品的开发。

2TMS320VC5402的HPI口内部结构

TMS320VC5402(简称C5402)是TI公司推出的一款性价比高的16位定点数字信号处理器,最高可达100 MIPS,具有较强的运算和数据处理能力。C5402片内有一个增强型的HPI(Host Port Interface)[23],内部结构如图1所示。

MPC860T与DSP的HPI口通信设计

图1C5402的HPI内部结构

HPI是一个8位并行口,用来与主设备或主处理器接口。外部主机是HPI的主控者,它可以通过HPI直接访问C5402的内部存储空间,包括存储器映像寄存器。HPI主要有5个部分:

① HPI存储器(片上RAM)。HPI RAM主要用于C5402与主机之间传送数据,也可以用作通用的双寻址数据RAM或程序RAM。

② HPI地址寄存器(HPIA)。它只能由主机对其直接访问。该寄存器中存放当前寻址的HPI存储单元的地址。

③ HPI数据寄存器(HPID)。它只能由主机对其直接访问。如果当前进行读操作,则HPID中存放的是要从HPI存储器中读出的数据;如果当前进行写操作,则HPID中存放的是将要写入HPI存储器的数据。

④ HPI控制寄存器(HPIC)。DSP和主机都能对它直接访问,包含HPI操作的控制和状态位。

⑤ HPI控制逻辑。用于处理HPI与主机之间的接口信号。HPI的外部数据线是8根(HD0~HD7),在C5402与主机传送数据时, HPI能自动地将外部接口传来的连续的8位数据组合成16位数据传送给C5402。

HPI有2种工作方式:

① 主机和C5402共用寻址方式(SAM),这是常用的操作方式。在SAM方式下,主机和C5402都能寻址HPI存储器,异步工作的主机的寻址可以在HPI内部得到同步。如果C5402与主机的周期发生冲突,则主机有优先权。

② 仅主机寻址方式(HOM)。在HOM方式下,只能让主机寻址HPI存储器,C5402处于复位状态或所有内部和外部时钟都停止的IDLE2空转状态(最小功耗状态)。

3MPC860T与DSP的HPI口通信设计

3.1硬件电路设计

图2为MPC860T与C5402的8位HPI接口的硬件连接示意图。首先将HPIENA信号接高电平,以允许选择使用HPI模块。将HPI口的8位数据总线HD7~HD0接在MPC860T的最高8位数据总线D0~D7上,作为数据传输通道。因为MPC860T是32位数据总线,其中D0为MSB(最高数据位),所以MPC860T的D0应该与HD7相连,D7与HD0相连。

MPC860T与DSP的HPI口通信设计

图2MPC860T与C5402的HPI口硬件连接

控制信号线HCNTL1、HCNTL0用于选择3个寄存器HPIA、HPID和HPIC,具体如表1所列。

表1HCNTL1、HCNTL0信号决定访问的HPI寄存器

MPC860T与DSP的HPI口通信设计

将HCNTL0、HCNTL1分别接在MPC860T的地址总线A30、A29上。HBIL信号用来指明传输的是第1个字节还是第2个字节:若为低,表示第1个字节;若为高,表示是第2个字节。将HBIL信号接在MPC860T的地址总线A31上。MPC860T有32位地址总线,当进行字节数据访问时,A31为最低有效地址线。HPI的读写信号线HR/W与MPC860T的读写信号线RD/WR相连,用于指示数据传输方向。HDS1、HDS2、HCS一起产生HPI的内部选通信号,其内部的连接关系如图3所示。

MPC860T与DSP的HPI口通信设计

图3HDS1、HDS2、HCS信号的内部连接

可将HDS1、HDS2分别接高和低电平,HCS与MPC860T的片选信号CS5相连接。片选信号CS5决定HPI的寄存器将被映射到MPC860T的哪一段存储器地址空间。对MPC860T来说,访问HPI寄存器和通过HPI读写DSP的存储器,就等同于访问MPC860T自己的存储器。HAS是地址选通信号,由于MPC860T具有独立的地址和数据信号,可把HAS信号固定接高电平。MPC860T的I/O引脚PC15与C5402的复位信号RS连接,以控制C5402的正确复位。HINT信号为HPI接口的中断输出信号,将其与MPC860T的外部中断输入信号IRQ1连接,可以向主机申请中断。为了实现C5402的HPI口程序引导功能,将C5402的INT2引脚直接接地,以保证DSP复位后进入HPI的程序引导模式。本设计中由于MPC860T与C5402的电平兼容,所以信号之间不需要进行电平的转换。

3.2通信软件设计

在这个双处理器系统中,MPC860T作为主机,可以通过HPI接口访问C5402内部16K×16位字的HPI存储器。MPC860T上电复位后,需要执行PPCBOOT程序(即Bootloader引导程序)完成自身硬件的初始化工作。然后,MPC860T产生外部复位信号控制C5402的正确复位。最后,MPC860T通过地址信号线A30、A29控制HCNTL0、HCNTL1信号,以选择C5402片内的3个HPI接口寄存器(HPIC、HPIA、HPID),从而实现对HPI存储器的数据读/写等功能。由于MPC860T的片选信号CS5与HPI接口的片选信号HCS相连,所以需要配置MPC860T内部的BR5和OR5寄存器,以产生访问HPI口的正确时序,同时把HPI接口的寄存器映射到MPC860T相应的存储地址空间。

MPC860T对HPI口进行数据读写需要3个步骤:设置控制寄存器(HPIC),写地址寄存器(HPIA),读写数据寄存器(HPID)。由于HPI的这3个内部寄存器都是16位的,而HPI口本身是8位数据宽度,所以MPC860T在访问每个HPI寄存器时,需要前后两次进行8位数据操作,并且通过地址信号线A31来控制HBIL信号,以指示当前传送的是第1还是第2个字节。另外,MPC860T还需要通过设置HPIC寄存器的BOB位,来决定传送的第1个字节是16位字的高字节还是低字节。

下面的程序能够实现MPC860T对C5402内部HPI存储器的指定地址段写数据,再从指定地址段读回数据。

……

#define CS5_BASE 0x80000000

……

__u8 *addr=( __u8 *)CS5_BASE;

……

memctl->memc_or5 = 0xfff80ff4;/*配置or5*/

__asm__("eieio");

__asm__("isync");

memctl->memc_br5 = 0x80000401;/*配置br5*/

__asm__("eieio");

__asm__("isync");

……

printf("nreset DSP ...n");/*输出显示复位DSP*/

iop8xx->iop_pcpar &= 0xFFFE;/*配置PC15为通用I/O*/

iop8xx->iop_pcdir |= 0x0001;/*配置PC15 为输出*/

iop8xx->iop_pcdat &= 0xFFFE;/*配置PC15输出低电平*/

udelay(50000);

iop8xx->iop_pcdat |= 0x0001; /*配置PC15输出高电平*/

udelay(50000);

addr[0]=0x00;/*设置HPIC*/

udelay(100);

addr[1]=0x00;

udelay(100);

addr[4]=0x00;/*设置HPIA*/

udelay(100);

addr[5]=0x7F;

udelay(100);/*发送数据到DSP的HPI RAM*/

for(i = 0; i < 256; i++){/*发送0xaaaa到HPID*/

addr[2] = 0xaa;

__asm__("eieio");

__asm__("isync");

udelay(100);

addr[3] = 0xaa;

__asm__("eieio");

__asm__("isync");

udelay(100);

}

udelay(10000);

addr[4]=0x00;/*从DSP的HPI RAM中读数据*/

udelay(100);

addr[5]=0x80;

for (i=0; i<256;i++){

udelay(100);

printf("VALUE= 0x%x,0x%xn",addr[2],addr[3])

};

……

系统要实现MPC860T通过DSP的HPI口对C5402进行程序加载,首先要将需要被加载的DSP程序经CCS软件编译后转换为对应的数据文件,再由MPC860T通过加载程序加载。图4是MPC860T对C5402的HPI口进行程序加载的流程。

MPC860T与DSP的HPI口通信设计

图4C5402的HPI口程序加载流程

结语

本文介绍了一种双处理器系统通过DSP的HPI口进行通信连接的方法。该系统以MPC860T作为主机,TMS320VC5402作为从机,MPC860T可以根据实际通信的需要通过HPI接口向DSP装载不同的处理程序和数据,从而实现强大的通信处理芯片与高性能数字信号处理芯片的完美结合。目前,这种双处理器系统在数字通信和网络安全产品开发中具有一定的应用价值。

提醒:《MPC860T与DSP的HPI口通信设计》最后刷新时间 2024-03-14 00:57:22,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MPC860T与DSP的HPI口通信设计》该内容的真实性请自行鉴别。