基于C6416DSK的HPI接口应用与设计.docx

上传人:b****6 文档编号:4116285 上传时间:2022-11-28 格式:DOCX 页数:20 大小:661.96KB
下载 相关 举报
基于C6416DSK的HPI接口应用与设计.docx_第1页
第1页 / 共20页
基于C6416DSK的HPI接口应用与设计.docx_第2页
第2页 / 共20页
基于C6416DSK的HPI接口应用与设计.docx_第3页
第3页 / 共20页
基于C6416DSK的HPI接口应用与设计.docx_第4页
第4页 / 共20页
基于C6416DSK的HPI接口应用与设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于C6416DSK的HPI接口应用与设计.docx

《基于C6416DSK的HPI接口应用与设计.docx》由会员分享,可在线阅读,更多相关《基于C6416DSK的HPI接口应用与设计.docx(20页珍藏版)》请在冰豆网上搜索。

基于C6416DSK的HPI接口应用与设计.docx

基于C6416DSK的HPI接口应用与设计

摘要

本文介绍利用TMS320VC6416中主机接口HPI实现与主机通信,不需要增加太多额外的硬件设备和软件开销,外部主机通过HPI口对DSP系统的RAM进行访问,不会影响DSP的其它处理过程。

实现了一种双TMS320VC6416通信的硬件连接方案和软件实现方法,给出了部分程序代码。

实验结论证明这种方案可行、有效,对于一些复杂系统的设计具有很好的借鉴意义。

 

关键字:

DigitalSignalProcessorHostPortInterfaceTMS320VC6416

ABSTRACT

ThistextdescribesmaketheHPIoftheTMS320VC6416achievecommunicationwiththeHost.Wedonotaddtheexpensesofhardwareandsoftware,TheHostwillaccessRAMofDSPthroughtheexternaloftheHPIandwillnotaffecttheDSPprocessing.wegettocommunicationswhichconnecttwoTMS320VC6416s.Thetextgivespartoftheprogramcode.TheConclusionisprovedfeasible,effective.Evencomplexsystemdesignisagoodreference.

 

keywords:

DigitalSignalProcessorHostPortInterfaceTMS320VC6416

第一章绪论

1.1论文研究背景

数字信号处理器(DigitalSignalProcessorDSP)是近十几年来兴起的一项新技术,DSP以其速度快、功能强的特点正逐渐进入传统单片机所占有的工业和消费领域。

DSP是一种先进的可编程处理器,在近几年来,随着性价比的提高和DSP技术的普及,它在很多领域得到越来越广泛的应用。

DSP与外部主机的通信有很多种方式,既可以通过串口与外部通信也可以通过I/O口与外部进行通信。

但是不论是串口还是I/O口都要占用DSP的硬件资源,同时软件开销也非常大。

TI公司的C64X系列DSP都配有主机接口(HostPortInterface,HPI),用于DSP和主机之间的通信。

DSP通过HPI和主机进行通信的过程中没有软件和硬件的开销,由DSP自身的硬件协调冲突,从而不会打断正常程序的运行。

在HPI通信方式下,DSP的片内存储器对外界完全透明,由主机通过访问HPI的地址和数据寄存器来完成对DSP片内存储器的读写。

DSP芯片能够大大提高数字信号处理的效率,但在主机与DSP构成的系统中,当DSP与主机间需要大数据量传输时,数据传输速率就会成为程序运行速度的瓶颈。

所以在程序调试过程中,实现主机与DSP之间的快速数据传输,不仅可以提高程序运行效率,还可以大大节省调试程序的时间。

TMS320C6000系列的HPI(HostPortInterface)接口不仅可以方便主机对DSP的控制,还可以实现主机与DSP内存的快速数据传输。

这里用双TMS320C6416(600MHz)来进行实验,通过HPI接口实现了主DSP(下文中都称为"主机")和从DSP的快速数据传输。

HPI(Host-PortInterface)主机接口,是TI高性能DSP上配置的与主机进行通信的片内外设。

通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。

1.2主要研究内容及意义

通过HPI接口实现主DSP和从DSP的快速数据传输。

