DSP复习资料.docx
- 文档编号:9371447
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:495.90KB
DSP复习资料.docx
《DSP复习资料.docx》由会员分享,可在线阅读,更多相关《DSP复习资料.docx(15页珍藏版)》请在冰豆网上搜索。
DSP复习资料
第二章DSP核和DSP处理器的新发展
*2.1DSP核与DSP处理器实现高速运算的途径
硬件乘法器及乘加单元:
满足最常见的乘法及乘积累加的运算,实现卷积、向量和矩阵、傅
里叶变换等算法的运算。
通用CPU通过移位和加法运算实现,需多个时钟周期。
多个执行单元:
多个独立执行单元,并行处理。
如:
并行的多个MAC,ALU,移位器和数据地址发生器(DAG)。
高效的存储器访问:
支持单周期内实现从存储器中提取指令、数据样本及滤波器系数,要有良好的存储器宽度与访问速度,这也是采用哈佛结构的原因。
此外,DSP算法中的存储器访问具有很强的可预测性,方便为下一次运算做准备。
数据格式:
分为定点格式和浮点格式,在精度与其它要求之间达成平衡,满足需求。
零开销循环:
为高效循环提供专门支持,无需消耗任何始终周期进行循环。
数据流的线性I/O:
设置1个或多个专门的串口与并口,采用线性处理机制,使得数据传输不影响CPU的工作。
专门的指令集:
早期DSP指令集需要达成两个目标;最大限度使用硬件,提高效率;最小限度使用存储器,降低成本。
因此,DSP指令集允许在单个指令中并行完成多个操作,并且使用短指令。
使得DSP指令具有高度专门化、复杂且不规则的特点,但使得编写高效的汇编语言软件复杂化。
*2.2当前DSP处理器结构的发展趋势
传统的DSP处理器
于1980年代出现的传统DSP结构具有以下特点:
每个时钟周期执行一条指令,使用复杂的、多操作类型的指令;
往往包括操作一个乘法器或MAC(乘加器),一个ALU和若干个其他的执行单元;20~50MHz频率,低功耗与存储器的条件下提供不错能服务(光盘/硬盘驱动器等)。
增加了一些硬件,如桶形移位器、指令高速缓存(cache)、指令流水线、提供时钟频率等,工作在100~150MHz,保持在低功耗与能耗时,提供较好性能服务。
(无线通信,高速modem).
强化的传统结构DSP处理器
在不提高时钟频率和不显著改变硬件的条件下改善性能:
在传统的DSP结构上增加并行的执行单元,如增加第二个或更多的乘法器和加法器等;伴随着指令集的扩展,以充分利用增加的硬件,并行更多的操作;
强化的传统结构DSP具有更宽的数据总线,以便在每个周期内为增加的执行单元提供数据;
还使用更宽的指令字,以便在单个指令内进行附加的并行操作;(见p.29图2.2.1)
并行结构
为了实现高性能与高效使用编译器的目的:
有别于传统结构DSP,并行性处理器使用非常简单的指令,即同时执行一组并行的指令,而不是一次执行一条指令;
简化指令的编写与执行,处理器在高时钟下运行;如TI公司1996年推出了TMS320C62xx
而传统结构的DSP的并行依靠复杂指令,即单个指令可对应多个操作,如TI的C5400,C5500系列等
并行执行多指令的处理器的结构又分为两类,即超长指令字(VLIW,VeryLongInstructionWord)和超标量(superscalar)结构;主要区别是并行执行的指令如何分组;
在VLIW结构中,将4~8条指令打包成一条很长的指令执行,代码产生工具决定哪些指令要并行执行,在汇编时才打包,执行时不改变分组;
超标量处理器则只打包2~4条指令,有专门的硬件来决定哪些指令将并行地执行,基于数据的关联与资源的情况进行决定,故其是动态决定并行操作。
较难准确预测给定程序的执行时间,故给实时处理带来严重问题。
在VLIW结构中,指令字很简单,但是采用更宽的指令字,由16bit变为32bit.有利于使用大量的规格统一的寄存器,也让指令组更加规则一致,进而提高性能与效率。
但简单指令会增加存储器的需求,提高成本。
一般来说,VLIW与超标量处理器的功耗更大,其应用目标是要求性能好,但对成本与功耗不敏感的移动基站等系统。
单指令多数据(SIMD)
单指令多数据(SIMD,SingleInstructionMultipleData)并不属于结构本身,作为一种结构技术,可以在任何结构中使用。
它通过使处理器并行地用不同的数据,执行多次同样的操作,来改善处理器的性能。
例如,SIMD乘法指令,可以在单周期内用不同的输入数据执行两次或多次乘法,但需要对存储器中数据做专门安排。
其它形式
高性能CPU:
扩展基于SIMD的指令集,将CPU的资源分为多个小的资源并行使用,提高性能。
如,一个具有64-bit数据总线、64-bit寄存器和64-bitALU的CPU,可以当成4个16-bit的数据总线、寄存器和ALU,也就可以同时执行4个16-bit的数据运算。
DSP/MCU的混合:
MCU有良好管理性能,DSP具有好的数据处理性能,满足既要控制又要使用DSP软件的应用。
例如,包含MCU核和DSP核的SoC,在其MCU里强化DSP功能,从而只使用一个处理器来取代原来的两个。
2.3新近推出的DSP核与DSP处理器
LUCENT和MOTOROLA联合开发的STARCORE,1998年开始研发,目前已到第三代SC3850,主要用于数据通信、移动通信和家庭影院。
ADI和INTEL联合开发的DSP核—Blackfin,组合了一个32bitRSIC(reducedinstructionsetcomputer)指令集和双16bitMAC功能,成为一种VLIW的媒体处理器。
TI新的系列DSP核C64+和C66X
ARM(AdvancedRISCMachines)核:
已经和DSP核密不可分,协同工作;同时,ARM的数字信号处理能力大幅度地提升。
Iphone/智能电话都在使用。
该公司只设计,不生产,占有90%市场份额。
2.4新近推出的多核DSP处理器
同构多核DSP处理器
所谓同构多核,是指在一个处理器芯片内,包含了多个同样结构的DSP核,有极高性能,应用于高性能要求场所。
如:
雷达、声纳、导引、LTE系统基站、大型医疗诊断设备。
Freescale基于StarCore的多核DSP处理器MCS8256,采用45nm工艺的高度集成的SoC,集成了6个SC3850核,每核运行于1GHz,整体达到6GHz,性能高功耗低。
TI基于C66x核的多核处理器TMS320C6678,是一种高性能定点/浮点DSP处理器,基于KeyStone多核体系构架,集成8核,累计到10GHz,有一套完整开发工具。
Qualcomm基于Scorpion核的Snapdragon处理器,Scorpion基于ARMv7结构,是一种超标量,双流程的机器,始于2005年,65nm工艺,1GHz.Snapdragon已成为许多先进智能手机的处理器。
Freescale基于ARM技术的i.MX系列应用处理器,其优化了性能与电池寿命之间的平衡,使用了基于ARM9、ARM11和ARMCortex-A8的核技术。
集成了DSP核的异构多核SoC处理器
以上介绍的是基于单核或者多核的ARM技术的SoC处理器。
基于ARM核和DSP核,被称为异构多核的SoC处理器,具有非常优越的性能,更早得到应用。
TI的OMAP(OpenMultimediaApplicationPlatform)处理器,已到第五代,包含处理器、套装软件和电源管理技术,主要应用于无线连接、电源管理、智能电话、移动设备。
TI应用于数字视频的DaVinci(达芬奇)技术,专注于数据视频处理,提供API,不用写DSP代码,包含数百种芯片的庞大体系。
第3章DSP的开发环境和工具
3.1集成开发环境CCS
CCS的功能
CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
①具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
②含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;
③高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;
④工程项目管理工具可对用户程序实行项目管理。
在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;
⑤基本调试工具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;⑥断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;
⑦探测点工具,可用于算法的仿真,数据的实时监视等;
⑧分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;
⑨数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;
⑩提供GEL(GeneralExtensionLanguage)工具。
利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;
⑪支持多DSP的调试;
⑫支持RTDX(Real-TimeDataEx-change)技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序的数据交换;
⑬提供DSP/BIOS工具,增强对代码的实时分析能力。
代码生成工具
每个DSP系列都提供代码生成工具
C编译器(Ccompiler):
将C源程序代码编译成为320系列对应汇编语言源代码。
编译包中包括一个外壳程序(shellprogram)、一个优化器(optimizer)和一个内部列表公用程序(interlistutility)。
汇编器(assembler):
将汇编语言源文件转变为基于公用目标文件格式(COFF)的机器语言目标文件。
连接器(linker):
将目标文件连接起来产生一个可执行模块。
它能调整并解决外部符号参考。
连接器的输入是可重新定位的COFF目标文件和目标库文件。
归挡器(archiver):
将一组文件归入一个归挡文件,也叫归档库。
另外,归档器允许通过删除、替代、提取或增加文件来调整库。
归档器最有用的应用之一是建立目标文件库。
助记符到代数语言的转换公用程序(mnemonic-to-algebraictranslatorutility):
转换汇编语言源文件。
该程序接收含有助记符(MOV,ADD)的指令,并将其转换为代数指令,产生一个含有代数指令的汇编语言源文件。
运行支持库公用程序(runtime-supportutility):
建立用户的C语言运行支持库。
标准运行支持库函数在rts.src里提供源代码,在rts.lib里提供目标代码。
运行支持库(runtime-supportlibrary):
包含ANSI标准运行支持函数、编译器公用程序函数、浮点算术函数和被C54x编译器支持的C输入/输出函数。
绝对列表器(absolutelister):
接收已经连接的目标文件作为输入,并产生.abs文件作为输出。
汇编.abs文件产生后含有绝对地址的列表。
十六进制转化公用程序(hexconversionutility):
将COFF目标文件转化为TI-Tagged,ASCII-hex,Intel,Motorola-S,Tektronix等目标格式,从而可以将转化文件装载在可擦除程序存储器里。
TIDSP的调试器接收可执行的COFF文件作为输入,但大多可擦除存储器却不支持COFF文件。
同时该转换工具还可以自动生成BOOTLOADER程序所需要的引导信息。
交叉引用列表(Cross-ReferenceLister):
用目标文件来产生一个交叉引用列表,列出符号、符号的定义、以及它们在已连接的源文件中的引用。
探针(probepoints)工具使用
在CCS环境下可以设置探针,探针实际上是一种特殊的断点。
当程序运行到探针位置时,CCS中断目标系统的DSP程序的运行,然后从与该探针连接的数据文件(存放在PC机)中读出数据或输出结果,当完成数据的传输后自动恢复目标系统的DSP程序的运行。
探针工具特别适用于算法的仿真。
探针工具可以运行在软仿真(Simulator)下。
探测点在算法开发过程中是一个有用的工具,可用来与PC主机进行数据通信。
利用探测点可以进行以下工作:
从PC主机的文件中,传输输入数据至目标系统的缓冲区,作为算法开发的模拟数据;
从目标系统的缓冲区中,输出数据至PC主机的文件中,以便进行数据分析;
更新窗口,例如图形、数据等。
图形工具的使用
CCS提供了多种绘图工具,能将内存中的数据以各种图形方式显示,帮助用户直观地了解数据的意义。
图形工具在数字信号处理中非常有用,可以从总体上分析处理前和处理后的数据,以观察程序运行的效果。
需要注意的是图形窗口只有在断点时才刷新,所以应增加断点,并使用Animate方式运行。
这样可以显示动画效果。
能提供的显示有:
时域/频域波形,眼图,星坐图,图象。
CCS提供了四大类共九种图形显示方式。
CCS提供有显示多种功能图形。
每一种功能都有相应的图形属性对话框,用来设置显示图形的各种参数。
打开图形属性对话框的方法:
在查看菜单“Tools”中,选择“Graph(图
形)”选项,弹出命令子菜单(Debug之后
才会出现);子菜单中有六项图形命令。
选
择四项命令可以分别打开各自的图形属性
对话框。
选择SingleTime命令,打开的
对话框。
剖析工具(profilepoints)的使用
在CCS中,你可以利用代码剖析工具,计算代码执行了多少个机器时钟。
剖析工具报告的时钟个数是从前一个剖析点开始或程序起始处。
统计CPU执行某程序所用的时钟周期数、程序分支数、子程序调用数、中断发生次数等统计信息。
基本方法是在程序的适当位置设置断点(软断点或评价点),当程序执行通过断点时,收集并统计有关程序的执行信息。
用户通过统计信息评估其性能。
你可以使用鼠标右键单击某个行,选择“Breakpoint->ProfileControlPoint->ResumeProfiling”可以设置剖析点。
然后在“ProfileControlPoint”中选“PauseProfiling”。
剖析点是一种特殊的断点,是专门用来在程序的特殊位置获取评价信息。
在每个评价点上,CCS记录该剖析点命中次数以及距上次剖析点之间的指令周期数等信息。
与断点不同,CPU在通过剖析点统计数据后,继续执行程序。
♥CMD内存定位文件的使用
段的由来
与PC中的应用程序不同,TI的DSP应用程序是一段在固定地址运行的程序。
其在加载时,会写入到指定的存储器中。
由.cmd文件提供,包括系统中可用内存块;程序代码和数据将被安排到哪个内存中。
段的定义
为了有效利用DSP的内部或外部存储器,目标文件中的代码和数据被存放在不同的段中。
这些数据段或代码段在内存中可以是分开的,也可以是连续的。
在生成的OUT文件中包括三个缺省段:
.text,.data,.bss
段有两种基本的类型
已初始化的段:
包括数据和代码。
例如.text和.data段都是已初始化段。
在汇编语言中自己定义的用于存放代码的.sect段也是已初始化段。
未初始化的段:
是为未初始化数据保留的内存空间。
例如,.bss段是未初始化的,用于为变量保留空间。
在汇编语言中还可以使用.usect指令说明一个未初始化段
还可以在汇编语言中自己定义的用于存放代码的段,如.sect(代码),.usect、.buffer(数据)等
连接器如何使用段
汇编器和连接器允许创建、命名和连接已经命名的段。
连接器有两个与段有关的功能:
一个是在建立输出OUT文件时,连接器要使用OBJ目标文件中的段,合并输入段(当被连接的文件多于一个时)。
另一个是连接器为输出段选择存储器地址。
这些连接器可以根据用户提供的CMD定位文件,来安排段的实际地址。
这个CMD定位文件一般有两个部分:
MEMORY和SECTIONS。
在MEMORY中,主要说明目标系统中哪些存储器可以使用,它们的起始地址是多少,大小如何。
在SECTIONS部分中,主要完成段的具体地址的分配。
例如,我们将.text段存放在1800h开始的程序空间中,将.bss段存放在c00h开始的数据空间中,将.vect段存放在程序空间的200h开始的地方。
存储器指令(memorydirective)定义目标系统的存储器图。
用户可以给部分存储器命名,定义它的起始地址和长度。
段指令(sectionsdirective)告诉连接器如何将输入段合并到输出段中,及将这些输出段放在存储器的什么地方。
用户可以用连接器的SECTIONS指令指定子段,如不特别指定,子段将和同基段名的段合并在一起。
定位CMD文件可以包含参数
将连接器使用的参数添加到内存定位CMD文件中,这样整个连接器命令可以简化为(以C5000系列为例,使用LNK500):
C:
\C54X\LNK500asmlnk.cmd
3.2DSP/BIOS的应用
DSP/BIOS的功能
DSP/BIOS是CCS提供的一套工具,用于支持系统实时分析。
它本身仅占用极少的CPU资源。
使用线程来管理程序,如硬件中断服务子程序,软件中断服务子程序,周期函数,idle函数等。
线程(thread)是操作系统能够进行运算调度的最小单位。
一条线程指的是进程中一个单一顺序的控制流,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
提供多种分析工具,评估代码。
如图形化显示各个线程占用的CPU时间,代码执行时间统计,显示输出信息等。
可以修改各个线程的优先级。
CCS中的DSP/BIOS工具已经具有实时操作系统的很多功能特点,如任务的调度管理、任务间的同步和通讯、内存管理、实时时钟管理、中断服务管理等等。
DSP/BIOS(v5.4)以后的版本SYS/BIOS!
当然,你也可以不使用DSP/BIOS工具,而使用传统的汇编和C编写DSP应用程序。
DSP/BIOS应用程序的结构
DSP/BIOSAPI提供可伸缩的实时核,还提供了有优先级的多线程处理。
它是专为那些需要实现实时调度、同步以及通讯的应用程序而设计。
在一个包含DSP/BIOS内核的应用程序按优先级从低到高有四种主要线程:
不使用DSP/BIOS时的程序结构
DSP/BIOS应用程序的结构
DSP/BIOS的大小
对于C62x,最小需要程序存储空间的150字,数据存储空间575字。
以C6201为例:
占有的程序空间0.9%和数据空间3.5%
最多需要6500字,占C6201存储空间的20%。
所以多数应用中是可接受的。
DSP/BIOS的可裁减性:
只把直接或间接调用的模块和API连接到目标文件中
DSP/BIOS支持的平台
支持C5000和C6000,C2000的DSP:
支持的平台:
EVM,DSK,第三方开发的目标板,用户自己开发的板子和Simulator配置模板(Configurationtemplate)使用配置工具配置生成用户自己的.cdb文件
Simulator中使用DSP/BIOS片上时钟,CLKandPRDmodules;PinConnecttool配置中断管脚,仿真硬件中断。
DSP/BIOS提供的应用程序接口(API)模块
CLK模块:
用于片上的定时器管理,设置定时器中断的间隔时间。
HST模块:
用于实现主机与目标系统间数据的输入或输出。
HWI模块:
用于硬件中断管理,可设置相应的中断服务子程序。
IDL模块:
用于管理idle函数,该类函数具有最低优先级。
DSP/BIOS提供的模块
LOG模块:
用于事件的记录显示。
例如,你可以通过该API输出调试信息。
MEM模块:
用于定义目标系统的内存使用。
系统根据此信息自动产生.cmd文件。
PIP模块:
用于管道管理,可以实现线程间的数据交换。
PRD模块:
用于实现周期性的函数。
该类函数的执行频率可以由CLK模块或自己调用PRD_tick决定。
RTDX模块:
用于主机与DSP目标系统间的实时数据传递。
STS模块:
用于状态统计管理,你可以在CCS下查看这些统计参数。
SWI模块:
用于管理软件中断。
CCS将运行队列中的软件中断,并可以设置15个优先级,但都比硬件中断低。
第四章DSP方案工程实现
*4.4DSP最小系统设计(了解内容,没有PPT,见书)
4.6DSP中定点数和浮点数的运算(P228和实验)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 复习资料