1、1,1,C H A P T E R,TMS320C6000结构概述,2,学习内容,了解C62xx/C67xx CPU基本结构和指令 了解C62xx /C67xx存储器映射和外设主要特点 初步掌握开发工具,3,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,指令集概述,C6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,4,Digital Signals Processing 数字信号处理(方法、技术) Digital Signals Processor 数字信号处理器 DSP的厂家:Texas Instrument(TI)、M
2、otorola、Philips本课内容将安排TI DSP,DSP?,5,TMS320 DSP 系列产品,6,TMS320C6000简介,C62x:C6201,C6202,C6203,C6211C67xx:C6701,C6711C64xx: C6415 C6416,C6000平台 Veloci TI结构 统一的开发工具 管脚与代码兼容,7,C62xx/C67xx主要特点,Veloci TI结构,CPU有8个功能单元:2个乘法器和6个算术逻辑单元,每周期可执行8条指令,具有RISC类指令集 有效的C编译器和汇编优化器 支持8/16/32位数操作,也支持40位操作 支持饱和和正常溢出运算,定点和浮点
3、DSP管脚兼容 大的片内RAM空间 32bit片外存储器接口支持SDRAM、SBSRAM、SRAM和其它异步存储器 16位主口可以访问C62X/C67X存储器和外设 多通道DMA控制器 多通道串口 32位定时器/功耗,C67xx:支持单精度32bit/双精度64bit操作,支持3232乘法,8,C62xx/C67xx系统简框图,9,C62xx/C67xx CPU结构,10,TMS320C62xx CPU数据通路,11,TMS320C67xx CPU数据通路,12,1.CPU数据通路,C62X和C67X的数据通路包括: 2个通用寄存器组(A和B) 8个功能单元(.L1,.L2,.S1,.S2,
4、.M1,.M2,.D1,和D2) 2个存储器读取通路(LD1和LD2) 2个存储器存储通路(ST1和ST2) 2个寄存器组交叉通路(1X和2X) 2个数据寻址通路(DA1和DA2),13,通用寄存器组,C62X/C67X数据通路中有2个通用寄存器组(A和B): 寄存器组A:A0-A15, 寄存器组B:B0-B15。 条件寄存器: A1、A2、B0、B1和B2 可用于循环寻址的寄存器:A4-A7和B4-B7。 通用寄存器组支持32位和40位定点数据, C67X也支持32位单精度和64位双精度浮点数据。对于40位和64位数据,需跨放在两个寄存器内。,14,功能单元,8个功能单元分成A、B两组: A
5、组:.L1、.S1、.M1、.D1 B组:.L2、.S2、.M2、.D2 每个功能单元都有:2个32bit读口和1个32位写口 .L1、.L2、.S1和.S2另有:8bit写口和8bit读口,支持40位操作数的读写 同一周期8个功能单元可并行使用,1x,15,功能单元和寄存器,16,功能单元和执行操作,17,用C62xx实现算法举例,多数DSP算法包括如下的点积运算:,运算操作:相乘、相加、循环和更新数据如何实现这个运算?,18,点积运算,运算的两个基本指令:,乘法: 加法:,19,相乘(.M功能单元),功能单元,20,相加(.L功能单元),21,寄存器组A,22,寄存器取代变量,23,建立循
6、环,.添加跳转指令和循环标号 .设定一个循环计数器 .添加递减循环计数指令 .给出基于循环计数值的跳转条件,24,1. 跳转(.S单元),25,2. 设定一个循环计数器,26,3. 递减循环计数,27,4.条件指令,所有指令都是根据下面条件寄存器的值为0或非0条件地执行: A1、A2、B0、B1、B2代码语法 指令执行条件A2 A2 0!A2 A2=0,28,使用条件指令,29,将数值读入寄存器,如何读取a和x? .a、x和Y在存储器中 .建变量指针.load/store中使用指针,30,读取/存入(.D单元),31,读取指针,地址是常数,因此使用指令MVK:MVK指令所移的位数:16 bit
7、 表示一个完整地址的位数:32 bit 一个地址读入寄存器必须使用两条指令: 例如:,32,关于指针,第1次循环后,A4为:第2次循环如何访问a(1)和x(1)?,33,递增指针,34,完整代码(仅使用A侧),35,寄存器组交叉通路,CPU中有两个交叉通路1X和2X 1X:允许A侧功能单元读取B组寄存器数据 2X:允许B侧功能单元读取A组寄存器数据 每侧仅有一个交叉通路,在同一周期内从另一侧寄存器组读操作数只能一次,或者同时进行使用2个交叉通路(1X和2X)的操作。 .D功能单元不能使用交叉通路 仅src2可以使用另一侧寄存器数据,36,C62xx存储器存取通路,DA:32bit两个32位数据
8、地址通路,来自于两个功能单元.D的数据地址 LD、ST:32bit两个32位通路可把数据从存储器读到寄存器(A:LD1,B:LD2)或把数据从寄存器存储到存储器(A:ST1,B:ST2) ST1、ST2与功能单元.L和.S的长型数据读通路共享,37,C67xx存储器存取通路,A组 寄存器,B组 寄存器,.D1,.D2,LD1 32 MSB,ST1,ST2,LD2 32 LSB,DA1,DA2,LD1 32 LSB,LD2 32 MSB,可同时读取2个32位数据到A侧寄存器和2个32位数据到B侧寄存器。,38,C67xx数据地址通路,2个数据地址通路(DA1,DA2): 允许寄存器产生的数据地址
9、支持同侧寄存器到存储器的存取操作 也允许寄存器产生的数据地址支持另一侧寄存器到存储器的存取操作。,A组 寄存器,B组 寄存器,.D1,.D2,LD1,ST1,ST2,LD2,DA1,DA2,39,控制寄存器,40,控制寄存器,控制寄存器组,.S2,访问控制寄存器使用:MVC指令MVC指令仅使用.S2功能单元,41,寻址模式寄存器(AMR),有8个寄存器可执行线性和寻址循环寻址,A4A7,B4B7,42,寻址模式,43,控制状态寄存器(CSR),44,控制状态寄存器描述,45,E1节拍程序计数器(PCE1),保存在流水线中处于E1节拍的执行包的32位地址,46,TMS320C67xx扩展控制寄存
10、器,47,浮点加法配置寄存器(FADCR),48,浮点加法配置寄存器字段描述,49,浮点乘法配置寄存器(FMCR),50,浮点辅助配置寄存器(FAUCR),DIV0:执行0倒数操作时置1; UNORD:用NAN作比较操作时置1,51,并行操作,取指包中的每条指令的执行部分由并行执行位p位控制。P位决定本条指令是否与取指包中的其他指令并行执行。CPU对p位从左至右(从低地址到高地址)进行扫描;如果指令i的p位是1,则第i+1指令与第i条指令在同一周期内执行,否则指令i的p位是0,则第i+1指令在第i条指令的下一周期执行。执行包的最后一条指令的p位设为0一个取 指包的八条指令的执行顺序有几种形式:
11、完全串行;完全并行;部分串行。,52,并行操作,取指包:八条32bit指令 执行包:并行执行的所有指令。执行包中的每一条指令使用的功能单元必须各不相同 每条指令的并行执行位(p位)控制本条指令是否与取指包中的其他指令并行执行: p =1 与下条指令并行 p =0 下条指令在当前指令的下个周期执行,取指包的基本格式,53,例子取指包的部分并行p位模式,54,条件操作,C6000的每条指令都是条件执行的,由每条指令的4个最高有效位控制。 z=1,进行零测试 z=0,进行非零测试 creg=0,z=0,意味着指令将无条件地执行。,55,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,
12、指令集概述,C6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,56,指令集,按操作类型分类:算术指令、逻辑指令、存取指令,程序控制指令,位操作,其他指令(nop空指令) 按功能单元分类:.S单元,.L单元,.M单元,.D单元,其他按执行周期分类:单周期指令,多周期指令,存取指令(load:5;Store:3),跳转指令, 其他,57,C62xx指令集(根据操作类型分类),58,C62xx指令集(根据功能单元分类),59,C62xx指令集(根据执行周期分类),60,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,指令集概述,C
13、6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,61,C62xx内部数据总线,62,思考,为何程序数据是256位的?,63,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,指令集概述,C6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,64,C6201/C6202/C6701有两种映射方式:map0和map1 map1:片内程序存储器位于0地址 map0:片外存储器位于0地址 C6211仅有一种映射方式 映射方式通过 管脚设置: C6201/ C6701 :BOOT MOD
14、E4:0 C6202:扩展数据总线XD4:0,65,C6201/C6202/C6701存储器映射,66,C6211存储器映射,67,C6201/C6202/C6701存储器映射(map0),68,问题,C6201芯片共多少个片外存储空间? 4个: C6201芯片的片外存储空间的大小? 52M, CE0 16 M;CE1 4M; CE2+CE3=32M MAP0模式下SDRAM是否可以接入C6201芯片的片外存储空间CE2中? 可以。不能接入CE1中,69,思考,如果要在放置一个存储程序的芯片PROM (2M 同步器件),一个存储数据的SDRAM (16M 异步器件),这两个芯片要求在不同的存储
15、空间中,对于C6201芯片,采用MAP0存储映射方式,应该将这两个芯片分别放在什么地址空间里?,70,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,指令集概述,C6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,71,C62xx/ C67xx外设,EMIF:访问4M/16M/32M块,EPROM、SRAM、SDRAM、SBSRAM。 DMA:4个通道,后台操作。 BOOT:管脚设置引导方式,DMA完成,对片外存储器4M空间引导。 SP:高速同步串行通信,T1/E1/MVIP接口 HPIF:16bit访问片内数据RAM Timer/Pwr Down:定时器,功耗模式。,72,C62xx/ C67xx系统方框图,73,提要,1,3,2,4,C62xx /C67xx CPU结构介绍,指令集概述,C6201 CPU内部数据总线,C62xx存储器映射,5,6,C62xx外设及系统方框图,开发工具简介,74,C62xx/C67xx编程,工具 效率 编程工作量,75,软件工具流程,76,本章总结,C62xx/C67xx的基本结构: C62xx/C67xx CPU C62xx/C67xx存储器映射 外设 指令集 开发工具,