本文介绍利用TMS320VC6416中主机接口HPI实现与主机通信,不需要增加太多额外的硬件设备和软件开销,外部主机通过HPI口对DSP系统的RAM进行访问,不会影响DSP的其它处理过程。

实现了一种双TMS320VC6416DSP通信的硬件连接方案和软件实现方法,给出了部分程序代码。

实验结论证明这种方案可行、有效,对于一些复杂系统的设计具有很好的借鉴意义。

1.3本文的结构安排

第一章介绍TMS320VC6416DSP的特点及历史背景,引出论文所研究的内容。

第二章分析TMS320VC6416DSP的基本原理,以便进一步作出整体设计。

第三章分析设计所涉及的DSK开发板片内外设HPI接口。

第四章具体实验设计和仿真及结果分析。

第五章总结及展望。

第二章C6416DSP硬件结构

TMS320C6000是TMS320系列产品中的新一代高性能DSP芯片。

硬件结构包括CPU结构、片内存储器、外设和指令集。

重点讨论CPU数据通路与控制、中断系统、流水线和指令集,对片内存储器和外设做概述性介绍。

2.1CPU结构

2.1.1TMS320C6000结构及CPU

VelociTI结构使C6000DSP成为高性能的DSP芯片。

典型的VLIW(VeryLong

InstructionWord)结构由多个并行运行的执行单元组成,这些单元在单个时钟周期内可执行多条指令。

并行是突破传统设计而获得高性能的关键。

C6416处理器由三个主要部分组成:

CPU内核、外设和存储器。

CPU中8个功能单元可以并行操作,这些功能单元被分成类似的两套,每套由4个基本功能单元组成。

CPU有两组寄存器,每组寄存器由16个32位寄存器组成。

由于在运行期间不做硬件数据相关性的检查,所以程序的并行性在编译时就被确定。

片内程序存储器的总线宽度为256bit.使每个周期可取8条32位指令。

C6416芯片包括片内程序存储器和数据存储器,有些芯片将这些存储器作为高速缓冲存储器。

外设包括直接存储器访问(DMA)、低功耗逻辑、外部存储器接口(EMIF)、串口、扩展总线或主机口和定时器等。

不同型号的芯片有不同的外设配置,使用时请查有关数据手册。

图2-1的阴影部分为C6416的CPU:

●程序取指单元

●指令分配单元

●指令译码单元

●32个32位寄存器

●两个数据通路,每个数据通路有4个功能单元

●控制寄存器

●控制逻辑

●测试、仿真和中断逻辑

CPU有两个可进行数据处理的数据通路A和B,每个通路有4个功能单元(.L,.S,.M和.D)和一个包括16个32位寄存器的寄存器组。

功能单元执行逻辑、位移、乘法、加法和数据寻址等操作。

除取指令和存指令之外的所有指令均对寄存器产生影响。

两个数据寻址单元(.DI和.D2)专门负责寄存器组与存储器之间的数据传递。

每个数据通路的4个功能单元有单一的数据总线连接到CPU男一侧的寄存器上,以便两侧的寄存器组可以交换数据。

每条32位指令占用一个功能单元。

取指令、指令分配和指令译码单元每周期可以从程序存储单元到功能单元传递8条32位指令,这些指令的执行发生在两个数据通路(A和B)中的每个单元内。

控制寄存器组控制着各种操作的操作方式。

当从内部存储器读取一个256位长的取指包时,说明VLIW处理流程已经开始。

并行执行的指令(最多可达8条指令)连在一起形成一个执行包。

2.1.2CPU数据通路与控制

C6416的数据通路示于图2-2。

由图可见数据通路包括:

●2个通用寄存器组(A和B)

●8个功能单元(.L1,.L2,.SI,.S2,.MI,.M2,.D1,和.D2)

●2个存储器读取通路(LDI和LD2)

●2个存储器存储通路(ST1和ST2)

●2个寄存器组交叉通路(IX和2X)

●2个数据寻址通路(DA1和DA2)

2.1.2.1通用寄存器组

在C6416数据通路中有两个通用寄存器组(A和B),每个寄存器组包括16个32位寄存器。

寄存器组A包括AO~A15,寄存器组B包括BO~B15。

