dsp中hpid hpic www.cnhpia.org的地址多少

dsp hpi 的实验_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
dsp hpi 的实验
上传于||文档简介
&&d​s​p​ ​h​p​i​ ​的​实​验
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢第4讲DSP结构_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第4讲DSP结构
上传于||文档简介
&&嵌​入​式​设​计​课​程​ ​张​茹​ ​D​S​P​ ​f​p​g​a​ ​c​c​s
大小:1.35MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢基于ARM的TMS320C6455 DSP HPI的动态程序加载设计与实现
来源:电子技术应用2013年第6期
作者:赵建波1,胡文若2,习
勇1,陈路辉1
摘& 要: 设计了与(Host Port Interface 主机接口)的通信接口,并通过该接口完成了ARM对DSP程序的。该方法减少了DSP对于外部非易失性存储器的需求,同时提高了DSP加载方式的灵活性,对于软件无线电波形组件的动态加载有重要的意义。
关键词: ARM;DSP HPI;;动态加载
&&& 软件无线电的基本思想是通过构造一个通用、标准、模块化的硬件平台并加载不同的软件来实现不同的通信功能,使用不同的通信标准(如工作频段、调制解调类型、数据格式、加密模式、通信协议等),构成具有高度灵活性的通信设备(如多模手机、多功能基站、多波形电台等)[1]。
&& &典型的软件无线电通信设备包含CPU、DSP和FPGA等波形处理单元。一般来说,CPU完成系统控制与波形的网络协议功能,而DSP和FPGA完成波形的物理层和部分协议功能。软件无线电通信设备具有波形可动态加载的特点,这对系统设备的软硬件设计提出了要求,要求CPU能够对DSP和FPGA波形组件程序进行动态加载。
&& &BCNG-SDR-2012是自主研发的软件无线电通信平台,由一片Samsung公司的S3C2440 ARM920T CPU、一片TI公司的TMS320C6455 DSP和两片Xilinx公司的高性能FPGA(VIRTEX-5和SPARTAN-6)以及可配置的宽频段射频模块组成,具有强大的通信信号处理能力。本文利用TMS320C6455 HPI口,在上述平台上实现了ARM对DSP的程序动态加载功能,从而为软件无线电的实现提供了有力的支撑。
1 TMS320C6455 HPI启动流程
1.1 TMS320C6455 DSP简介
&& &TMS320C6455是TI公司推出的高性能定点数字信号处理器[2],最高主频为1.2 GHz,在该主频下最高性能可达9 600 MIPS(Million Instructions Per Second)。该芯片的外设包括用于处理器间通信的 Serial RapidIO总线、千兆以太网存储接入控制器(MAC) 、66 MHz外设组件互连(PCI)总线接口、用户可配置的16 bit或者32 bit的主机接口HPI等。C6455 DSP建立在增强型C64x+DSP内核基础之上,该内核添加了专用的新指令,与基于TI的高级C64x DSP架构的代码相比,其代码尺寸平均缩短了20%~30%,周期效率提高了20%。
&& &该芯片集成了大量的片上存储器,这些存储器被组织为一个两级存储系统。其中,第一级(L1)为2个32 KB存储器,可配置为数据Cache和程序Cache;第二级(L2)为一块2 MB的存储器,可作为程序或者数据存储器。
1.2 TMS320C6455 DSP的HPI特性
&& &主机接口HPI(Host Port Interface)是一个并行端口,主要用于DSP与其他总线或CPU进行连接,可实现高速、并行的数据通信。HPI使一个外部主机可以通过16 bit或者32 bit的并行接口直接访问DSP的内部或外部存储器。HPI有3个寄存器,分别为HPIC控制寄存器、HPIA地址寄存器、HPID数据寄存器,均为32 bit。如图1显示了HPI在主机与DSP数据交互中的位置[3],通过HPI DMA逻辑以及资源交换控制逻辑,主机CPU可以访问DSP的内存、EMIF以及其他设备。
1.3 使用HPI的启动流程
&& &TMS320C6455复位和上电时的引导模式[4]主要有NO BOOT模式、HPI引导模式、Flash引导模式等。具体采用哪种引导模式是由复位或上电时管脚BOOTMODE[3:0]的状态决定的[5]。本文使用的平台中,BOOTMODE[3:0]管脚可通过拨码开关来设置。
&& &如图2显示了使用HPI的启动流程。系统上电复位后,首先采样管脚BOOTMODE[3:0]的状态确定启动方式(即引导模式)。由于本文采用的是HPI引导模式,上电后DSP内核处于挂起状态;接下来外部主机通过HPI口直接将代码和数据加载到DSP的内存中,在这期间DSP内核保持挂起状态不变;当主机完成程序加载后,主机向HPIC中的DSPINT位写1,向DSP发出中断;DSP收到中断后,DSP内核从挂起状态唤醒,从L2的基地址(0x800000)处开始执行程序。
2 硬件设计与寄存器读写驱动
&& &在本文的硬件平台设计中,ARM与DSP HPI的接口连线如图3所示。从ARM端看,由数据线、地址线、读写控制线和片选线组成,其中数据线通过162245总线隔离器进行双向传输。
&&& 本文使用地址线作为HPI的控制信号,各信号对应的地址线如图3所示。表1显示了信号线的组合对应的访问类型。
&& &需要特别注意的是,由于本文中的数据总线是16 bit的,使得ARM访问的地址必须是偶数,因此不使用ADDR[0],从而有了表1中的偶数偏移地址。考虑到这一点,结合表1,下面以HPIC为例,给出其在ARM加载程序中的地址定义,其中_F和_S对应HHWIL信号,指明是第1个半字还是第2个半字。
&& &unsigned long Write_HPIC_F_ADDR=CS3_BASE_ADDR+0x0;
&& &unsigned long Write_HPIC_S_ADDR=CS3_BASE_ADDR+0x2;
&& &unsigned long Read_HPIC_F_ADDR=CS3_BASE_ADDR+0x4;
&& &unsigned long Read_HPIC_S_ADDR=CS3_BASE_ADDR+0x6;
&& &根据上述定义,从ARM来看,对于每个寄存器都有4个地址,在数据访问中必须选择正确的地址来操作。上述定义中,CS3_BASE_ADDR对应着DSP HPI的片选基地址,由于HPI 挂到了ARM的nGCS3片选上,根据S3C2440数据手册[6]可知其为0x。
&& &对HPIA和HPID的地址定义类似。定义了寄存器的地址后,再定义如下宏函数[7]来实现对相应寄存器的读写操作:
&& &#define IOWrite(reg, data)&& *(unsigned short *)(reg)=data
//写寄存器宏定义
&& &#define IORead(reg)&& &&&&& *(unsigned short *)(reg)
//读寄存器宏定义
3 HPI启动软件实现流程
&& &主机通过HPIC、HPIA、HPID和16 bit数据线与DSP进行数据交换和中断控制。HPI加载软件实现流程如图4所示。
&&& (1)初始化HPIC
&& &设置相应比特位,在这里仅仅设置了HPIC的HWOB位,该比特位设置第一个半字是所传32 bit数据的高16 bit(MSB16)还是低16 bit(LSB16)。在这里需要注意HHWIL信号线与HWOB位所起作用的不同,两者的共同协作才能确保数据的正确传输。操作如下:
&&&&& temp1=IORead(Read_HPIC_F_ADDR);
//读HPIC的第1个半字
&&&&& temp2=IORead(Read_HPIC_S_ADDR);
//读HPIC的第2个半字
&&&&& IOWrite(Write_HPIC_F_ADDR,temp1|0x1);
//设置HPIC中的HWOB位
&&&&& IOWrite(Write_HPIC_S_ADDR,temp2|0x1);
//设置HPIC中的HWOB位
&&&&& 需要注意的是,HPIC的高16 bit和低16 bit内容是相同的,所以写入相同的数据进行设置。
&&&&& (2)初始化HPIA
&&&&& 将操作地址写到HPIA中,由前所述,DSP要从L2的基地址(0x800000)处开始执行程序。因此需要将程序加载到从L2的基地址开始的内存中。对于TMS320C6455,L2的基地址为0x800000,芯片要求HPIA中写入32 bit的字地址,因此要将字节地址转为字地址,即0x200000,所以写HPIA寄存器代码如下:
&& &IOWrite(Write_HPIA_F_ADDR,0x0000);
&& &for(time_out=0;time_out&HRDY_TIMEOUT;time_out++);
&& &IOWrite(Write_HPIA_S_ADDR,0x20);
&& &for(time_out=0;time_out&HRDY_TIMEOUT;time_out++);
&& &根据TMS320C6455的芯片手册,HPIA的2个半字的写操作之间需要增加一定的延时。因此,上面的代码中设定了延时。具体时间参考TMS320C6455的芯片手册[2]。
&& &(3)向HPID中写入数据
&& &存取HPID时,通过控制HCNTL[1:0]信号可选择带地址自增的读写操作或是不带地址自增的读写操作。当访问连续的DSP存储空间时,使用带地址自增的读写操作只需要对HPIA寄存器赋值一次即可,能够给数据存取操作带来很大的方便。本文操作的是连续地址,因此使用带地址自增的HPID,这样仅需要进行一次设置HPIA,之后便不用再对其进行设置。
&& &(4)向HPIC中的DSPINT位写入1,向DSP发出中断
&& &至此,加载数据全部写入内存。接下来通知DSP数据加载完毕,这需要通过设置HPIC中的DSPINT位来完成,实现代码如下:
&& &temp3=IORead(Read_HPIC_F_ADDR);
&& &temp4=IORead(Read_HPIC_S_ADDR);
&& &IOWrite(Write_HPIC_F_ADDR,temp3|0x2);
&& &IOWrite(Write_HPIC_S_ADDR,temp4|0x2);
&& &这样当主机向DSP发送了DSPINT中断后,DSP会从L2基地址处开始执行。但是对于DSP的C程序来说,是要从_c_int00处开始执行,因此需要在L2基地址处增加跳转指令,使得程序跳转到_c_int00处,这样程序便可以正确运行,从而实现DSP程序的动态加载。
&&& 需要注意的是,由于项目中电路板设计使用HPI16模式,因此对HPI任何一个寄存器的访问,主机都需在HPI总线上进行2次半字存取,否则可能会引起整个数据的丢失或是其他不可预料的错误。
4 格式转换
&& &使用DSP集成开发环境CCS生成的文件一般为.out文件,该文件是通用目标文件格式(COFF)的目标文件,COFF文件中包含一些定位符号以及一些头信息等,而本文加载到内存中的数据是CPU能够直接运行的代码,不能包含任何的其他冗余信息,因此不能直接将COFF文件加载到内存中。本文使用TI公司提供的工具hex6x.exe和hex2aray.exe进行格式的转换,其中hex6x.exe将COFF文件转换为hex文件,hex2aray.exe将hex文件转换为一个数组,这样,直接读取数组中的数据并将其加载到内存中即可。
&& &本文在介绍DSP主机接口并通过HPI接口启动流程的基础上,详细介绍了在项目平台上ARM通过DSP的HPI口动态加载DSP的硬件设计与软件实现,同时详细描述了设计的注意事项、启动跳转以及格式转换等问题。实际的测试表明,加载1 MB的内存数据仅需要0.28 s,可见该加载方法加载速度快,灵活性好,很好地解决了软件无线电设备对DSP波形组件可重构的要求。
[1] MITOLA J.The software radio architecture[J].IEEE Communications Magazine,):26-38.
[2] Texas Instruments.TMS320C6455 fixed-point digital signal& processor[EB/OL].[]..
[3] Texas Instruments.TMS320C645x DSP host port interface (HPI) user&s guide[EB/OL].[]..
[4] 吴海洲,刘恒甫,黄克武.基于TMS320C6455的DSP加载模式研究[J].电子测量技术,):155-162.
[5] Texas Instruments.TMS320C645x/C647x DSP bootloader user&s guide[EB/OL].[]..
[6] Texas Instruments.S3C2440A 32-BIT CMOS Microcontroller user&s manual[EB/OL].[]..
[7] Texas Instruments.TMS320C6000 programmer&s guide[EB/OL].[]..
继续阅读>>
热门关键词
热门技术文章DSP-5在片外围电路_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
DSP-5在片外围电路
上传于||暂无简介
大小:273.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢hpi_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||暂无简介
大小:11.27KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 www.cnhpia.org 的文章

 

随机推荐