通用寄存器可用来存放数据和敷据地址指针,寄存器A1、A2、BO、B1和B2可用于条件寄存器,寄存器A4~A7和B4~B7可用于循环寻址。

通用寄存器组支持32位和40位定点数据。

32位数据可放在任意通用寄存器内。

C6416也支持32位单精度和64位般精度数据。

40位数据需跨放在两个寄存器内,数据的低32位放在偶寄存器内,剩余的高8位放在比偶寄存器序号大l的寄存器(即奇寄存器)的低8位内。

这样对于40位数据将有16个有效的寄存器埘,见表2-1。

在汇编语言中,寄存器对用两个寄存器之间加一冒号,且奇寄存器指定存前面来表示。

长型数据读操作忽略掉奇寄存器中的高24位,写操作用零添充奇寄存器的高24位,偶寄存器编码在操作码中。

2.1.2.2功能单元

C6416的数据通路中的8个功能单元分成2组,每组4个。

一个数据通路中的功能单元与另一个数据通路的功能单元有基本相同的定义。

CPU多数数据通道支持32位操作数,有些支持长型(40位)操作数。

每个功髂单元都有自己的写入通用寄存器的写u,1结尾的所有功能单元(如.L1)写入寄存器组A.2结尾的所有功能单元写入寄存器组B。

每个功能单元都有2个32位源操作数src1和src2的续口。

为了长型(40位)操作数的读写,4个功能单元(.L1,.L2,.SI和.S2)分别另外配有额外的8位写口和读口。

由于每个功能单元都有它自己的32位写口,所以在每个周期8个功能单元可并行使用。

2.1.2.3寄存器组交叉通路

每个功能单元可以直接对它所处的数据通路的寄存器组进行读和写操作,即.LI,.S1,.D1和,MI读,写入寄存器组A,而.L2,.S2,.D2和.M2读/写入寄存器组B。

两个寄存器组通过1X和2X交叉通路也与另一侧寄存器组的功能单元相连。

交叉通路允许一侧数据通路的功能单

元访问另一侧寄存器组的32位操作数,1X交叉通路允许数据通路A的功能单元从寄存器组B读它的源操作数,2X交叉通路则允许数据通路B的功能单元从寄存器组A读它的源操作数。

6个功能单元通过交叉通路可以访问另一侧的寄存器组,其中.M1,.M2,.SI和.S2单元的src2输入在交叉通路和自己通路的寄存器组之间是可选择的,.L1和.L2的src1和sc2。

输入在交叉通路和自己的寄存器组之间也是可选择的。

在C62xx/C67xxCPU中仅有两个交叉通路1X和2X,这就限制了在一个周期内从另一侧寄存器组只能读取一次源操作数,或者在一个周期内只能进行两个交叉通路的源操作数读入。

2.1.2.4存储器存取通路

在C6416CPU中,有两个32位通路可把数据从存储器读到寄存器。

到寄存器组A的通路为LDI,到寄存器组B的通路为LD2。

除此之外C67xx对于寄存器组A和B分别有第2个32位读取通路,从而允许LDDW指令同时读取2个32位数据到A侧寄存器和2个32位数据到B侧寄存器。

C62xx/C67xx也有2个32位通路ST1相ST2,分别将每个寄存器组的寄存器数据存入存储器。

这两个存储通路与功能单元.L和.S的长型数据读通路共享。

2.1.2.5数据地址通路

数据地址通路DAI和DA2示于图2-1。

来自于功能单元.D的数据地址通路允许一个寄存器组产生的数据地址支持另一个寄存器组到存储器的存取操作。

然而并行指令执行的读取和存入必须在同一个寄存器组内进行,或者同时使用交叉通路。

2.1.2.6TMS320C6416控制寄存器组

仅功能单元.S2可对控制寄存器组进行读写操作,通过指令MVC访问每个控制寄存器。

表2-3列出了控制寄存器组所包含的控制寄存器以及对每个控制寄存器的描述。

(1)寻址模式寄存器(AMR)

C62xx/C67xx的32个寄存器中,有8个寄存器A4~A7和B4~B7可以执行线性或循环寻址,其寻址模式由寻址模式寄存器(AMR)确定。

在寻址模式寄存器中,对每个寄存器都有2位字段用来选择地址修改模式:

线性(缺省)或循环模式。

对于循环寻址,这个宇段也指定哪个BK(blocksize)字段用作循环缓冲区。

此外,缓冲区的值必须与循环块尺寸相匹配、寻址模式寄存器(AMR)在复位时初始化为零,其保留部分总为零。

块尺寸字段BKO和BK1含有5位数值,用于计算循环寻址循环块的尺寸,块尺寸与BKO或者BKI内5位数值N的关系为:

块尺寸=2(n+1)。

(2)控制状态寄存器(CSR)

控制状态寄存器(CSR)包括控制位和状态位,如图2-6所示。

控制状态寄存器各位字段功能列于表2-6。

对于EN、PWRD、PCC和DCC字段,要查看有关数字手册来确定使用的芯片是否支持这些字段控制选择。

(3)E1节拍程序计数器(PCE1)

El节拍程序计数器(PCEI)用来保存在流水线中处于El节拍的执行包的32位地址。

2.2TMS320C6416内部程序和数据存储器

2.2.1程序存储器控制器

程序存储器控制器完成以下功能:

●对CPU或DMA提交的访问内部程序存储器的请求进行仲裁。

●对CI)U提交的通过外部存储器接口(EMIF)访问外部存储器的请求进行处理。

●当内部程序存储器设置为Cache时,对其进行维护。

2.2.2内部程序存储器

TMS320C6416的内部程序存储器可由用户配置为Cache或存储器映射的程序空间。

它包括64K字节的RAM,或者等价的2K个256位的取指包或16K个32位的指令。

通过程序存储控制器,CPU具备单周期的吞吐量,以256位宽与内部程序空间相连。

2.2.2.1内部程序存储器模式

内部程序存储器的cache/映射块可以通过设置CPU控制状态寄存器(CSR)的程序Cache控制位(PCC)使其工作在以下4种模式下

●存储器映射模式:

在映射模式下,程序通过对内部程序存储嚣Cache/映射块的地址进行取指来得到该地址的取指包。

在其他模式下CPU访问该地址范围将得到末定义的数据。

存储器映射模式为内部程序存储器复位后的默认模式。

CPU不能通过数据存储控制器来访问内部程序存储器。

●Cache使能模式:

在Cache使能模式下,最初对任何地址的程序取指都将引发Cache缺失。

发生Cache缺失时,首先通过外部存储器接口(EMIF)读入需要的取指包,并以每个指令周期32位指令的速度存人内部Cache中。

读人取指包的过程中.CPU被挂起。

期间CPU等待的时间取决于外存储器的类型、该存储器的状态及EMIF当时是否正被如DMA控制器或CPU数据访问的其他设备占用等。

任何对已经缓存的取指包的访问将引起Cache命中,这时Cache中的取指包通过内部程序存储器立即送入CPU,不再需要等待。

由存储器映射模式变为Cache使能模式时,程序Cache将自动冲洗,这也是冲洗Cache的唯一方式。

●Cache冻结模式:

在Cache冻结模式下.Cache当前状态特保持不变。

程序读冻结模式Cache与程序读使能模式Cache相比,唯一不同的是,发生缺失时,从EMIF读入的指令包不会同时存人Cache。

Cache冻结模式可以保证Cache中的关键代码不会被置换掉。

●Cache迂回模式:

在Cache迂回模式下,任何指令包都将从外部存储器中读取。

数据存储到Cache存储器中。

与Cache冻结模式一样,Cache同样保持当前状态不变。

迂回模式可以确保仅从外部存储空间中取指令。

2.2.2.2存储器映射

当CPU控制状态寄存器的PCC位被设置为映射模式时,所有的内部程序RAM映射到内部程序空间。

在映射模式下。

C.PU和DMA都能访问RAM的全部空间。

任何对RAM外部地址空间的访问都由EMIF来控制。

如果CPU和DMA试图在同一时间对RAM的同一块地址进行访问.DMA将等待CPU完成其相应块的访问。

在CPU访问完成后.DMA方可对该RAM进行访问。

2.2.3数据存储器控制器

数据存储器控制器的功能包括:

●对CPU和直接存储器访问(DMA)控制器访问内部数据存储器的申请进行仲裁。

●对CPU访问外部存储器接口(EMIF)的申请进行处理。

●协助CPU通过外设总线控制其访问内部集成外设。

外围总线控制其执行CPU和DMA对内部集成外设的仲裁。

数据存储控制器服务于所有的CPU和DMA控制寄存器的对内部程序存储器的数据请求。

●CPU请求数据读并写到:

1.内部程序存储器。

2.通过外围设备总线控制器的内部集成外设。

3.EMIF。

●DMA控制器请求对内部数据存储器进行读写。

●CPU不能通过数据存储控制器访问内部程序存储器。

CPU通过两条地址通路(DA1和DA2)发送请求到数据存储控制器。

输入的数据将通过CPU数据传输通路(ST1和ST2)。

读取数据通过CPU数据读取总线(LDI和LD2)。

CPU数据请求基于地址被映射到内部数据存储器,内部集成外设空间(通过外围总线控制器)和外部存储器接口。

数据存储控制器与DMA控制器连接到内部数据存储器,并在CPU和DMA控制器之问进行仲裁。

2.2.4内部数据存储器

内部64K字节的数据RAM分为2块,各32K字节,占据的地址为80000000h~80007FFFh和80008000h~8000FFFFh。

DMA控制器或CPU的A侧和B侧能够同时对位于不同RAM块或是不同的块中的数据进行同时访问,而不会发生冲突。

每一个块组织为4个16位宽度的半字。

由于对不同块的访问不会引起执行冲突.如果同时对不同的块进行访问操作,不必考虑块地址。

CPU和DMA都能够同时访

问在不同块的数据而不发生冲突。

两个C.PU数据端口A和B.能够在块内同时访问相邻的16位数据元素而不发生资源冲突。

为了避免执行冲突,当两种访问在相同块中产生,有必要注意LSB的地址。

通过这种存储器配置,每周期内最大的数据访问为3个32位访问,它们分别由CPU数据端口A和B在不同块中的DMA控制器产生。

第三章主机接口(HPI)

3.1概述

主机接口(HPI)是一个井行端口,主机处理器可以通过它直接访问CPU的内存空间。

由主机掌控该接口的主控权可使访问得到简化。

主机与CPU可以通过外部或内部存储器相互交换信息。

主机还可以直接对经过存储器映射的外围设备进行访问。

同CPU存储空间的连接足是通过DMA/EDMA控制器实现的。

主机一与CPU都可以访问HPI控制寄存器(FIPIC)。

通过使用外部数据.与接口控制信号。

主机可以访问HPI地址寄存器(HPIA)、HPI数据寄存器(HPID)与HPIC。

3.2HPI外部接口

C6416具有32个外部数据管脚HD[31:

0]。

因此,C6416HPI可以支持16位或32位外部管脚接口。

C6416HPI在作为一个16位宽主机端口时叫做HPI16。

而作为一个32位宽的主机端口时叫做HPI32。

在重新配置时通过引导与设备配置管脚可以选择HPI16或HPI32。

HPI16是C6416HPI的一个增强版。

它以一个16位的外部接口为CPU提供

32位数据。

HPI16还允许DSP访问HPI地址寄存器HPIA。

进一步,HPIA分成两个寄存器,即HPIA写(HPIAW)与HPIA读(HPIAR)。

HPI32具有与HPI16类似的功能。

以下是它们之间的差别:

●数据总线大小:

正如其名字所示,HPI16具有16位数据总线。

它结合16位连续传输为CPU提供32位数据。

为了和其他C6000设备兼容.HPI16使用HD[15:

0]作为数据管脚而不考虑复位时的端点模式选择。

HPI32具有32位数据总线。

由于带宽的增加,所有的传输包括一个32位的字不是两个连续的16位半字。

因此HPI在HPI32模式下工作时,吞吐量增加。

●HHWIL输入:

HHWIL输入在HPI16模式下使用,以用来决定是一个字的第一个还是第二个半字被传输。

HPI32模式下不使用HHWIL。

因为所有的传输均以32位字方式执行。

3.3HPI信号

外部HPI接口信号为各种主机设备提供了一个灵活的接口。

下表列列出了HPI管脚与它们的功能。

3.3.1教据总线:

HD[15:

0]或HD[31:

0]

HD[15:

0]或HD[31:

0]是一个并行、双向、三态数据线。

当HD不对应读访问时为高阻态。

3.3.2访问控制选择:

HCNTL[1:

0]

由HCN'TL显示哪一个内部HPI寄存器正在被访问。

由这两个管脚的状态决定是选择访问HPI地址(HPIA)寄存器,HPI数据(HPID)寄存器还是HPI控制(HPIC)寄存器。

另外,HPID寄存器还可以使用选项使地址自增进行访问。

下表描述HCNTL[1:

O]位的功能。

3.3.3半字标识选择:

HHWIL

HHWIL能识别出一次传输中的第一个与第二个半字,但并不是最高或最低半字。

HPIC寄存器HWOB位的状态(稍后加以说明)决定哪个半字是最高还是最低。

对于第一个半字.HHWIL为低,而第二个则为高。

HHWIL与HWOB一起指定半字在数据寄存器HPID中的位置。

这些都列于下表,此外还有取决于端点模式的LSB地址位。

HHWIL并不适用于C6416的HPI32。

3.3.4读/写选择:

HR/W

HR/W是主机读/写选择输入。

主机必须将HR/W设置为高以进行读操作,设置为低以进行写HPI。

如果主机既没有读/写选择输出,又没有一个读或写选通,那么它可以使用一根地址线来执行此功能。

3.3.5就绪:

HRDY

当HRDY作用时(低有效),它表明HPI已经就绪执行一次传输。

而无效时,则表明HPI正忙于完成当前的读操作或前一次HPID读取或写访问。

HCS激活HRDY。

当HCS为高时,HRDY总为低。

3.3.6选通:

HCS,HDS1,HDS2

HCS,HDS1,HDS2允许连到一个具有如下特性之一的主机:

●读/写选择(HR/W)的一个单一选通输出。

●分离的读与写选通输出,。

在这种情况下,读或写选择可能使用不同的地址。

一起使用的话.HCS、HDS1与HDS2可以产生一个有效的内部HSTROBE信号。

只有当HCS有效并HDS1与HDS2中两者之一(不是都)有效时.HSTROBE才会有效。

当HAS无效时(高).HSTROBE的下降沿将采样HCNT[1:

0]。

HHWIL.与HR/W。

因此,最后有效的HDS1、HDS2、HCS控制采样时间。

HCS作为HPI的使能输入,它在访问中必需为低。

但是,由于HSTROBE信号决定访问之间的真正边界,因此,只要HDS1与HDS2传输正确,HCS可以在连续访问之间始终为低。

具有独立读写选通的主机将这些选通位分别连到HDS1.HDS2上。

只有单一选通位的主机将把选通位连接到HDS1或HDS2上,未使用的管脚置为高。

不管是HDS1还是HDS2连接.HR/W都用来决定传输方向。

因为HDS1与HDS2是异或的(NOR),具有有效数据选通(高)的主机可以把该选通位连到HDS1或HDS2.而让其他的信号为低:

HSTROBE用于以下目的:

●读操作中.HSTROBE的下降沿初始化所有类型的HPI读访问。

●写操作中.HSTROBE的上升沿初始化所有类型的HPI写访问。

●下降沿锁存HPI的控制输入,包括HHWIL、HR/W与HCNTI[1:

0]。

HAS也会影响控制输入的锁存。

●HSTROBE的上升沿锁存HBE[1:

0]输入(仅适用于C620x/C670x)及将要写入的数据。

HCS控制HRDY输出。

换句话说,只有当HCS有效(低)时,HRDY管脚才会为高,从而表明未就绪。

否则HRDY有效(为低)。

3.3.7地址选通输入:

HAS

HAS可以使HCNTL[1:

0]、HR/W与HHWIL在一个访问循环中较早地移除,这样就可以使得有更多的时间将数据线的状态由地址变为数据信息。

该功能使得接入多元地址与数据线更

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

当前位置:首页 > 初中教育 > 政史地

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

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